Transfer algebraic structures across Equiv
s #
In this file we prove theorems of the following form: if β
has a
group structure and α ≃ β
then α
has a group structure, and
similarly for monoids, semigroups, rings, integral domains, fields and
so on.
Note that most of these constructions can also be obtained using the transport
tactic.
Implementation details #
When adding new definitions that transfer type-classes across an equivalence, please mark them
@[reducible]
. See note [reducible non-instances].
Tags #
equiv, group, ring, field, module, algebra
An equivalence e : α ≃ β
gives an additive equivalence α ≃+ β
where
the additive structure on α
is the one obtained by transporting an additive structure
on β
back along e
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An equivalence e : α ≃ β
gives a multiplicative equivalence α ≃* β
where
the multiplicative structure on α
is the one obtained by transporting a multiplicative structure
on β
back along e
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An equivalence e : α ≃ β
gives a ring equivalence α ≃+* β
where the ring structure on α
is
the one obtained by transporting a ring structure on β
back along e
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer add_semigroup
across an Equiv
Equations
- Equiv.addSemigroup e = let mul := Equiv.add e; Function.Injective.addSemigroup ↑e (_ : Function.Injective ↑e) (_ : ∀ (x y : α), ↑e (↑e.symm (↑e x + ↑e y)) = ↑e x + ↑e y)
Instances For
Transfer Semigroup
across an Equiv
Equations
- Equiv.semigroup e = let mul := Equiv.mul e; Function.Injective.semigroup ↑e (_ : Function.Injective ↑e) (_ : ∀ (x y : α), ↑e (↑e.symm (↑e x * ↑e y)) = ↑e x * ↑e y)
Instances For
Transfer SemigroupWithZero
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer AddCommSemigroup
across an Equiv
Equations
- Equiv.addCommSemigroup e = let mul := Equiv.add e; Function.Injective.addCommSemigroup ↑e (_ : Function.Injective ↑e) (_ : ∀ (x y : α), ↑e (↑e.symm (↑e x + ↑e y)) = ↑e x + ↑e y)
Instances For
Transfer CommSemigroup
across an Equiv
Equations
- Equiv.commSemigroup e = let mul := Equiv.mul e; Function.Injective.commSemigroup ↑e (_ : Function.Injective ↑e) (_ : ∀ (x y : α), ↑e (↑e.symm (↑e x * ↑e y)) = ↑e x * ↑e y)
Instances For
Transfer MulZeroClass
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer AddZeroClass
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer MulOneClass
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer MulZeroOneClass
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer AddCommMonoid
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer CommMonoid
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer AddCommGroup
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer NonUnitalNonAssocSemiring
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer NonUnitalSemiring
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer AddMonoidWithOne
across an Equiv
Equations
- Equiv.addMonoidWithOne e = let src := Equiv.addMonoid e; let src_1 := Equiv.one e; AddMonoidWithOne.mk
Instances For
Transfer AddGroupWithOne
across an Equiv
Equations
- Equiv.addGroupWithOne e = let src := Equiv.addMonoidWithOne e; let src_1 := Equiv.addGroup e; AddGroupWithOne.mk SubNegMonoid.zsmul (_ : ∀ (a : α), -a + a = 0)
Instances For
Transfer NonAssocSemiring
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer NonUnitalCommSemiring
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer CommSemiring
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer NonUnitalNonAssocRing
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer NonUnitalRing
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer NonAssocRing
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer NonUnitalCommRing
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer Nontrivial
across an Equiv
Transfer DivisionRing
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer DistribMulAction
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer Module
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
An equivalence e : α ≃ β
gives a linear equivalence α ≃ₗ[R] β
where the R
-module structure on α
is
the one obtained by transporting an R
-module structure on β
back along e
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transfer Algebra
across an Equiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
An equivalence e : α ≃ β
gives an algebra equivalence α ≃ₐ[R] β
where the R
-algebra structure on α
is
the one obtained by transporting an R
-algebra structure on β
back along e
.
Equations
- One or more equations did not get rendered due to their size.