我对使用math-comp库定义一些结构有些困惑。我想定义一个结构,其功能范围从一组值到返回其他值的列表。我正在尝试将此结构定义为finType
,但是它失败了(我想是因为我要返回一个未知大小的列表)。
例如:
Section MySection.
Variables F V : finType.
Structure m := M {
f : {ffun F -> seq V};
...
}.
(* Using the PcanXXXMixin family of lemmas *)
Lemma can_m_of_prod : cancel prod_of_m m_of_prod.
Proof. by case. Qed.
...
Definition m_finMixin := CanFinMixin can_m_of_prod.
这将引发错误Unable to unify
。
我认为问题是我正在使用seq
,但这不是有限的。我不确定如何描述它只会返回有限列表。我以为我可能会使用n元组,但是这需要事先指定一个大小(我可能会在大小中加上F
值?我不确定在这种表示法中的样子)。
我是否缺少某些东西,或者还有另一种似乎更合适的方法?
谢谢!
答案 0 :(得分:2)
我建议您直接在类型上指定绑定函数。例如,在Stefania Dumbrava的博士学位中使用此方法来限制签名的最大匹配度,并且如果知道窍门,也可以很好地工作:
f : {ffun n -> (bound ...).-tuple A}
通常使用bound := \max_S ...
,因此它可以与理论的其余部分很好地配合。