order.sup_indep

Supremum independence #

In this file, we define supremum independence of indexed sets. An indexed family f : ι → α is sup-independent if, for all a, f a and the supremum of the rest are disjoint.

Main definitions #

• finset.sup_indep s f: a family of elements f are supremum independent on the finite set s.
• complete_lattice.set_independent s: a set of elements are supremum independent.
• complete_lattice.independent f: a family of elements are supremum independent.

Main statements #

• In a distributive lattice, supremum independence is equivalent to pairwise disjointness:
• finset.sup_indep_iff_pairwise_disjoint
• complete_lattice.set_independent_iff_pairwise_disjoint
• complete_lattice.independent_iff_pairwise_disjoint
• Otherwise, supremum independence is stronger than pairwise disjointness:
• finset.sup_indep.pairwise_disjoint
• complete_lattice.set_independent.pairwise_disjoint
• complete_lattice.independent.pairwise_disjoint

Implementation notes #

For the finite version, we avoid the "obvious" definition ∀ i ∈ s, disjoint (f i) ((s.erase i).sup f) because erase would require decidable equality on ι.

On lattices with a bottom element, via finset.sup#

def finset.sup_indep {α : Type u_1} {ι : Type u_3} [lattice α] [order_bot α] (s : finset ι) (f : ι → α) :
Prop

Supremum independence of finite sets. We avoid the "obvious" definition using s.erase i because erase would require decidable equality on ι.

Equations
Instances for finset.sup_indep
@[protected, instance]
def finset.sup_indep.decidable {α : Type u_1} {ι : Type u_3} [lattice α] [order_bot α] {s : finset ι} {f : ι → α} [decidable_eq ι] [decidable_eq α] :
Equations
theorem finset.sup_indep.subset {α : Type u_1} {ι : Type u_3} [lattice α] [order_bot α] {s t : finset ι} {f : ι → α} (ht : t.sup_indep f) (h : s t) :
theorem finset.sup_indep_empty {α : Type u_1} {ι : Type u_3} [lattice α] [order_bot α] (f : ι → α) :
theorem finset.sup_indep_singleton {α : Type u_1} {ι : Type u_3} [lattice α] [order_bot α] (i : ι) (f : ι → α) :
{i}.sup_indep f
theorem finset.sup_indep.pairwise_disjoint {α : Type u_1} {ι : Type u_3} [lattice α] [order_bot α] {s : finset ι} {f : ι → α} (hs : s.sup_indep f) :
theorem finset.sup_indep_iff_disjoint_erase {α : Type u_1} {ι : Type u_3} [lattice α] [order_bot α] {s : finset ι} {f : ι → α} [decidable_eq ι] :
s.sup_indep f ∀ (i : ι), i sdisjoint (f i) ((s.erase i).sup f)

The RHS looks like the definition of complete_lattice.independent.

@[simp]
theorem finset.sup_indep_pair {α : Type u_1} {ι : Type u_3} [lattice α] [order_bot α] {f : ι → α} [decidable_eq ι] {i j : ι} (hij : i j) :
{i, j}.sup_indep f disjoint (f i) (f j)
theorem finset.sup_indep_univ_bool {α : Type u_1} [lattice α] [order_bot α] (f : bool → α) :
@[simp]
theorem finset.sup_indep_univ_fin_two {α : Type u_1} [lattice α] [order_bot α] (f : fin 2 → α) :
disjoint (f 0) (f 1)
theorem finset.sup_indep.attach {α : Type u_1} {ι : Type u_3} [lattice α] [order_bot α] {s : finset ι} {f : ι → α} (hs : s.sup_indep f) :
theorem finset.sup_indep_iff_pairwise_disjoint {α : Type u_1} {ι : Type u_3} [order_bot α] {s : finset ι} {f : ι → α} :
theorem set.pairwise_disjoint.sup_indep {α : Type u_1} {ι : Type u_3} [order_bot α] {s : finset ι} {f : ι → α} :
s.sup_indep f

Alias of the reverse direction of finset.sup_indep_iff_pairwise_disjoint.

theorem finset.sup_indep.sup {α : Type u_1} {ι : Type u_3} {ι' : Type u_4} [order_bot α] [decidable_eq ι] {s : finset ι'} {g : ι' → } {f : ι → α} (hs : s.sup_indep (λ (i : ι'), (g i).sup f)) (hg : ∀ (i' : ι'), i' s(g i').sup_indep f) :
(s.sup g).sup_indep f

Bind operation for sup_indep.

theorem finset.sup_indep.bUnion {α : Type u_1} {ι : Type u_3} {ι' : Type u_4} [order_bot α] [decidable_eq ι] {s : finset ι'} {g : ι' → } {f : ι → α} (hs : s.sup_indep (λ (i : ι'), (g i).sup f)) (hg : ∀ (i' : ι'), i' s(g i').sup_indep f) :

Bind operation for sup_indep.

On complete lattices via has_Sup.Sup#

def complete_lattice.set_independent {α : Type u_1} (s : set α) :
Prop

An independent set of elements in a complete lattice is one in which every element is disjoint from the Sup of the rest.

Equations
@[simp]
theorem complete_lattice.set_independent_empty {α : Type u_1}  :
theorem complete_lattice.set_independent.mono {α : Type u_1} {s : set α} {t : set α} (hst : t s) :
theorem complete_lattice.set_independent.pairwise_disjoint {α : Type u_1} {s : set α}  :

If the elements of a set are independent, then any pair within that set is disjoint.

theorem complete_lattice.set_independent_pair {α : Type u_1} {a b : α} (hab : a b) :
b
theorem complete_lattice.set_independent.disjoint_Sup {α : Type u_1} {s : set α} {x : α} {y : set α} (hx : x s) (hy : y s) (hxy : x y) :

