File: Mathlib/Algebra/Ring/Pi.lean

full_name: Pi.distrib
code: instance distrib [∀ i, Distrib <| f i] : Distrib (∀ i : I, f i) 
goal: Distrib ((i : I) → f i)

full_name: Pi.hasDistribNeg
code: instance hasDistribNeg [∀ i, Mul (f i)] [∀ i, HasDistribNeg (f i)] : HasDistribNeg (∀ i, f i) 
goal: HasDistribNeg ((i : I) → f i)

full_name: Pi.addMonoidWithOne
code: instance addMonoidWithOne [∀ i, AddMonoidWithOne (f i)] : AddMonoidWithOne (∀ i, f i) 
goal: AddMonoidWithOne ((i : I) → f i)

full_name: Pi.addGroupWithOne
code: instance addGroupWithOne [∀ i, AddGroupWithOne (f i)] : AddGroupWithOne (∀ i, f i) 
goal: AddGroupWithOne ((i : I) → f i)

full_name: Pi.nonUnitalNonAssocSemiring
code: instance nonUnitalNonAssocSemiring [∀ i, NonUnitalNonAssocSemiring <| f i] :
    NonUnitalNonAssocSemiring (∀ i : I, f i) 
goal: NonUnitalNonAssocSemiring ((i : I) → f i)

full_name: Pi.nonUnitalSemiring
code: instance nonUnitalSemiring [∀ i, NonUnitalSemiring <| f i] : NonUnitalSemiring (∀ i : I, f i) 
goal: NonUnitalSemiring ((i : I) → f i)

full_name: Pi.nonAssocSemiring
code: instance nonAssocSemiring [∀ i, NonAssocSemiring <| f i] : NonAssocSemiring (∀ i : I, f i) 
goal: NonAssocSemiring ((i : I) → f i)

full_name: Pi.semiring
code: instance semiring [∀ i, Semiring <| f i] : Semiring (∀ i : I, f i) 
goal: Semiring ((i : I) → f i)

full_name: Pi.nonUnitalCommSemiring
code: instance nonUnitalCommSemiring [∀ i, NonUnitalCommSemiring <| f i] :
    NonUnitalCommSemiring (∀ i : I, f i) 
goal: NonUnitalCommSemiring ((i : I) → f i)

full_name: Pi.commSemiring
code: instance commSemiring [∀ i, CommSemiring <| f i] : CommSemiring (∀ i : I, f i) 
goal: CommSemiring ((i : I) → f i)

full_name: Pi.nonUnitalNonAssocRing
code: instance nonUnitalNonAssocRing [∀ i, NonUnitalNonAssocRing <| f i] :
    NonUnitalNonAssocRing (∀ i : I, f i) 
goal: NonUnitalNonAssocRing ((i : I) → f i)

full_name: Pi.nonUnitalRing
code: instance nonUnitalRing [∀ i, NonUnitalRing <| f i] : NonUnitalRing (∀ i : I, f i) 
goal: NonUnitalRing ((i : I) → f i)

full_name: Pi.nonAssocRing
code: instance nonAssocRing [∀ i, NonAssocRing <| f i] : NonAssocRing (∀ i : I, f i) 
goal: NonAssocRing ((i : I) → f i)

full_name: Pi.ring
code: instance ring [∀ i, Ring <| f i] : Ring (∀ i : I, f i) 
goal: Ring ((i : I) → f i)

full_name: Pi.nonUnitalCommRing
code: instance nonUnitalCommRing [∀ i, NonUnitalCommRing <| f i] : NonUnitalCommRing (∀ i : I, f i) 
goal: NonUnitalCommRing ((i : I) → f i)

full_name: Pi.commRing
code: instance commRing [∀ i, CommRing <| f i] : CommRing (∀ i : I, f i) 
goal: CommRing ((i : I) → f i)

full_name: Pi.nonUnitalRingHom_apply
code: /-- A family of non-unital ring homomorphisms `f a : γ →ₙ+* β a` defines a non-unital ring
homomorphism `Pi.nonUnitalRingHom f : γ →+* Π a, β a` given by
`Pi.nonUnitalRingHom f x b = f b x`. -/
@[simps]
protected def nonUnitalRingHom {γ : Type w} [∀ i, NonUnitalNonAssocSemiring (f i)]
    [NonUnitalNonAssocSemiring γ] (g : ∀ i, γ →ₙ+* f i) : γ →ₙ+* ∀ i, f i 
