Documentation

Cslib.Languages.LambdaCalculus.LocallyNameless.Fsub.Reduction

λ-calculus #

The λ-calculus with polymorphism and subtyping, with a locally nameless representation of syntax. This file defines a call-by-value reduction.

References #

Existential predicate for being a locally closed body of an abstraction.

Equations
Instances For
    theorem Cslib.LambdaCalculus.LocallyNameless.Fsub.Term.body_let {Var : Type u_1} {t₁ t₂ : Term Var} [DecidableEq Var] :
    (t₁.let' t₂).LC t₁.LC t₂.body

    Locally closed let bindings have a locally closed body.

    theorem Cslib.LambdaCalculus.LocallyNameless.Fsub.Term.body_case {Var : Type u_1} {t₁ t₂ t₃ : Term Var} [DecidableEq Var] :
    (t₁.case t₂ t₃).LC t₁.LC t₂.body t₃.body

    Locally closed case bindings have a locally closed bodies.

    theorem Cslib.LambdaCalculus.LocallyNameless.Fsub.Term.open_tm_body {Var : Type u_1} {t₁ t₂ : Term Var} [DecidableEq Var] [HasFresh Var] (body : t₁.body) (lc : t₂.LC) :
    (t₁.open_tm t₂).LC

    Opening a body preserves local closure.

    Values are irreducible terms.

    Instances For

      The call-by-value reduction relation.

      Instances For
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem Cslib.LambdaCalculus.LocallyNameless.Fsub.Term.Red.lc {Var : Type u_1} [HasFresh Var] [DecidableEq Var] {t t' : Term Var} (red : rs.Red t t') :
            t.LC t'.LC

            Terms of a reduction are locally closed.