大小不明的有限列表

时间:2018-10-24 12:03:43

标签: coq ssreflect

我对使用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值?我不确定在这种表示法中的样子)。

我是否缺少某些东西,或者还有另一种似乎更合适的方法?

谢谢!

1 个答案:

答案 0 :(得分:2)

我建议您直接在类型上指定绑定函数。例如,在Stefania Dumbrava的博士学位中使用此方法来限制签名的最大匹配度,并且如果知道窍门,也可以很好地工作:

f : {ffun n -> (bound ...).-tuple A}

通常使用bound := \max_S ...,因此它可以与理论的其余部分很好地配合。