lean2/hott/book.md
2016-04-11 09:45:59 -07:00

14 KiB
Raw Blame History

HoTT Book in Lean

This file lists which sections of the HoTT book have been covered in the Lean HoTT library.

Summary

The rows indicate the chapters, the columns the sections.

  • +: completely formalized
  • ¼, ½ or ¾: partly formalized
  • -: not formalized
  • .: no formalizable content
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Ch 1 . . . . + + + + + . + +
Ch 2 + + + + . + + + + + + + + + +
Ch 3 + + + + ½ + + + + . +
Ch 4 - + + + . + + + +
Ch 5 - . ½ - - . . ½
Ch 6 . + + + + + + + ¾ ¼ ¾ + .
Ch 7 + + + - ¾ - -
Ch 8 + + + - ¾ ¼ - - ½ -
Ch 9 ¾ + + ½ ¾ ½ - - -
Ch 10 ¼ - - - -
Ch 11 - - - - - -

Theorems and definitions in the library which are not in the book:

  • A major difference is that in this library we heavily use pathovers [D. Licata, G. Brunerie. A Cubical Approach to Synthetic Homotopy Theory]. This means that we need less theorems about transports, but instead corresponding theorems about pathovers. These are in init.pathover. For higher paths there are squares, squareovers, and the rudiments of cubes and cubeovers.

  • The category theory library is more extensive than what is presented in the book. For example, we have limits.

Chapter 1: Type theory

  • 1.1 (Type theory versus set theory): no formalizable content.
  • 1.2 (Function types): no formalizable content. Related: init.function
  • 1.3 (Universes and families): no formalizable content (Lean also has a hierarchy of universes Type.{i} : Type.{i + 1}, but they are not cumulative).
  • 1.4 (Dependent function types (Π-types)): no formalizable content. Related: init.function
  • 1.5 (Product types): declaration in init.datatypes, notation in init.types
  • 1.6 (Dependent pair types (Σ-types)): declaration in init.datatypes, notation in init.types
  • 1.7 (Coproduct types): declaration in init.datatypes, notation in init.types
  • 1.8 (The type of booleans): declaration in init.datatypes, notation in init.bool
  • 1.9 (The natural numbers): init.nat (declaration in init.datatypes)
  • 1.10 (Pattern matching and recursion): no formalizable content (we can use the "pattern matching" notation using the function definition package, which are reduced to applying recursors).
  • 1.11 (Propositions as types): some logic is in init.logic and init.types.
  • 1.12 (Identity types): declaration in init.datatypes, more in init.logic

Chapter 2: Homotopy type theory

Chapter 3: Sets and logic

  • 3.1 (Sets and n-types): init.trunc. Example 3.1.9 in types.univ
  • 3.2 (Propositions as types?): types.univ
  • 3.3 (Mere propositions): init.trunc and prop_trunc (Lemma 3.3.5).
  • 3.4 (Classical vs. intuitionistic logic): decidable is defined in init.logic
  • 3.5 (Subsets and propositional resizing): Lemma 3.5.1 is subtype_eq in types.sigma. We have not declared propositional resizing as an axiom.
  • 3.6 (The logic of mere propositions): in the corresponding file in the types folder. (is_trunc_prod is defined in types.sigma)
  • 3.7 (Propositional truncation): init.hit and hit.trunc
  • 3.8 (The axiom of choice): choice
  • 3.9 (The principle of unique choice): Lemma 9.3.1 in hit.trunc, Lemma 9.3.2 in types.trunc
  • 3.10 (When are propositions truncated?): no formalizable content
  • 3.11 (Contractibility): init.trunc (mostly), types.pi (Lemma 3.11.6), types.trunc (Lemma 3.11.7), types.sigma (Lemma 3.11.9)

Chapter 4: Equivalences

Chapter 5: Induction

