Skip to content

Commit

Permalink
feat(algebra/subalgebra): Restrict injective algebra homomorphism to …
Browse files Browse the repository at this point in the history
…algebra isomorphism (#5560)

The domain of an injective algebra homomorphism is isomorphic to its range.
  • Loading branch information
tb65536 committed Jan 7, 2021
1 parent 2c8175f commit 2457287
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/algebra/algebra/subalgebra.lean
Expand Up @@ -298,6 +298,21 @@ theorem injective_cod_restrict (f : A →ₐ[R] B) (S : subalgebra R B) (hf :
function.injective (f.cod_restrict S hf) ↔ function.injective f :=
⟨λ H x y hxy, H $ subtype.eq hxy, λ H x y hxy, H (congr_arg subtype.val hxy : _)⟩

/-- Restrict an injective algebra homomorphism to an algebra isomorphism -/
noncomputable def alg_equiv.of_injective (f : A →ₐ[R] B) (hf : function.injective f) :
A ≃ₐ[R] f.range :=
alg_equiv.of_bijective (f.cod_restrict f.range (λ x, f.mem_range.mpr ⟨x, rfl⟩))
⟨(f.injective_cod_restrict f.range (λ x, f.mem_range.mpr ⟨x, rfl⟩)).mpr hf,
λ x, Exists.cases_on (f.mem_range.mp (subtype.mem x)) (λ y hy, ⟨y, subtype.ext hy⟩)⟩

@[simp] lemma alg_equiv.of_injective_apply (f : A →ₐ[R] B) (hf : function.injective f) (x : A) :
↑(alg_equiv.of_injective f hf x) = f x := rfl

/-- Restrict an algebra homomorphism between fields to an algebra isomorphism -/
noncomputable def alg_equiv.of_injective_field {E F : Type*} [division_ring E] [semiring F]
[nontrivial F] [algebra R E] [algebra R F] (f : E →ₐ[R] F) : E ≃ₐ[R] f.range :=
alg_equiv.of_injective f f.to_ring_hom.injective

/-- The equalizer of two R-algebra homomorphisms -/
def equalizer (ϕ ψ : A →ₐ[R] B) : subalgebra R A :=
{ carrier := {a | ϕ a = ψ a},
Expand Down

0 comments on commit 2457287

Please sign in to comment.