Documentation

LeanPool.DomainTheory.Neighborhood.Theorem46

Lecture IV (§4) — Definition 4.5 and Theorem 4.6: models of Peano's Axioms #

Following Dana Scott, Lectures on a Mathematical Theory of Computation, PRG-19 (1981), Lecture IV, Fixed points and recursion, pages 65–66.

All of the content (the relation Graph, the uniqueness lemmas) is choice-free (#print axioms ⊆ {propext, Quot.sound}); only the packaging of the bijection N ≃ M from the functional-and-total relation pulls Classical.choice, exactly as a Dedekind/recursion theorem must.

Definition 4.5 (Scott 1981, PRG-19). A model for Peano's Axioms: a type N with a distinguished element zero and a unary successor, satisfying

  • zero : N

    The distinguished zero 0 ∈ N.

  • succ : NN

    The unary successor ⁺ : N → N.

  • zero_ne_succ (n : N) : self.zero self.succ n

    4.5(i) 0 ≠ n⁺.

  • succ_injective : Function.Injective self.succ

    4.5(ii) the successor is one-one.

  • induction (s : Set N) : self.zero s(∀ (n : N), n sself.succ n s)∀ (n : N), n s

    4.5(iii) the induction principle (point form of x⁺ ⊆ xx = N).

Instances For
    inductive Domain.Neighborhood.PeanoModel.Graph {M : Type u} {N : Type v} (P : PeanoModel M) (Q : PeanoModel N) :
    MNProp

    Scott's least fixed point r ⊆ N × M, realized as the inductively generated relation: the least relation containing (0, □) and closed under (n, m) ↦ (n⁺, m#). The two constructors are Scott's facts (i) 0 r □ and (ii) n r m ⟹ n⁺ r m#. By Theorem 4.1 this is the least fixed point of the approximable operator u ↦ {(0,□)} ∪ {(n⁺,m#) ∣ (n,m) ∈ u} on P(N × M).

    Instances For
      theorem Domain.Neighborhood.PeanoModel.Graph.swap {M : Type u} {N : Type v} {P : PeanoModel M} {Q : PeanoModel N} {m : M} {n : N} (h : P.Graph Q m n) :
      Q.Graph P n m

      The construction is symmetric in the two models: Graph P Q m n swaps to Graph Q P n m. (This is why the relation is one-one in both directions, as Scott notes: "the rôles of N and M are completely symmetric".)

      theorem Domain.Neighborhood.PeanoModel.graph_zero_right {M : Type u} {N : Type v} (P : PeanoModel M) (Q : PeanoModel N) {k : N} (h : P.Graph Q P.zero k) :
      k = Q.zero

      Inversion at 0 (uses 4.5(i)). Anything related to 0 on the left is on the right: 0 r k ⟹ k = □. (The other generating rule would force 0 = n⁺, impossible by 4.5(i).)

      theorem Domain.Neighborhood.PeanoModel.graph_succ_right {M : Type u} {N : Type v} (P : PeanoModel M) (Q : PeanoModel N) {m : M} {k : N} (h : P.Graph Q (P.succ m) k) :
      (n : N), P.Graph Q m n k = Q.succ n

      Inversion at a successor (uses 4.5(i)/(ii)). Anything related to n⁺ on the left comes from a relation n r n₀ with right value a successor: n⁺ r k ⟹ ∃ n₀, n r n₀ ∧ k = n₀#.

      theorem Domain.Neighborhood.PeanoModel.exists_unique_right {M : Type u} {N : Type v} (P : PeanoModel M) (Q : PeanoModel N) (m : M) :
      ∃! n : N, P.Graph Q m n

      Each element of the left model is related by Graph to exactly one element of the right model. Proved by the induction principle 4.5(iii) on the set {m ∣ ∃! n, m r n}: the base case is the 0-inversion graph_zero_right, the step case the successor-inversion graph_succ_right together with 4.5(ii).

      theorem Domain.Neighborhood.PeanoModel.exists_unique_left {M : Type u} {N : Type v} (P : PeanoModel M) (Q : PeanoModel N) (n : N) :
      ∃! m : M, P.Graph Q m n

      Dually (by Graph.swap), each element of the right model is related to exactly one element of the left model.

      theorem Domain.Neighborhood.PeanoModel.peano_models_isomorphic {M : Type u} {N : Type v} (P : PeanoModel M) (Q : PeanoModel N) :
      (e : M N), e P.zero = Q.zero ∀ (m : M), e (P.succ m) = Q.succ (e m)

      Theorem 4.6 (Scott 1981, PRG-19). All models of Peano's Axioms are isomorphic. Between any two models there is a bijection e : N ≃ M of the underlying sets that preserves the structure: e 0 = □ and e (n⁺) = (e n)#. The bijection is the least-fixed-point relation Graph, which exists_unique_right/exists_unique_left show is a one-one correspondence; the two structure equations are the constructors Graph.base/Graph.step.