order.sup_indep

# Supremum independence #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

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.le_sup_iff {α : Type u_1} {ι : Type u_3} [lattice α] [order_bot α] {s t : finset ι} {f : ι α} {i : ι} (hs : s.sup_indep f) (hts : t s) (hi : i s) (hf : (i : ι), f i ) :
f i t.sup f i t
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 s disjoint (f i) ((s.erase i).sup f)

The RHS looks like the definition of complete_lattice.independent.

theorem finset.sup_indep.image {α : Type u_1} {ι : Type u_3} {ι' : Type u_4} [lattice α] [order_bot α] {f : ι α} [decidable_eq ι] {s : finset ι'} {g : ι' ι} (hs : s.sup_indep (f g)) :
s).sup_indep f
theorem finset.sup_indep_map {α : Type u_1} {ι : Type u_3} {ι' : Type u_4} [lattice α] [order_bot α] {f : ι α} {s : finset ι'} {g : ι' ι} :
@[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) :
s.attach.sup_indep (λ (a : {x // x s}), f a)
@[simp]
theorem finset.sup_indep_attach {α : Type u_1} {ι : Type u_3} [lattice α] [order_bot α] {s : finset ι} {f : ι α} :
s.attach.sup_indep (λ (a : {x // x s}), f a) 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 : ι α} :

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.

theorem finset.sup_indep.sigma {α : Type u_1} {ι : Type u_3} [order_bot α] {β : ι Type u_2} {s : finset ι} {g : Π (i : ι), finset (β i)} {f : α} (hs : s.sup_indep (λ (i : ι), (g i).sup (λ (b : β i), f i, b⟩))) (hg : (i : ι), i s (g i).sup_indep (λ (b : β i), f i, b⟩)) :

Bind operation for sup_indep.

theorem finset.sup_indep.product {α : Type u_1} {ι : Type u_3} {ι' : Type u_4} [order_bot α] {s : finset ι} {t : finset ι'} {f : ι × ι' α} (hs : s.sup_indep (λ (i : ι), t.sup (λ (i' : ι'), f (i, i')))) (ht : t.sup_indep (λ (i' : ι'), s.sup (λ (i : ι), f (i, i')))) :
(s ×ˢ t).sup_indep f
theorem finset.sup_indep_product_iff {α : Type u_1} {ι : Type u_3} {ι' : Type u_4} [order_bot α] {s : finset ι} {t : finset ι'} {f : ι × ι' α} :
(s ×ˢ t).sup_indep f s.sup_indep (λ (i : ι), t.sup (λ (i' : ι'), f (i, i'))) t.sup_indep (λ (i' : ι'), s.sup (λ (i : ι), f (i, i')))

### 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.mono {α : Type u_1} {s : set α} {t : set α} (hst : t s) :

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
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 α) :

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.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 : ι α} :

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 : ι α} :

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 : ι α} :