Instances and theorems on pi types #
This file provides instances for the typeclass defined in Algebra.Group.Defs
. More sophisticated
instances are defined in Algebra.Group.Pi.Lemmas
files elsewhere.
Porting note #
This file relied on the pi_instance
tactic, which was not available at the time of porting. The
comment --pi_instance
is inserted before all fields which were previously derived by
pi_instance
. See this Zulip discussion:
[https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/not.20porting.20pi_instance]
Equations
- Pi.semigroup = { toMul := Pi.instMul, mul_assoc := ⋯ }
Equations
- Pi.addSemigroup = { toAdd := Pi.instAdd, add_assoc := ⋯ }
Equations
- Pi.commSemigroup = { toSemigroup := Pi.semigroup, mul_comm := ⋯ }
Equations
- Pi.addCommSemigroup = { toAddSemigroup := Pi.addSemigroup, add_comm := ⋯ }
Equations
- Pi.mulOneClass = { toOne := Pi.instOne, toMul := Pi.instMul, one_mul := ⋯, mul_one := ⋯ }
Equations
- Pi.addZeroClass = { toZero := Pi.instZero, toAdd := Pi.instAdd, zero_add := ⋯, add_zero := ⋯ }
Equations
- Pi.invOneClass = { toOne := Pi.instOne, toInv := Pi.instInv, inv_one := ⋯ }
Equations
- Pi.negZeroClass = { toZero := Pi.instZero, toNeg := Pi.instNeg, neg_zero := ⋯ }
Equations
- Pi.commMonoid = { toMonoid := Pi.monoid, mul_comm := ⋯ }
Equations
- Pi.addCommMonoid = { toAddMonoid := Pi.addMonoid, add_comm := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Pi.divInvOneMonoid = { toDivInvMonoid := Pi.divInvMonoid, inv_one := ⋯ }
Equations
- Pi.subNegZeroMonoid = { toSubNegMonoid := Pi.subNegMonoid, neg_zero := ⋯ }
Equations
- Pi.involutiveInv = { toInv := Pi.instInv, inv_inv := ⋯ }
Equations
- Pi.involutiveNeg = { toNeg := Pi.instNeg, neg_neg := ⋯ }
Equations
- Pi.divisionMonoid = { toDivInvMonoid := Pi.divInvMonoid, inv_inv := ⋯, mul_inv_rev := ⋯, inv_eq_of_mul := ⋯ }
Equations
- Pi.subtractionMonoid = { toSubNegMonoid := Pi.subNegMonoid, neg_neg := ⋯, neg_add_rev := ⋯, neg_eq_of_add := ⋯ }
Equations
- Pi.divisionCommMonoid = { toDivisionMonoid := Pi.divisionMonoid, mul_comm := ⋯ }
Equations
- Pi.instSubtractionCommMonoid = { toSubtractionMonoid := Pi.subtractionMonoid, add_comm := ⋯ }
Equations
- Pi.addGroup = { toSubNegMonoid := Pi.subNegMonoid, neg_add_cancel := ⋯ }
Equations
- Pi.addCommGroup = { toAddGroup := Pi.addGroup, add_comm := ⋯ }
Equations
- Pi.leftCancelSemigroup = { toSemigroup := Pi.semigroup, mul_left_cancel := ⋯ }
Equations
- Pi.addLeftCancelSemigroup = { toAddSemigroup := Pi.addSemigroup, add_left_cancel := ⋯ }
Equations
- Pi.rightCancelSemigroup = { toSemigroup := Pi.semigroup, mul_right_cancel := ⋯ }
Equations
- Pi.addRightCancelSemigroup = { toAddSemigroup := Pi.addSemigroup, add_right_cancel := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Pi.cancelMonoid = { toLeftCancelMonoid := Pi.leftCancelMonoid, mul_right_cancel := ⋯ }
Equations
- Pi.addCancelMonoid = { toAddLeftCancelMonoid := Pi.addLeftCancelMonoid, add_right_cancel := ⋯ }
Equations
- Pi.cancelCommMonoid = { toMonoid := Pi.leftCancelMonoid.toMonoid, mul_comm := ⋯, mul_left_cancel := ⋯ }
Equations
- Pi.addCancelCommMonoid = { toAddMonoid := Pi.addLeftCancelMonoid.toAddMonoid, add_comm := ⋯, add_left_cancel := ⋯ }
The function supported at i
, with value x
there, and 1
elsewhere.
Equations
- Pi.mulSingle i x = Function.update 1 i x
The function supported at i
, with value x
there, and 0
elsewhere.
Equations
- Pi.single i x = Function.update 0 i x
Abbreviation for mulSingle_eq_of_ne h.symm
, for ease of use by simp
.
Abbreviation for single_eq_of_ne h.symm
, for ease of use by simp
.
On non-dependent functions, Pi.mulSingle
can be expressed as an ite
On non-dependent functions, Pi.mulSingle
is symmetric in the two indices.
On non-dependent functions, Pi.single
is symmetric in the two indices.
If the one function is surjective, the codomain is trivial.
Equations
If the zero function is surjective, the codomain is trivial.