goal: (Pi.nonUnitalRingHom g) x b = (g b) x

full_name: Pi.nonUnitalRingHom
code: /-- A family of non-unital ring homomorphisms `f a : γ →ₙ+* β a` defines a non-unital ring
homomorphism `Pi.nonUnitalRingHom f : γ →+* Π a, β a` given by
`Pi.nonUnitalRingHom f x b = f b x`. -/
@[simps]
protected def nonUnitalRingHom {γ : Type w} [∀ i, NonUnitalNonAssocSemiring (f i)]
    [NonUnitalNonAssocSemiring γ] (g : ∀ i, γ →ₙ+* f i) : γ →ₙ+* ∀ i, f i 
goal: γ →ₙ+* (i : I) → f i

full_name: Pi.nonUnitalRingHom_injective
code: theorem nonUnitalRingHom_injective {γ : Type w} [Nonempty I]
    [∀ i, NonUnitalNonAssocSemiring (f i)] [NonUnitalNonAssocSemiring γ] (g : ∀ i, γ →ₙ+* f i)
    (hg : ∀ i, Function.Injective (g i)) : Function.Injective (Pi.nonUnitalRingHom g) 
goal: Function.Injective ⇑(Pi.nonUnitalRingHom g)

full_name: Pi.ringHom_apply
code: /-- A family of ring homomorphisms `f a : γ →+* β a` defines a ring homomorphism
`Pi.ringHom f : γ →+* Π a, β a` given by `Pi.ringHom f x b = f b x`. -/
@[simps]
protected def ringHom {γ : Type w} [∀ i, NonAssocSemiring (f i)] [NonAssocSemiring γ]
    (g : ∀ i, γ →+* f i) : γ →+* ∀ i, f i 
goal: (Pi.ringHom g) x b = (g b) x

full_name: Pi.ringHom
code: /-- A family of ring homomorphisms `f a : γ →+* β a` defines a ring homomorphism
`Pi.ringHom f : γ →+* Π a, β a` given by `Pi.ringHom f x b = f b x`. -/
@[simps]
protected def ringHom {γ : Type w} [∀ i, NonAssocSemiring (f i)] [NonAssocSemiring γ]
    (g : ∀ i, γ →+* f i) : γ →+* ∀ i, f i 
goal: γ →+* (i : I) → f i

full_name: Pi.ringHom_injective
code: theorem ringHom_injective {γ : Type w} [Nonempty I] [∀ i, NonAssocSemiring (f i)]
    [NonAssocSemiring γ] (g : ∀ i, γ →+* f i) (hg : ∀ i, Function.Injective (g i)) :
    Function.Injective (Pi.ringHom g) 
goal: Function.Injective ⇑(Pi.ringHom g)

full_name: Pi.evalNonUnitalRingHom
code: /-- Evaluation of functions into an indexed collection of non-unital rings at a point is a
non-unital ring homomorphism. This is `Function.eval` as a `NonUnitalRingHom`. -/
@[simps!]
def Pi.evalNonUnitalRingHom (f : I → Type v) [∀ i, NonUnitalNonAssocSemiring (f i)] (i : I) :
    (∀ i, f i) →ₙ+* f i 
goal: ((i : I) → f i) →ₙ+* f i

full_name: Pi.evalNonUnitalRingHom_apply
code: /-- Evaluation of functions into an indexed collection of non-unital rings at a point is a
non-unital ring homomorphism. This is `Function.eval` as a `NonUnitalRingHom`. -/
@[simps!]
def Pi.evalNonUnitalRingHom (f : I → Type v) [∀ i, NonUnitalNonAssocSemiring (f i)] (i : I) :
    (∀ i, f i) →ₙ+* f i 
goal: (Pi.evalNonUnitalRingHom f i) g = g i

full_name: Pi.constNonUnitalRingHom_apply
code: /-- `Function.const` as a `NonUnitalRingHom`. -/
@[simps]
def Pi.constNonUnitalRingHom (α β : Type*) [NonUnitalNonAssocSemiring β] : β →ₙ+* α → β 
goal: ∀ (a_1 : α), (Pi.constNonUnitalRingHom α β) a a_1 = Function.const α a a_1

