Call-by-Name Evaluation #
A single step of Call-by-Name evaluation.
- base {Var : Type u} {M N : Term Var} : M.Beta N → M.CBN N
Top-level β-reduction.
- app {Var : Type u} {Z M N : Term Var} : Z.LC → M.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.step_to_redex {Var : Type u} {M N : Term Var} (step : M.CBN N) :
A single Call-by-Name step is a full β-reduction.
theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.CBN.to_redex {Var : Type u} {M N : Term Var} (step : Relation.ReflTransGen CBN M N) :
Call-by-Name reduction is contained in full β-reduction.
theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.CBN.steps_app_l_cong {Var : Type u} {M M' N : Term Var} (step : Relation.ReflTransGen CBN M M') (lc_N : N.LC) :
Relation.ReflTransGen CBN (M.app N) (M'.app N)
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.
theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.CBN.steps_lc_r {Var : Type u} {M N : Term Var} [HasFresh Var] [DecidableEq Var] (lc_M : M.LC) (step : Relation.ReflTransGen CBN M N) :
N.LC
The right side of a Call-by-Name reduction is locally closed.
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.