Documentation

Mathlib.Algebra.Group.Pi.Lemmas

Extra lemmas about products of monoids and groups #

This file proves lemmas about the instances defined in Algebra.Group.Pi.Basic that require more imports.

@[simp]
theorem Set.range_one {α : Type u_5} {β : Type u_6} [One β] [Nonempty α] :
@[simp]
theorem Set.range_zero {α : Type u_5} {β : Type u_6} [Zero β] [Nonempty α] :
theorem Set.preimage_one {α : Type u_5} {β : Type u_6} [One β] (s : Set β) [Decidable (1 ∈ s)] :
theorem Set.preimage_zero {α : Type u_5} {β : Type u_6} [Zero β] (s : Set β) [Decidable (0 ∈ s)] :
theorem Pi.one_mono {α : Type u_5} {β : Type u_6} [Preorder α] [Preorder β] [One β] :
theorem Pi.zero_mono {α : Type u_5} {β : Type u_6} [Preorder α] [Preorder β] [Zero β] :
theorem Pi.one_anti {α : Type u_5} {β : Type u_6} [Preorder α] [Preorder β] [One β] :
theorem Pi.zero_anti {α : Type u_5} {β : Type u_6} [Preorder α] [Preorder β] [Zero β] :
theorem Pi.isSelfInv_iff {ι : Type u_5} {G : ι → Type u_6} [(i : ι) → Inv (G i)] {x : (i : ι) → G i} :
IsSelfInv x ↔ ∀ (i : ι), IsSelfInv (x i)
theorem Pi.isSelfNeg_iff {ι : Type u_5} {G : ι → Type u_6} [(i : ι) → Neg (G i)] {x : (i : ι) → G i} :
IsSelfNeg x ↔ ∀ (i : ι), IsSelfNeg (x i)
theorem MulHom.coe_mul {M : Type u_5} {N : Type u_6} {x✝ : Mul M} {x✝¹ : CommSemigroup N} (f g : M →ₙ* N) :
⇑f * ⇑g = fun (x : M) => f x * g x
theorem AddHom.coe_add {M : Type u_5} {N : Type u_6} {x✝ : Add M} {x✝¹ : AddCommSemigroup N} (f g : M →ₙ+ N) :
⇑f + ⇑g = fun (x : M) => f x + g x
def MulHom.coeFn (α : Type u_5) (β : Type u_6) [Mul α] [CommSemigroup β] :
(α →ₙ* β) →ₙ* α → β

Coercion of a MulHom into a function is itself a MulHom.

See also MulHom.eval.

