0
如何获取Coq中所有父元素? 我在Coq的定义一组如下:如何在Coq中表示继承?
Inductive Gen : Set :=
| BGen : nat -> nat -> Gen.
有许多实例,例如:
Definition g1 = BGen 1 2.
Definition g2 = BGen 2 3.
现在,我想获得的3父母元件,即[1,2]。我写一个函数:
Fixpoint parents (c : nat) (l : list Gen) :=
match l with
| [] => []
| (BGen p c') :: l' => if beq_nat c c'
then [p]
else parents c l'
end.
我只能得到直接父的3 [2],我怎样才能让所有的家长,如[1,2]在这个例子吗?
为什么如果你找到了匹配而不是返回'p' *而返回'[p]',而且还可以在列表的其余部分找到其他匹配项? – gallais
@gallais这可以通过用[p] :: parents c l'替换[p]来完成。但是,只有c的父母可以通过使用这个函数找到,我不能得到c的所有父母。 –
啊!看来我误解了你的目标:你不仅要父母,还要父母的父母等?基本上你想建立一个闭包? – gallais