Commit 98e61928 by Robbert Krebbers

### Strengthen induction lemma for reflexive transitive closure.

parent 6907a08a
 ... @@ -61,19 +61,22 @@ Section rtc. ... @@ -61,19 +61,22 @@ Section rtc. Lemma rtc_inv x z : rtc R x z → x = z ∨ ∃ y, R x y ∧ rtc R y z. Lemma rtc_inv x z : rtc R x z → x = z ∨ ∃ y, R x y ∧ rtc R y z. Proof. inversion_clear 1; eauto. Qed. Proof. inversion_clear 1; eauto. Qed. Lemma rtc_ind_r_weak (P : A → A → Prop) Lemma rtc_ind_r (P : A → A → Prop) (Prefl : ∀ x, P x x) (Pstep : ∀ x y z, rtc R x y → R y z → P x y → P x z) : (Prefl : ∀ x, P x x) (Pstep : ∀ x y z, rtc R x y → R y z → P x y → P x z) : ∀ x z, rtc R x z → P x z. ∀ x z, rtc R x z → P x z. Proof. Proof. cut (∀ y z, rtc R y z → ∀ x, rtc R x y → P x y → P x z). cut (∀ y z, rtc R y z → ∀ x, rtc R x y → P x y → P x z). { eauto using rtc_refl. } { eauto using rtc_refl. } induction 1; eauto using rtc_r. induction 1; eauto using rtc_r. Qed. Qed. Lemma rtc_ind_r (P : A → Prop) (x : A) (Prefl : P x) (Pstep : ∀ y z, rtc R x y → R y z → P y → P z) : ∀ z, rtc R x z → P z. Proof. intros z p. revert x z p Prefl Pstep. refine (rtc_ind_r_weak _ _ _); eauto. Qed. Lemma rtc_inv_r x z : rtc R x z → x = z ∨ ∃ y, rtc R x y ∧ R y z. Lemma rtc_inv_r x z : rtc R x z → x = z ∨ ∃ y, rtc R x y ∧ R y z. Proof. revert x z. apply rtc_ind_r; eauto. Qed. Proof. revert z. apply rtc_ind_r; eauto. Qed. Lemma nsteps_once x y : R x y → nsteps R 1 x y. Lemma nsteps_once x y : R x y → nsteps R 1 x y. Proof. eauto with ars. Qed. Proof. eauto with ars. Qed. ... ...
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!