Algebra structures on the multiplicative opposite #
Main definitions #
MulOpposite.instAlgebra
: the algebra onAᵐᵒᵖ
AlgHom.op
/AlgHom.unop
: simultaneously convert the domain and codomain of a morphism to the opposite algebra.AlgHom.opComm
: swap which side of a morphism lies in the opposite algebra.AlgEquiv.op
/AlgEquiv.unop
: simultaneously convert the source and target of an isomorphism to the opposite algebra.AlgEquiv.opOp
: any algebra is isomorphic to the opposite of its opposite.AlgEquiv.toOpposite
: in a commutative algebra, the opposite algebra is isomorphic to the original algebra.AlgEquiv.opComm
: swap which side of an isomorphism lies in the opposite algebra.
instance
MulOpposite.MulOpposite.instAlgebra
{R : Type u_5}
{A : Type u_6}
[CommSemiring R]
[Semiring A]
[Algebra R A]
:
@[simp]
theorem
MulOpposite.algebraMap_apply
{R : Type u_6}
{A : Type u_5}
[CommSemiring R]
[Semiring A]
[Algebra R A]
(c : R)
:
↑(algebraMap R Aᵐᵒᵖ) c = MulOpposite.op (↑(algebraMap R A) c)
@[simp]
theorem
AlgEquiv.opOp_apply
(R : Type u_1)
(A : Type u_3)
[CommSemiring R]
[Semiring A]
[Algebra R A]
:
∀ (a : A), ↑(AlgEquiv.opOp R A) a = MulOpposite.op (MulOpposite.op a)
@[simp]
theorem
AlgEquiv.opOp_symm_apply
(R : Type u_1)
(A : Type u_3)
[CommSemiring R]
[Semiring A]
[Algebra R A]
:
∀ (a : Aᵐᵒᵖᵐᵒᵖ), ↑(AlgEquiv.symm (AlgEquiv.opOp R A)) a = MulOpposite.unop (MulOpposite.unop a)
@[simp]
theorem
AlgEquiv.toRingEquiv_opOp
(R : Type u_1)
(A : Type u_3)
[CommSemiring R]
[Semiring A]
[Algebra R A]
:
↑(AlgEquiv.opOp R A) = RingEquiv.opOp A
def
AlgHom.fromOpposite
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
(f : A →ₐ[R] B)
(hf : ∀ (x y : A), Commute (↑f x) (↑f y))
:
An algebra homomorphism f : A →ₐ[R] B
such that f x
commutes with f y
for all x, y
defines
an algebra homomorphism from Aᵐᵒᵖ
.
Instances For
@[simp]
theorem
AlgHom.toRingHom_fromOpposite
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
(f : A →ₐ[R] B)
(hf : ∀ (x y : A), Commute (↑f x) (↑f y))
:
↑(AlgHom.fromOpposite f hf) = RingHom.fromOpposite (↑f) hf
def
AlgHom.toOpposite
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
(f : A →ₐ[R] B)
(hf : ∀ (x y : A), Commute (↑f x) (↑f y))
:
An algebra homomorphism f : A →ₐ[R] B
such that f x
commutes with f y
for all x, y
defines
an algebra homomorphism to Bᵐᵒᵖ
.
Instances For
@[simp]
theorem
AlgHom.toRingHom_toOpposite
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
(f : A →ₐ[R] B)
(hf : ∀ (x y : A), Commute (↑f x) (↑f y))
:
↑(AlgHom.toOpposite f hf) = RingHom.toOpposite (↑f) hf
@[simp]
theorem
AlgHom.op_symm_apply_apply
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
(f : Aᵐᵒᵖ →ₐ[R] Bᵐᵒᵖ)
:
∀ (a : A), ↑(↑AlgHom.op.symm f) a = MulOpposite.unop (↑f (MulOpposite.op a))
@[simp]
theorem
AlgHom.op_apply_apply
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
(f : A →ₐ[R] B)
:
∀ (a : Aᵐᵒᵖ), ↑(↑AlgHom.op f) a = MulOpposite.op (↑f (MulOpposite.unop a))
@[simp]
theorem
AlgHom.opComm_symm_apply_apply
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
:
∀ (a : Aᵐᵒᵖ →ₐ[R] B) (a_1 : A), ↑(↑AlgHom.opComm.symm a) a_1 = MulOpposite.op (↑a (MulOpposite.op a_1))
@[simp]
theorem
AlgHom.opComm_apply_apply
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
:
∀ (a : A →ₐ[R] Bᵐᵒᵖ) (a_1 : Aᵐᵒᵖ), ↑(↑AlgHom.opComm a) a_1 = MulOpposite.unop (↑a (MulOpposite.unop a_1))
@[simp]
theorem
AlgEquiv.op_symm_apply_symm_apply
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
(f : Aᵐᵒᵖ ≃ₐ[R] Bᵐᵒᵖ)
:
∀ (a : B), ↑(AlgEquiv.symm (↑AlgEquiv.op.symm f)) a = MulOpposite.unop (↑(AddEquiv.symm ↑↑f) (MulOpposite.op a))
@[simp]
theorem
AlgEquiv.op_symm_apply_apply
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
(f : Aᵐᵒᵖ ≃ₐ[R] Bᵐᵒᵖ)
:
∀ (a : A), ↑(↑AlgEquiv.op.symm f) a = MulOpposite.unop (↑f (MulOpposite.op a))
@[simp]
theorem
AlgEquiv.op_apply_symm_apply
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
(f : A ≃ₐ[R] B)
:
∀ (a : Bᵐᵒᵖ), ↑(AlgEquiv.symm (↑AlgEquiv.op f)) a = MulOpposite.op (↑(AddEquiv.symm ↑↑f) (MulOpposite.unop a))
@[simp]
theorem
AlgEquiv.op_apply_apply
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
(f : A ≃ₐ[R] B)
:
∀ (a : Aᵐᵒᵖ), ↑(↑AlgEquiv.op f) a = MulOpposite.op (↑f (MulOpposite.unop a))
def
AlgEquiv.op
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
:
An algebra iso A ≃ₐ[R] B
can equivalently be viewed as an algebra iso Aᵐᵒᵖ ≃ₐ[R] Bᵐᵒᵖ
.
This is the action of the (fully faithful) ᵐᵒᵖ
-functor on morphisms.
Instances For
theorem
AlgEquiv.toRingEquiv_op
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
(f : A ≃ₐ[R] B)
:
AlgEquiv.toRingEquiv (↑AlgEquiv.op f) = ↑RingEquiv.op (AlgEquiv.toRingEquiv f)
theorem
AlgEquiv.toRingEquiv_unop
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
(f : Aᵐᵒᵖ ≃ₐ[R] Bᵐᵒᵖ)
:
AlgEquiv.toRingEquiv (↑AlgEquiv.unop f) = ↑RingEquiv.unop (AlgEquiv.toRingEquiv f)
@[simp]
theorem
AlgEquiv.opComm_symm_apply_symm_apply
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
:
∀ (a : Aᵐᵒᵖ ≃ₐ[R] B) (a_1 : Bᵐᵒᵖ),
↑(AlgEquiv.symm (↑AlgEquiv.opComm.symm a)) a_1 = MulOpposite.unop
(↑(AddEquiv.symm ↑↑(AlgEquiv.trans AlgEquiv.refl (AlgEquiv.trans a (AlgEquiv.opOp R B)))) (MulOpposite.op a_1))
@[simp]
theorem
AlgEquiv.opComm_apply_apply
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
:
∀ (a : A ≃ₐ[R] Bᵐᵒᵖ) (a_1 : Aᵐᵒᵖ), ↑(↑AlgEquiv.opComm a) a_1 = MulOpposite.unop (↑a (MulOpposite.unop a_1))
@[simp]
theorem
AlgEquiv.opComm_symm_apply_apply
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
:
∀ (a : Aᵐᵒᵖ ≃ₐ[R] B) (a_1 : A), ↑(↑AlgEquiv.opComm.symm a) a_1 = MulOpposite.op (↑a (MulOpposite.op a_1))
@[simp]
theorem
AlgEquiv.opComm_apply_symm_apply
{R : Type u_1}
{A : Type u_3}
{B : Type u_4}
[CommSemiring R]
[Semiring A]
[Semiring B]
[Algebra R A]
[Algebra R B]
:
∀ (a : A ≃ₐ[R] Bᵐᵒᵖ) (a_1 : B),
↑(AlgEquiv.symm (↑AlgEquiv.opComm a)) a_1 = ↑(MulEquiv.symm ↑↑AlgEquiv.refl)
(↑(MulEquiv.symm ↑↑(AlgEquiv.trans (↑AlgEquiv.op a) (AlgEquiv.symm (AlgEquiv.opOp R B)))) a_1)
@[simp]
theorem
AlgEquiv.toOpposite_apply
(R : Type u_1)
(A : Type u_3)
[CommSemiring R]
[CommSemiring A]
[Algebra R A]
:
∀ (a : A), ↑(AlgEquiv.toOpposite R A) a = MulOpposite.op a
@[simp]
theorem
AlgEquiv.toOpposite_symm_apply
(R : Type u_1)
(A : Type u_3)
[CommSemiring R]
[CommSemiring A]
[Algebra R A]
:
∀ (a : Aᵐᵒᵖ), ↑(AlgEquiv.symm (AlgEquiv.toOpposite R A)) a = MulOpposite.unop a
def
AlgEquiv.toOpposite
(R : Type u_1)
(A : Type u_3)
[CommSemiring R]
[CommSemiring A]
[Algebra R A]
:
A commutative algebra is isomorphic to its opposite.
Instances For
@[simp]
theorem
AlgEquiv.toRingEquiv_toOpposite
(R : Type u_1)
(A : Type u_3)
[CommSemiring R]
[CommSemiring A]
[Algebra R A]
:
↑(AlgEquiv.toOpposite R A) = RingEquiv.toOpposite A
@[simp]
theorem
AlgEquiv.toLinearEquiv_toOpposite
(R : Type u_1)
(A : Type u_3)
[CommSemiring R]
[CommSemiring A]
[Algebra R A]
: