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
    @[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
    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
      Instances For
        @[instance_reducible]

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

        Equations
        @[simp]
        theorem Booleanisation.compl_lift {α : Type u_1} (a : α) :
        (lift a) = comp a
        @[simp]
        theorem Booleanisation.compl_comp {α : Type u_1} (a : α) :
        (comp a) = lift a

        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
            @[instance_reducible]

            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
            @[instance_reducible]

            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
            @[instance_reducible]

            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.
            @[instance_reducible]

            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.
            @[instance_reducible]

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

            Equations
            @[instance_reducible]

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

            Equations
            @[instance_reducible]

            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.
            @[simp]
            theorem Booleanisation.lift_le_lift {α : Type u_1} [GeneralizedBooleanAlgebra α] {a b : α} :
            lift a lift b a b
            @[simp]
            theorem Booleanisation.comp_le_comp {α : Type u_1} [GeneralizedBooleanAlgebra α] {a b : α} :
            comp a comp b b a
            @[simp]
            @[simp]
            @[simp]
            theorem Booleanisation.lift_lt_lift {α : Type u_1} [GeneralizedBooleanAlgebra α] {a b : α} :
            lift a < lift b a < b
            @[simp]
            theorem Booleanisation.comp_lt_comp {α : Type u_1} [GeneralizedBooleanAlgebra α] {a b : α} :
            comp a < comp b b < a
            @[simp]
            theorem Booleanisation.lift_lt_comp {α : Type u_1} [GeneralizedBooleanAlgebra α] {a b : α} :
            @[simp]
            @[simp]
            theorem Booleanisation.lift_sup_lift {α : Type u_1} [GeneralizedBooleanAlgebra α] (a b : α) :
            lift alift b = lift (ab)
            @[simp]
            theorem Booleanisation.lift_sup_comp {α : Type u_1} [GeneralizedBooleanAlgebra α] (a b : α) :
            lift acomp b = comp (b \ a)
            @[simp]
            theorem Booleanisation.comp_sup_lift {α : Type u_1} [GeneralizedBooleanAlgebra α] (a b : α) :
            comp alift b = comp (a \ b)
            @[simp]
            theorem Booleanisation.comp_sup_comp {α : Type u_1} [GeneralizedBooleanAlgebra α] (a b : α) :
            comp acomp b = comp (ab)
            @[simp]
            theorem Booleanisation.lift_inf_lift {α : Type u_1} [GeneralizedBooleanAlgebra α] (a b : α) :
            lift alift b = lift (ab)
            @[simp]
            theorem Booleanisation.lift_inf_comp {α : Type u_1} [GeneralizedBooleanAlgebra α] (a b : α) :
            lift acomp b = lift (a \ b)
            @[simp]
            theorem Booleanisation.comp_inf_lift {α : Type u_1} [GeneralizedBooleanAlgebra α] (a b : α) :
            comp alift b = lift (b \ a)
            @[simp]
            theorem Booleanisation.comp_inf_comp {α : Type u_1} [GeneralizedBooleanAlgebra α] (a b : α) :
            comp acomp b = comp (ab)
            @[simp]
            theorem Booleanisation.lift_sdiff_lift {α : Type u_1} [GeneralizedBooleanAlgebra α] (a b : α) :
            lift a \ lift b = lift (a \ b)
            @[simp]
            theorem Booleanisation.lift_sdiff_comp {α : Type u_1} [GeneralizedBooleanAlgebra α] (a b : α) :
            lift a \ comp b = lift (ab)
            @[simp]
            theorem Booleanisation.comp_sdiff_lift {α : Type u_1} [GeneralizedBooleanAlgebra α] (a b : α) :
            comp a \ lift b = comp (ab)
            @[simp]
            theorem Booleanisation.comp_sdiff_comp {α : Type u_1} [GeneralizedBooleanAlgebra α] (a b : α) :
            comp a \ comp b = lift (b \ a)
            @[instance_reducible]
            Equations
            @[instance_reducible]
            Equations
            @[instance_reducible]
            Equations
            @[instance_reducible]
            Equations
            @[instance_reducible]
            Equations
            • One or more equations did not get rendered due to their size.
            @[instance_reducible]
            Equations
            @[instance_reducible]
            Equations
            • One or more equations did not get rendered due to their size.

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

            Equations
            Instances For