Equivalences on embeddings #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file shows some advanced equivalences on embeddings, useful for constructing larger embeddings from smaller ones.
Embeddings from a sum type are equivalent to two separate embeddings with disjoint ranges.
Equations
- equiv.sum_embedding_equiv_prod_embedding_disjoint = {to_fun := λ (f : α ⊕ β ↪ γ), ⟨(function.embedding.inl.trans f, function.embedding.inr.trans f), _⟩, inv_fun := λ (_x : {f // disjoint (set.range ⇑(f.fst)) (set.range ⇑(f.snd))}), equiv.sum_embedding_equiv_prod_embedding_disjoint._match_2 _x, left_inv := _, right_inv := _}
- equiv.sum_embedding_equiv_prod_embedding_disjoint._match_2 ⟨(f, g), disj⟩ = {to_fun := λ (x : α ⊕ β), equiv.sum_embedding_equiv_prod_embedding_disjoint._match_1 f g x, inj' := _}
- equiv.sum_embedding_equiv_prod_embedding_disjoint._match_1 f g (sum.inr b) = ⇑g b
- equiv.sum_embedding_equiv_prod_embedding_disjoint._match_1 f g (sum.inl a) = ⇑f a
Embeddings whose range lies within a set are equivalent to embeddings to that set.
This is function.embedding.cod_restrict
as an equiv.
Pairs of embeddings with disjoint ranges are equivalent to a dependent sum of embeddings, in which the second embedding cannot take values in the range of the first.
Equations
- equiv.prod_embedding_disjoint_equiv_sigma_embedding_restricted = (equiv.subtype_prod_equiv_sigma_subtype (λ (a : α ↪ γ) (b : β ↪ γ), disjoint (set.range ⇑a) (set.range ⇑b))).trans (equiv.sigma_congr_right (λ (a : α ↪ γ), (equiv.subtype_equiv_prop _).trans (equiv.cod_restrict β (set.range ⇑a)ᶜ)))
A combination of the above results, allowing us to turn one embedding over a sum type into two dependent embeddings, the second of which avoids any members of the range of the first. This is helpful for constructing larger embeddings out of smaller ones.
Embeddings from a single-member type are equivalent to members of the target type.