Files
lambda-sub/theory/Closure.v
T

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.