Lean has support for inductive families, but not for induction-induction or induction-recursion.

  • 5.1 (Introduction to inductive types): not formalized
  • 5.2 (Uniqueness of inductive types): no formalizable content
  • 5.3 (W-types): types.W defines W-types.
  • 5.4 (Inductive types are initial algebras): not formalized
  • 5.5 (Homotopy-inductive types): not formalized
  • 5.6 (The general syntax of inductive definitions): no formalizable content
  • 5.7 (Generalizations of inductive types): no formalizable content.
  • 5.8 (Identity types and identity systems): 5.8.1-5.8.4 not formalized, 5.8.5 in init.ua and 5.8.6 in init.funext

Chapter 6: Higher inductive types

We have two primitive HITs in Lean, the computation rules are manually added to the Lean-HoTT kernel. The primitive HITs are the n-truncation and the quotient (not to be confused with the set-quotient). See init.hit.

  • 6.1 (Introduction): no formalizable content
  • 6.2 (Induction principles and dependent paths): dependent paths in init.pathover, circle in homotopy.circle
  • 6.3 (The interval): homotopy.interval
  • 6.4 (Circles and spheres): homotopy.sphere and homotopy.circle
  • 6.5 (Suspensions): homotopy.suspension (we define the circle to be the suspension of bool, but Lemma 6.5.1 is similar to proving the ordinary induction principle for the circle in homotopy.circle) and a bit in homotopy.sphere and types.pointed
  • 6.6 (Cell complexes): We define the torus using a two quotient, which in turn is defined in terms of the quotient, see homotopy.torus.
  • 6.7 (Hubs and spokes): We define the two quotient using only the quotient in hit.two_quotient. This is slightly different than what is done in section 6.7, because the HIT in section 6.7 is not a quotient.
  • 6.8 (Pushouts): hit.pushout. Some of the "standard homotopy-theoretic constructions" have separate files, although not all of them have been defined explicitly yet
  • 6.9 (Truncations): hit.trunc (except Lemma 6.9.3)
  • 6.10 (Quotients): hit.set_quotient (up to 6.10.3). We define integers differently, to make them compute, in the folder types.int. 6.10.13 is in types.int.hott
  • 6.11 (Algebra): algebra.group, algebra.homotopy_group
  • 6.12 (The flattening lemma): hit.quotient (for quotients instead of homotopy coequalizers, but these are practically the same)
  • 6.13 (The general syntax of higher inductive definitions): no formalizable content

Chapter 7: Homotopy n-types

Chapter 8: Homotopy theory

Every file is in the folder homotopy

  • 8.1 (π_1(S^1)): circle (only the encode-decode proof)
  • 8.2 (Connectedness of suspensions): susp (different proof of Theorem 8.2.1)
  • 8.3 (πk≤n of an n-connected space and π_{k<n}(S^n)): homotopy_group
  • 8.4 (Fiber sequences and the long exact sequence): not formalized
  • 8.5 (The Hopf fibration): circle (multiplication on the circle, Lemma 8.5.8), join (join is associative, Lemma 8.5.9), hopf (The Hopf construction, Lemmas 8.5.5 and 8.5.7), complex_hopf (the H-space structure on the circle and the complex Hopf fibration)
  • 8.6 (The Freudenthal suspension theorem): connectedness (Lemma 8.6.1), wedge (Wedge connectivity, Lemma 8.6.2), the rest is not formalized
  • 8.7 (The van Kampen theorem): not formalized
  • 8.8 (Whiteheads theorem and Whiteheads principle): not formalized
  • 8.9 (A general statement of the encode-decode method): One variation of the encode-decode method is in types.eq.
  • 8.10 (Additional Results): not formalized

Chapter 9: Category theory

Every file is in the folder algebra.category

Chapter 10: Set theory

  • 10.1 (The category of sets): The category of sets is in algebra.category.constructions.set. The proof that it is complete and cocomplete is in algebra.category.limits.set. Most other properties of the category of sets has not been formalized.
  • 10.2 (Cardinal numbers): not formalized
  • 10.3 (Ordinal numbers): not formalized
  • 10.4 (Classical well-orderings): not formalized
  • 10.5 (The cumulative hierarchy): not formalized, and probably not formalizable, because Lean lacks induction-recursion.

Chapter 11: Real numbers

  • 11.1 (The field of rational numbers): To be ported from the standard library.

The rest is not formalized, and parts may be unformalizable because Lean lacks induction-induction