An increasing function is injective
- to_embedding : α ↪ β
- map_rel_iff' : ∀ {a b : α}, r a b ↔ s (⇑(c.to_embedding) a) (⇑(c.to_embedding) b)
A relation embedding with respect to a given pair of relations r
and s
is an embedding f : α ↪ β
such that r a b ↔ s (f a) (f b)
.
An order embedding is an embedding f : α ↪ β
such that a ≤ b ↔ (f a) ≤ (f b)
.
This definition is an abbreviation of rel_embedding (≤) (≤)
.
the induced relation on a subtype is an embedding under the natural inclusion.
Equations
- subtype.rel_embedding r p = {to_embedding := {to_fun := subtype.val p, inj' := _}, map_rel_iff' := _}
Equations
- rel_embedding.has_coe_to_fun = {F := λ (_x : r ↪r s), α → β, coe := λ (o : r ↪r s), ⇑(o.to_embedding)}
The map coe_fn : (r ↪r s) → (r → s)
is injective. We can't use function.injective
here but mimic its signature by using ⦃e₁ e₂⦄
.
Equations
- rel_embedding.refl r = {to_embedding := function.embedding.refl α, map_rel_iff' := _}
Equations
- f.trans g = {to_embedding := f.to_embedding.trans g.to_embedding, map_rel_iff' := _}
a relation embedding is also a relation embedding between dual relations.
Equations
- f.rsymm = {to_embedding := f.to_embedding, map_rel_iff' := _}
If f
is injective, then it is a relation embedding from the
preimage relation of s
to s
.
Equations
- rel_embedding.preimage f s = {to_embedding := f, map_rel_iff' := _}
It suffices to prove f
is monotone between strict relations
to show it is a relation embedding.
Equations
- rel_embedding.of_monotone f H = {to_embedding := {to_fun := f, inj' := _}, map_rel_iff' := _}
Embeddings of partial orders that preserve
Equations
- f.order_embedding_of_lt_embedding = {to_embedding := f.to_embedding, map_rel_iff' := _}
lt is preserved by order embeddings of preorders
Equations
- f.lt_embedding = {to_embedding := f.to_embedding, map_rel_iff' := _}
An order embedding is also an order embedding between dual orders.
Equations
- f.osymm = {to_embedding := f.to_embedding, map_rel_iff' := _}
The inclusion map fin n → ℕ
is a relation embedding.
Equations
- fin.val.rel_embedding n = {to_embedding := {to_fun := fin.val n, inj' := _}, map_rel_iff' := _}
The inclusion map fin m → fin n
is an order embedding.
Equations
- fin_fin.rel_embedding h = {to_embedding := {to_fun := λ (_x : fin m), fin_fin.rel_embedding._match_1 h _x, inj' := _}, map_rel_iff' := _}
- fin_fin.rel_embedding._match_1 h ⟨x, h'⟩ = ⟨x, _⟩
Convert an rel_iso
to an rel_embedding
. This function is also available as a coercion
but often it is easier to write f.to_rel_embedding
than to write explicitly r
and s
in the target type.
Equations
- f.to_rel_embedding = {to_embedding := f.to_equiv.to_embedding, map_rel_iff' := _}
Equations
The map coe_fn : (r ≃r s) → (r → s)
is injective. We can't use function.injective
here but mimic its signature by using ⦃e₁ e₂⦄
.
Identity map is a relation isomorphism.
Equations
- rel_iso.refl r = {to_equiv := equiv.refl α, map_rel_iff' := _}
Composition of two relation isomorphisms is a relation isomorphism.
a relation isomorphism is also a relation isomorphism between dual relations.
Any equivalence lifts to a relation isomorphism between s
and its preimage.
Equations
- rel_iso.preimage f s = {to_equiv := f, map_rel_iff' := _}
A surjective relation embedding is a relation isomorphism.
Equations
- rel_iso.of_surjective f H = {to_equiv := equiv.of_bijective ⇑f _, map_rel_iff' := _}
Equations
- e₁.sum_lex_congr e₂ = {to_equiv := e₁.to_equiv.sum_congr e₂.to_equiv, map_rel_iff' := _}
Equations
- e₁.prod_lex_congr e₂ = {to_equiv := e₁.to_equiv.prod_congr e₂.to_equiv, map_rel_iff' := _}
Equations
- rel_iso.group = {mul := λ (f₁ f₂ : r ≃r r), f₂.trans f₁, mul_assoc := _, one := rel_iso.refl r, one_mul := _, mul_one := _, inv := rel_iso.symm r, mul_left_inv := _}
A subset p : set α
embeds into α
Equations
- set_coe_embedding p = {to_fun := subtype.val (λ (x : α), x ∈ p), inj' := _}
Equations
- subrel.rel_embedding r p = {to_embedding := set_coe_embedding p, map_rel_iff' := _}
Equations
- _ = _
Restrict the codomain of a relation embedding
Equations
- rel_embedding.cod_restrict p f H = {to_embedding := function.embedding.cod_restrict p f.to_embedding H, map_rel_iff' := _}
An order isomorphism is also an order isomorphism between dual orders.