Documentation

ConNF.Base.Atom

Atoms #

In this file, we define atoms: the elements of the base type of our model. They are not atoms in the ZFU sense (for example), they are simply the elements of the model which are in type .

This base type does not appear in the final construction, it is just used as the foundation on which the subsequent layers can be built.

Main declarations #

The base type of the construction, denoted by τ₋₁ in various papers. Instead of declaring it as an arbitrary type of cardinality μ and partitioning it into suitable sets of litters afterwards, we define it as Litter × κ, which has the correct cardinality and comes with a natural partition.

These are not 'atoms' in the ZFU, TTTU or NFU sense; they are simply the elements of the model which are in type τ₋₁.

  • litter : ConNF.Litter
  • index : ConNF.κ
Instances For
    instance ConNF.instSuperLAtomLitter [ConNF.Params] :
    ConNF.SuperL ConNF.Atom ConNF.Litter
    Equations
    • ConNF.instSuperLAtomLitter = { superL := ConNF.Atom.litter }
    instance ConNF.instSuperALitterSetAtom [ConNF.Params] :
    ConNF.SuperA ConNF.Litter (Set ConNF.Atom)

    If L is a litter, Lᴬ is the set of atoms associated to that litter.

    Equations
    • ConNF.instSuperALitterSetAtom = { superA := fun (L : ConNF.Litter) => {a : ConNF.Atom | a = L} }
    @[simp]
    theorem ConNF.mem_litter_atoms_iff [ConNF.Params] (a : ConNF.Atom) (L : ConNF.Litter) :
    a L a = L
    theorem ConNF.Atom.ext [ConNF.Params] {a₁ a₂ : ConNF.Atom} (h : a₁ = a₂) (h' : a₁.index = a₂.index) :
    a₁ = a₂
    def ConNF.atomEquiv [ConNF.Params] :
    ConNF.Atom ConNF.Litter × ConNF.κ

    Strips away the name of the type of atoms, converting it into a combination of types well-known to mathlib.

    Equations
    • ConNF.atomEquiv = { toFun := fun (a : ConNF.Atom) => (a, a.index), invFun := fun (a : ConNF.Litter × ConNF.κ) => { litter := a.1, index := a.2 }, left_inv := , right_inv := }
    Instances For
      @[simp]
      theorem ConNF.card_atom [ConNF.Params] :
      Cardinal.mk ConNF.Atom = Cardinal.mk ConNF.μ

      The cardinality of Atom is the cardinality of μ. We will prove that all types constructed in our model have cardinality equal to μ.

      def ConNF.litterSetEquiv [ConNF.Params] (L : ConNF.Litter) :
      L ConNF.κ

      Each litter set is equivalent as a type to κ.

      Equations
      • ConNF.litterSetEquiv L = { toFun := fun (a : L) => (↑a).index, invFun := fun (i : ConNF.κ) => { litter := L, index := i }, , left_inv := , right_inv := }
      Instances For
        @[simp]
        theorem ConNF.Litter.card_atoms [ConNF.Params] (L : ConNF.Litter) :

        Each litter set has cardinality κ.

        theorem ConNF.litter_pairwise_disjoint [ConNF.Params] {L₁ L₂ : ConNF.Litter} (h : L₁ L₂) :
        Disjoint L₁ L₂
        theorem ConNF.litter_eq_of_near [ConNF.Params] {L₁ L₂ : ConNF.Litter} (h : L₁ ~ L₂) :
        L₁ = L₂

        If two litters are near each other, then they are equal.