multiApp f [x₁, x₂, ..., xₙ] applies the arguments x₁, x₂, ..., xₙ to f in left-associative order, i.e. as (((f x₁) x₂) ... xₙ).
Instances For
A list of arguments performs a single reduction step
[x₁, ..., xᵢ ..., xₙ] ⭢βᶠ [x₁, ..., xᵢ', ..., xₙ]
if one of the arguments performs a single step xᵢ ⭢βᶠ xᵢ' and the rest of the arguments are locally closed.
- step
{Var : Type u}
{N N' : Term Var}
{Ns : List (Term Var)}
: N.FullBeta N' → (∀ N ∈ Ns, N.LC) → ListFullBeta (N :: Ns) (N' :: Ns)
head of the list performs a single reduction step, the rest are locally closed
- cons
{Var : Type u}
{N : Term Var}
{Ns Ns' : List (Term Var)}
: N.LC → ListFullBeta Ns Ns' → ListFullBeta (N :: Ns) (N :: Ns')
given a list that already contains a step, we can add locally closed terms to the front
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
A term resulting from a multi-application is locally closed if and only if the leftmost term and all arguments applied to it are locally closed
Congruence lemma for multi reduction of the left most term of a multi-application
Congruence lemma for single reduction of one of the arguments of a multi-application
Congruence lemma for multiple reduction of one of the arguments of a multi-application
If a term (λ M) N P_1 ... P_n reduces in a single step to Q, then Q must be one of the following forms:
Q = (λ M') N P₁ ... Pₙ where M ⭢βᶠ M' or Q = (λ M) N' P₁ ... Pₙ where N ⭢βᶠ N' or Q = (λ M) N P₁' ... Pₙ' where P_i ⭢βᶠ P_i' for some i or Q = (M ^ N) P₁ ... Pₙ
If a term (λ M) N P₁ ... Pₙ reduces in multiple steps to Q, then either Q if of the form
Q = (λ M') N' P'₁ ... P'ₙ
or
we first reach an intermediate term of this shape,
(λ M) N P₁ ... Pₙ ↠βᶠ (λ M') N' P'₁ ... P'ₙ
then perform a beta reduction and reduce further to Q
(λ M') N' P'₁ ... P'ₙ ↠βᶠ M' ^ N' P'_₁ ... P'_ₙ ↠βᶠ Q
where M ↠βᶠ M' and N ↠βᶠ N' and P_i ↠βᶠ P_i' for all i
Just like ordinary beta reduction, the right-hand side of a multi-application step is locally closed
Just like ordinary beta reduction, multiple steps of a argument list preserves local closure