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]
1
, 0
, +
, *
, +ᵥ
, •
, ^
, -
, ⁻¹
, and /
are defined pointwise.
Porting note: bit0
and bit1
are deprecated. This section can be removed entirely
(without replacement?).
Equations
- Pi.addSemigroup = AddSemigroup.mk ⋯
Equations
- Pi.semigroup = Semigroup.mk ⋯
Equations
- Pi.addCommSemigroup = AddCommSemigroup.mk ⋯
Equations
- Pi.commSemigroup = CommSemigroup.mk ⋯
Equations
- Pi.addZeroClass = AddZeroClass.mk ⋯ ⋯
Equations
- Pi.mulOneClass = MulOneClass.mk ⋯ ⋯
Equations
- Pi.negZeroClass = NegZeroClass.mk ⋯
Equations
- Pi.invOneClass = InvOneClass.mk ⋯
Equations
- Pi.addMonoid = let __spread.0 := Pi.addSemigroup; let __spread.1 := Pi.addZeroClass; AddMonoid.mk ⋯ ⋯ (fun (n : ℕ) (x : (i : I) → f i) (i : I) => n • x i) ⋯ ⋯
Equations
- Pi.addCommMonoid = let __src := Pi.addMonoid; let __src_1 := Pi.addCommSemigroup; AddCommMonoid.mk ⋯
Equations
- Pi.commMonoid = let __src := Pi.monoid; let __src_1 := Pi.commSemigroup; CommMonoid.mk ⋯
Equations
- Pi.subNegMonoid = SubNegMonoid.mk ⋯ (fun (z : ℤ) (x : (i : I) → f i) (i : I) => z • x i) ⋯ ⋯ ⋯
Equations
- Pi.divInvMonoid = DivInvMonoid.mk ⋯ (fun (z : ℤ) (x : (i : I) → f i) (i : I) => x i ^ z) ⋯ ⋯ ⋯
Equations
- Pi.subNegZeroMonoid = SubNegZeroMonoid.mk ⋯
Equations
- Pi.divInvOneMonoid = DivInvOneMonoid.mk ⋯
Equations
- Pi.involutiveNeg = InvolutiveNeg.mk ⋯
Equations
- Pi.involutiveInv = InvolutiveInv.mk ⋯
Equations
- Pi.subtractionMonoid = let __spread.0 := Pi.subNegMonoid; let __spread.1 := Pi.involutiveNeg; SubtractionMonoid.mk ⋯ ⋯ ⋯
Equations
- Pi.divisionMonoid = let __spread.0 := Pi.divInvMonoid; let __spread.1 := Pi.involutiveInv; DivisionMonoid.mk ⋯ ⋯ ⋯
Equations
- Pi.instSubtractionCommMonoid = let __src := Pi.subtractionMonoid; let __src_1 := Pi.addCommSemigroup; SubtractionCommMonoid.mk ⋯
Equations
- Pi.divisionCommMonoid = let __src := Pi.divisionMonoid; let __src_1 := Pi.commSemigroup; DivisionCommMonoid.mk ⋯
Equations
- Pi.addGroup = AddGroup.mk ⋯
Equations
- Pi.addCommGroup = let __src := Pi.addGroup; let __src_1 := Pi.addCommMonoid; AddCommGroup.mk ⋯
Equations
- Pi.commGroup = let __src := Pi.group; let __src_1 := Pi.commMonoid; CommGroup.mk ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- Pi.addLeftCancelSemigroup = let __src := Pi.addSemigroup; AddLeftCancelSemigroup.mk ⋯
Equations
- Pi.leftCancelSemigroup = let __src := Pi.semigroup; LeftCancelSemigroup.mk ⋯
Equations
- Pi.addRightCancelSemigroup = let __src := Pi.addSemigroup; AddRightCancelSemigroup.mk ⋯
Equations
- Pi.rightCancelSemigroup = let __src := Pi.semigroup; RightCancelSemigroup.mk ⋯
Equations
- Pi.addLeftCancelMonoid = let __src := Pi.addLeftCancelSemigroup; let __src_1 := Pi.addMonoid; AddLeftCancelMonoid.mk ⋯ ⋯ AddMonoid.nsmul ⋯ ⋯
Equations
- Pi.leftCancelMonoid = let __src := Pi.leftCancelSemigroup; let __src_1 := Pi.monoid; LeftCancelMonoid.mk ⋯ ⋯ Monoid.npow ⋯ ⋯
Equations
- Pi.addRightCancelMonoid = let __src := Pi.addRightCancelSemigroup; let __src_1 := Pi.addMonoid; AddRightCancelMonoid.mk ⋯ ⋯ AddMonoid.nsmul ⋯ ⋯
Equations
- Pi.rightCancelMonoid = let __src := Pi.rightCancelSemigroup; let __src_1 := Pi.monoid; RightCancelMonoid.mk ⋯ ⋯ Monoid.npow ⋯ ⋯
Equations
- Pi.addCancelMonoid = let __src := Pi.addLeftCancelMonoid; let __src_1 := Pi.addRightCancelMonoid; AddCancelMonoid.mk ⋯
Equations
- Pi.cancelMonoid = let __src := Pi.leftCancelMonoid; let __src_1 := Pi.rightCancelMonoid; CancelMonoid.mk ⋯
Equations
- Pi.addCancelCommMonoid = let __src := Pi.addLeftCancelMonoid; let __src_1 := Pi.addCommMonoid; AddCancelCommMonoid.mk ⋯
Equations
- Pi.cancelCommMonoid = let __src := Pi.leftCancelMonoid; let __src_1 := Pi.commMonoid; CancelCommMonoid.mk ⋯
The function supported at i
, with value x
there, and 0
elsewhere.
Equations
- Pi.single i x = Function.update 0 i x
Instances For
The function supported at i
, with value x
there, and 1
elsewhere.
Equations
- Pi.mulSingle i x = Function.update 1 i x
Instances For
Abbreviation for single_eq_of_ne h.symm
, for ease of use by simp
.
Abbreviation for mulSingle_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.single
is symmetric in the two indices.
On non-dependent functions, Pi.mulSingle
is symmetric in the two indices.
If the zero function is surjective, the codomain is trivial.
Equations
Instances For
If the one function is surjective, the codomain is trivial.