Construct a sorted list from a finset. #
sort #
sort s
constructs a sorted list from the unordered set s
.
(Uses merge sort algorithm.)
Equations
- finset.sort r s = multiset.sort r s.val
Given a finset s
of cardinality k
in a linear order α
, the map order_iso_of_fin s h
is the increasing bijection between fin k
and s
as an order_iso
. Here, h
is a proof that
the cardinality of s
is k
. We use this instead of an iso fin s.card ≃o s
to avoid
casting issues in further uses of this function.
Equations
- s.order_iso_of_fin h = (fin.cast _).trans ((list.sorted.nth_le_iso (finset.sort has_le.le s) _).trans (order_iso.set_congr (λ (x : α), list.mem x (finset.sort has_le.le s)) (λ (x : α), x ∈ s.val) _))
Given a finset s
of cardinality k
in a linear order α
, the map order_emb_of_fin s h
is
the increasing bijection between fin k
and s
as an order embedding into α
. Here, h
is a
proof that the cardinality of s
is k
. We use this instead of an embedding fin s.card ↪o α
to
avoid casting issues in further uses of this function.
Equations
- s.order_emb_of_fin h = rel_embedding.trans (s.order_iso_of_fin h).to_order_embedding (order_embedding.subtype (λ (x : α), x ∈ s))
The bijection order_emb_of_fin s h
sends 0
to the minimum of s
.
The bijection order_emb_of_fin s h
sends k-1
to the maximum of s
.
order_emb_of_fin {a} h
sends any argument to a
.
Any increasing map f
from fin k
to a finset of cardinality k
has to coincide with
the increasing bijection order_emb_of_fin s h
.
An order embedding f
from fin k
to a finset of cardinality k
has to coincide with
the increasing bijection order_emb_of_fin s h
.
Two parametrizations order_emb_of_fin
of the same set take the same value on i
and j
if
and only if i = j
. Since they can be defined on a priori not defeq types fin k
and fin l
(although necessarily k = l
), the conclusion is rather written (i : ℕ) = (j : ℕ)
.
Given a finset s
of size at least k
in a linear order α
, the map order_emb_of_card_le
is an order embedding from fin k
to α
whose image is contained in s
. Specifically, it maps
fin k
to an initial segment of s
.
Equations
- s.order_emb_of_card_le h = rel_embedding.trans (fin.cast_le h) (s.order_emb_of_fin _)