Documentation

Stlc.normalization

Equations
Instances For
    def Trm.normal (t : Trm) :
    Equations
    • t.normal = ¬t.reducible
    Instances For
      theorem Trm.normal_has_no_proper_multi_red (t : Trm) :
      t.normal∀ (t' : Trm), multi_red t t't = t'
      Equations
      Instances For
        Equations
        Instances For
          inductive Trm.SN :
          TrmProp
          Instances For
            theorem Trm.strongly_normalizable_iff_SN (t : Trm) :
            t.strongly_normalizable t.SN
            theorem Trm.beta_red_preserves_SN (t : Trm) :
            t.SN∀ (t' : Trm), beta_red t t't'.SN
            theorem Trm.multi_red_preserves_SN (t : Trm) (t' : Trm) :
            t.SNmulti_red t t't'.SN
            theorem Trm.SN_app1 (t : Trm) (s : Trm) :
            s.lc(t @ s).SNt.SN
            theorem Trm.normal_is_unique (t : Trm) (t1 : Trm) (t2 : Trm) :
            (multi_red t t1 t1.normal) multi_red t t2 t2.normalt1 = t2
            def Trm.SC :
            TypSet Trm
            Equations
            Instances For
              theorem Trm.SC_regular (A : Typ) (t : Trm) :
              t Trm.SC At.lc
              Equations
              Instances For
                theorem Trm.CR2 (A : Typ) (t : Trm) (t' : Trm) :
                t Trm.SC Amulti_red t t't' Trm.SC A
                theorem Trm.CR_1_3 (A : Typ) (t : Trm) :
                (t Trm.SC At.SN) (t.lct.neutral(∀ (t' : Trm), beta_red t t't' Trm.SC A)t Trm.SC A)
                def Trm.CR1 (A : Typ) (t : Trm) :
                t Trm.SC At.SN
                Equations
                • =
                Instances For
                  def Trm.CR3 (A : Typ) (t : Trm) :
                  t.lct.neutral(∀ (t' : Trm), beta_red t t't' Trm.SC A)t Trm.SC A
                  Equations
                  • =
                  Instances For
                    theorem Trm.SC_var (A : Typ) (x : ) :
                    ($x) Trm.SC A
                    theorem Trm.SC_lambda_lemma (A1 : Typ) (A2 : Typ) (t : Trm) :
                    (λt).lc(∀ (u : Trm), xt.fv, u Trm.SC A1([x // u] t.open₀ ($x)) Trm.SC A2)∃ (y : ), t.open₀ ($y) Trm.SC A2
                    theorem Trm.SC_lambda (A1 : Typ) (A2 : Typ) (t : Trm) :
                    (λt).lc(∀ (u : Trm), xt.fv, u Trm.SC A1([x // u] t.open₀ ($x)) Trm.SC A2)(λt) Trm.SC (A1 -> A2)
                    theorem Trm.SC_lambda_open (A1 : Typ) (A2 : Typ) (t : Trm) :
                    (λt).lc(∀ uTrm.SC A1, t.open₀ u Trm.SC A2)(λt) Trm.SC (A1 -> A2)
                    theorem Trm.SC_subst {Γ : context} (t : Trm) (A : Typ) :
                    typing Γ t A∀ (f : { x : // x context_terms Γ }Trm), (∀ (x : ) (h : x context_terms Γ), f x, h Trm.SC (Trm.context_type Γ x, h))Trm.multi_subst (context_terms Γ) f t Trm.SC A
                    theorem Trm.beta_red_strongly_normalizing (t : Trm) (T : Typ) :
                    typing [] t Tt.SN