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
The function supported at i
, with value x
there, and 1
elsewhere.
Equations
- Pi.mulSingle i x = Function.update 1 i x
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
If the one function is surjective, the codomain is trivial.