Coq 证明共自然数的共归纳原理

Coq 证明共自然数的共归纳原理,coq,coq-tactic,coinduction,Coq,Coq Tactic,Coinduction,我不得不承认,我不太擅长共生产。我试图展示一个关于共自然数的互模拟原理,但我被困在一对(对称)情况下 这就是关注第一个被承认的病例时的情况: 1 subgoal R : conat -> conat -> Prop H1 : R cozero cozero H2 : forall m n : conat, R (cosucc m) (cosucc n) -> R m n conat_eq_coind : forall m n : conat, R m n -> conat

我不得不承认,我不太擅长共生产。我试图展示一个关于共自然数的互模拟原理,但我被困在一对(对称)情况下

这就是关注第一个被承认的病例时的情况:

1 subgoal
R : conat -> conat -> Prop
H1 : R cozero cozero
H2 : forall m n : conat, R (cosucc m) (cosucc n) -> R m n
conat_eq_coind : forall m n : conat, R m n -> conat_eq m n
n : conat
H : R cozero (cosucc n)
______________________________________(1/1)
conat_eq cozero (cosucc n)

想法?

我不明白你想证明什么。这是错误的。以总是
True
的平凡谓词为例

Theorem conat_eq_coind_false :
  ~ forall (R : conat -> conat -> Prop) (H1 : R cozero cozero)
  (H2 : forall (m n : conat), R (cosucc m) (cosucc n) -> R m n)
  (m n : conat) (H3 : R m n), conat_eq m n.
Proof.
  intros contra.
  specialize (contra (fun _ _ => True) I (fun _ _ _ => I)
                     cozero (cosucc cozero) I).
  inversion contra.
Qed.
Theorem conat_eq_coind_false :
  ~ forall (R : conat -> conat -> Prop) (H1 : R cozero cozero)
  (H2 : forall (m n : conat), R (cosucc m) (cosucc n) -> R m n)
  (m n : conat) (H3 : R m n), conat_eq m n.
Proof.
  intros contra.
  specialize (contra (fun _ _ => True) I (fun _ _ _ => I)
                     cozero (cosucc cozero) I).
  inversion contra.
Qed.