我试图证明将函数 f 应用于两个列表的每个元素会产生相似的rel_list
列表,如果它们最初是相关的。我rel
在列表的元素上有 a 并且已经证明了一个引理Lemma1
,即如果两个元素在 中rel
,那么在rel
函数 f 应用于两个元素之后它们就在。我尝试对列表进行归纳,rel_list
但在基本情况解决后,我最终得到类似情况xL :: xL0 :: xlL0 = xL0 :: xlL0
或进入循环。请有人建议我如何关闭证明。谢谢,
Variable A:Type.
Variable rel: A -> A -> Prop.
Variable f: A -> A.
Lemma lemma1: forall n m n' m',
rel n m ->
n' = f n ->
m' = f m ->
rel n' m'.
Proof.
...
Qed
Inductive rel_list : list A -> list A -> Prop :=
| rel_list_nil : rel_list nil nil
| rel_list_cons: forall x y xl yl,
rel x y ->
rel_list xl yl ->
rel_list (x::xl) (y::yl).
Fixpoint f_list (xl: list A) : list A :=
match xl with
| nil => xl
| x :: xl' => f x :: (f_list xl')
end.
Lemma Lemma2: forall lL lR lL' lR',
rel_list lL lR ->
lL' = f_list lL ->
lR' = f_list lR ->
rel_list lL' lR'.
Proof.
intros ? ? ? ? Hsim HmL HmR.