我对Coq有点新意,我正在尝试对Coq中的常规语法进行一些形式化。假设我有一个归纳类型如下:
Inductive rules : non_terminal -> list(non_terminal + terminal) -> Type :=
rule1 : rules S [inr a; inl S]
| rule2 : rules S [inr b;inl S]
| rule3 : rules S [].
表示(a* b*)
语法的派生规则。假设我想提取它们以供以后使用。有什么方法可以做到这一点并将其存储在列表列表中吗?例如,我想要一个让我回复[[S [inr a; inl S];S [inr b;inl S];[]]
的程序。任何其他想法将不胜感激。
提前致谢。
答案 0 :(得分:0)
您可以尝试使用Ltac2,它可以通过编程方式获取有关归纳类型的信息吗?您还可以使用template-coq包/插件。这些可能实际上并不是你想在这里做的,因为它有点令人费解。