Documentation

Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.LeftmostReduction

The Leftmost Reduction Theorem #

Reference #

A term is in normal form when it contains no β-redexes.

Equations
Instances For
    @[reducible, inline]

    Leftmost reduction: a β-reduction contracting the redex at position 0.

    Equations
    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

          In a normal-form application, both sides are normal and the operator is not an abstraction.

          The body of a normal-form abstraction opens to a normal form.

          Leftmost reduction preserves being an abstraction.

          Left congruence for leftmost reduction, provided the target is not an abstraction.

          theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.BetaAt.app_r_cong {Var : Type u} {L M M' : Term Var} {i : } (h : BetaAt i M M') (hL : L.BetaNormal) (hna : ¬L.IsAbs) :
          BetaAt i (L.app M) (L.app M')

          Reducing the operand across a non-abstraction normal form keeps the position.

          Right congruence for leftmost reduction, provided the operator is a non-abstraction normal form.

          Congruence for leftmost reduction on applications whose reduced operator is a non-abstraction normal form.

          Call-by-Name reduction is contained in leftmost reduction.

          Leftmost reduction preserves local closure.

          Leftmost reduction is preserved by closing a variable and abstracting.

          Cofinite congruence rule for leftmost reduction under an abstraction.

          A standard reduction to a normal form is a leftmost reduction.

          The leftmost reduction theorem: if a term β-reduces to a normal form, then leftmost reduction reaches it.