Documentation

Mathlib.Order.Booleanisation

Adding complements to a generalized Boolean algebra #

This file embeds any generalized Boolean algebra into a Boolean algebra.

This concretely proves that any equation holding true in the theory of Boolean algebras that does not reference also holds true in the theory of generalized Boolean algebras. Put another way, one does not need the existence of complements to prove something which does not talk about complements.

Main declarations #

Future work #

If mathlib ever acquires GenBoolAlg, the category of generalised Boolean algebras, then one could show that Booleanisation is the free functor from GenBoolAlg to BoolAlg.

def Booleanisation (α : Type u_2) :
Type u_2

Boolean algebra containing a given generalised Boolean algebra α as a sublattice.

This should be thought of as made of a copy of α (representing elements of α) living under another copy of α (representing complements of elements of α).

Equations
Instances For
    Equations
    @[match_pattern]
    def Booleanisation.lift {α : Type u_1} :
    αBooleanisation α

    The natural inclusion a ↦ a from a generalized Boolean algebra to its generated Boolean algebra.

    Equations
    • Booleanisation.lift = Sum.inl
    Instances For
      @[match_pattern]
      def Booleanisation.comp {α : Type u_1} :
      αBooleanisation α

      The inclusion `a ↦ aᶜ from a generalized Boolean algebra to its generated Boolean algebra.

      Equations
      • Booleanisation.comp = Sum.inr
      Instances For

        The complement operator on Booleanisation α sends a to aᶜ and aᶜ to a, for a : α.

        Equations

        The order on Booleanisation α is as follows: For a b : α,

        • a ≤ b iff a ≤ b in α
        • a ≤ bᶜ iff a and b are disjoint in α
        • aᶜ ≤ bᶜ iff b ≤ a in α
        • ¬ aᶜ ≤ b
        Instances For

          The order on Booleanisation α is as follows: For a b : α,

          • a < b iff a < b in α
          • a < bᶜ iff a and b are disjoint in α
          • aᶜ < bᶜ iff b < a in α
          • ¬ aᶜ < b
          Instances For

            The order on Booleanisation α is as follows: For a b : α,

            • a ≤ b iff a ≤ b in α
            • a ≤ bᶜ iff a and b are disjoint in α
            • aᶜ ≤ bᶜ iff b ≤ a in α
            • ¬ aᶜ ≤ b
            Equations
            • Booleanisation.instLE = { le := Booleanisation.LE }

            The order on Booleanisation α is as follows: For a b : α,

            • a < b iff a < b in α
            • a < bᶜ iff a and b are disjoint in α
            • aᶜ < bᶜ iff b < a in α
            • ¬ aᶜ < b
            Equations
            • Booleanisation.instLT = { lt := Booleanisation.LT }

            The supremum on Booleanisation α is as follows: For a b : α,

            • a ⊔ b is a ⊔ b
            • a ⊔ bᶜ is (b \ a)ᶜ
            • aᶜ ⊔ b is (a \ b)ᶜ
            • aᶜ ⊔ bᶜ is (a ⊓ b)ᶜ
            Equations
            • One or more equations did not get rendered due to their size.

            The infimum on Booleanisation α is as follows: For a b : α,

            • a ⊓ b is a ⊓ b
            • a ⊓ bᶜ is a \ b
            • aᶜ ⊓ b is b \ a
            • aᶜ ⊓ bᶜ is (a ⊔ b)ᶜ
            Equations
            • One or more equations did not get rendered due to their size.

            The bottom element of Booleanisation α is the bottom element of α.

            Equations

            The top element of Booleanisation α is the complement of the bottom element of α.

            Equations

            The difference operator on Booleanisation α is as follows: For a b : α,

            • a \ b is a \ b
            • a \ bᶜ is a ⊓ b
            • aᶜ \ b is (a ⊔ b)ᶜ
            • aᶜ \ bᶜ is b \ a
            Equations
            • One or more equations did not get rendered due to their size.
            Equations
            Equations
            Equations
            Equations
            Equations
            Equations
            • Booleanisation.instBoundedOrder = BoundedOrder.mk
            Equations

            The embedding from a generalised Boolean algebra to its generated Boolean algebra.

            Equations
            • Booleanisation.liftLatticeHom = { toFun := Booleanisation.lift, map_sup' := , map_inf' := }
            Instances For