Coq Z_3:左反转引理

Coq Z_3:左反转引理,coq,Coq,我被卡住了。我想证明Z_3的左反转引理 (* aux lemma) Lemma Z_3_inv_lemma (k: nat) : ((3 + k) <? 3 = true) -> False. Proof. intro. induction k as [| k' IH]. - simpl in H. inversion H. - rewrite Nat.add_succ_r in H. auto. Qed. (* main theorem *) Proposition

我被卡住了。我想证明Z_3的左反转引理

(* aux lemma)
Lemma Z_3_inv_lemma (k: nat) : ((3 + k) <? 3 = true) -> False.
Proof.
  intro. induction k as [| k' IH].
  - simpl in H. inversion H.
  - rewrite Nat.add_succ_r in H. auto.
Qed.

(* main theorem *)
Proposition Z3_left_inv : forall x: Z_3, Z3_op (Z_3_inv x) x = z3_0.
Proof.
  intro. unfold Z3_op. destruct x as [vx prf]. unfold z3_0. apply Z3_eq. destruct vx as [| vx'].
  - simpl. reflexivity.
  - destruct vx'.
    + simpl. reflexivity.
    + destruct vx'.
      * simpl. reflexivity.
      * revert prf. rewrite <- Nat.add_1_l. rewrite <- (Nat.add_1_l (S vx')). rewrite <- (Nat.add_1_l vx'). repeat rewrite Nat.add_assoc. change (1+1+1) with 3. intro.

我相信你可以试试防姿势(Z_3_inv_引理vx'prf),那应该会让你得到一个可用的
False

我相信你可以试试防姿势(Z_3_inv_引理vx'prf)
,那应该会让你得到一个可用的
False

1 subgoal (ID 153)
  
  vx' : nat
  prf : (3 + vx' <? 3) = true
  ============================
  (Z_3_inv {| n := 3 + vx'; proof := prf |} +
   {| n := 3 + vx'; proof := prf |}) mod 3 = 0
Error: Cannot change prf, it is used in conclusion.