# Lecture 3: Arithmetic

Teacher: Gilles Dowek

• notion of proof: constructivity, witness property, termination of proof reduction
• notion of theory: having axioms makes the last rule property fail, so we’d better do without axioms and use congruence
• notion of model: many-valued, constructive proof, deduction-modulo theory
A theory is consistent:

if it has a model valued in some non-trivial algebra

A theory is super-consistent:

if for all (full, ordered, and complete) pre-Heyting algebra, it has a model valued in this algebra

Full:

the domains of $\tilde ∀$ and $\tilde ∃$ is $𝒫^+(ℬ)$ (set of non-empty subsets)

Ordered pre-Heyting algebra:

pre-Heyting algebra equipped with an extra order relation such that $\tilde ∧,\tilde ∨, \tilde ∀$, and $\tilde ∃$ are monotone, $\tilde ⇒$ is left anti-monotone and right monotone

Completeness:

every subset has a glb

NB: completeness is useful to use fix-point theorems (Knaster-Tarski, etc…) and build our models out of that.

Examples of theories:

# Arithmetic

• example of wrong proposition: $∀x \, ∃y \, (7 = (x+2) × (y+2))$

• Euclid’s proposition (there are an infinite amount of prime numbers): $∀x ∃y \, (y ≥ x ∧ prime(y))$

### Symbols

Symbols and their arity of arithmetic:

• $0: 0$
• $S: 1$
• $+: 2$
• $×: 2$
• $=: 2$

NB:

1. Every other computable function is expressible as a predicate using these
2. $×$ is not expressible in $0: 0$, $S: 1$, $+: 2$ and $=:2$ (Presburger arithmetic), as Presburger arithmetic is decidable and Peano arithmetic is not.

Classical logic: Peano arithmetic (PA) Constructive logic: Heyting arithmetic (HA)

• with or without a sort $κ$ for classes
• with or without a predicate symbol $N$ for natural numbers

$HA^{κN}$: with both of them

### $HA^{κN}$

Predicates: $0, S, Pred, +, ×, Null, =$

Pred(0) = 0\\ ∀x (Pred(S(x)) = x)\\ ∀y (0 + y = y)\\ ∀x ∀y (S(x) + y = S(x + y)) ∀y (0 × y = 0)\\ ∀x ∀y (S(x) × y = (x × y) + y) Null(0)\\ ∀x ¬Null(S(x))

NB:

• $∀x (Pred(S(x)) = x)$ means that $S$ is injective. Usually, it’s replaced by Peano’s third axiom: $∀x∀y\, (S(x)=S(y) ⟹ x=y)$
• $∀x ¬Null(S(x))$ means that $0$ is not a successor. Usually, it’s replaced by Peano’s fourth axiom: $∀x ¬(0 = S(x))$ (the successor is not surjective)
• As there is an injection from $ℕ$ to $ℕ$ which not a surjection, $ℕ$ is infinite
• We don’t use Peano’s third and fourth axiom as it will make things easier for rewrite rules and our congruence.

### Theory of classes (Second order logic)

Every class containing $0$ and closed by $S$ contains everything.

• $ι$: sort for numbers
• a sort $κ$ for classes
• a predicate symbol $∈$
∀c (0 ∈ c ⇒ ∀x \, (x ∈ c ⇒ S(x) ∈ c) ⇒ ∀y \, y ∈ c)

Comprehension axiom scheme: existence of some classes

∀x_1,...,∀x_n ∃c ∀y (y ∈ c ⇔ A)

NB:

• existence of a countable number of classes, but there is an uncoutable number of subsets of $ℕ$
• here, you only have numbers and classes of numbers. Not sets, because not nested sets and so on…
Peano’s fifth axiom:
0 ∈ c ⇒ ∀x, (x ∈ c ⇒ S(x) ∈ c) ⇒ ∀y, y ∈ c

#### Equality of classes: Leibniz’ definition

∀x∀y (x = y ⇔ ∀c (x ∈ c ⇒ y ∈ c))

From this, you can prove reflexivity, symmetry, transitivity, and substitutivity ($∀x,y. (x=y ⇒ x+z=y+z)$).

Induction scheme:
∀c (0 ∈ c ⇒ ∀x (x ∈ c ⇒ S(x) ∈ c) ⇒ ∀y y ∈ c)

NB: this scheme should be read as the very definition of natural numbers: $ℕ$ is the smallest set containing $0$ and closed by $S$

Ex: if you want to prove $∀x, x+0=x$: use the induction scheme and the comprehension scheme: $∃c∀y (y ∈ c ⇔ y + 0 = y)$