full_name: Pi.constNonUnitalRingHom
code: /-- `Function.const` as a `NonUnitalRingHom`. -/
@[simps]
def Pi.constNonUnitalRingHom (α β : Type*) [NonUnitalNonAssocSemiring β] : β →ₙ+* α → β 
goal: β →ₙ+* α → β

full_name: NonUnitalRingHom.compLeft_apply
code: /-- Non-unital ring homomorphism between the function spaces `I → α` and `I → β`, induced by a
non-unital ring homomorphism `f` between `α` and `β`. -/
@[simps]
protected def NonUnitalRingHom.compLeft {α β : Type*} [NonUnitalNonAssocSemiring α]
    [NonUnitalNonAssocSemiring β] (f : α →ₙ+* β) (I : Type*) : (I → α) →ₙ+* I → β 
goal: ∀ (a : I), (f.compLeft I) h a = (⇑f ∘ h) a

full_name: NonUnitalRingHom.compLeft
code: /-- Non-unital ring homomorphism between the function spaces `I → α` and `I → β`, induced by a
non-unital ring homomorphism `f` between `α` and `β`. -/
@[simps]
protected def NonUnitalRingHom.compLeft {α β : Type*} [NonUnitalNonAssocSemiring α]
    [NonUnitalNonAssocSemiring β] (f : α →ₙ+* β) (I : Type*) : (I → α) →ₙ+* I → β 
goal: (I → α) →ₙ+* I → β

full_name: Pi.evalRingHom_apply
code: /-- Evaluation of functions into an indexed collection of rings at a point is a ring
homomorphism. This is `Function.eval` as a `RingHom`. -/
@[simps!]
def Pi.evalRingHom (f : I → Type v) [∀ i, NonAssocSemiring (f i)] (i : I) : (∀ i, f i) →+* f i 
goal: (Pi.evalRingHom f i) g = g i

full_name: Pi.evalRingHom
code: /-- Evaluation of functions into an indexed collection of rings at a point is a ring
homomorphism. This is `Function.eval` as a `RingHom`. -/
@[simps!]
def Pi.evalRingHom (f : I → Type v) [∀ i, NonAssocSemiring (f i)] (i : I) : (∀ i, f i) →+* f i 
goal: ((i : I) → f i) →+* f i

full_name: instRingHomSurjectiveForallEvalRingHom
code: instance (f : I → Type*) [∀ i, Semiring (f i)] (i) :
    RingHomSurjective (Pi.evalRingHom f i) 
goal: RingHomSurjective (Pi.evalRingHom f i)

full_name: Pi.constRingHom
code: /-- `Function.const` as a `RingHom`. -/
@[simps]
def Pi.constRingHom (α β : Type*) [NonAssocSemiring β] : β →+* α → β 
goal: β →+* α → β

full_name: Pi.constRingHom_apply
code: /-- `Function.const` as a `RingHom`. -/
@[simps]
def Pi.constRingHom (α β : Type*) [NonAssocSemiring β] : β →+* α → β 
goal: ∀ (a_1 : α), (Pi.constRingHom α β) a a_1 = Function.const α a a_1

full_name: RingHom.compLeft_apply
code: /-- Ring homomorphism between the function spaces `I → α` and `I → β`, induced by a ring
homomorphism `f` between `α` and `β`. -/
@[simps]
protected def RingHom.compLeft {α β : Type*} [NonAssocSemiring α] [NonAssocSemiring β]
    (f : α →+* β) (I : Type*) : (I → α) →+* I → β 
goal: ∀ (a : I), (f.compLeft I) h a = (⇑f ∘ h) a

full_name: RingHom.compLeft
code: /-- Ring homomorphism between the function spaces `I → α` and `I → β`, induced by a ring
homomorphism `f` between `α` and `β`. -/
@[simps]
protected def RingHom.compLeft {α β : Type*} [NonAssocSemiring α] [NonAssocSemiring β]
    (f : α →+* β) (I : Type*) : (I → α) →+* I → β 
goal: (I → α) →+* I → β