找到模块/模块类型的类型签名

时间:2013-03-26 18:46:35

标签: coq

这个问题一直困扰我太多次了。有没有办法在Coq。

中打印模块类型的每个元素的签名

例如:

Print Orders.OrderedType.

Module Type Orders.OrderedType = Sig
                               Parameter t
                               Parameter eq
                               Parameter eq_equiv
                               Parameter lt
                               Parameter lt_strorder
                               Parameter lt_compat
                               Parameter compare
                               Parameter compare_spec
                               Parameter eq_dec
                             End

Print Module Type Orders.OrderedType.

Module Type Orders.OrderedType = Sig
                               Parameter t
                               Parameter eq
                               Parameter eq_equiv
                               Parameter lt
                               Parameter lt_strorder
                               Parameter lt_compat
                               Parameter compare
                               Parameter compare_spec
                               Parameter eq_dec
                             End

About Orders.OrderedType.

Module Type Coq.Structures.Orders.OrderedType

所有这些都没用,因为它们不会让我想起每个元素的类型......

我甚至无法使用错误消息来提醒我,因为它们像以下一样愚蠢:

Error: Signature components for label eq do not match.

确定错误信息,不要告诉我预期的类型...

我不知道这是否已在8.4中修复,但我真的想要一种方法来不必查找已定义的位置以便提醒它是如何定义的。有这样的事吗? :(


特别是,找出定义只是追逐荒谬的长链模块组合......严重:

Module Type OrderedType <: DecidableType := DecStrOrder <+ HasEqDec.

是的,谢谢......

Module Type DecStrOrder := StrOrder <+ HasCompare.

继续......

Module Type StrOrder := EqualityType <+ HasLt <+ IsStrOrder.

...

Module Type EqualityType := Eq <+ IsEq.

...不确定

Module Type Eq := Typ <+ HasEq.

好的...

Module Type Typ.
  Parameter Inline(10) t : Type.
End Typ.

最后,我知道t的类型! \ O /

1 个答案:

答案 0 :(得分:0)

作为部分答案,这似乎已在过去一个月中修复了后备箱。比照

http://www.lix.polytechnique.fr/coq/bugs/show_bug.cgi?id=1572

http://www.lix.polytechnique.fr/coq/bugs/show_bug.cgi?id=2466