If the elements of a set are independent, then any element is disjoint from the Sup of some subset of the rest.

def complete_lattice.independent {ι : Sort u_1} {α : Type u_2} (t : ι → α) :
Prop

An independent indexed family of elements in a complete lattice is one in which every element is disjoint from the supr of the rest.

Example: an indexed family of non-zero elements in a vector space is linearly independent iff the indexed family of subspaces they generate is independent in this sense.

Example: an indexed family of submodules of a module is independent in this sense if and only the natural map from the direct sum of the submodules to the module is injective.

Equations
• = ∀ (i : ι), disjoint (t i) (⨆ (j : ι) (H : j i), t j)
theorem complete_lattice.set_independent_iff {α : Type u_1} (s : set α) :
theorem complete_lattice.independent_def {α : Type u_1} {ι : Type u_3} {t : ι → α} :
∀ (i : ι), disjoint (t i) (⨆ (j : ι) (H : j i), t j)
theorem complete_lattice.independent_def' {α : Type u_1} {ι : Type u_3} {t : ι → α} :
∀ (i : ι), disjoint (t i) (has_Sup.Sup (t '' {j : ι | j i}))
theorem complete_lattice.independent_def'' {α : Type u_1} {ι : Type u_3} {t : ι → α} :
∀ (i : ι), disjoint (t i) (has_Sup.Sup {a : α | ∃ (j : ι) (H : j i), t j = a})
@[simp]
theorem complete_lattice.independent_empty {α : Type u_1} (t : empty → α) :
@[simp]
theorem complete_lattice.independent_pempty {α : Type u_1} (t : pempty → α) :
theorem complete_lattice.independent.pairwise_disjoint {α : Type u_1} {ι : Type u_3} {t : ι → α} (ht : complete_lattice.independent t) :

If the elements of a set are independent, then any pair within that set is disjoint.

theorem complete_lattice.independent.mono {α : Type u_1} {ι : Type u_3} {s t : ι → α} (hs : complete_lattice.independent s) (hst : t s) :
theorem complete_lattice.independent.comp {α : Type u_1} {ι : Sort u_2} {ι' : Sort u_3} {t : ι → α} {f : ι' → ι} (ht : complete_lattice.independent t) (hf : function.injective f) :

Composing an independent indexed family with an injective function on the index results in another indepedendent indexed family.

theorem complete_lattice.independent.comp' {α : Type u_1} {ι : Sort u_2} {ι' : Sort u_3} {t : ι → α} {f : ι' → ι} (ht : complete_lattice.independent (t f)) (hf : function.surjective f) :
theorem complete_lattice.independent.set_independent_range {α : Type u_1} {ι : Type u_3} {t : ι → α} (ht : complete_lattice.independent t) :
theorem complete_lattice.independent.injective {α : Type u_1} {ι : Type u_3} {t : ι → α} (ht : complete_lattice.independent t) (h_ne_bot : ∀ (i : ι), t i ) :
theorem complete_lattice.independent_pair {α : Type u_1} {ι : Type u_3} {t : ι → α} {i j : ι} (hij : i j) (huniv : ∀ (k : ι), k = i k = j) :
disjoint (t i) (t j)
theorem complete_lattice.independent.map_order_iso {ι : Sort u_1} {α : Type u_2} {β : Type u_3} (f : α ≃o β) {a : ι → α} (ha : complete_lattice.independent a) :

Composing an indepedent indexed family with an order isomorphism on the elements results in another indepedendent indexed family.

@[simp]
theorem complete_lattice.independent_map_order_iso_iff {ι : Sort u_1} {α : Type u_2} {β : Type u_3} (f : α ≃o β) {a : ι → α} :
theorem complete_lattice.independent.disjoint_bsupr {ι : Type u_1} {α : Type u_2} {t : ι → α} (ht : complete_lattice.independent t) {x : ι} {y : set ι} (hx : x y) :
disjoint (t x) (⨆ (i : ι) (H : i y), t i)

If the elements of a set are independent, then any element is disjoint from the supr of some subset of the rest.

theorem complete_lattice.independent_iff_sup_indep {α : Type u_1} {ι : Type u_3} {s : finset ι} {f : ι → α} :
theorem complete_lattice.independent.sup_indep {α : Type u_1} {ι : Type u_3} {s : finset ι} {f : ι → α} :
s.sup_indep f

Alias of the forward direction of complete_lattice.independent_iff_sup_indep.

theorem finset.sup_indep.independent {α : Type u_1} {ι : Type u_3} {s : finset ι} {f : ι → α} :
s.sup_indep f

Alias of the reverse direction of complete_lattice.independent_iff_sup_indep.

theorem complete_lattice.independent_iff_sup_indep_univ {α : Type u_1} {ι : Type u_3} [fintype ι] {f : ι → α} :

A variant of complete_lattice.independent_iff_sup_indep for fintypes.

theorem finset.sup_indep.independent_of_univ {α : Type u_1} {ι : Type u_3} [fintype ι] {f : ι → α} :

Alias of the reverse direction of complete_lattice.independent_iff_sup_indep_univ.

theorem complete_lattice.independent.sup_indep_univ {α : Type u_1} {ι : Type u_3} [fintype ι] {f : ι → α} :

Alias of the forward direction of complete_lattice.independent_iff_sup_indep_univ.

theorem set.pairwise_disjoint.set_independent {α : Type u_1} [order.frame α] {s : set α} :

Alias of the reverse direction of complete_lattice.set_independent_iff_pairwise_disjoint.

theorem complete_lattice.independent_iff_pairwise_disjoint {α : Type u_1} {ι : Type u_3} [order.frame α] {f : ι → α} :