Pulling back rings along injective maps, and pushing them forward along surjective maps #
Implementation note #
The nsmul
and zsmul
assumptions on any transfer definition for an algebraic structure involving
both addition and multiplication (eg AddMonoidWithOne
) is ∀ n x, f (n • x) = n • f x
, which is
what we would expect.
However, we cannot do the same for transfer definitions built using to_additive
(eg AddMonoid
)
as we want the multiplicative versions to be ∀ x n, f (x ^ n) = f x ^ n
.
As a result, we must use Function.swap
when using additivised transfer definitions in
non-additivised ones.
Pullback a LeftDistribClass
instance along an injective function.
Pullback a RightDistribClass
instance along an injective function.
Pullback a Distrib
instance along an injective function.
Equations
- Function.Injective.distrib f hf add mul = { toMul := inst✝¹, toAdd := inst✝², left_distrib := ⋯, right_distrib := ⋯ }
Instances For
A type endowed with -
and *
has distributive negation, if it admits an injective map that
preserves -
and *
to a type which has distributive negation.
Equations
- Function.Injective.hasDistribNeg f hf neg mul = { toInvolutiveNeg := Function.Injective.involutiveNeg f hf neg, neg_mul := ⋯, mul_neg := ⋯ }
Instances For
A type endowed with 0
, 1
and +
is an additive monoid with one,
if it admits an injective map that preserves 0
, 1
and +
to an additive monoid with one.
See note [reducible non-instances].
Equations
- One or more equations did not get rendered due to their size.
Instances For
A type endowed with 0
, 1
and +
is an additive commutative monoid with one, if it admits an
injective map that preserves 0
, 1
and +
to an additive commutative monoid with one.
See note [reducible non-instances].
Equations
- Function.Injective.addCommMonoidWithOne f hf zero one add nsmul natCast = { toAddMonoidWithOne := Function.Injective.addMonoidWithOne f hf zero one add nsmul natCast, add_comm := ⋯ }
Instances For
A type endowed with 0
, 1
and +
is an additive group with one, if it admits an injective
map that preserves 0
, 1
and +
to an additive group with one. See note
[reducible non-instances].
Equations
- One or more equations did not get rendered due to their size.
Instances For
A type endowed with 0
, 1
and +
is an additive commutative group with one, if it admits an
injective map that preserves 0
, 1
and +
to an additive commutative group with one.
See note [reducible non-instances].
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback a NonUnitalNonAssocSemiring
instance along an injective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback a NonUnitalSemiring
instance along an injective function.
Equations
- Function.Injective.nonUnitalSemiring f hf zero add mul nsmul = { toNonUnitalNonAssocSemiring := Function.Injective.nonUnitalNonAssocSemiring f hf zero add mul nsmul, mul_assoc := ⋯ }
Instances For
Pullback a NonAssocSemiring
instance along an injective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback a Semiring
instance along an injective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback a NonUnitalNonAssocRing
instance along an injective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback a NonUnitalRing
instance along an injective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback a NonAssocRing
instance along an injective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback a Ring
instance along an injective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback a NonUnitalNonAssocCommSemiring
instance along an injective function.
Equations
- Function.Injective.nonUnitalNonAssocCommSemiring f hf zero add mul nsmul = { toNonUnitalNonAssocSemiring := Function.Injective.nonUnitalNonAssocSemiring f hf zero add mul nsmul, mul_comm := ⋯ }
Instances For
Pullback a NonUnitalCommSemiring
instance along an injective function.
Equations
- Function.Injective.nonUnitalCommSemiring f hf zero add mul nsmul = { toNonUnitalSemiring := Function.Injective.nonUnitalSemiring f hf zero add mul nsmul, mul_comm := ⋯ }
Instances For
Pullback a CommSemiring
instance along an injective function.
Equations
- Function.Injective.commSemiring f hf zero one add mul nsmul npow natCast = { toSemiring := Function.Injective.semiring f hf zero one add mul nsmul npow natCast, mul_comm := ⋯ }
Instances For
Pullback a NonUnitalNonAssocCommRing
instance along an injective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback a NonUnitalCommRing
instance along an injective function.
Equations
- Function.Injective.nonUnitalCommRing f hf zero add mul neg sub nsmul zsmul = { toNonUnitalRing := Function.Injective.nonUnitalRing f hf zero add mul neg sub nsmul zsmul, mul_comm := ⋯ }
Instances For
Pullback a CommRing
instance along an injective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pushforward a LeftDistribClass
instance along a surjective function.
Pushforward a RightDistribClass
instance along a surjective function.
Pushforward a Distrib
instance along a surjective function.
Equations
- Function.Surjective.distrib f hf add mul = { toMul := inst✝¹, toAdd := inst✝², left_distrib := ⋯, right_distrib := ⋯ }
Instances For
A type endowed with -
and *
has distributive negation, if it admits a surjective map that
preserves -
and *
from a type which has distributive negation.
Equations
- Function.Surjective.hasDistribNeg f hf neg mul = { toInvolutiveNeg := Function.Surjective.involutiveNeg f hf neg, neg_mul := ⋯, mul_neg := ⋯ }
Instances For
A type endowed with 0
, 1
and +
is an additive monoid with one, if it admits a surjective
map that preserves 0
, 1
and *
from an additive monoid with one. See note
[reducible non-instances].
Equations
- One or more equations did not get rendered due to their size.
Instances For
A type endowed with 0
, 1
and +
is an additive monoid with one,
if it admits a surjective map that preserves 0
, 1
and *
from an additive monoid with one.
See note [reducible non-instances].
Equations
- Function.Surjective.addCommMonoidWithOne f hf zero one add nsmul natCast = { toAddMonoidWithOne := Function.Surjective.addMonoidWithOne f hf zero one add nsmul natCast, add_comm := ⋯ }
Instances For
A type endowed with 0
, 1
, +
is an additive group with one,
if it admits a surjective map that preserves 0
, 1
, and +
to an additive group with one.
See note [reducible non-instances].
Equations
- One or more equations did not get rendered due to their size.
Instances For
A type endowed with 0
, 1
, +
is an additive commutative group with one, if it admits a
surjective map that preserves 0
, 1
, and +
to an additive commutative group with one.
See note [reducible non-instances].
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pushforward a NonUnitalNonAssocSemiring
instance along a surjective function.
See note [reducible non-instances].
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pushforward a NonUnitalSemiring
instance along a surjective function.
Equations
- Function.Surjective.nonUnitalSemiring f hf zero add mul nsmul = { toNonUnitalNonAssocSemiring := Function.Surjective.nonUnitalNonAssocSemiring f hf zero add mul nsmul, mul_assoc := ⋯ }
Instances For
Pushforward a NonAssocSemiring
instance along a surjective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pushforward a Semiring
instance along a surjective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pushforward a NonUnitalNonAssocRing
instance along a surjective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pushforward a NonUnitalRing
instance along a surjective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pushforward a NonAssocRing
instance along a surjective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pushforward a Ring
instance along a surjective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pushforward a NonUnitalNonAssocCommSemiring
instance along a surjective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pushforward a NonUnitalCommSemiring
instance along a surjective function.
Equations
- Function.Surjective.nonUnitalCommSemiring f hf zero add mul nsmul = { toNonUnitalSemiring := Function.Surjective.nonUnitalSemiring f hf zero add mul nsmul, mul_comm := ⋯ }
Instances For
Pushforward a CommSemiring
instance along a surjective function.
Equations
- Function.Surjective.commSemiring f hf zero one add mul nsmul npow natCast = { toSemiring := Function.Surjective.semiring f hf zero one add mul nsmul npow natCast, mul_comm := ⋯ }
Instances For
Pushforward a NonUnitalNonAssocCommRing
instance along a surjective function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pushforward a NonUnitalCommRing
instance along a surjective function.
Equations
- Function.Surjective.nonUnitalCommRing f hf zero add mul neg sub nsmul zsmul = { toNonUnitalRing := Function.Surjective.nonUnitalRing f hf zero add mul neg sub nsmul zsmul, mul_comm := ⋯ }
Instances For
Pushforward a CommRing
instance along a surjective function.
Equations
- One or more equations did not get rendered due to their size.