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
The proposition that the function preserves multiplication
The proposition that the function preserves addition
- 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 = let __src := ↑f; let __src_1 := ↑f; { toEquiv := __src, 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.instFunLikeAlgEquiv = { coe := DFunLike.coe, coe_injective' := ⋯ }
Equations
- ⋯ = ⋯
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
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 = { toRingHom := { toMonoidHom := { toOneHom := { toFun := e.toFun, map_one' := ⋯ }, map_mul' := ⋯ }, map_zero' := ⋯, map_add' := ⋯ }, commutes' := ⋯ }
Instances For
Algebra equivalences are reflexive.
Equations
- AlgEquiv.refl = let __src := 1; { toEquiv := __src.toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Algebra equivalences are symmetric.
Equations
- AlgEquiv.symm e = let __src := RingEquiv.symm (AlgEquiv.toRingEquiv e); { toEquiv := __src.toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Algebra equivalences are transitive.
Equations
- AlgEquiv.trans e₁ e₂ = let __src := RingEquiv.trans (AlgEquiv.toRingEquiv e₁) (AlgEquiv.toRingEquiv e₂); { toEquiv := __src.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
- One or more equations did not get rendered due to their size.
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
- One or more equations did not get rendered due to their size.
Instances For
If an algebra morphism has an inverse, it is an algebra isomorphism.
Equations
- AlgEquiv.ofAlgHom f g h₁ h₂ = { toEquiv := { 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 = let __src := RingEquiv.ofBijective (↑f) hf; { toEquiv := __src.toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Forgetting the multiplicative structures, an equivalence of algebras is a linear equivalence.
Equations
- AlgEquiv.toLinearEquiv e = { toLinearMap := { toAddHom := { toFun := ⇑e, map_add' := ⋯ }, map_smul' := ⋯ }, invFun := ⇑(AlgEquiv.symm e), 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 = { toEquiv := { toFun := ⇑l, invFun := ⇑(LinearEquiv.symm l), left_inv := ⋯, right_inv := ⋯ }, map_mul' := map_mul, map_add' := ⋯, commutes' := ⋯ }
Instances For
Promotes a linear ring_equiv to an AlgEquiv.
Equations
- AlgEquiv.ofRingEquiv hf = { toEquiv := { toFun := ⇑f, invFun := ⇑(RingEquiv.symm f), 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
- One or more equations did not get rendered due to their size.
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.instMulDistribMulActionAlgEquivUnitsToMonoidToMonoidWithZeroToMonoidToDivInvMonoidAutInstMonoid = MulDistribMulAction.mk ⋯ ⋯
AlgEquiv.toLinearMap
as a MonoidHom
.
Equations
- AlgEquiv.toLinearMapHom R A = { toOneHom := { 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
- One or more equations did not get rendered due to their size.