Equations
Instances For
    def AddHom.coeFn (α : Type u_5) (β : Type u_6) [Add α] [AddCommSemigroup β] :
    (α →ₙ+ β) →ₙ+ α → β

    Coercion of an AddHom into a function is itself an AddHom.

    See also AddHom.eval.

    Equations
    Instances For
      @[simp]
      theorem MulHom.coeFn_apply (α : Type u_5) (β : Type u_6) [Mul α] [CommSemigroup β] (g : α →ₙ* β) (a : α) :
      (coeFn α β) g a = g a
      @[simp]
      theorem AddHom.coeFn_apply (α : Type u_5) (β : Type u_6) [Add α] [AddCommSemigroup β] (g : α →ₙ+ β) (a : α) :
      (coeFn α β) g a = g a
      def MonoidHom.coeFn (α : Type u_5) (β : Type u_6) [MulOneClass α] [CommMonoid β] :
      (α →* β) →* α → β

      Coercion of a MonoidHom into a function is itself a MonoidHom.

      See also MonoidHom.eval.

      Equations
      Instances For
        def AddMonoidHom.coeFn (α : Type u_5) (β : Type u_6) [AddZeroClass α] [AddCommMonoid β] :
        (α →+ β) →+ α → β

        Coercion of an AddMonoidHom into a function is itself an AddMonoidHom.

        See also AddMonoidHom.eval.

        Equations
        Instances For
          @[simp]
          theorem AddMonoidHom.coeFn_apply (α : Type u_5) (β : Type u_6) [AddZeroClass α] [AddCommMonoid β] (g : α →+ β) (a : α) :
          (coeFn α β) g a = g a
          @[simp]
          theorem MonoidHom.coeFn_apply (α : Type u_5) (β : Type u_6) [MulOneClass α] [CommMonoid β] (g : α →* β) (a : α) :
          (coeFn α β) g a = g a
          def OneHom.mulSingle {I : Type u} (f : I → Type v) [DecidableEq I] [(i : I) → One (f i)] (i : I) :
          OneHom (f i) ((i : I) → f i)

          The one-preserving homomorphism including a single value into a dependent family of values, as functions supported at a point.

          This is the OneHom version of Pi.mulSingle.

          Equations
          Instances For
            def ZeroHom.single {I : Type u} (f : I → Type v) [DecidableEq I] [(i : I) → Zero (f i)] (i : I) :
            ZeroHom (f i) ((i : I) → f i)

            The zero-preserving homomorphism including a single value into a dependent family of values, as functions supported at a point.

            This is the ZeroHom version of Pi.single.

            Equations
            Instances For
              @[simp]
              theorem OneHom.mulSingle_apply {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → One (f i)] (i : I) (x : f i) :
              @[simp]
              theorem ZeroHom.single_apply {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → Zero (f i)] (i : I) (x : f i) :
              (single f i) x = Pi.single i x
              @[simp]
              theorem OneHom.coe_mulSingle {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → One (f i)] (i : I) :
              @[simp]
              theorem ZeroHom.coe_single {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → Zero (f i)] (i : I) :
              ⇑(single f i) = Pi.single i
              def MonoidHom.mulSingle {I : Type u} (f : I → Type v) [DecidableEq I] [(i : I) → MulOneClass (f i)] (i : I) :
              f i →* (i : I) → f i

              The monoid homomorphism including a single monoid into a dependent family of additive monoids, as functions supported at a point.

              This is the MonoidHom version of Pi.mulSingle.

              Equations
              Instances For
                def AddMonoidHom.single {I : Type u} (f : I → Type v) [DecidableEq I] [(i : I) → AddZeroClass (f i)] (i : I) :
                f i →+ (i : I) → f i

                The additive monoid homomorphism including a single additive monoid into a dependent family of additive monoids, as functions supported at a point.

                This is the AddMonoidHom version of Pi.single.

                Equations
                Instances For
                  @[simp]
                  theorem MonoidHom.mulSingle_apply {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → MulOneClass (f i)] (i : I) (x : f i) :
                  @[simp]
                  theorem AddMonoidHom.single_apply {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → AddZeroClass (f i)] (i : I) (x : f i) :
                  (single f i) x = Pi.single i x
                  @[simp]
                  theorem MonoidHom.coe_mulSingle {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → MulOneClass (f i)] (i : I) :
                  @[simp]
                  theorem AddMonoidHom.coe_single {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → AddZeroClass (f i)] (i : I) :
                  ⇑(single f i) = Pi.single i
                  theorem Pi.mulSingle_sup {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → SemilatticeSup (f i)] [(i : I) → One (f i)] (i : I) (x y : f i) :
                  mulSingle i (x ⊔ y) = mulSingle i x ⊔ mulSingle i y
                  theorem Pi.single_sup {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → SemilatticeSup (f i)] [(i : I) → Zero (f i)] (i : I) (x y : f i) :
                  single i (x ⊔ y) = single i x ⊔ single i y
                  theorem Pi.mulSingle_inf {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → SemilatticeInf (f i)] [(i : I) → One (f i)] (i : I) (x y : f i) :
                  mulSingle i (x ⊓ y) = mulSingle i x ⊓ mulSingle i y
                  theorem Pi.single_inf {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → SemilatticeInf (f i)] [(i : I) → Zero (f i)] (i : I) (x y : f i) :
                  single i (x ⊓ y) = single i x ⊓ single i y
                  theorem Pi.mulSingle_mul {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → MulOneClass (f i)] (i : I) (x y : f i) :
                  mulSingle i (x * y) = mulSingle i x * mulSingle i y
                  theorem Pi.single_add {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → AddZeroClass (f i)] (i : I) (x y : f i) :
                  single i (x + y) = single i x + single i y
                  theorem Pi.mulSingle_inv {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → Group (f i)] (i : I) (x : f i) :
                  theorem Pi.single_neg {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → AddGroup (f i)] (i : I) (x : f i) :
                  single i (-x) = -single i x
                  theorem Pi.mulSingle_div {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → Group (f i)] (i : I) (x y : f i) :
                  mulSingle i (x / y) = mulSingle i x / mulSingle i y
                  theorem Pi.single_sub {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → AddGroup (f i)] (i : I) (x y : f i) :
                  single i (x - y) = single i x - single i y
                  theorem Pi.mulSingle_pow {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → Monoid (f i)] (i : I) (x : f i) (n : ℕ) :
                  mulSingle i (x ^ n) = mulSingle i x ^ n
                  theorem Pi.single_nsmul {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → AddMonoid (f i)] (i : I) (x : f i) (n : ℕ) :
                  single i (n • x) = n • single i x
                  theorem Pi.mulSingle_zpow {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → Group (f i)] (i : I) (x : f i) (n : ℤ) :
                  mulSingle i (x ^ n) = mulSingle i x ^ n
                  theorem Pi.single_zsmul {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → AddGroup (f i)] (i : I) (x : f i) (n : ℤ) :
                  single i (n • x) = n • single i x
                  theorem Pi.mulSingle_commute {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → MulOneClass (f i)] :
                  Pairwise fun (i j : I) => ∀ (x : f i) (y : f j), Commute (mulSingle i x) (mulSingle j y)

                  The injection into a pi group at different indices commutes.

                  For injections of commuting elements at the same index, see Commute.map

                  theorem Pi.single_addCommute {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → AddZeroClass (f i)] :
                  Pairwise fun (i j : I) => ∀ (x : f i) (y : f j), AddCommute (single i x) (single j y)

                  The injection into an additive pi group at different indices commutes.

                  For injections of commuting elements at the same index, see AddCommute.map

                  theorem Pi.mulSingle_apply_commute {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → MulOneClass (f i)] (x : (i : I) → f i) (i j : I) :
                  Commute (mulSingle i (x i)) (mulSingle j (x j))

                  The injection into a pi group with the same values commutes.

                  theorem Pi.single_apply_addCommute {I : Type u} {f : I → Type v} [DecidableEq I] [(i : I) → AddZeroClass (f i)] (x : (i : I) → f i) (i j : I) :
                  AddCommute (single i (x i)) (single j (x j))

                  The injection into an additive pi group with the same values commutes.

                  theorem Pi.update_eq_div_mul_mulSingle {I : Type u} {f : I → Type v} (i : I) [DecidableEq I] [(i : I) → Group (f i)] (g : (i : I) → f i) (x : f i) :
                  Function.update g i x = g / mulSingle i (g i) * mulSingle i x
                  theorem Pi.update_eq_sub_add_single {I : Type u} {f : I → Type v} (i : I) [DecidableEq I] [(i : I) → AddGroup (f i)] (g : (i : I) → f i) (x : f i) :
                  Function.update g i x = g - single i (g i) + single i x
                  theorem Pi.mulSingle_mul_mulSingle_eq_mulSingle_mul_mulSingle {I : Type u} [DecidableEq I] {M : Type u_5} [CommMonoid M] {k l m n : I} {u v : M} (hu : u ≠ 1) (hv : v ≠ 1) :
                  mulSingle k u * mulSingle l v = mulSingle m u * mulSingle n v ↔ k = m ∧ l = n ∨ u = v ∧ k = n ∧ l = m ∨ u * v = 1 ∧ k = l ∧ m = n
                  theorem Pi.single_add_single_eq_single_add_single {I : Type u} [DecidableEq I] {M : Type u_5} [AddCommMonoid M] {k l m n : I} {u v : M} (hu : u ≠ 0) (hv : v ≠ 0) :
                  single k u + single l v = single m u + single n v ↔ k = m ∧ l = n ∨ u = v ∧ k = n ∧ l = m ∨ u + v = 0 ∧ k = l ∧ m = n
                  theorem SemiconjBy.pi {I : Type u} {f : I → Type v} [(i : I) → Mul (f i)] {x y z : (i : I) → f i} (h : ∀ (i : I), SemiconjBy (x i) (y i) (z i)) :
                  theorem AddSemiconjBy.pi {I : Type u} {f : I → Type v} [(i : I) → Add (f i)] {x y z : (i : I) → f i} (h : ∀ (i : I), AddSemiconjBy (x i) (y i) (z i)) :
                  theorem Pi.semiconjBy_iff {I : Type u} {f : I → Type v} [(i : I) → Mul (f i)] {x y z : (i : I) → f i} :
                  SemiconjBy x y z ↔ ∀ (i : I), SemiconjBy (x i) (y i) (z i)
                  theorem Pi.addSemiconjBy_iff {I : Type u} {f : I → Type v} [(i : I) → Add (f i)] {x y z : (i : I) → f i} :
                  AddSemiconjBy x y z ↔ ∀ (i : I), AddSemiconjBy (x i) (y i) (z i)
                  theorem Commute.pi {I : Type u} {f : I → Type v} [(i : I) → Mul (f i)] {x y : (i : I) → f i} (h : ∀ (i : I), Commute (x i) (y i)) :
                  theorem AddCommute.pi {I : Type u} {f : I → Type v} [(i : I) → Add (f i)] {x y : (i : I) → f i} (h : ∀ (i : I), AddCommute (x i) (y i)) :
                  theorem Pi.commute_iff {I : Type u} {f : I → Type v} [(i : I) → Mul (f i)] {x y : (i : I) → f i} :
                  Commute x y ↔ ∀ (i : I), Commute (x i) (y i)
                  theorem Pi.addCommute_iff {I : Type u} {f : I → Type v} [(i : I) → Add (f i)] {x y : (i : I) → f i} :
                  AddCommute x y ↔ ∀ (i : I), AddCommute (x i) (y i)
                  @[simp]
                  theorem Function.update_one {I : Type u} {f : I → Type v} [(i : I) → One (f i)] [DecidableEq I] (i : I) :
                  update 1 i 1 = 1
                  @[simp]
                  theorem Function.update_zero {I : Type u} {f : I → Type v} [(i : I) → Zero (f i)] [DecidableEq I] (i : I) :
                  update 0 i 0 = 0
                  theorem Function.update_mul {I : Type u} {f : I → Type v} [(i : I) → Mul (f i)] [DecidableEq I] (f₁ f₂ : (i : I) → f i) (i : I) (x₁ x₂ : f i) :
                  update (f₁ * f₂) i (x₁ * x₂) = update f₁ i x₁ * update f₂ i x₂
                  theorem Function.update_add {I : Type u} {f : I → Type v} [(i : I) → Add (f i)] [DecidableEq I] (f₁ f₂ : (i : I) → f i) (i : I) (x₁ x₂ : f i) :
                  update (f₁ + f₂) i (x₁ + x₂) = update f₁ i x₁ + update f₂ i x₂
                  theorem Function.update_inv {I : Type u} {f : I → Type v} [(i : I) → Inv (f i)] [DecidableEq I] (f₁ : (i : I) → f i) (i : I) (x₁ : f i) :
                  update f₁⁻¹ i x₁⁻¹ = (update f₁ i x₁)⁻¹
                  theorem Function.update_neg {I : Type u} {f : I → Type v} [(i : I) → Neg (f i)] [DecidableEq I] (f₁ : (i : I) → f i) (i : I) (x₁ : f i) :
                  update (-f₁) i (-x₁) = -update f₁ i x₁
                  theorem Function.update_div {I : Type u} {f : I → Type v} [(i : I) → Div (f i)] [DecidableEq I] (f₁ f₂ : (i : I) → f i) (i : I) (x₁ x₂ : f i) :
                  update (f₁ / f₂) i (x₁ / x₂) = update f₁ i x₁ / update f₂ i x₂
                  theorem Function.update_sub {I : Type u} {f : I → Type v} [(i : I) → Sub (f i)] [DecidableEq I] (f₁ f₂ : (i : I) → f i) (i : I) (x₁ x₂ : f i) :
                  update (f₁ - f₂) i (x₁ - x₂) = update f₁ i x₁ - update f₂ i x₂
                  @[simp]
                  theorem Function.const_eq_one {ι : Type u_1} {α : Type u_2} [One α] [Nonempty ι] {a : α} :
                  const ι a = 1 ↔ a = 1
                  @[simp]
                  theorem Function.const_eq_zero {ι : Type u_1} {α : Type u_2} [Zero α] [Nonempty ι] {a : α} :
                  const ι a = 0 ↔ a = 0
                  theorem Function.const_ne_one {ι : Type u_1} {α : Type u_2} [One α] [Nonempty ι] {a : α} :
                  const ι a ≠ 1 ↔ a ≠ 1
                  theorem Function.const_ne_zero {ι : Type u_1} {α : Type u_2} [Zero α] [Nonempty ι] {a : α} :
                  const ι a ≠ 0 ↔ a ≠ 0
                  theorem Set.piecewise_mul {I : Type u} {f : I → Type v} [(i : I) → Mul (f i)] (s : Set I) [(i : I) → Decidable (i ∈ s)] (f₁ f₂ g₁ g₂ : (i : I) → f i) :
                  s.piecewise (f₁ * f₂) (g₁ * g₂) = s.piecewise f₁ g₁ * s.piecewise f₂ g₂
                  theorem Set.piecewise_add {I : Type u} {f : I → Type v} [(i : I) → Add (f i)] (s : Set I) [(i : I) → Decidable (i ∈ s)] (f₁ f₂ g₁ g₂ : (i : I) → f i) :
                  s.piecewise (f₁ + f₂) (g₁ + g₂) = s.piecewise f₁ g₁ + s.piecewise f₂ g₂
                  theorem Set.piecewise_inv {I : Type u} {f : I → Type v} [(i : I) → Inv (f i)] (s : Set I) [(i : I) → Decidable (i ∈ s)] (f₁ g₁ : (i : I) → f i) :
                  s.piecewise f₁⁻¹ g₁⁻¹ = (s.piecewise f₁ g₁)⁻¹
                  theorem Set.piecewise_neg {I : Type u} {f : I → Type v} [(i : I) → Neg (f i)] (s : Set I) [(i : I) → Decidable (i ∈ s)] (f₁ g₁ : (i : I) → f i) :
                  s.piecewise (-f₁) (-g₁) = -s.piecewise f₁ g₁
                  theorem Set.piecewise_div {I : Type u} {f : I → Type v} [(i : I) → Div (f i)] (s : Set I) [(i : I) → Decidable (i ∈ s)] (f₁ f₂ g₁ g₂ : (i : I) → f i) :
                  s.piecewise (f₁ / f₂) (g₁ / g₂) = s.piecewise f₁ g₁ / s.piecewise f₂ g₂
                  theorem Set.piecewise_sub {I : Type u} {f : I → Type v} [(i : I) → Sub (f i)] (s : Set I) [(i : I) → Decidable (i ∈ s)] (f₁ f₂ g₁ g₂ : (i : I) → f i) :
                  s.piecewise (f₁ - f₂) (g₁ - g₂) = s.piecewise f₁ g₁ - s.piecewise f₂ g₂
                  noncomputable def Function.ExtendByOne.hom {ι : Type u_1} {η : Type v} (R : Type w) (s : ι → η) [MulOneClass R] :
                  (ι → R) →* η → R

                  Function.extend s f 1 as a bundled hom.

                  Equations
                  Instances For
                    @[simp]
                    theorem Function.ExtendByZero.hom_apply {ι : Type u_1} {η : Type v} (R : Type w) (s : ι → η) [AddZeroClass R] (f : ι → R) (a✝ : η) :
                    (hom R s) f a✝ = extend s f 0 a✝
                    @[simp]
                    theorem Function.ExtendByOne.hom_apply {ι : Type u_1} {η : Type v} (R : Type w) (s : ι → η) [MulOneClass R] (f : ι → R) (a✝ : η) :
                    (hom R s) f a✝ = extend s f 1 a✝
                    noncomputable def Function.ExtendByZero.hom {ι : Type u_1} {η : Type v} (R : Type w) (s : ι → η) [AddZeroClass R] :
                    (ι → R) →+ η → R

                    Function.extend s f 0 as a bundled hom.

                    Equations
                    Instances For
                      theorem Pi.mulSingle_mono {I : Type u} {f : I → Type v} (i : I) [DecidableEq I] [(i : I) → Preorder (f i)] [(i : I) → One (f i)] :
                      theorem Pi.single_mono {I : Type u} {f : I → Type v} (i : I) [DecidableEq I] [(i : I) → Preorder (f i)] [(i : I) → Zero (f i)] :
                      theorem Pi.mulSingle_strictMono {I : Type u} {f : I → Type v} (i : I) [DecidableEq I] [(i : I) → Preorder (f i)] [(i : I) → One (f i)] :
                      theorem Pi.single_strictMono {I : Type u} {f : I → Type v} (i : I) [DecidableEq I] [(i : I) → Preorder (f i)] [(i : I) → Zero (f i)] :
                      theorem Pi.mulSingle_comp_equiv {α : Type u_2} {m : Type u_5} {n : Type u_6} [DecidableEq n] [DecidableEq m] [One α] (σ : n ≃ m) (i : m) (x : α) :
                      mulSingle i x ∘ ⇑σ = mulSingle (σ.symm i) x
                      theorem Pi.single_comp_equiv {α : Type u_2} {m : Type u_5} {n : Type u_6} [DecidableEq n] [DecidableEq m] [Zero α] (σ : n ≃ m) (i : m) (x : α) :
                      single i x ∘ ⇑σ = single (σ.symm i) x
                      @[simp]
                      theorem Sigma.curry_one {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [(a : α) → (b : β a) → One (γ a b)] :
                      curry 1 = 1
                      @[simp]
                      theorem Sigma.curry_zero {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [(a : α) → (b : β a) → Zero (γ a b)] :
                      curry 0 = 0
                      @[simp]
                      theorem Sigma.uncurry_one {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [(a : α) → (b : β a) → One (γ a b)] :
                      @[simp]
                      theorem Sigma.uncurry_zero {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [(a : α) → (b : β a) → Zero (γ a b)] :
                      @[simp]
                      theorem Sigma.curry_mul {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [(a : α) → (b : β a) → Mul (γ a b)] (x y : (i : (a : α) × β a) → γ i.fst i.snd) :
                      curry (x * y) = curry x * curry y
                      @[simp]
                      theorem Sigma.curry_add {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [(a : α) → (b : β a) → Add (γ a b)] (x y : (i : (a : α) × β a) → γ i.fst i.snd) :
                      curry (x + y) = curry x + curry y
                      @[simp]
                      theorem Sigma.uncurry_mul {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [(a : α) → (b : β a) → Mul (γ a b)] (x y : (a : α) → (b : β a) → γ a b) :
                      @[simp]
                      theorem Sigma.uncurry_add {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [(a : α) → (b : β a) → Add (γ a b)] (x y : (a : α) → (b : β a) → γ a b) :
                      @[simp]
                      theorem Sigma.curry_inv {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [(a : α) → (b : β a) → Inv (γ a b)] (x : (i : (a : α) × β a) → γ i.fst i.snd) :
                      @[simp]
                      theorem Sigma.curry_neg {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [(a : α) → (b : β a) → Neg (γ a b)] (x : (i : (a : α) × β a) → γ i.fst i.snd) :
                      @[simp]
                      theorem Sigma.uncurry_inv {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [(a : α) → (b : β a) → Inv (γ a b)] (x : (a : α) → (b : β a) → γ a b) :
                      @[simp]
                      theorem Sigma.uncurry_neg {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [(a : α) → (b : β a) → Neg (γ a b)] (x : (a : α) → (b : β a) → γ a b) :
                      @[simp]
                      theorem Sigma.curry_mulSingle {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [DecidableEq α] [(a : α) → DecidableEq (β a)] [(a : α) → (b : β a) → One (γ a b)] (i : (a : α) × β a) (x : γ i.fst i.snd) :
                      @[simp]
                      theorem Sigma.curry_single {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [DecidableEq α] [(a : α) → DecidableEq (β a)] [(a : α) → (b : β a) → Zero (γ a b)] (i : (a : α) × β a) (x : γ i.fst i.snd) :
                      @[simp]
                      theorem Sigma.uncurry_mulSingle_mulSingle {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [DecidableEq α] [(a : α) → DecidableEq (β a)] [(a : α) → (b : β a) → One (γ a b)] (a : α) (b : β a) (x : γ a b) :
                      @[simp]
                      theorem Sigma.uncurry_single_single {α : Type u_5} {β : α → Type u_6} {γ : (a : α) → β a → Type u_7} [DecidableEq α] [(a : α) → DecidableEq (β a)] [(a : α) → (b : β a) → Zero (γ a b)] (a : α) (b : β a) (x : γ a b) :