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.monoid = { toSemigroup := Pi.semigroup, toOne := MulOneClass.toOne, one_mul := ⋯, mul_one := ⋯, npow := fun (n : ℕ) (x : (i : I) → f i) (i : I) => x i ^ n, npow_zero := ⋯, npow_succ := ⋯ }
 
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 := LeftCancelMonoid.toMonoid, mul_comm := ⋯, mul_left_cancel := ⋯ }
 
Equations
- Pi.addCancelCommMonoid = { toAddMonoid := 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.