1
私はCoq.Relations
によって提供された定義を使用して、私は、以下の定義を有する:ここでは半合流がCoqでコンフルエンスを意味することを証明する方法は?
Definition joinable (x:A) (y:A) : Prop :=
exists z, (clos_refl_trans A R x z) /\ (clos_refl_trans A R y z).
Notation "X ↓ Y" := (joinable X Y) (at level 70, right associativity).
Notation "X → Y" := (R X Y) (at level 75, right associativity).
Notation "X →* Y" := (clos_refl_trans A R X Y) (at level 75, right associativity).
Notation "X ⇆ Y" := (clos_refl_sym_trans A R X Y) (at level 75, right associativity).
Definition confluent : Prop := forall x y1 y2, (x →* y1 /\ x →* y2) -> (y1↓y2).
Definition semi_confluent : Prop := forall x y1 y2, (x → y1 /\ x →* y2) -> (y1↓y2).
は私が持っているものです。
Theorem semi_confluent_confluent : semi_confluent -> confluent.
Proof.
unfold confluent, semi_confluent, joinable.
intros. destruct H0. induction H0.
- apply H with (x := x). split. auto. auto.
- exists y2. split. auto. auto.
- admit.
Admitted.
私は上の誘導を使用しようとしました:
- H0 x→y1
しかし、私は最後のケース(推移性)に立ち往生しているようです。私は誘発(x→* z)のような最後のケースでいくつか試しましたが、それは私には説明できない声明につながっているようです。
私は何か不足していることを知っていました。 'clos_refl_trans_1n'を理由にすることは、他のdefよりも良い方法です! – Vinz
ニース!私は 'clos_refl_trans_1n'の存在も知らなかった。 "&"記号は何を表していますか?あなたが使った文法の種類についてはどうやって学ぶことができますか? – user45614654181
あなたが使用した 'clos_rt_rt1n'識別子はどこから来たのですか? – user45614654181