Documentation

Mathlib.Order.BooleanSubalgebra

Boolean subalgebras #

This file defines Boolean subalgebras.

structure BooleanSubalgebra (α : Type u_2) [BooleanAlgebra α] extends Sublattice α :
Type u_2

A Boolean subalgebra of a Boolean algebra is a set containing the bottom and top elements, and closed under suprema, infima and complements.

Instances For
    @[instance_reducible]
    Equations
    theorem BooleanSubalgebra.coe_inj {α : Type u_2} [BooleanAlgebra α] {L M : BooleanSubalgebra α} :
    ↑L = ↑M ↔ L = M
    theorem BooleanSubalgebra.compl_mem {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} {a : α} (ha : a ∈ L) :
    aᶜ ∈ L
    @[simp]
    theorem BooleanSubalgebra.compl_mem_iff {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} {a : α} :
    aᶜ ∈ L ↔ a ∈ L
    @[simp]
    @[simp]
    theorem BooleanSubalgebra.sup_mem {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} {a b : α} (ha : a ∈ L) (hb : b ∈ L) :
    a ⊔ b ∈ L
    theorem BooleanSubalgebra.inf_mem {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} {a b : α} (ha : a ∈ L) (hb : b ∈ L) :
    a ⊓ b ∈ L
    theorem BooleanSubalgebra.sdiff_mem {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} {a b : α} (ha : a ∈ L) (hb : b ∈ L) :
    a \ b ∈ L
    theorem BooleanSubalgebra.himp_mem {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} {a b : α} (ha : a ∈ L) (hb : b ∈ L) :
    a ⇨ b ∈ L
    theorem BooleanSubalgebra.mem_carrier {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} {a : α} :
    a ∈ L.carrier ↔ a ∈ L
    @[simp]
    @[simp]
    theorem BooleanSubalgebra.mem_mk {α : Type u_2} [BooleanAlgebra α] {a : α} {L : Sublattice α} (h_compl : ∀ {a : α}, a ∈ L.carrier → aᶜ ∈ L.carrier) (h_bot : ⊥ ∈ L.carrier) :
    a ∈ { toSublattice := L, compl_mem' := h_compl, bot_mem' := h_bot } ↔ a ∈ L
    @[simp]
    theorem BooleanSubalgebra.coe_mk {α : Type u_2} [BooleanAlgebra α] (L : Sublattice α) (h_compl : ∀ {a : α}, a ∈ L.carrier → aᶜ ∈ L.carrier) (h_bot : ⊥ ∈ L.carrier) :
    ↑{ toSublattice := L, compl_mem' := h_compl, bot_mem' := h_bot } = ↑L
    @[simp]
    theorem BooleanSubalgebra.mk_le_mk {α : Type u_2} [BooleanAlgebra α] {L M : Sublattice α} (hL_compl : ∀ {a : α}, a ∈ L.carrier → aᶜ ∈ L.carrier) (hL_bot : ⊥ ∈ L.carrier) (hM_compl : ∀ {a : α}, a ∈ M.carrier → aᶜ ∈ M.carrier) (hM_bot : ⊥ ∈ M.carrier) :
    { toSublattice := L, compl_mem' := hL_compl, bot_mem' := hL_bot } ≤ { toSublattice := M, compl_mem' := hM_compl, bot_mem' := hM_bot } ↔ L ≤ M
    @[simp]
    theorem BooleanSubalgebra.mk_lt_mk {α : Type u_2} [BooleanAlgebra α] {L M : Sublattice α} (hL_compl : ∀ {a : α}, a ∈ L.carrier → aᶜ ∈ L.carrier) (hL_bot : ⊥ ∈ L.carrier) (hM_compl : ∀ {a : α}, a ∈ M.carrier → aᶜ ∈ M.carrier) (hM_bot : ⊥ ∈ M.carrier) :
    { toSublattice := L, compl_mem' := hL_compl, bot_mem' := hL_bot } < { toSublattice := M, compl_mem' := hM_compl, bot_mem' := hM_bot } ↔ L < M
    def BooleanSubalgebra.copy {α : Type u_2} [BooleanAlgebra α] (L : BooleanSubalgebra α) (s : Set α) (hs : s = ↑L) :

    Copy of a Boolean subalgebra with a new carrier equal to the old one. Useful to fix definitional equalities.

    Equations
    • L.copy s hs = { toSublattice := L.copy s ⋯, compl_mem' := ⋯, bot_mem' := ⋯ }
    Instances For
      @[simp]
      theorem BooleanSubalgebra.coe_copy {α : Type u_2} [BooleanAlgebra α] (L : BooleanSubalgebra α) (s : Set α) (hs : s = ↑L) :
      ↑(L.copy s hs) = s
      theorem BooleanSubalgebra.copy_eq {α : Type u_2} [BooleanAlgebra α] (L : BooleanSubalgebra α) (s : Set α) (hs : s = ↑L) :
      L.copy s hs = L
      theorem BooleanSubalgebra.ext {α : Type u_2} [BooleanAlgebra α] {L M : BooleanSubalgebra α} :
      (∀ (a : α), a ∈ L ↔ a ∈ M) → L = M

      Two Boolean subalgebras are equal if they have the same elements.

      @[instance_reducible]
      instance BooleanSubalgebra.instBotCoe {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} :
      Bot ↥L

      A Boolean subalgebra of a lattice inherits a bottom element.

      Equations
      @[instance_reducible]
      instance BooleanSubalgebra.instTopCoe {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} :
      Top ↥L

      A Boolean subalgebra of a lattice inherits a top element.

      Equations
      @[instance_reducible]
      instance BooleanSubalgebra.instSupCoe {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} :
      Max ↥L

      A Boolean subalgebra of a lattice inherits a supremum.

      Equations
      @[instance_reducible]
      instance BooleanSubalgebra.instInfCoe {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} :
      Min ↥L

      A Boolean subalgebra of a lattice inherits an infimum.

      Equations
      @[instance_reducible]

      A Boolean subalgebra of a lattice inherits a complement.

      Equations
      @[instance_reducible]

      A Boolean subalgebra of a lattice inherits a difference.

      Equations
      @[instance_reducible]

      A Boolean subalgebra of a lattice inherits a Heyting implication.

      Equations
      @[simp]
      @[simp]
      @[simp]
      theorem BooleanSubalgebra.val_sup {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} (a b : ↥L) :
      ↑(a ⊔ b) = ↑a ⊔ ↑b
      @[simp]
      theorem BooleanSubalgebra.val_inf {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} (a b : ↥L) :
      ↑(a ⊓ b) = ↑a ⊓ ↑b
      @[simp]
      theorem BooleanSubalgebra.val_compl {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} (a : ↥L) :
      ↑aᶜ = (↑a)ᶜ
      @[simp]
      theorem BooleanSubalgebra.val_sdiff {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} (a b : ↥L) :
      ↑(a \ b) = ↑a \ ↑b
      @[simp]
      theorem BooleanSubalgebra.val_himp {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} (a b : ↥L) :
      ↑(a ⇨ b) = ↑a ⇨ ↑b
      @[simp]
      @[simp]
      @[simp]
      theorem BooleanSubalgebra.mk_sup_mk {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} (a b : α) (ha : a ∈ L) (hb : b ∈ L) :
      ⟨a, ha⟩ ⊔ ⟨b, hb⟩ = ⟨a ⊔ b, ⋯⟩
      @[simp]
      theorem BooleanSubalgebra.mk_inf_mk {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} (a b : α) (ha : a ∈ L) (hb : b ∈ L) :
      ⟨a, ha⟩ ⊓ ⟨b, hb⟩ = ⟨a ⊓ b, ⋯⟩
      @[simp]
      theorem BooleanSubalgebra.compl_mk {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} (a : α) (ha : a ∈ L) :
      ⟨a, ha⟩ᶜ = ⟨aᶜ, ⋯⟩
      @[simp]
      theorem BooleanSubalgebra.mk_sdiff_mk {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} (a b : α) (ha : a ∈ L) (hb : b ∈ L) :
      ⟨a, ha⟩ \ ⟨b, hb⟩ = ⟨a \ b, ⋯⟩
      @[simp]
      theorem BooleanSubalgebra.mk_himp_mk {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} (a b : α) (ha : a ∈ L) (hb : b ∈ L) :
      ⟨a, ha⟩ ⇨ ⟨b, hb⟩ = ⟨a ⇨ b, ⋯⟩
      @[instance_reducible]
      Equations
      @[instance_reducible]

      A Boolean subalgebra of a lattice inherits a Boolean algebra structure.

      Equations

      The natural lattice hom from a Boolean subalgebra to the original lattice.

      Equations
      Instances For
        theorem BooleanSubalgebra.subtype_apply {α : Type u_2} [BooleanAlgebra α] (L : BooleanSubalgebra α) (a : ↥L) :
        L.subtype a = ↑a
        def BooleanSubalgebra.inclusion {α : Type u_2} [BooleanAlgebra α] {L M : BooleanSubalgebra α} (h : L ≤ M) :

        The inclusion homomorphism from a Boolean subalgebra L to a bigger Boolean subalgebra M.

        Equations
        Instances For
          @[simp]
          theorem BooleanSubalgebra.coe_inclusion {α : Type u_2} [BooleanAlgebra α] {L M : BooleanSubalgebra α} (h : L ≤ M) :
          theorem BooleanSubalgebra.inclusion_apply {α : Type u_2} [BooleanAlgebra α] {L M : BooleanSubalgebra α} (h : L ≤ M) (a : ↥L) :
          @[instance_reducible]

          The maximum Boolean subalgebra of a lattice.

          Equations
          @[instance_reducible]

          The trivial Boolean subalgebra of a lattice.

          Equations
          @[instance_reducible]

          The inf of two Boolean subalgebras is their intersection.

          Equations
          @[instance_reducible]

          The inf of Boolean subalgebras is their intersection.

          Equations
          @[instance_reducible]
          Equations

          The top Boolean subalgebra is isomorphic to the original Boolean algebra.

          This is the Boolean subalgebra version of Equiv.Set.univ α.

          Equations
          Instances For
            @[simp]
            @[simp]
            @[simp]
            theorem BooleanSubalgebra.coe_inf {α : Type u_2} [BooleanAlgebra α] (L M : BooleanSubalgebra α) :
            ↑(L ⊓ M) = ↑L ∩ ↑M
            @[simp]
            theorem BooleanSubalgebra.coe_sInf {α : Type u_2} [BooleanAlgebra α] (S : Set (BooleanSubalgebra α)) :
            ↑(sInf S) = ⋂ L ∈ S, ↑L
            @[simp]
            theorem BooleanSubalgebra.coe_iInf {ι : Sort u_1} {α : Type u_2} [BooleanAlgebra α] (f : ι → BooleanSubalgebra α) :
            ↑(⨅ (i : ι), f i) = ⋂ (i : ι), ↑(f i)
            @[simp]
            theorem BooleanSubalgebra.mem_bot {α : Type u_2} [BooleanAlgebra α] {a : α} :
            @[simp]
            theorem BooleanSubalgebra.mem_top {α : Type u_2} [BooleanAlgebra α] {a : α} :
            @[simp]
            theorem BooleanSubalgebra.mem_inf {α : Type u_2} [BooleanAlgebra α] {L M : BooleanSubalgebra α} {a : α} :
            a ∈ L ⊓ M ↔ a ∈ L ∧ a ∈ M
            @[simp]
            theorem BooleanSubalgebra.mem_sInf {α : Type u_2} [BooleanAlgebra α] {a : α} {S : Set (BooleanSubalgebra α)} :
            a ∈ sInf S ↔ ∀ L ∈ S, a ∈ L
            @[simp]
            theorem BooleanSubalgebra.mem_iInf {ι : Sort u_1} {α : Type u_2} [BooleanAlgebra α] {a : α} {f : ι → BooleanSubalgebra α} :
            a ∈ ⨅ (i : ι), f i ↔ ∀ (i : ι), a ∈ f i
            @[instance_reducible]

            BooleanSubalgebras of a lattice form a complete lattice.

            Equations
            • One or more equations did not get rendered due to their size.

            The preimage of a Boolean subalgebra along a bounded lattice homomorphism.

            Equations
            Instances For
              @[simp]
              theorem BooleanSubalgebra.coe_comap {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] (L : BooleanSubalgebra β) (f : BoundedLatticeHom α β) :
              ↑(comap f L) = ⇑f ⁻¹' ↑L
              @[simp]
              theorem BooleanSubalgebra.mem_comap {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] {f : BoundedLatticeHom α β} {a : α} {L : BooleanSubalgebra β} :
              a ∈ comap f L ↔ f a ∈ L
              @[simp]
              theorem BooleanSubalgebra.comap_comap {α : Type u_2} {β : Type u_3} {γ : Type u_4} [BooleanAlgebra α] [BooleanAlgebra β] [BooleanAlgebra γ] (L : BooleanSubalgebra γ) (g : BoundedLatticeHom β γ) (f : BoundedLatticeHom α β) :
              comap f (comap g L) = comap (g.comp f) L

              The image of a Boolean subalgebra along a monoid homomorphism is a Boolean subalgebra.

              Equations
              Instances For
                @[simp]
                theorem BooleanSubalgebra.coe_map {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] (f : BoundedLatticeHom α β) (L : BooleanSubalgebra α) :
                ↑(map f L) = ⇑f '' ↑L
                @[simp]
                theorem BooleanSubalgebra.mem_map {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] {L : BooleanSubalgebra α} {f : BoundedLatticeHom α β} {b : β} :
                b ∈ map f L ↔ ∃ a ∈ L, f a = b
                theorem BooleanSubalgebra.mem_map_of_mem {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] {L : BooleanSubalgebra α} (f : BoundedLatticeHom α β) {a : α} :
                a ∈ L → f a ∈ map f L
                theorem BooleanSubalgebra.apply_coe_mem_map {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] {L : BooleanSubalgebra α} (f : BoundedLatticeHom α β) (a : ↥L) :
                f ↑a ∈ map f L
                theorem BooleanSubalgebra.map_mono {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] {f : BoundedLatticeHom α β} :
                @[simp]
                theorem BooleanSubalgebra.map_map {α : Type u_2} {β : Type u_3} {γ : Type u_4} [BooleanAlgebra α] [BooleanAlgebra β] [BooleanAlgebra γ] {L : BooleanSubalgebra α} (g : BoundedLatticeHom β γ) (f : BoundedLatticeHom α β) :
                map g (map f L) = map (g.comp f) L
                theorem BooleanSubalgebra.mem_map_equiv {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] {L : BooleanSubalgebra α} {f : α ≃o β} {a : β} :
                a ∈ map (let __src := { toFun := ⇑f, map_sup' := ⋯, map_inf' := ⋯ }; { toFun := ⇑f, map_sup' := ⋯, map_inf' := ⋯, map_top' := ⋯, map_bot' := ⋯ }) L ↔ f.symm a ∈ L
                theorem BooleanSubalgebra.apply_mem_map_iff {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] {L : BooleanSubalgebra α} {f : BoundedLatticeHom α β} {a : α} (hf : Function.Injective ⇑f) :
                f a ∈ map f L ↔ a ∈ L
                theorem BooleanSubalgebra.map_equiv_eq_comap_symm {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] (f : α ≃o β) (L : BooleanSubalgebra α) :
                map (let __src := { toFun := ⇑f, map_sup' := ⋯, map_inf' := ⋯ }; { toFun := ⇑f, map_sup' := ⋯, map_inf' := ⋯, map_top' := ⋯, map_bot' := ⋯ }) L = comap (let __src := { toFun := ⇑f.symm, map_sup' := ⋯, map_inf' := ⋯ }; { toFun := ⇑f.symm, map_sup' := ⋯, map_inf' := ⋯, map_top' := ⋯, map_bot' := ⋯ }) L
                theorem BooleanSubalgebra.comap_equiv_eq_map_symm {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] (f : β ≃o α) (L : BooleanSubalgebra α) :
                comap (let __src := { toFun := ⇑f, map_sup' := ⋯, map_inf' := ⋯ }; { toFun := ⇑f, map_sup' := ⋯, map_inf' := ⋯, map_top' := ⋯, map_bot' := ⋯ }) L = map (let __src := { toFun := ⇑f.symm, map_sup' := ⋯, map_inf' := ⋯ }; { toFun := ⇑f.symm, map_sup' := ⋯, map_inf' := ⋯, map_top' := ⋯, map_bot' := ⋯ }) L
                theorem BooleanSubalgebra.map_symm_eq_iff_eq_map {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] {L : BooleanSubalgebra α} {M : BooleanSubalgebra β} {e : β ≃o α} :
                map (let __src := { toFun := ⇑e.symm, map_sup' := ⋯, map_inf' := ⋯ }; { toFun := ⇑e.symm, map_sup' := ⋯, map_inf' := ⋯, map_top' := ⋯, map_bot' := ⋯ }) L = M ↔ L = map (let __src := { toFun := ⇑e, map_sup' := ⋯, map_inf' := ⋯ }; { toFun := ⇑e, map_sup' := ⋯, map_inf' := ⋯, map_top' := ⋯, map_bot' := ⋯ }) M
                @[simp]
                theorem BooleanSubalgebra.map_bot {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] (f : BoundedLatticeHom α β) :
                theorem BooleanSubalgebra.map_sup {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] (f : BoundedLatticeHom α β) (L M : BooleanSubalgebra α) :
                map f (L ⊔ M) = map f L ⊔ map f M
                theorem BooleanSubalgebra.map_iSup {ι : Sort u_1} {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] (f : BoundedLatticeHom α β) (L : ι → BooleanSubalgebra α) :
                map f (⨆ (i : ι), L i) = ⨆ (i : ι), map f (L i)
                @[simp]
                theorem BooleanSubalgebra.comap_top {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] (f : BoundedLatticeHom α β) :
                theorem BooleanSubalgebra.comap_inf {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] (L M : BooleanSubalgebra β) (f : BoundedLatticeHom α β) :
                comap f (L ⊓ M) = comap f L ⊓ comap f M
                theorem BooleanSubalgebra.comap_iInf {ι : Sort u_1} {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] (f : BoundedLatticeHom α β) (L : ι → BooleanSubalgebra β) :
                comap f (⨅ (i : ι), L i) = ⨅ (i : ι), comap f (L i)
                theorem BooleanSubalgebra.map_inf_le {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] (L M : BooleanSubalgebra α) (f : BoundedLatticeHom α β) :
                map f (L ⊓ M) ≤ map f L ⊓ map f M
                theorem BooleanSubalgebra.le_comap_sup {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] (L M : BooleanSubalgebra β) (f : BoundedLatticeHom α β) :
                comap f L ⊔ comap f M ≤ comap f (L ⊔ M)
                theorem BooleanSubalgebra.le_comap_iSup {ι : Sort u_1} {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] (f : BoundedLatticeHom α β) (L : ι → BooleanSubalgebra β) :
                ⨆ (i : ι), comap f (L i) ≤ comap f (⨆ (i : ι), L i)
                theorem BooleanSubalgebra.map_inf {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] (L M : BooleanSubalgebra α) (f : BoundedLatticeHom α β) (hf : Function.Injective ⇑f) :
                map f (L ⊓ M) = map f L ⊓ map f M
                theorem BooleanSubalgebra.map_top {α : Type u_2} {β : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] (f : BoundedLatticeHom α β) (h : Function.Surjective ⇑f) :

                The minimum Boolean subalgebra containing a given set.

                Equations
                Instances For
                  theorem BooleanSubalgebra.mem_closure {α : Type u_2} [BooleanAlgebra α] {s : Set α} {x : α} :
                  x ∈ closure s ↔ ∀ ⦃L : BooleanSubalgebra α⦄, s ⊆ ↑L → x ∈ L
                  @[simp]
                  theorem BooleanSubalgebra.subset_closure {α : Type u_2} [BooleanAlgebra α] {s : Set α} :
                  s ⊆ ↑(closure s)
                  theorem BooleanSubalgebra.mem_closure_of_mem {α : Type u_2} [BooleanAlgebra α] {s : Set α} {x : α} (hx : x ∈ s) :
                  @[simp]
                  theorem BooleanSubalgebra.closure_le {α : Type u_2} [BooleanAlgebra α] {L : BooleanSubalgebra α} {s : Set α} :
                  closure s ≤ L ↔ s ⊆ ↑L
                  theorem BooleanSubalgebra.closure_mono {α : Type u_2} [BooleanAlgebra α] {t s : Set α} (hst : s ⊆ t) :
                  theorem BooleanSubalgebra.closure_bot_sup_induction {α : Type u_2} [BooleanAlgebra α] {s : Set α} {p : (g : α) → g ∈ closure s → Prop} (mem : ∀ (x : α) (hx : x ∈ s), p x ⋯) (bot : p ⊥ ⋯) (sup : ∀ (x : α) (hx : x ∈ closure s) (y : α) (hy : y ∈ closure s), p x hx → p y hy → p (x ⊔ y) ⋯) (compl : ∀ (x : α) (hx : x ∈ closure s), p x hx → p xᶜ ⋯) {x : α} (hx : x ∈ closure s) :
                  p x hx

                  An induction principle for closure membership. If p holds for ⊥ and all elements of s, and is preserved under suprema and complement, then p holds for all elements of the closure of s.

                  theorem BooleanSubalgebra.mem_closure_iff_sup_sdiff {α : Type u_2} [BooleanAlgebra α] {s : Set α} (isSublattice : IsSublattice s) (bot_mem : ⊥ ∈ s) (top_mem : ⊤ ∈ s) {a : α} :
                  a ∈ closure s ↔ ∃ (t : Finset (↑s × ↑s)), a = t.sup fun (x : ↑s × ↑s) => ↑x.1 \ ↑x.2
                  theorem BooleanSubalgebra.closure_sdiff_sup_induction {α : Type u_2} [BooleanAlgebra α] {s : Set α} (isSublattice : IsSublattice s) (bot_mem : ⊥ ∈ s) (top_mem : ⊤ ∈ s) {p : (g : α) → g ∈ closure s → Prop} (sdiff : ∀ (x : α) (hx : x ∈ s) (y : α) (hy : y ∈ s), p (x \ y) ⋯) (sup : ∀ (x : α) (hx : x ∈ closure s) (y : α) (hy : y ∈ closure s), p x hx → p y hy → p (x ⊔ y) ⋯) (x : α) (hx : x ∈ closure s) :
                  p x hx
                  theorem BooleanSubalgebra.iSup_mem {ι : Sort u_1} {α : Type u_2} [CompleteBooleanAlgebra α] {L : BooleanSubalgebra α} {f : ι → α} [Finite ι] (hf : ∀ (i : ι), f i ∈ L) :
                  ⨆ (i : ι), f i ∈ L
                  theorem BooleanSubalgebra.iInf_mem {ι : Sort u_1} {α : Type u_2} [CompleteBooleanAlgebra α] {L : BooleanSubalgebra α} {f : ι → α} [Finite ι] (hf : ∀ (i : ι), f i ∈ L) :
                  ⨅ (i : ι), f i ∈ L
                  theorem BooleanSubalgebra.sSup_mem {α : Type u_2} [CompleteBooleanAlgebra α] {L : BooleanSubalgebra α} {s : Set α} (hs : s.Finite) (hsL : s ⊆ ↑L) :
                  sSup s ∈ L
                  theorem BooleanSubalgebra.sInf_mem {α : Type u_2} [CompleteBooleanAlgebra α] {L : BooleanSubalgebra α} {s : Set α} (hs : s.Finite) (hsL : s ⊆ ↑L) :
                  sInf s ∈ L
                  theorem BooleanSubalgebra.biSup_mem {α : Type u_2} [CompleteBooleanAlgebra α] {L : BooleanSubalgebra α} {ι : Type u_5} {t : Set ι} {f : ι → α} (ht : t.Finite) (hf : ∀ i ∈ t, f i ∈ L) :
                  ⨆ i ∈ t, f i ∈ L
                  theorem BooleanSubalgebra.biInf_mem {α : Type u_2} [CompleteBooleanAlgebra α] {L : BooleanSubalgebra α} {ι : Type u_5} {t : Set ι} {f : ι → α} (ht : t.Finite) (hf : ∀ i ∈ t, f i ∈ L) :
                  ⨅ i ∈ t, f i ∈ L