Isomorphisms of R
-algebras #
This file defines bundled isomorphisms of R
-algebras.
Main definitions #
AlgEquiv R A B
: the type ofR
-algebra isomorphisms betweenA
andB
.
Notations #
A ≃ₐ[R] B
:R
-algebra equivalence fromA
toB
.
An equivalence of algebras is an equivalence of rings commuting with the actions of scalars.
- toFun : A → B
- invFun : B → A
- left_inv : Function.LeftInverse self.invFun self.toFun
- right_inv : Function.RightInverse self.invFun self.toFun
- commutes' : ∀ (r : R), self.toFun ((algebraMap R A) r) = (algebraMap R B) r
An equivalence of algebras commutes with the action of scalars.
Instances For
An equivalence of algebras is an equivalence of rings commuting with the actions of scalars.
Equations
- One or more equations did not get rendered due to their size.
Instances For
AlgEquivClass F R A B
states that F
is a type of algebra structure preserving
equivalences. You should extend this class when you extend AlgEquiv
.
- commutes : ∀ (f : F) (r : R), f ((algebraMap R A) r) = (algebraMap R B) r
An equivalence of algebras commutes with the action of scalars.
Instances
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Turn an element of a type F
satisfying AlgEquivClass F R A B
into an actual AlgEquiv
.
This is declared as the default coercion from F
to A ≃ₐ[R] B
.
Equations
- ↑f = { toEquiv := ↑f, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Equations
- AlgEquivClass.instCoeTCAlgEquiv F R A B = { coe := AlgEquivClass.toAlgEquiv }
Helper instance since the coercion is not always found.
Equations
- AlgEquiv.instFunLike = { coe := DFunLike.coe, coe_injective' := ⋯ }
Equations
- ⋯ = ⋯
Interpret an algebra equivalence as an algebra homomorphism.
This definition is included for symmetry with the other to*Hom
projections.
The simp
normal form is to use the coercion of the AlgHomClass.coeTC
instance.
Equations
- ↑e = { toFun := e.toFun, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Algebra equivalences are reflexive.
Equations
- AlgEquiv.refl = { toEquiv := (RingEquiv.refl A₁).toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Algebra equivalences are symmetric.
Equations
- e.symm = { toEquiv := e.toRingEquiv.symm.toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Auxiliary definition to avoid looping in dsimp
with AlgEquiv.symm_mk
.
Equations
- AlgEquiv.symm_mk.aux f f' h₁ h₂ h₃ h₄ h₅ = { toFun := f, invFun := f', left_inv := h₁, right_inv := h₂, map_mul' := h₃, map_add' := h₄, commutes' := h₅ }.symm
Instances For
See Note [custom simps projection]
Equations
- AlgEquiv.Simps.apply e = ⇑e
Instances For
See Note [custom simps projection]
Equations
- AlgEquiv.Simps.toEquiv e = ↑e
Instances For
See Note [custom simps projection]
Equations
- AlgEquiv.Simps.symm_apply e = ⇑e.symm
Instances For
Algebra equivalences are transitive.
Equations
- e₁.trans e₂ = { toEquiv := (e₁.toRingEquiv.trans e₂.toRingEquiv).toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
If A₁
is equivalent to A₁'
and A₂
is equivalent to A₂'
, then the type of maps
A₁ →ₐ[R] A₂
is equivalent to the type of maps A₁' →ₐ[R] A₂'
.
Equations
Instances For
If A₁
is equivalent to A₂
and A₁'
is equivalent to A₂'
, then the type of maps
A₁ ≃ₐ[R] A₁'
is equivalent to the type of maps A₂ ≃ ₐ[R] A₂'
.
This is the AlgEquiv
version of AlgEquiv.arrowCongr
.
Equations
Instances For
If an algebra morphism has an inverse, it is an algebra isomorphism.
Equations
- AlgEquiv.ofAlgHom f g h₁ h₂ = { toFun := ⇑f, invFun := ⇑g, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Promotes a bijective algebra homomorphism to an algebra equivalence.
Equations
- AlgEquiv.ofBijective f hf = { toEquiv := (RingEquiv.ofBijective (↑f) hf).toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Forgetting the multiplicative structures, an equivalence of algebras is a linear equivalence.
Equations
- e.toLinearEquiv = { toFun := ⇑e, map_add' := ⋯, map_smul' := ⋯, invFun := ⇑e.symm, left_inv := ⋯, right_inv := ⋯ }
Instances For
Upgrade a linear equivalence to an algebra equivalence, given that it distributes over multiplication and the identity
Equations
- AlgEquiv.ofLinearEquiv l map_one map_mul = { toFun := ⇑l, invFun := ⇑l.symm, left_inv := ⋯, right_inv := ⋯, map_mul' := map_mul, map_add' := ⋯, commutes' := ⋯ }
Instances For
Auxiliary definition to avoid looping in dsimp
with AlgEquiv.ofLinearEquiv_symm
.
Equations
- AlgEquiv.ofLinearEquiv_symm.aux l map_one map_mul = (AlgEquiv.ofLinearEquiv l map_one map_mul).symm
Instances For
Promotes a linear RingEquiv
to an AlgEquiv
.
Equations
- AlgEquiv.ofRingEquiv hf = { toFun := ⇑f, invFun := ⇑f.symm, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, commutes' := hf }
Instances For
An algebra isomorphism induces a group isomorphism between automorphism groups.
This is a more bundled version of AlgEquiv.equivCongr
.
Equations
Instances For
The tautological action by A₁ ≃ₐ[R] A₁
on A₁
.
This generalizes Function.End.applyMulAction
.
Equations
- AlgEquiv.applyMulSemiringAction = MulSemiringAction.mk ⋯ ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- AlgEquiv.instMulDistribMulActionUnits = MulDistribMulAction.mk ⋯ ⋯
AlgEquiv.toLinearMap
as a MonoidHom
.
Equations
- AlgEquiv.toLinearMapHom R A = { toFun := AlgEquiv.toLinearMap, map_one' := ⋯, map_mul' := ⋯ }
Instances For
The units group of S →ₐ[R] S
is S ≃ₐ[R] S
.
See LinearMap.GeneralLinearGroup.generalLinearEquiv
for the linear map version.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Each element of the group defines an algebra equivalence.
This is a stronger version of MulSemiringAction.toRingEquiv
and
DistribMulAction.toLinearEquiv
.
Equations
- MulSemiringAction.toAlgEquiv R A g = { toEquiv := (MulSemiringAction.toRingEquiv G A g).toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Each element of the group defines an algebra equivalence.
This is a stronger version of MulSemiringAction.toRingAut
and
DistribMulAction.toModuleEnd
.
Equations
- MulSemiringAction.toAlgAut G R A = { toFun := MulSemiringAction.toAlgEquiv R A, map_one' := ⋯, map_mul' := ⋯ }