Documentation

Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.CallByName

Call-by-Name Evaluation #

A single step of Call-by-Name evaluation.

  • base {Var : Type u} {M N : Term Var} : M.Beta NM.CBN N

    Top-level β-reduction.

  • app {Var : Type u} {Z M N : Term Var} : Z.LCM.CBN N(M.app Z).CBN (N.app Z)

    Evaluates the leftmost term.

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.Untyped.Term.CBN.lc_l {Var : Type u} {M N : Term Var} (step : M.CBN N) :
        M.LC

        The left side of a Call-by-Name step is locally closed.

        A single Call-by-Name step is a full β-reduction.

        Call-by-Name reduction is contained in full β-reduction.

        Left congruence rule for application in Call-by-Name reduction.

        theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.CBN.lc_r {Var : Type u} {M N : Term Var} [HasFresh Var] [DecidableEq Var] (step : M.CBN N) :
        N.LC

        The right side of a Call-by-Name step is locally closed.

        The right side of a Call-by-Name reduction is locally closed.

        theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.CBN.step_subst {Var : Type u} {M M' N : Term Var} [HasFresh Var] [DecidableEq Var] (x : Var) (h : M.CBN M') (lc_N : N.LC) :
        M[x := N].CBN M'[x := N]

        Substitution preserves a single Call-by-Name step.

        theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.CBN.steps_subst {Var : Type u} {M M' N : Term Var} [HasFresh Var] [DecidableEq Var] (x : Var) (step : Relation.ReflTransGen CBN M M') (lc_N : N.LC) :

        Substitution preserves Call-by-Name reduction.