Lambda-terms use the following syntax:
x
,
y
, x1
, a_long_varname
(u)v
for u
applied to v
.
[x]x
is the usual identity combinator and
[x][y]x
is the K
combinator.
For example the S
combinator is spelled:
[x][y][z]((x)z)(y)z
.
Simple terms use a similar syntax: variables and abstraction are denoted as in lambda-terms. Bunch application is denoted using angles around the function term instead of parentheses and braces to delimitate the bunch, with the dot acting as the delimiter inside the bunch. However as a bunch is a product of simple terms some nice simplifications may be applied to this strict syntax:
u
to the empty bunch:
<u>{}
;
u
to a bunch with a single factor
v
: <u>{v}
or simply
<u>v
;
<u>{v . v}
or <u>{(v)^2}
or
<u>(v)^2
or when v
is just a variable
<u>v^2
;
2
distinct
factors v1
and v2
with
respective multiplicity 2
and 1
:
<u>{v1 . v1 . v2}
or <u>{(v1)^2
. v2}
or, when v1
is just a variable
<u>{v1^2 . v2}
.
For example a term appearing in the Taylor expansion of
([x](x)x)[f][x](f)(f)x
(delta
applied to the Church numeral 2) is
<[x]<x>x^3>{([f][x]<f><f>x)^3 .
[f][x]<f>(<f>x^2)^2}
.