45 lines
1.5 KiB
V
45 lines
1.5 KiB
V
From Stdlib Require Import List Bool Arith Lia PeanoNat.
|
|
Import ListNotations.
|
|
From LambdaSub Require Import ExecReducer Binding Reduction Metatheory.
|
|
|
|
Inductive Star (R : trm -> trm -> Prop) : trm -> trm -> Prop :=
|
|
| star_refl : forall t, Star R t t
|
|
| star_step : forall t u v, R t u -> Star R u v -> Star R t v.
|
|
|
|
Lemma Star_trans : forall R a b c, Star R a b -> Star R b c -> Star R a c.
|
|
Proof.
|
|
intros R a b c H. induction H; intros Hbc.
|
|
- exact Hbc.
|
|
- apply star_step with (u := u). exact H. apply IHStar. exact Hbc.
|
|
Qed.
|
|
|
|
Lemma red1_star : forall t t', red1 t t' -> Star red1 t t'.
|
|
Proof.
|
|
intros t t' H. apply star_step with (u := t'). exact H. apply star_refl.
|
|
Qed.
|
|
|
|
Lemma Plus_to_Star : forall R t u, Plus R t u -> Star R t u.
|
|
Proof.
|
|
intros R t u H. induction H.
|
|
- apply star_step with (u := u). exact H. apply star_refl.
|
|
- apply star_step with (u := u). exact H. exact IHPlus.
|
|
Qed.
|
|
|
|
Lemma Star_red1_context : forall C t t', Star red1 t t' -> Star red1 (plug C t) (plug C t').
|
|
Proof.
|
|
intros C t t' H. induction H.
|
|
- apply star_refl.
|
|
- apply star_step with (u := plug C u).
|
|
+ destruct H as [r Hr]. exists r. apply rctx. exact Hr.
|
|
+ exact IHStar.
|
|
Qed.
|
|
|
|
Lemma star_one_trans : forall R a b c, R a b -> Star R b c -> Star R a c.
|
|
Proof. intros. apply star_step with (u := b). exact H. exact H0. Qed.
|
|
|
|
Print Assumptions Star_trans.
|
|
Print Assumptions red1_star.
|
|
Print Assumptions Plus_to_Star.
|
|
Print Assumptions Star_red1_context.
|
|
Print Assumptions star_one_trans.
|