Built with doc-gen4, running Lean4.
Bubbles () indicate interactive fragments: hover for details, tap to reveal contents.
Use Ctrl+↑Ctrl+↓to navigate, Ctrl+🖱️to focus.
On Mac, use Cmdinstead of Ctrl.
/-
Copyright (c) 2018 Simon Hudon. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Simon Hudon, Patrick Massot
! This file was ported from Lean 3 source module group_theory.group_action.pi
! leanprover-community/mathlib commit bbeb185db4ccee8ed07dc48449414ebfa39cb821
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.Algebra.Group.Pi
import Mathlib.GroupTheory.GroupAction.Defs
/-!
# Pi instances for multiplicative actions
This file defines instances for `MulAction` and related structures on `Pi` types.
## See also
* `GroupTheory.GroupAction.option`
* `GroupTheory.GroupAction.prod`
* `GroupTheory.GroupAction.sigma`
* `GroupTheory.GroupAction.sum`
-/
universe u v w
variable {
Pi.smul': {I : Type u} →
{f : I → Type v} → {g : I → Type u_1} → [inst : (i : I) → SMul (fi) (gi)] → SMul ((i : I) → fi) ((i : I) → gi)
Pi.smul'#align pi.has_vadd'
Pi.vadd': {I : Type u} →
{f : I → Type v} → {g : I → Type u_1} → [inst : (i : I) → VAdd (fi) (gi)] → VAdd ((i : I) → fi) ((i : I) → gi)
Pi.vadd'
@[
to_additive: ∀ {I : Type u} {f : I → Type v} (i : I) {g : I → Type u_1} [inst : (i : I) → VAdd (fi) (gi)] (s : (i : I) → fi)
(x : (i : I) → gi), (s+ᵥx) i=si+ᵥxi
to_additive (attr := simp)]
theorem
smul_apply': ∀ {g : I → Type u_1} [inst : (i : I) → SMul (fi) (gi)] (s : (i : I) → fi) (x : (i : I) → gi), (s•x) i=si•xi
Pi.smul_apply': ∀ {I : Type u} {f : I → Type v} (i : I) {g : I → Type u_1} [inst : (i : I) → SMul (fi) (gi)] (s : (i : I) → fi)
(x : (i : I) → gi), (s•x) i=si•xi
Pi.smul_apply'#align pi.vadd_apply'
Pi.vadd_apply': ∀ {I : Type u} {f : I → Type v} (i : I) {g : I → Type u_1} [inst : (i : I) → VAdd (fi) (gi)] (s : (i : I) → fi)
(x : (i : I) → gi), (s+ᵥx) i=si+ᵥxi
Pi.vadd_apply'
-- Porting note: `to_additive` fails to correctly translate name
@[to_additive
Pi.vaddAssocClass: ∀ {I : Type u} {f : I → Type v} {α : Type u_1} {β : Type u_2} [inst : VAddαβ] [inst_1 : (i : I) → VAddβ (fi)]
[inst_2 : (i : I) → VAddα (fi)] [inst_3 : ∀ (i : I), VAddAssocClassαβ (fi)], VAddAssocClassαβ ((i : I) → fi)
Pi.vaddAssocClass]
instance
isScalarTower: ∀ {α : Type ?u.765} {β : Type ?u.768} [inst : SMulαβ] [inst_1 : (i : I) → SMulβ (fi)]
[inst_2 : (i : I) → SMulα (fi)] [inst_3 : ∀ (i : I), IsScalarTowerαβ (fi)], IsScalarTowerαβ ((i : I) → fi)
_⟩
/-- If `f i` has a faithful scalar action for a given `i`, then so does `Π i, f i`. This is
not an instance as `i` cannot be inferred. -/
@[
to_additive: ∀ {I : Type u} {f : I → Type v} {α : Type u_1} [inst : (i : I) → VAddα (fi)] [inst_1 : ∀ (i : I), Nonempty (fi)]
(i : I) [inst_2 : FaithfulVAddα (fi)], FaithfulVAddα ((i : I) → fi)
to_additive
"If `f i` has a faithful additive action for a given `i`, then
so does `Π i, f i`. This is not an instance as `i` cannot be inferred"]
theorem
faithfulSMul_at: ∀ {I : Type u} {f : I → Type v} {α : Type u_1} [inst : (i : I) → SMulα (fi)] [inst_1 : ∀ (i : I), Nonempty (fi)]
(i : I) [inst_2 : FaithfulSMulα (fi)], FaithfulSMulα ((i : I) → fi)
I: Type u f: I → Type v x, y: (i : I) → fi i✝: I α: Type u_1 inst✝²: (i : I) → SMulα (fi) inst✝¹: ∀ (i : I), Nonempty (fi) i: I inst✝: FaithfulSMulα (fi) m₁✝, m₂✝: α h: ∀ (a : (i : I) → fi), m₁✝•a=m₂✝•a a: fi
I: Type u f: I → Type v x, y: (i : I) → fi i✝: I α: Type u_1 inst✝²: (i : I) → SMulα (fi) inst✝¹: ∀ (i : I), Nonempty (fi) i: I inst✝: FaithfulSMulα (fi) m₁✝, m₂✝: α h: ∀ (a : (i : I) → fi), m₁✝•a=m₂✝•a a: fi
I: Type u f: I → Type v x, y: (i : I) → fi i✝: I α: Type u_1 inst✝²: (i : I) → SMulα (fi) inst✝¹: ∀ (i : I), Nonempty (fi) i: I inst✝: FaithfulSMulα (fi) m₁✝, m₂✝: α h: ∀ (a : (i : I) → fi), m₁✝•a=m₂✝•a a: fi
I: Type u f: I → Type v x✝, y: (i : I) → fi i: I g: I → Type ?u.11626 n: (i : I) → Zero (gi) inst✝: (i : I) → SMulZeroClass (fi) (gi) a✝: (i : I) → fi x: I
I: Type u f: I → Type v x✝, y: (i : I) → fi i: I g: I → Type ?u.11626 n: (i : I) → Zero (gi) inst✝: (i : I) → SMulZeroClass (fi) (gi) a✝: (i : I) → fi x: I
I: Type u f: I → Type v x, y: (i : I) → fi i: I g: I → Type ?u.14402 n: (i : I) → AddZeroClass (gi) inst✝: (i : I) → DistribSMul (fi) (gi) a✝: (i : I) → fi
I: Type u f: I → Type v x, y: (i : I) → fi i: I g: I → Type ?u.14402 n: (i : I) → AddZeroClass (gi) inst✝: (i : I) → DistribSMul (fi) (gi) a✝: (i : I) → fi
I: Type u f: I → Type v x✝, y: (i : I) → fi i: I g: I → Type ?u.14402 n: (i : I) → AddZeroClass (gi) inst✝: (i : I) → DistribSMul (fi) (gi) a✝: (i : I) → fi x: I
I: Type u f: I → Type v x✝, y: (i : I) → fi i: I g: I → Type ?u.14402 n: (i : I) → AddZeroClass (gi) inst✝: (i : I) → DistribSMul (fi) (gi) a✝: (i : I) → fi x: I
∀ (a : (i : I) → fi) (x y : (i : I) → gi), a• (x+y)=a•x+a•y
I: Type u f: I → Type v x, y: (i : I) → fi i: I g: I → Type ?u.14402 n: (i : I) → AddZeroClass (gi) inst✝: (i : I) → DistribSMul (fi) (gi) a✝: (i : I) → fi x✝, y✝: (i : I) → gi
I: Type u f: I → Type v x, y: (i : I) → fi i: I g: I → Type ?u.14402 n: (i : I) → AddZeroClass (gi) inst✝: (i : I) → DistribSMul (fi) (gi) a✝: (i : I) → fi x✝, y✝: (i : I) → gi
∀ (a : (i : I) → fi) (x y : (i : I) → gi), a• (x+y)=a•x+a•y
I: Type u f: I → Type v x✝¹, y: (i : I) → fi i: I g: I → Type ?u.14402 n: (i : I) → AddZeroClass (gi) inst✝: (i : I) → DistribSMul (fi) (gi) a✝: (i : I) → fi x✝, y✝: (i : I) → gi x: I
I: Type u f: I → Type v x✝¹, y: (i : I) → fi i: I g: I → Type ?u.14402 n: (i : I) → AddZeroClass (gi) inst✝: (i : I) → DistribSMul (fi) (gi) a✝: (i : I) → fi x✝, y✝: (i : I) → gi x: I
single: {I : Type ?u.21106} →
{f : I → Type ?u.21105} → [inst : DecidableEqI] → [inst : (i : I) → Zero (fi)] → (i : I) → fi → (j : I) → fj
single
i: I
i (
r: α
r •
x: fi
x) =
r: α
r •
single: {I : Type ?u.22058} →
{f : I → Type ?u.22057} → [inst : DecidableEqI] → [inst : (i : I) → Zero (fi)] → (i : I) → fi → (j : I) → fj
single
i: I
i
x: fi
x :=
single_op: ∀ {I : Type ?u.22853} {f : I → Type ?u.22852} [inst : DecidableEqI] [inst_1 : (i : I) → Zero (fi)]
{g : I → Type ?u.22854} [inst_2 : (i : I) → Zero (gi)] (op : (i : I) → fi → gi),
(∀ (i : I), opi0=0) → ∀ (i : I) (x : fi), singlei (opix)=fun j => opj (singleixj)
Pi.single_smul
-- Porting note: Lean4 cannot infer the non-dependent function `f := fun _ => β`
/-- A version of `Pi.single_smul` for non-dependent functions. It is useful in cases where Lean
fails to apply `Pi.single_smul`. -/
theorem
∀ (r : (i : I) → fi) (x y : (i : I) → gi), r• (x*y)=r•x*r•y
I: Type u f: I → Type v x, y: (i : I) → fi i: I g: I → Type ?u.32275 m: (i : I) → Monoid (fi) n: (i : I) → Monoid (gi) inst✝: (i : I) → MulDistribMulAction (fi) (gi) r✝: (i : I) → fi x✝, y✝: (i : I) → gi
∀ (r : (i : I) → fi) (x y : (i : I) → gi), r• (x*y)=r•x*r•y
I: Type u f: I → Type v x✝¹, y: (i : I) → fi i: I g: I → Type ?u.32275 m: (i : I) → Monoid (fi) n: (i : I) → Monoid (gi) inst✝: (i : I) → MulDistribMulAction (fi) (gi) r✝: (i : I) → fi x✝, y✝: (i : I) → gi x: I
I: Type u f: I → Type v x, y: (i : I) → fi i: I g: I → Type ?u.32275 m: (i : I) → Monoid (fi) n: (i : I) → Monoid (gi) inst✝: (i : I) → MulDistribMulAction (fi) (gi) r✝: (i : I) → fi
I: Type u f: I → Type v x✝, y: (i : I) → fi i: I g: I → Type ?u.32275 m: (i : I) → Monoid (fi) n: (i : I) → Monoid (gi) inst✝: (i : I) → MulDistribMulAction (fi) (gi) r✝: (i : I) → fi x: I
Pi.mulDistribMulAction'end Pi
namespace Function
/-- Non-dependent version of `Pi.smul`. Lean gets confused by the dependent instance if this
is not present. -/
@[
to_additive: {ι : Type u_1} → {R : Type u_2} → {M : Type u_3} → [inst : VAddRM] → VAddR (ι → M)
to_additive
"Non-dependent version of `Pi.vadd`. Lean gets confused by the dependent instance
if this is not present."]
instance
hasSMul: {ι : Type u_1} → {R : Type u_2} → {M : Type u_3} → [inst : SMulRM] → SMulR (ι → M)
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x)
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x)
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x)
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x)
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x)
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x)
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x)
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x)
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x)
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x)
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x) h✝: ∃ a, fa=x
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x) h✝: ¬∃ a, fa=x
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x)
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x) h✝: ∃ a, fa=x
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x) h✝: ¬∃ a, fa=x
I: Type u f✝: I → Type v x✝, y: (i : I) → f✝i i: I R: Type u_1 α: Type u_2 β: Type u_3 γ: Type u_4 inst✝: SMulRγ r: R f: α → β g: α → γ e: β → γ x: β this: Decidable (∃ a, fa=x)