λ-calculus

Definition

-terms are

  • variables or atomic constants from given sets
  • applications : if and are -terms, then is one
  • abstractions : if is a variable and is a -term, then is one By convention, the association to the left is used : .

Reduction

  • -reduction :
  • -reduction :

Extensional equality

Theories and determine the same equality relation.

Combinatory logic

Definition

is defined thus :

  • if
  • if

Warning : do not include -reduction inside abstraction definition.

Reduction

  • -reduction :
  • theorem on abstractions :

Extensional equality

Theories and determine the same equality relation. But they’re not easy to work with. So instead, let’s use five axioms only and denote the obtained theory by :

  • and are used to prove the lemma :

Equivalence of extensional equalities

graph TD
A --> B
B --> D
A --> I
I --> EqH
I --> lambdatocl
lambdatocl --> zetaxieta
lambdatocl --> ltcalpha
lambdatocl --> ltcbeta
lambdatocl --> ltcxi
lambdatocl --> ltceta
ltcbeta --> n913d
A("$X=_{C_{ext}}Y \iff X_{\lambda} =_{\lambda_{ext}} Y_\lambda$")
B("$\implies$<br>by 9.5c")
D("depends on
- 9.5a : ok
- 9.5b : ok
- and induction on $\text{CL}\zeta$ which is still ok")
I("$\impliedby$")
EqH("9.11 : previously $(X_\lambda)_H \equiv X$<br>but $(X_\lambda)_H =_{C_{ext}} X$ is enough
Proof by induction on X : 
- $X \equiv x$ : ok
- $X \equiv YZ$ : ok
- $X \equiv \mathbf{I}$ : ok
	- $\mathbf{I}_{\lambda H} \equiv (\lambda x. x)_H \equiv [x]^w.x \equiv \mathbf{I}$
- $X \equiv \mathbf{K}$ : ?
	- $\mathbf{K}_{\lambda H} \equiv \mathbf{S}(\mathbf{K}\mathbf{K})\mathbf{I}$
- $X \equiv \mathbf{S}$ : ?
	- $\mathbf{S}_{\lambda H} \equiv$ see below")
lambdatocl("9.14 : $\lambda \beta \zeta \vdash M = N \implies \text{CL}\zeta \vdash M_H = N_H$ <br>And in fact $\text{CL}\zeta \iff \text{CL}(\xi+\eta)$ so
- $(\rho), (\mu), (\nu), (\tau), (\sigma)$ : ok")
zetaxieta("Proof of $\text{CL}\zeta \iff \text{CL}(\xi+\eta)$ <br>
By 8.8 (adding $(\eta)$)")
ltcbeta("Proof of $(\beta)$ : $((\lambda x.M)N)_H = ([N/x]M)_H$ <br>
$((\lambda x.M)N)_H \equiv (\lambda x.M)_HN_H$ by def <br>
$\equiv ([x]^w.M_H)N_H$ by def <br>
$\rhd_w [N_H/x]M_H$ by 2.21 (valid) <br>
$\equiv ([N/x]M)_H$ by 9.13d")
ltcalpha("Proof of $(\alpha)$ <br>
Use 9.13c : still valid")
ltcxi("Proof of $(\xi)$ <br>
Make sure 8.8 and reasoning is legit")
ltceta("Proof of $(\eta)$ <br>
This proof is not valid anymore, same strategy as for $(\xi)$")
n913d("Checking 9.13d
- 9.13abc : ok
- 2.28b : ok
- 9.10c : by def
- 2.28c : ok")

So excluding rule from the definition of abstractions (2.18c) only adds two results which can be satisfied with the extensionality axioms (check later) :

Equivalence between theories

Goal : . As , let’s prove . Here is used in the meaning of theorem-equivalent.

References