TypeTopology

   Various new theorems in univalent mathematics written in Agda
   -------------------------------------------------------------

   Martin Escardo and collaborators,
   2010--2024--∞, continuously evolving.
   https://www.cs.bham.ac.uk/~mhe/
   https://github.com/martinescardo/TypeTopology

   Tested with Agda 2.7.0.1. (It may still work with Agda 2.6.4.3.)

   * Our main use of this development is as a personal blackboard or
     notepad for our research and that of collaborators. In
     particular, some modules have better and better results or
     approaches, as time progresses, with the significant steps kept,
     and with failed ideas and calculations eventually erased.

   * We offer this page as a preliminary announcement of results to be
     submitted for publication, of the kind we would get when we visit
     a mathematician's office.

   * We have also used this development for learning other people's
     results, and so some previously known constructions and theorems
     are included (sometimes with embellishments).

   * The required material on HoTT/UF has been developed on demand
     over the years to fulfill the needs of the above as they arise,
     and hence is somewhat chaotic. It will continue to expand as the
     need arises. Its form is the result of evolution rather than
     intelligent design (paraphrasing Linus Torvalds).

     Our lecture notes develop HoTT/UF in Agda in a more principled
     way, and offers better approaches to some constructions and
     simpler proofs of some (previously) difficult theorems.
     (https://www.cs.bham.ac.uk/~mhe/HoTT-UF-in-Agda-Lecture-Notes/)

     Our philosophy, here and in the lecture notes, is to work with a
     minimal Martin-Löf type theory, and use principles from HoTT/UF
     (existence of propositional truncations, function extensionality,
     propositional extensionality, univalence, propositional resizing)
     and classical mathematics (excluded middle, choice, LPO, WLPO) as
     explicit assumptions for the theorems, or for the modules, that
     require them. As a consequence, we are able to tell very
     precisely which assumptions of HoTT/UF and classical mathematics,
     if any, we have used for each construction, theorem or set of
     results. We also work, deliberately, with a minimal subset of
     Agda. See below for more about the philosophy.

   * There is also a module that links some "unsafe" modules that use
     type theory beyond MLTT and HoTT/UF, which cannot be included in
     this safe-modules index: The system with type-in-type is
     inconsistent (as is well known), countable Tychonoff, and
     compactness of the Cantor type using countable Tychonoff.

     (https://www.cs.bham.ac.uk/~mhe/TypeTopology/AllModulesIndex.html)

   * In our last count, on 2024.12.18, this development has 796 Agda
     files with 229K lines of code, including comments and blank
     lines.

Philosophy of the repository
----------------------------

   * We adopt the univalent point of view, even in modules which don't
     assume the univalence axiom. In particular, we take seriously the
     distinction between types that are singletons (contractible),
     propositions, sets, 1-groupoids etc., even when the univalence
     axiom, or its typical consequences such as function
     extensionality and propositional extensionality, are not needed
     to reason about them.

   * We work in a minimal version of intensional Martin Löf Type
     Theory, with very few exceptions, which we refer to as Spartan
     MLTT. This is compatible with the UniMath approach.

   * We adopt the Agda flag exact-split, so that Agda definitions by
     pattern matching are definitional equalities, to stay as close as
     Agda can check to the above MLTT.

   * We work in a minimal subset of Agda to implement Spartan MLTT and
     work with it. In particular, we restrict ourselves to safe
     features (with the flags --safe --no-sized-types --no-guardedness).

   * Some functions, and theorems, and definitions need HoTT/UF
     axioms. They are always given explicitly as
     assumptions. Postulates are not allowed in this development.

   * The development is mostly constructive. A few theorems have
     non-constructive, explicit assumptions, such as excluded middle,
     or choice and global choice. One example is
     Cantor-Schröder-Bernstein for arbitrary (homotopy) types, which
     was published in the Journal of Homotopy and Related Structures
     (written in mathematical vernacular as advanced in the HoTT book
     and originally proposed by Peter Aczel).

   * We don't assume propositional resizing as Voevodsky and UniMath
     do. But there are some theorems whose hypotheses or conclusions
     involve propositional resizing (as an axiom, rather than as a
     rule of the type theory as unimath does).

   * The general idea is that any theorem here should be valid in any
     ∞-topos.

   * In particular, we don't use Cubical Agda features, deliberately,
     because at present it is not known whether (some) cubical type
     theory has an interpretation in any ∞ topos.

   * However, by fulfilling the HoTT hypotheses with Cubical-Agda
     implementations, we should be able to run the constructions and
     proofs given here, so that we get constructivity in the
     computational sense (as opposed to constructivity in the sense of
     validity in any (∞-)topos).

   * Although our philosophy is based on HoTT/UF and ∞-toposes, it
     should be emphasized that much of what we do here also holds in
     the setoid model. In particular, this model validates function
     extensionality, the existence of propositional truncationsm and
     the existence of quotients, and some higher inductive types.

Click at the imported module names to navigate to them:

\begin{code}

{-# OPTIONS --safe --without-K #-}

module index where

import Apartness.index
import BinarySystems.index
import CantorSchroederBernstein.index
import Cardinals.index
import Categories.index
import Circle.index
import CoNaturals.index
import ContinuityAxiom.index
import Coslice.index
import CrossedModules.index
import DedekindReals.index
import DiscreteGraphicMonoids.index
import DomainTheory.index
import Dominance.index
import Duploids.index
import Dyadics.index
import DyadicsInductive.index
import EffectfulForcing.index
import Factorial.index
import Field.index
import Fin.index
import Games.index
import Groups.index
import InjectiveTypes.index
import Integers.index
import Iterative.index
import Lifting.index
import Locales.index
import MGS.index
import MLTT.index
import MetricSpaces.index
import Modal.index
import Naturals.index
import Notation.index
import NotionsOfDecidability.index
import OrderedTypes.index
import Ordinals.index
import PCF.index
import PathSequences.index
import Quotient.index
import Rationals.index
import Relations.index
import Slice.index
import TWA.index
import Taboos.index
import TypeTopology.index
import UF.index
import Various.index
import W.index
import WildCategories.index
import gist.index

\end{code}

TODO. Explain what each of the above does here.

The above includes only the --safe modules. A list of all modules is here:

https://www.cs.bham.ac.uk/~mhe/TypeTopology/AllModulesIndex.html