Equations
- «term_~>sn_» = Lean.ParserDescr.trailingNode `«term_~>sn_» 80 81 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ~>sn ") (Lean.ParserDescr.cat `term 81))
Instances For
theorem
SN.subterm_app
{f a : Term}
:
LeanSubst.SN Red (f :@ a) → LeanSubst.SN Red f ∧ LeanSubst.SN Red a
theorem
SN.neutral_app
{f a : Term}
:
Neutral f → LeanSubst.SN Red f → LeanSubst.SN Red a → LeanSubst.SN Red (f :@ a)
theorem
SN.weak_head_expansion
{t b : Term}
{A : Ty}
:
LeanSubst.SN Red t → LeanSubst.SN Red b[LeanSubst.su t::+0] → LeanSubst.SN Red ((:λ[A] b) :@ t)
theorem
SN.red_app_preservation
{f f' a : Term}
:
f ~>sn f' → LeanSubst.SN Red f → LeanSubst.SN Red a → LeanSubst.SN Red (f' :@ a) → LeanSubst.SN Red (f :@ a)
- var {x : Nat} : SNi SnVariant.neu #x
- app {s : SnIndices SnVariant.neu} {t : SnIndices SnVariant.nor} : SNi SnVariant.neu s → SNi SnVariant.nor t → SNi SnVariant.neu (s :@ t)
- lam {t : SnIndices SnVariant.nor} {A : Ty} : SNi SnVariant.nor t → SNi SnVariant.nor (:λ[A] t)
- neu {t : SnIndices SnVariant.neu} : SNi SnVariant.neu t → SNi SnVariant.nor t
- red {t t' : Term} : SNi SnVariant.red (t, t') → SNi SnVariant.nor t' → SNi SnVariant.nor t
- beta {t : SnIndices SnVariant.nor} {A : Ty} {b : Term} : SNi SnVariant.nor t → SNi SnVariant.red ((:λ[A] b) :@ t, b[LeanSubst.su t::+0])
- step {s s' t : Term} : SNi SnVariant.red (s, s') → SNi SnVariant.red (s :@ t, s' :@ t)
Instances For
@[reducible, inline]
Equations
- SNi.SnRenameLemmaType r SnVariant.neu t = SNi SnVariant.neu t[↑r]
- SNi.SnRenameLemmaType r SnVariant.nor t = SNi SnVariant.nor t[↑r]
- SNi.SnRenameLemmaType r SnVariant.red (t, t') = SNi SnVariant.red (t[↑r], t'[↑r])
Instances For
theorem
SNi.rename
{v : SnVariant}
{i : SnIndices v}
(r : LeanSubst.Ren)
:
SNi v i → SnRenameLemmaType r v i
@[reducible, inline]
Equations
- SNi.SnAntiRenameLemmaType r SnVariant.neu t = ∀ (z : SnIndices SnVariant.neu), t = z[↑r] → SNi SnVariant.neu z
- SNi.SnAntiRenameLemmaType r SnVariant.nor t = ∀ (z : SnIndices SnVariant.nor), t = z[↑r] → SNi SnVariant.nor z
- SNi.SnAntiRenameLemmaType r SnVariant.red (t, t') = ∀ (z : Term), t = z[↑r] → ∃ (z' : Term), t' = z'[↑r] ∧ SNi SnVariant.red (z, z')
Instances For
theorem
SNi.antirename
{v : SnVariant}
{i : SnIndices v}
(r : LeanSubst.Ren)
:
SNi v i → SnAntiRenameLemmaType r v i
@[reducible, inline]
Equations
- SNi.SnBetaVarLemmaType SnVariant.neu s = ∀ (t : Term) (x : Nat), s = t :@ #x → SNi SnVariant.neu t
- SNi.SnBetaVarLemmaType SnVariant.nor s = ∀ (t : Term) (x : Nat), s = t :@ #x → SNi SnVariant.nor t
- SNi.SnBetaVarLemmaType SnVariant.red x_2 = True
Instances For
@[reducible, inline]
Equations
Instances For
theorem
SNi.property_weaken
{v : SnVariant}
{i : SnIndices v}
:
SNi v i → SnPropertyWeakenLemmaType v i
@[reducible, inline]