大小未知的有限列表
Finite list with unknown size
我在尝试使用 math-comp 库定义一些结构时有点困惑。我想定义一个结构,其功能范围从一组值到 returning 其他值列表。我正在尝试将此结构定义为 finType
但它失败了(我认为这是因为我正在 returning 一个未知大小的列表)。
例如:
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
,这不是有限的。我不确定如何描述它只会 return 有限列表。我想我可能会使用 n 元组,但这需要事先指定一个大小(我可以包括大小以及 F
值吗?我不确定在这个表示法中会是什么样子)。
我是否遗漏了什么或者是否有其他方法似乎更合适?
提前致谢!
我建议你直接在类型上指定绑定函数。例如,这在 Stefania Dumbrava 的博士论文中用于限制签名的最大数量,如果你知道这个技巧,效果很好:
f : {ffun n -> (bound ...).-tuple A}
通常 bound := \max_S ...
,因此它与理论的其余部分配合得很好。
我在尝试使用 math-comp 库定义一些结构时有点困惑。我想定义一个结构,其功能范围从一组值到 returning 其他值列表。我正在尝试将此结构定义为 finType
但它失败了(我认为这是因为我正在 returning 一个未知大小的列表)。
例如:
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
,这不是有限的。我不确定如何描述它只会 return 有限列表。我想我可能会使用 n 元组,但这需要事先指定一个大小(我可以包括大小以及 F
值吗?我不确定在这个表示法中会是什么样子)。
我是否遗漏了什么或者是否有其他方法似乎更合适?
提前致谢!
我建议你直接在类型上指定绑定函数。例如,这在 Stefania Dumbrava 的博士论文中用于限制签名的最大数量,如果你知道这个技巧,效果很好:
f : {ffun n -> (bound ...).-tuple A}
通常 bound := \max_S ...
,因此它与理论的其余部分配合得很好。