#### Ex: prove that $S$ is injective in $HA^κ$

\infer{HA^κ ⊢ ∀x∀y \, S(x) = S(y) ⇒ x=y}{ \infer{HA^κ ⊢ S(x) = S(y) ⇒ x=y}{ \infer{HA^κ, S(x) = S(y) ⊢ x=y}{ \infer{HA^κ, S(x) = S(y) ⊢ Pred(S(x))=y ⇒ x=y}{ \infer{HA^κ, S(x) = S(y) ⊢ ∃c \, ∀z (z ε c ⇔ z=y)}{\infer{HA^κ, S(x) = S(y) ⊢ ∀y \, ∃c \, ∀z (z ε c ⇔ z=y)}{\phantom{HA^κ, S(x) = S(y) ⊢ ∀y \, ∃c \, ∀z (z ε c ⇔ z=y)}}} & \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y) ⊢ Pred(S(x))=y ⇒ x=y}{ \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y) ⊢ (Pred(S(x)) ε c ⇒ x ε c) ⇒ (Pred(S(x))=y ⇒ x=y)}{ \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y), (Pred(S(x)) ε c ⇒ x ε c), Pred(S(x))=y ⊢ x=y}{ \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y), (Pred(S(x)) ε c ⇒ x ε c), Pred(S(x))=y ⊢ x ε c ⇒ x=y}{ \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y), (Pred(S(x)) ε c ⇒ x ε c), Pred(S(x))=y ⊢ x ε c ⇔ x=y}{ \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y), (Pred(S(x)) ε c ⇒ x ε c), Pred(S(x))=y ⊢ ∀x \, x ε c ⇔ x=y}{\phantom{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y), (Pred(S(x)) ε c ⇒ x ε c), Pred(S(x))=y ⊢ ∀x \, x ε c ⇔ x=y}} } } & \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y), (Pred(S(x)) ε c ⇒ x ε c), Pred(S(x))=y ⊢ x ε c}{ \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y), (Pred(S(x)) ε c ⇒ x ε c), Pred(S(x))=y ⊢ Pred(S(x)) ε c ⇒ x ε c}{\phantom{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y), (Pred(S(x)) ε c ⇒ x ε c), Pred(S(x))=y ⊢ Pred(S(x)) ε c ⇒ x ε c}} & \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y), (Pred(S(x)) ε c ⇒ x ε c), Pred(S(x))=y ⊢ Pred(S(x)) ε c}{ \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y), (Pred(S(x)) ε c ⇒ x ε c), Pred(S(x))=y ⊢ Pred(S(x))=y ⇒ Pred(S(x)) ε c}{ \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y), (Pred(S(x)) ε c ⇒ x ε c), Pred(S(x))=y ⊢ Pred(S(x)) ε c ⇔ Pred(S(x))=y}{ \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y), (Pred(S(x)) ε c ⇒ x ε c), Pred(S(x))=y ⊢ ∀ z \, (z ε c ⇔ z=y)}{\phantom{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y), (Pred(S(x)) ε c ⇒ x ε c), Pred(S(x))=y ⊢ ∀ z \, (z ε c ⇔ z=y)}} & } & } & \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y), (Pred(S(x)) ε c ⇒ x ε c), Pred(S(x))=y ⊢ Pred(S(x))=y}{\phantom{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y), (Pred(S(x)) ε c ⇒ x ε c), Pred(S(x))=y ⊢ Pred(S(x))=y}} } } } } & \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y) ⊢ Pred(S(x)) ε c ⇒ x ε c}{ \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y) ⊢ ∀ c' \, Pred(S(x)) ε c' ⇒ x ε c'}{ \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y) ⊢ Pred(S(x)) = x ⇒ ∀ c' \, Pred(S(x)) ε c' ⇒ x ε c'}{ \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y) ⊢ ∀z ∀t \, (z = t ⇒ ∀ c' \, z ε c' ⇒ t ε c')}{\phantom{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y) ⊢ ∀z ∀t \, (z = t ⇒ ∀ c' \, z ε c' ⇒ t ε c')}} } & \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y) ⊢ Pred(S(x)) = x}{ \infer{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y) ⊢ ∀x' \, Pred(S(x')) = x'}{\phantom{HA^κ, S(x) = S(y), ∀z (z ε c ⇔ z=y) ⊢ ∀x' \, Pred(S(x')) = x'}} } } } } } & \infer{HA^κ, S(x) = S(y) ⊢ Pred(S(x))=y}{\phantom{HA^κ, S(x) = S(y)}⊛\phantom{⊢ Pred(S(x))=y} } } } }

