Documentation

Mathlib.Order.Partition.Basic

Partitions #

A Partition of an element a in a complete lattice is an independent family of nontrivial elements whose supremum is a.

An important special case is where s : Set α, where a Partition s corresponds to a partition of the elements of s into a family of nonempty sets. This is equivalent to a transitive and symmetric binary relation r : α → α → Prop where s is the set of all x for which r x x.

Partitions are ordered by refinement: P ≤ Q if every part of P is less than or equal to a part of Q.

Main definitions #

TODO #

structure Partition {α : Type u_1} [CompleteLattice α] (s : α) :
Type u_1

A Partition of an element s of a CompleteLattice is a collection of independent nontrivial elements whose supremum is s.

Instances For
    @[implicit_reducible]
    instance Partition.instSetLike {α : Type u_1} [CompleteLattice α] {s : α} :
    def Partition.Simps.coe {α : Type u_1} [CompleteLattice α] {s : α} (P : Partition s) :
    Set α

    See Note [custom simps projection].

    Instances For
      @[simp]
      theorem Partition.coe_parts {α : Type u_1} {s : α} [CompleteLattice α] {P : Partition s} :
      P.parts = ↑P
      theorem Partition.ext {α : Type u_1} {s : α} [CompleteLattice α] {P Q : Partition s} (hP : ∀ (x : α), x ∈ P ↔ x ∈ Q) :
      P = Q
      theorem Partition.ext_iff {α : Type u_1} {s : α} [CompleteLattice α] {P Q : Partition s} :
      P = Q ↔ ∀ (x : α), x ∈ P ↔ x ∈ Q
      @[simp]
      theorem Partition.sSupIndep {α : Type u_1} {s : α} [CompleteLattice α] (P : Partition s) :
      theorem Partition.disjoint {α : Type u_1} {s x y : α} [CompleteLattice α] {P : Partition s} (hx : x ∈ P) (hy : y ∈ P) (hxy : x ≠ y) :
      theorem Partition.pairwiseDisjoint {α : Type u_1} {s : α} [CompleteLattice α] {P : Partition s} :
      theorem Partition.eq_or_disjoint {α : Type u_1} {s x y : α} [CompleteLattice α] {P : Partition s} (hx : x ∈ P) (hy : y ∈ P) :
      x = y ∨ Disjoint x y
      theorem Partition.eq_of_not_disjoint {α : Type u_1} {s x y : α} [CompleteLattice α] {P : Partition s} (hx : x ∈ P) (hy : y ∈ P) (hxy : ¬Disjoint x y) :
      x = y
      @[simp]
      theorem Partition.sSup_eq {α : Type u_1} {s : α} [CompleteLattice α] (P : Partition s) :
      sSup ↑P = s
      @[simp]
      theorem Partition.iSup_eq {α : Type u_1} {s : α} [CompleteLattice α] (P : Partition s) :
      ⨆ x ∈ P, x = s
      theorem Partition.le_of_mem {α : Type u_1} {s x : α} [CompleteLattice α] (P : Partition s) (hx : x ∈ P) :
      x ≤ s
      theorem Partition.parts_nonempty {α : Type u_1} {s : α} [CompleteLattice α] (P : Partition s) (hs : s ≠ ⊥) :
      (↑P).Nonempty
      @[simp]
      theorem Partition.bot_notMem {α : Type u_1} {s : α} [CompleteLattice α] (P : Partition s) :
      ⊥ ∉ P
      theorem Partition.ne_bot_of_mem {α : Type u_1} {s x : α} [CompleteLattice α] {P : Partition s} (hx : x ∈ P) :
      theorem Partition.bot_lt_of_mem {α : Type u_1} {s x : α} [CompleteLattice α] {P : Partition s} (hx : x ∈ P) :
      ⊥ < x
      def Partition.copy {α : Type u_1} {s t : α} [CompleteLattice α] (P : Partition s) (hst : s = t) :

      Convert a Partition s into a Partition t via an equality s = t.

      Instances For
        @[simp]
        theorem Partition.coe_copy {α : Type u_1} {s t : α} [CompleteLattice α] (P : Partition s) (hst : s = t) :
        ↑(P.copy hst) = ↑P
        @[simp]
        theorem Partition.mem_copy_iff {α : Type u_1} {s t x : α} [CompleteLattice α] {P : Partition s} (hst : s = t) :
        x ∈ P.copy hst ↔ x ∈ P
        def Partition.partscopyEquiv {α : Type u_1} {s t : α} [CompleteLattice α] (P : Partition s) (hst : s = t) :
        ↥(P.copy hst) ≃ ↥P

        The natural equivalence between the subtype of parts and the subtype of parts of a copy.

        Instances For
          @[simp]
          theorem Partition.partscopyEquiv_symm_apply_coe {α : Type u_1} {s t : α} [CompleteLattice α] (P : Partition s) (hst : s = t) (b : { b : α // (fun (x : α) => x ∈ ↑P) b }) :
          ↑((P.partscopyEquiv hst).symm b) = ↑b
          @[simp]
          theorem Partition.partscopyEquiv_apply_coe {α : Type u_1} {s t : α} [CompleteLattice α] (P : Partition s) (hst : s = t) (a : { a : α // (fun (x : α) => x ∈ ↑(P.copy hst)) a }) :
          ↑((P.partscopyEquiv hst) a) = ↑a
          def Partition.removeBot {α : Type u_1} {s : α} [CompleteLattice α] (P : Set α) (indep : _root_.sSupIndep P) (sSup_eq : sSup P = s) :

          A constructor for Partition s that removes ⊥ from the set of parts.

          Instances For
            @[simp]
            theorem Partition.coe_removeBot {α : Type u_1} {s : α} [CompleteLattice α] (P : Set α) (indep : _root_.sSupIndep P) (sSup_eq : sSup P = s) :
            ↑(removeBot P indep sSup_eq) = P \ {⊥}
            @[simp]
            theorem Partition.mem_removeBot {α : Type u_1} {s x : α} [CompleteLattice α] (P : Set α) (indep : _root_.sSupIndep P) (sSup_eq : sSup P = s) :
            x ∈ removeBot P indep sSup_eq ↔ x ∈ P ∧ x ≠ ⊥
            @[simp]
            theorem Partition.notMem_of_bot {α : Type u_1} [CompleteLattice α] (P : Partition ⊥) (x : α) :
            x ∉ P
            @[implicit_reducible]

            There is a unique partition of ⊥.

            theorem Partition.ne_bot_of_mem' {α : Type u_1} {s x : α} [CompleteLattice α] {P : Partition s} (hxP : x ∈ P) :
            @[implicit_reducible]

            Partitions on s are ordered by refinement: P ≤ Q if every part of P is contained in a part of Q.

            theorem Partition.le_def {α : Type u_1} {s : α} [CompleteLattice α] {P Q : Partition s} :
            P ≤ Q ↔ ∀ x ∈ P, ∃ y ∈ Q, x ≤ y
            theorem Partition.exists_le_of_mem_le {α : Type u_1} {s x : α} [CompleteLattice α] {P Q : Partition s} (h : P ≤ Q) (hx : x ∈ P) :
            ∃ y ∈ Q, x ≤ y
            theorem Partition.existsUnique_of_mem_le {α : Type u_1} {s x : α} [CompleteLattice α] {P Q : Partition s} (h : P ≤ Q) (hx : x ∈ P) :
            ∃! y : α, y ∈ Q ∧ x ≤ y
            @[implicit_reducible]
            instance Partition.instOrderTop {α : Type u_1} {s : α} [CompleteLattice α] :

            The top partition of s is the partition with the single part s.

            theorem Partition.top_def {α : Type u_1} {s : α} [CompleteLattice α] :
            ⊤ = removeBot {s} ⋯ ⋯
            @[simp]
            theorem Partition.parts_top {α : Type u_1} {s : α} [CompleteLattice α] (hs : s ≠ ⊥) :
            ↑⊤ = {s}
            @[simp]
            theorem Partition.mem_top_iff {α : Type u_1} {s : α} [CompleteLattice α] {a : α} :
            a ∈ ⊤ ↔ a = s ∧ a ≠ ⊥
            theorem Partition.parts_top_subset {α : Type u_1} {s : α} [CompleteLattice α] :
            ↑⊤ ⊆ {s}