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.SupIndep s f
: a family of elementsf
are supremum independent on the finite sets
.sSupIndep s
: a set of elements are supremum independent.iSupIndep f
: a family of elements are supremum independent.
Main statements #
- In a distributive lattice, supremum independence is equivalent to pairwise disjointness:
- Otherwise, supremum independence is stronger than pairwise disjointness:
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
#
If both the index type and the lattice have decidable equality,
then the SupIndep
predicate is decidable.
TODO: speedup the definition and drop the [DecidableEq ι]
assumption
by iterating over the pairs (a, t)
such that s = Finset.cons a t _
using something like List.eraseIdx
or by generating both f i
and (s.erase i).sup f
in one loop over s
.
Yet another possible optimization is to precompute partial suprema of f
over the inits and tails of the list representing s
,
store them in 2 Array
s,
then compute each sup
in 1 operation.
Equations
- Finset.instDecidableSupIndepOfDecidableEq = decidable_of_iff (∀ i ∈ s, Disjoint (f i) ((s.erase i).sup f)) ⋯
Alias of Finset.SupIndep.pairwiseDisjoint
.
Alias of the reverse direction of Finset.supIndep_iff_pairwiseDisjoint
.
Bind operation for SupIndep
.
Bind operation for SupIndep
.
Bind operation for SupIndep
.
On complete lattices via sSup
#
If the elements of a set are independent, then any pair within that set is disjoint.
An independent indexed family of elements in a complete lattice is one in which every element
is disjoint from the iSup
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.
Instances For
If the elements of a set are independent, then any pair within that set is disjoint.
Composing an independent indexed family with an injective function on the index results in another indepedendent indexed family.
Composing an independent indexed family with an order isomorphism on the elements results in another independent indexed family.
If the elements of a set are independent, then any element is disjoint from the iSup
of some
subset of the rest.
Alias of the forward direction of iSupIndep_iff_supIndep
.
Alias of the reverse direction of iSupIndep_iff_supIndep
.
A variant of CompleteLattice.iSupIndep_iff_supIndep
for Fintype
s.
Alias of the reverse direction of iSupIndep_iff_supIndep_univ
.
A variant of CompleteLattice.iSupIndep_iff_supIndep
for Fintype
s.
Alias of the forward direction of iSupIndep_iff_supIndep_univ
.
A variant of CompleteLattice.iSupIndep_iff_supIndep
for Fintype
s.
Alias of the reverse direction of sSupIndep_iff_pairwiseDisjoint
.