where $⊛$ is the proof:

\infer{HA^κ, S(x) = S(y) ⊢ Pred(S(x))=y}{ \infer{HA^κ, S(x) = S(y) ⊢ Pred(S(y))=y ⇒ Pred(S(x))=y}{ \infer{HA^κ, S(x) = S(y) ⊢ ∃c∀z(zεc⇔z=y)}{ \infer{HA^κ, S(x) = S(y) ⊢ ∀y∃c∀z(zεc⇔z=y)}{\phantom{HA^κ, S(x) = S(y) ⊢ ∀y∃c∀z(zεc⇔z=y)}} } & \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y) ⊢ Pred(S(y))=y ⇒ Pred(S(x))=y}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ Pred(S(x))=y}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ Pred(S(x)) ε c ⇒ Pred(S(x))=y}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ Pred(S(x)) ε c ⇔ Pred(S(x))=y}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ ∀z \, z ε c ⇔ z=y}{\phantom{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ ∀z \, z ε c ⇔ z=y}} } } & \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ Pred(S(x)) ε c}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ Pred(S(y)) ε c ⇒ Pred(S(x)) ε c}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ ∀c' \, Pred(S(y)) ε c' ⇒ Pred(S(x)) ε c'}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ Pred(S(y)) = Pred(S(x)) ⇒ ∀c' \, Pred(S(y)) ε c' ⇒ Pred(S(x)) ε c'}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ ∀ z ∀ t \, (z = t ⇒ ∀c' \, z ε c' ⇒ t ε c')}{\phantom{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ ∀ z ∀ t \, (z = t ⇒ ∀c' \, z ε c' ⇒ t ε c')}} } & \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ Pred(S(y)) = Pred(S(x))}{⊛⊛ } } } & \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ Pred(S(y)) ε c}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ Pred(S(y))=y ⇒ Pred(S(y)) ε c}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ Pred(S(y)) ε c ⇔ Pred(S(y))=y}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ ∀z(zεc⇔z=y)}{\phantom{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ ∀z(zεc⇔z=y)}} } } & \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ Pred(S(y))=y}{\phantom{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ Pred(S(y))=y}} } } } & } } & \infer{HA^κ, S(x) = S(y) ⊢ Pred(S(y))=y}{ \infer{HA^κ, S(x) = S(y) ⊢ ∀y' \, Pred(S(y'))=y'}{\phantom{HA^κ, S(x) = S(y) ⊢ ∀y' \, Pred(S(y'))=y'}} } }

where $⊛⊛$ is:

\infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ Pred(S(y)) = Pred(S(x))}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ ∃ c' ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x)))}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ ∀x ∃ c' ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x)))}{\phantom{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y ⊢ ∀x ∃ c' ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x)))}} } & \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ Pred(S(y)) = Pred(S(x))}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ S(y) ε c' ⇒ Pred(S(y)) = Pred(S(x))}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ S(y) ε c' ⇔ Pred(S(y)) = Pred(S(x))}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x)))}{\phantom{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x)))}} } } & \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ S(y) ε c'}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ S(x) ε c' ⇒ S(y) ε c'}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ ∀c'' \, (S(x) ε c'' ⇒ S(y) ε c'')}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ S(x) = S(y) ⇒ ∀c'' \, (S(x) ε c'' ⇒ S(y) ε c'')}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ ∀z∀t \, (z = t ⇒ ∀c'' \, (z ε c'' ⇒ t ε c''))}{\phantom{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ ∀z∀t \, (z = t ⇒ ∀c'' \, (z ε c'' ⇒ t ε c''))}} } & \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ S(x) = S(y)}{\phantom{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ S(x) = S(y)}} } } & \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ S(x) ε c'}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ Pred(S(x)) = Pred(S(x)) ⇒ S(x) ε c'}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x)))}{\phantom{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x)))}} } & \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ Pred(S(x)) = Pred(S(x))}{ \infer{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ ∀x' \, x' = x'}{\phantom{HA^κ, S(x) = S(y), ∀z(zεc⇔z=y), Pred(S(y))=y, ∀z \, (z ε c' ⇔ Pred(z) = Pred(S(x))) ⊢ ∀x' \, x' = x'}} } } } } }

### $HA$

You can do without the comprehension scheme and use only one induction scheme (and then you have only one sort, you don’t need classes anymore):

∀x_1,...,∀x_n ((0/y)A ⇒ ∀p ((p/y)A ⇒ (S(p)/y)A) ⇒ ∀q (q/y)A)

These two formulation (with and without classes: $HA$ and $HA^κ$) are “equivalent” (technical term: conservative extension): but what does it mean? $A$ is provable in $HA$ iff it is provable in $HA^κ$

• Extension (easy): If $A$ provable in $HA$ then $A$ is provable in $HA^κ$
• Conservative extension (not easy): If $A$ provable in $HA^κ$ then provable in $HA$

NB: Skolemization is a conservative extension.

## Conservative extension…

### …of a theory

$ℒ ⊆ ℒ’$ $𝒯$ in $ℒ$, $𝒯’$ in $ℒ’$

• $𝒯’$ is an extension of $𝒯$ if all propositions provable in $𝒯$ are provable in $𝒯’$

• $𝒯’$ is a conservative extension of $𝒯$ if all the propositions of $ℒ$ provable in $𝒯’$ provable in $𝒯$

### …of a model

$ℒ ⊆ ℒ’$

$ℳ$ model of $ℒ$ and $ℳ’$ model of $ℒ’$

$ℳ’$ is an extension of $ℳ$:

if for all sorts and symbols of $ℒ$ are interpreted in the same way in both models

Example (Skolemization):

• symbols: $+, 0$, and theory: $∀x, ∃y, (x+y=0)$
• interpretation: $⟨ℚ\backslash \lbrace 0\rbrace, ×, 1⟩$
• symbols: $+, 0, I$, and theory: $∀x (x+I(x)=0)$
• interpretation: $⟨ℚ\backslash \lbrace 0\rbrace, ×, 1, x ↦ 1/x⟩$

Theorem: If for all models $ℳ$ of $𝒯$, there exists an extension $ℳ’$ of $ℳ$ that is a model of $𝒯’$, then $𝒯’$ conservative extension of $𝒯$

HA ⊢ A ⟹ HA^κ ⊢ A\\ HA^κ ⊢ A ⟹ HA ⊢ A \text{ if } A \text{ in the language of } HA

## Peano’s predicate symbol

Now: from $HA^κ$ to $HA^{κN}$.

Induction axiom with a predicate symbol N for the natural numbers:

∀c (0 ∈ c ⇒ ∀x (x ∈ c ⇒ S(x) ∈ c) ⇒ ∀y (N(y) ⇒ y ∈ c))

since there may exist other objects than natural numbers in our models.

Other way:

∀c (0 ∈ c ⇒ ∀x (N(x) ⇒ x ∈ c ⇒ S(x) ∈ c) ⇒ ∀y (N(y) ⇒ y ∈ c))

Peano’s first and second axioms:

N(0)\\ ∀x, \, (N(x) ⇒ N(S(x)))

NB: this is why in most books, you have Peano’s axioms from the third on (these two first axioms are not used (not avoid introducing the predicate $N$), but the original numbering is kept)

With:

(A ⇒ ∀x. B) ⟺ ∀x. (A ⇒ B)\\ (A ⇒ B ⇒ C) ⟺ (B ∧ A ⇒ C)

we have a new formulation:

∀y (N(y)⇒∀c (0 ∈ c ⇒∀x (N(x)⇒ x ∈ c ⇒S(x) ∈ c)⇒y ∈ c))

The converse is true as well by setting $c$ to be the class of natural numbers ($N$), therefore we can set:

∀y (N(y) ⟺ ∀c (0 ∈ c ⇒∀x (N(x)⇒ x ∈ c ⇒S(x) ∈ c)⇒y ∈ c))

and discard Peano’s first and second axioms (that are now provable).

This new axiom may seem like a definition of $N$, but it’s circular. But nevermind, we will use fix-point theorems to build models.

### Conservative extension of $HA^κ$

HA ⟶ HA^κ ⟶ HA^{κN}

$∀x (x =0∨∃y (x =S(y)))$: provable in $HA$, $HA^κ$, but not in $HA^{κN}$ (in $HA^{κN}$: $∀x (N(x) ⇒ (x = 0 ∨ ∃y (x = S(y))))$). So $HA^{κN}$ is not an extension (it’s weaker, in a way).

#### Translation

|∀x A| = ∀x (N(x) ⇒ |A|)\\ |∃x A|=∃x (N(x)∧|A|)\\ |P|=P \text{ if } P \text{ is atomic}\\ |A∧B|=|A|∧|B|\\ |∀c A|=∀c |A|\\ |∃c A| = ∃c |A|
• If $A$ provable in $HA^κ$ then $\vert A \vert$ provable in $HA^{κN}$ (≃ extension)
• If $\vert A \vert$ provable in $HA^{κN}$ then $A$ provable in $HA^κ$ (≃ conservative extension)

Disjunction property:

if you have a proof of $⊢ A∨B$, you either have a proof of $⊢ A$ or of $⊢ B$

In $HA^κ$: you don’t have the disjunction and witness properties, except for closed formulas.

In MLTT and Coq: no predicate symbol for natural numbers. But in AF2 (by Krivine and Parigot): you have it (that’s the only difference with the Calculus of Inductive Construction).

Having the disjunction and witness properties enables you to do without axioms.

## Arithmetic as a purely computational theory

Pred(0) ⟶ 0\\ Pred(S(x)) ⟶ x\\ 0 + y ⟶ y\\ S ( x ) + y ⟶ S ( x + y )\\ 0 × y ⟶ 0\\ S ( x ) × y ⟶ ( x × y ) + y\\ Null(0) ⟶ ⊤\\ Null(S(x)) ⟶ ⊥\\ x = y ⟶ ∀c (x ∈ c ⇒ y ∈ c)\\ N(y) ⟶ ∀c (0 ∈ c ⇒ ∀x (N(x) ⇒ x ∈ c ⇒ S(x) ∈ c) ⇒ y ∈ c)

Then, skolemization of the comprehension scheme:

∀x_1,...,∀x_n,∃c,∀y (y ∈ c ⇔ A)

by introducing a notation for this class: $f_{x_1,…,x_n,y,A}(x_1, …, x_n)$:

∀x_1,...,∀x_n,∀y (y ∈ f_{x_1,...,x_n,y,A}(x_1, ..., x_n) ⇔ A)

And add the rewriting rule

y ∈ f_{x_1,...,x_n,y,A}(x_1, ..., x_n) ⟶ A

NB: You can turn a scheme into a finite number of axioms: e.g. Von Neumann-Bernays-Gödel set theory: there are operations on classes, and a finite number of axioms

# Naive set theory

Arithmetic is not enough to formalize all mathematics. E.g. the statement « there is no bijection between $ℕ$ and $ℝ$ » is not provable in arithmetic.

In the beginning of the 20th century: Burali-Forti paradox reformulated by Russel ⟶ foundational crisis

Natural numbers and (set or functions): enable us to define integers, rational numbers, real numbers, points, lines, vectors, etc…

In Peano arithmetic, you can’t have predicates over functions for instance, as $IsInjective(S)$, as functions are not terms. Solution: introduce constant symbols for functions, and an “application function”: $α(S,0)$ is thought of as applying $S$ at $0$ (denoted by $(S \, x)$).

Copula $\epsilon$ (when you have two sorts: objects and classes): similar to $α$, but for predicates: $even(0)$ becomes $0 \, \epsilon \, even$

When you have sets of sets: only one sort, $\epsilon$ becomes $∈$.

Notation: $∈_n$, where $n$ is the arity. $∈_0$ denoted by $ε$

A set can be defined as its characteristic function.

$E$: function mapping its argument $x$ to the proposition expressing that $x$ is an element of $E$

Exs:

• $x ∈ E$ written $ε(E x)$
• $∈_2 (R, x, y)$ written $ε(R x y)$

So $∈_2, ∈_3, \ldots$: not needed anymore

### Functions and combinators

For each term $t$ whose free variables are among $x_1, \ldots, x_n$ a constant $x_1, …, x_n ↦ t$

Combinators (way to remain in linear logic):

K ≝ x,y ↦ x\\ S ≝ x,y,z ↦ (x z) (y z)

Simarly, for each proposition $A$: whose free variables are among $x_1, …, x_n$, a constant $\lbrace x_1, …, x_n \; \mid \; A\rbrace$

Cantor invented it, Frege formalized it, Russel and Burali-Forti showed it was inconsistent, and a few years later: Church re-invented what Frege did with untyped $λ$-calculus

R ≝ \lbrace x \; \mid \; ¬ε(xx)\rbrace

$ε(R R)$ reduces to $¬ ε(R R)$. Conversely, $¬ ε(R R)$ reduces to $ε(R R)$.

With the excluded-middle: there is an obvious contradiction (so Brouwer was happy with it, as he advocated constructivism).

But you can also do it in constructive logic:

\infer{⊢ ⊥}{ \infer{⊢ ¬A}{ \infer{A ⊢ ⊥}{A ⊢ ¬A & A ⊢ A} } & \infer{⊢ A}{⊢ ¬A} }

To circumvent that: you either abandon

• the fact that every predicate is an object (comprehension) ⟶ set theory

• no cut elimination within it (Belgian mathematician: Crabbé)
• the fact that every predicate can be applied to every object ⟶ type theory

Tags:

Updated: