Reduction
Set Implicit Arguments.
Require Import Coq.Program.Equality.
Require Import Definitions Lookup Sequences.
Require Import Coq.Program.Equality.
Require Import Definitions Lookup Sequences.
Reserved Notation "t1 '⟼' t2" (at level 40, t2 at level 39).
Inductive red : sta × trm → sta × trm → Prop :=
Inductive red : sta × trm → sta × trm → Prop :=
γ ⊢ q ⤳* λ(T)t
―――――――――――――――――――――
γ | q p ⟼ γ | tᵖ
―――――――――――――――――――――
γ | q p ⟼ γ | tᵖ
γ | let x = v in t ⟼ γ, x = v | tˣ
γ | let y = p in t ⟼ γ | tᵖ
γ | t0 ⟼ γ' | t0'
―――――――――――――――――――――――――――――――――――――――――――――――
γ | let x = t0 in t ⟼ γ' | let x = t0' in t
―――――――――――――――――――――――――――――――――――――――――――――――
γ | let x = t0 in t ⟼ γ' | let x = t0' in t
| red_let_tgt : ∀ t0 t γ t0' γ',
(γ, t0) ⟼ (γ', t0') →
(γ, trm_let t0 t) ⟼ (γ', trm_let t0' t)
where "t1 '⟼' t2" := (red t1 t2).
(γ, t0) ⟼ (γ', t0') →
(γ, trm_let t0 t) ⟼ (γ', trm_let t0' t)
where "t1 '⟼' t2" := (red t1 t2).
Reflexive, transitive closure of reduction relation