Transfer algebraic structures across Equivs #
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.