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

              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

                    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

                      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

                        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

                          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

                            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
                                  @[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)

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

                                  Equations
                                    Instances For