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) 2022 Eric Wieser. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Eric Wieser

! This file was ported from Lean 3 source module group_theory.group_action.sub_mul_action.pointwise
! leanprover-community/mathlib commit 2bbc7e3884ba234309d2a43b19144105a753292e
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.GroupTheory.GroupAction.SubMulAction

/-!
# Pointwise monoid structures on SubMulAction

This file provides `SubMulAction.Monoid` and weaker typeclasses, which show that `SubMulAction`s
inherit the same pointwise multiplications as sets.

To match `Submodule.idemSemiring`, we do not put these in the `Pointwise` locale.

-/


open Pointwise

variable {
R: Type ?u.2
R
M: Type ?u.5
M
:
Type _: Type (?u.5490+1)
Type _
} namespace SubMulAction section One variable [
Monoid: Type ?u.2512 → Type ?u.2512
Monoid
R: Type ?u.8
R
] [
MulAction: (α : Type ?u.43) → Type ?u.42 → [inst : Monoid α] → Type (max?u.43?u.42)
MulAction
R: Type ?u.8
R
M: Type ?u.11
M
] [
One: Type ?u.30 → Type ?u.30
One
M: Type ?u.2509
M
]
instance: {R : Type u_1} → {M : Type u_2} → [inst : Monoid R] → [inst_1 : MulAction R M] → [inst_2 : One M] → One (SubMulAction R M)
instance
:
One: Type ?u.58 → Type ?u.58
One
(
SubMulAction: (R : Type ?u.60) → (M : Type ?u.59) → [inst : SMul R M] → Type ?u.59
SubMulAction
R: Type ?u.33
R
M: Type ?u.36
M
) where one := { carrier :=
Set.range: {α : Type ?u.779} → {ι : Sort ?u.778} → (ια) → Set α
Set.range
fun
r: R
r
:
R: Type ?u.33
R
=>
r: R
r
• (
1: ?m.796
1
:
M: Type ?u.36
M
) smul_mem' := fun
r: ?m.1386
r
_: ?m.1389
_
r': R
r'
,
hr': (fun r => r 1) r' = x✝¹
hr'
⟩ =>
hr': (fun r => r 1) r' = x✝¹
hr'
▸ ⟨
r: ?m.1386
r
*
r': R
r'
,
mul_smul: ∀ {α : Type ?u.2164} {β : Type ?u.2163} [inst : Monoid α] [self : MulAction α β] (x y : α) (b : β), (x * y) b = x y b
mul_smul
_: ?m.2165
_
_: ?m.2165
_
_: ?m.2166
_
⟩ } theorem
coe_one: 1 = Set.range fun r => r 1
coe_one
: ↑(
1: ?m.3852
1
:
SubMulAction: (R : Type ?u.3299) → (M : Type ?u.3298) → [inst : SMul R M] → Type ?u.3298
SubMulAction
R: Type ?u.2506
R
M: Type ?u.2509
M
) =
Set.range: {α : Type ?u.2536} → {ι : Sort ?u.2535} → (ια) → Set α
Set.range
fun
r: R
r
:
R: Type ?u.2506
R
=>
r: R
r
• (
1: ?m.2551
1
:
M: Type ?u.2509
M
) :=
rfl: ∀ {α : Sort ?u.3998} {a : α}, a = a
rfl
#align sub_mul_action.coe_one
SubMulAction.coe_one: ∀ {R : Type u_2} {M : Type u_1} [inst : Monoid R] [inst_1 : MulAction R M] [inst_2 : One M], 1 = Set.range fun r => r 1
SubMulAction.coe_one
@[simp] theorem
mem_one: ∀ {R : Type u_2} {M : Type u_1} [inst : Monoid R] [inst_1 : MulAction R M] [inst_2 : One M] {x : M}, x 1 r, r 1 = x
mem_one
{
x: M
x
:
M: Type ?u.4015
M
} :
x: M
x
∈ (
1: ?m.4753
1
:
SubMulAction: (R : Type ?u.4046) → (M : Type ?u.4045) → [inst : SMul R M] → Type ?u.4045
SubMulAction
R: Type ?u.4012
R
M: Type ?u.4015
M
) ↔ ∃
r: R
r
:
R: Type ?u.4012
R
,
r: R
r
• (
1: ?m.4849
1
:
M: Type ?u.4015
M
) =
x: M
x
:=
Iff.rfl: ∀ {a : Prop}, a a
Iff.rfl
#align sub_mul_action.mem_one
SubMulAction.mem_one: ∀ {R : Type u_2} {M : Type u_1} [inst : Monoid R] [inst_1 : MulAction R M] [inst_2 : One M] {x : M}, x 1 r, r 1 = x
SubMulAction.mem_one
theorem
subset_coe_one: ∀ {R : Type u_2} {M : Type u_1} [inst : Monoid R] [inst_1 : MulAction R M] [inst_2 : One M], 1 1
subset_coe_one
: (
1: ?m.5528
1
:
Set: Type ?u.5526 → Type ?u.5526
Set
M: Type ?u.5493
M
) ⊆ (
1: ?m.6276
1
:
SubMulAction: (R : Type ?u.5573) → (M : Type ?u.5572) → [inst : SMul R M] → Type ?u.5572
SubMulAction
R: Type ?u.5490
R
M: Type ?u.5493
M
) := fun
_: ?m.6427
_
hx: ?m.6430
hx
=> ⟨
1: ?m.6445
1
, (
one_smul: ∀ (M : Type ?u.6832) {α : Type ?u.6831} [inst : Monoid M] [inst_1 : MulAction M α] (b : α), 1 b = b
one_smul
_: Type ?u.6832
_
_: ?m.6834
_
).
trans: ∀ {α : Sort ?u.6911} {a b c : α}, a = bb = ca = c
trans
hx: ?m.6430
hx
.
symm: ∀ {α : Sort ?u.6963} {a b : α}, a = bb = a
symm
#align sub_mul_action.subset_coe_one
SubMulAction.subset_coe_one: ∀ {R : Type u_2} {M : Type u_1} [inst : Monoid R] [inst_1 : MulAction R M] [inst_2 : One M], 1 1
SubMulAction.subset_coe_one
end One section Mul variable [
Monoid: Type ?u.11507 → Type ?u.11507
Monoid
R: Type ?u.6985
R
] [
MulAction: (α : Type ?u.8458) → Type ?u.8457 → [inst : Monoid α] → Type (max?u.8458?u.8457)
MulAction
R: Type ?u.6985
R
M: Type ?u.11504
M
] [
Mul: Type ?u.11523 → Type ?u.11523
Mul
M: Type ?u.8451
M
] [
IsScalarTower: (M : Type ?u.14405) → (N : Type ?u.14404) → (α : Type ?u.14403) → [inst : SMul M N] → [inst : SMul N α] → [inst : SMul M α] → Prop
IsScalarTower
R: Type ?u.6985
R
M: Type ?u.8451
M
M: Type ?u.6988
M
]
instance: {R : Type u_1} → {M : Type u_2} → [inst : Monoid R] → [inst_1 : MulAction R M] → [inst_2 : Mul M] → [inst_3 : IsScalarTower R M M] → Mul (SubMulAction R M)
instance
:
Mul: Type ?u.9911 → Type ?u.9911
Mul
(
SubMulAction: (R : Type ?u.9913) → (M : Type ?u.9912) → [inst : SMul R M] → Type ?u.9912
SubMulAction
R: Type ?u.8448
R
M: Type ?u.8451
M
) where mul
p: ?m.10624
p
q: ?m.10627
q
:= { carrier :=
Set.image2: {α : Type ?u.10639} → {β : Type ?u.10638} → {γ : Type ?u.10637} → (αβγ) → Set αSet βSet γ
Set.image2
(· * ·): MMM
(· * ·)
p: ?m.10624
p
q: ?m.10627
q
smul_mem' := fun
r: ?m.10860
r
_: ?m.10863
_
m₁: M
m₁
,
m₂: M
m₂
,
hm₁: m₁ p
hm₁
,
hm₂: m₂ q
hm₂
,
h: (fun x x_1 => x * x_1) m₁ m₂ = x✝¹
h
⟩ =>
h: (fun x x_1 => x * x_1) m₁ m₂ = x✝¹
h
smul_mul_assoc: ∀ {α : Type ?u.10978} {β : Type ?u.10977} [inst : Mul β] [inst_1 : SMul α β] [inst_2 : IsScalarTower α β β] (r : α) (x y : β), r x * y = r (x * y)
smul_mul_assoc
r: ?m.10860
r
m₁: M
m₁
m₂: M
m₂
Set.mul_mem_mul: ∀ {α : Type ?u.11012} [inst : Mul α] {s t : Set α} {a b : α}, a sb ta * b s * t
Set.mul_mem_mul
(
p: ?m.10624
p
.
smul_mem: ∀ {R : Type ?u.11075} {M : Type ?u.11074} [inst : SMul R M] (p : SubMulAction R M) {x : M} (r : R), x pr x p
smul_mem
_: ?m.11083
_
hm₁: m₁ p
hm₁
)
hm₂: m₂ q
hm₂
} @[norm_cast] theorem
coe_mul: ∀ (p q : SubMulAction R M), ↑(p * q) = p * q
coe_mul
(p q :
SubMulAction: (R : Type ?u.13674) → (M : Type ?u.13673) → [inst : SMul R M] → Type ?u.13673
SubMulAction
R: Type ?u.11501
R
M: Type ?u.11504
M
) : ↑(p * q) = (p * q :
Set: Type ?u.13683 → Type ?u.13683
Set
M: Type ?u.11504
M
) :=
rfl: ∀ {α : Sort ?u.14226} {a : α}, a = a
rfl
#align sub_mul_action.coe_mul
SubMulAction.coe_mul: ∀ {R : Type u_1} {M : Type u_2} [inst : Monoid R] [inst_1 : MulAction R M] [inst_2 : Mul M] [inst_3 : IsScalarTower R M M] (p q : SubMulAction R M), ↑(p * q) = p * q
SubMulAction.coe_mul
theorem
mem_mul: ∀ {R : Type u_1} {M : Type u_2} [inst : Monoid R] [inst_1 : MulAction R M] [inst_2 : Mul M] [inst_3 : IsScalarTower R M M] {p q : SubMulAction R M} {x : M}, x p * q y z, y p z q y * z = x
mem_mul
{p q :
SubMulAction: (R : Type ?u.16551) → (M : Type ?u.16550) → [inst : SMul R M] → Type ?u.16550
SubMulAction
R: Type ?u.14378
R
M: Type ?u.14381
M
} {
x: M
x
:
M: Type ?u.14381
M
} :
x: M
x
p * q ↔ ∃
y: ?m.16713
y
z: ?m.16718
z
,
y: ?m.16713
y
p
z: ?m.16718
z
q
y: ?m.16713
y
*
z: ?m.16718
z
=
x: M
x
:=
Set.mem_mul: ∀ {α : Type ?u.16823} [inst : Mul α] {s t : Set α} {a : α}, a s * t x y, x s y t x * y = a
Set.mem_mul
#align sub_mul_action.mem_mul
SubMulAction.mem_mul: ∀ {R : Type u_1} {M : Type u_2} [inst : Monoid R] [inst_1 : MulAction R M] [inst_2 : Mul M] [inst_3 : IsScalarTower R M M] {p q : SubMulAction R M} {x : M}, x p * q y z, y p z q y * z = x
SubMulAction.mem_mul
end Mul section MulOneClass variable [
Monoid: Type ?u.19680 → Type ?u.19680
Monoid
R: Type ?u.16931
R
] [
MulAction: (α : Type ?u.19684) → Type ?u.19683 → [inst : Monoid α] → Type (max?u.19684?u.19683)
MulAction
R: Type ?u.19674
R
M: Type ?u.19677
M
] [
MulOneClass: Type ?u.16953 → Type ?u.16953
MulOneClass
M: Type ?u.19677
M
] [
IsScalarTower: (M : Type ?u.19701) → (N : Type ?u.19700) → (α : Type ?u.19699) → [inst : SMul M N] → [inst : SMul N α] → [inst : SMul M α] → Prop
IsScalarTower
R: Type ?u.16931
R
M: Type ?u.19677
M
M: Type ?u.19677
M
] [
SMulCommClass: (M : Type ?u.18417) → (N : Type ?u.18416) → (α : Type ?u.18415) → [inst : SMul M α] → [inst : SMul N α] → Prop
SMulCommClass
R: Type ?u.19674
R
M: Type ?u.16934
M
M: Type ?u.16934
M
] -- porting note: giving the instance the name `mulOneClass` instance
mulOneClass: MulOneClass (SubMulAction R M)
mulOneClass
:
MulOneClass: Type ?u.22417 → Type ?u.22417
MulOneClass
(
SubMulAction: (R : Type ?u.22419) → (M : Type ?u.22418) → [inst : SMul R M] → Type ?u.22418
SubMulAction
R: Type ?u.19674
R
M: Type ?u.19677
M
) where mul :=
(· * ·): SubMulAction R MSubMulAction R MSubMulAction R M
(· * ·)
one :=
1: ?m.23133
1
mul_one
a: ?m.24342
a
:=

Goals accomplished! 🐙
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M


a * 1 = a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

x: M


h
x a * 1 x a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M


a * 1 = a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

x: M


h
(y, y a a, a y = x) x a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M


a * 1 = a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

x: M


h.mp
(y, y a a, a y = x) → x a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

x: M


h.mpr
x ay, y a a, a y = x
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M


a * 1 = a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

x: M


h.mp
(y, y a a, a y = x) → x a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

x: M


h.mp
(y, y a a, a y = x) → x a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

x: M


h.mpr
x ay, y a a, a y = x
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

y: M

hy: y a

r: R


h.mp.intro.intro.intro
r y a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

x: M


h.mp
(y, y a a, a y = x) → x a

Goals accomplished! 🐙
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M


a * 1 = a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

x: M


h.mpr
x ay, y a a, a y = x
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

x: M


h.mpr
x ay, y a a, a y = x
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

x: M

hx: x a


h.mpr
y, y a a, a y = x
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

x: M


h.mpr
x ay, y a a, a y = x

Goals accomplished! 🐙
one_mul
a: ?m.24332
a
:=

Goals accomplished! 🐙
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M


1 * a = a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

x: M


h
x 1 * a x a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M


1 * a = a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

x: M


h
(a_1 x_1, x_1 a a_1 x_1 = x) x a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M


1 * a = a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

x: M


h
(a_1 x_1, x_1 a a_1 x_1 = x) → x a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M


1 * a = a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M

r: R

y: M

hy: y a


h.intro.intro.intro
r y a
R: Type ?u.19674

M: Type ?u.19677

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: MulOneClass M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

a: SubMulAction R M


1 * a = a

Goals accomplished! 🐙
end MulOneClass section Semigroup variable [
Monoid: Type ?u.29589 → Type ?u.29589
Monoid
R: Type ?u.31080
R
] [
MulAction: (α : Type ?u.29593) → Type ?u.29592 → [inst : Monoid α] → Type (max?u.29593?u.29592)
MulAction
R: Type ?u.29583
R
M: Type ?u.31083
M
] [
Semigroup: Type ?u.29605 → Type ?u.29605
Semigroup
M: Type ?u.31083
M
] [
IsScalarTower: (M : Type ?u.29610) → (N : Type ?u.29609) → (α : Type ?u.29608) → [inst : SMul M N] → [inst : SMul N α] → [inst : SMul M α] → Prop
IsScalarTower
R: Type ?u.31080
R
M: Type ?u.29586
M
M: Type ?u.29586
M
] -- porting note: giving the instance the name `semiGroup` instance
semiGroup: {R : Type u_1} → {M : Type u_2} → [inst : Monoid R] → [inst_1 : MulAction R M] → [inst_2 : Semigroup M] → [inst_3 : IsScalarTower R M M] → Semigroup (SubMulAction R M)
semiGroup
:
Semigroup: Type ?u.32577 → Type ?u.32577
Semigroup
(
SubMulAction: (R : Type ?u.32579) → (M : Type ?u.32578) → [inst : SMul R M] → Type ?u.32578
SubMulAction
R: Type ?u.31080
R
M: Type ?u.31083
M
) where mul :=
(· * ·): SubMulAction R MSubMulAction R MSubMulAction R M
(· * ·)
mul_assoc
_: ?m.34341
_
_: ?m.34344
_
_: ?m.34347
_
:=
SetLike.coe_injective: ∀ {A : Type ?u.34349} {B : Type ?u.34350} [i : SetLike A B], Function.Injective SetLike.coe
SetLike.coe_injective
(
mul_assoc: ∀ {G : Type ?u.34373} [inst : Semigroup G] (a b c : G), a * b * c = a * (b * c)
mul_assoc
(
_: Set ?m.34378
_
:
Set: Type ?u.34377 → Type ?u.34377
Set
_: Type ?u.34377
_
)
_: ?m.34374
_
_: ?m.34374
_
) end Semigroup section Monoid variable [
Monoid: Type ?u.45166 → Type ?u.45166
Monoid
R: Type ?u.37773
R
] [
MulAction: (α : Type ?u.34629) → Type ?u.34628 → [inst : Monoid α] → Type (max?u.34629?u.34628)
MulAction
R: Type ?u.34619
R
M: Type ?u.34622
M
] [
Monoid: Type ?u.37795 → Type ?u.37795
Monoid
M: Type ?u.34622
M
] [
IsScalarTower: (M : Type ?u.45187) → (N : Type ?u.45186) → (α : Type ?u.45185) → [inst : SMul M N] → [inst : SMul N α] → [inst : SMul M α] → Prop
IsScalarTower
R: Type ?u.34619
R
M: Type ?u.37776
M
M: Type ?u.37776
M
] [
SMulCommClass: (M : Type ?u.46837) → (N : Type ?u.46836) → (α : Type ?u.46835) → [inst : SMul M α] → [inst : SMul N α] → Prop
SMulCommClass
R: Type ?u.34619
R
M: Type ?u.34622
M
M: Type ?u.37776
M
]
instance: {R : Type u_1} → {M : Type u_2} → [inst : Monoid R] → [inst_1 : MulAction R M] → [inst_2 : Monoid M] → [inst_3 : IsScalarTower R M M] → [inst_4 : SMulCommClass R M M] → Monoid (SubMulAction R M)
instance
:
Monoid: Type ?u.40927 → Type ?u.40927
Monoid
(
SubMulAction: (R : Type ?u.40929) → (M : Type ?u.40928) → [inst : SMul R M] → Type ?u.40928
SubMulAction
R: Type ?u.37773
R
M: Type ?u.37776
M
) := {
SubMulAction.semiGroup: {R : Type ?u.41639} → {M : Type ?u.41638} → [inst : Monoid R] → [inst_1 : MulAction R M] → [inst_2 : Semigroup M] → [inst_3 : IsScalarTower R M M] → Semigroup (SubMulAction R M)
SubMulAction.semiGroup
,
SubMulAction.mulOneClass: {R : Type ?u.41987} → {M : Type ?u.41986} → [inst : Monoid R] → [inst_1 : MulAction R M] → [inst_2 : MulOneClass M] → [inst_3 : IsScalarTower R M M] → [inst_4 : SMulCommClass R M M] → MulOneClass (SubMulAction R M)
SubMulAction.mulOneClass
with mul :=
(· * ·): SubMulAction R MSubMulAction R MSubMulAction R M
(· * ·)
one :=
1: ?m.43590
1
} theorem
coe_pow: ∀ (p : SubMulAction R M) {n : }, n 0↑(p ^ n) = p ^ n
coe_pow
(p :
SubMulAction: (R : Type ?u.48315) → (M : Type ?u.48314) → [inst : SMul R M] → Type ?u.48314
SubMulAction
R: Type ?u.45160
R
M: Type ?u.45163
M
) : ∀ {
n:
n
:
: Type
} (
_: n 0
_
:
n:
n
0: ?m.49029
0
), (p ^
n:
n
:
Set: Type ?u.49043 → Type ?u.49043
Set
M: Type ?u.45163
M
) = ((p :
Set: Type ?u.54885 → Type ?u.54885
Set
M: Type ?u.45163
M
) ^
n:
n
) |
0:
0
,
hn: 0 0
hn
=> (
hn: 0 0
hn
rfl: ∀ {α : Sort ?u.60926} {a : α}, a = a
rfl
).
elim: ∀ {C : Sort ?u.60932}, FalseC
elim
|
1:
1
, _ =>

Goals accomplished! 🐙
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

x✝: 1 0


↑(p ^ 1) = p ^ 1
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

x✝: 1 0


↑(p ^ 1) = p ^ 1
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

x✝: 1 0


p = p ^ 1
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

x✝: 1 0


↑(p ^ 1) = p ^ 1
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

x✝: 1 0


p = p

Goals accomplished! 🐙
|
n:
n
+ 2, _ =>

Goals accomplished! 🐙
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

n:

x✝: n + 2 0


↑(p ^ (n + 2)) = p ^ (n + 2)
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

n:

x✝: n + 2 0


↑(p ^ (n + 2)) = p ^ (n + 2)
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

n:

x✝: n + 2 0


↑(p * p ^ (n + 1)) = p ^ (n + 2)
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

n:

x✝: n + 2 0


↑(p ^ (n + 2)) = p ^ (n + 2)
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

n:

x✝: n + 2 0


↑(p * p ^ (n + 1)) = p * p ^ (n + 1)
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

n:

x✝: n + 2 0


↑(p ^ (n + 2)) = p ^ (n + 2)
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

n:

x✝: n + 2 0


p * ↑(p ^ (n + 1)) = p * p ^ (n + 1)
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

n:

x✝: n + 2 0


↑(p ^ (n + 2)) = p ^ (n + 2)
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

n:

x✝: n + 2 0


p * p ^ Nat.succ n = p * p ^ (n + 1)

Goals accomplished! 🐙
#align sub_mul_action.coe_pow
SubMulAction.coe_pow: ∀ {R : Type u_1} {M : Type u_2} [inst : Monoid R] [inst_1 : MulAction R M] [inst_2 : Monoid M] [inst_3 : IsScalarTower R M M] [inst_4 : SMulCommClass R M M] (p : SubMulAction R M) {n : }, n 0↑(p ^ n) = p ^ n
SubMulAction.coe_pow
theorem
subset_coe_pow: ∀ (p : SubMulAction R M) {n : }, p ^ n ↑(p ^ n)
subset_coe_pow
(p :
SubMulAction: (R : Type ?u.65904) → (M : Type ?u.65903) → [inst : SMul R M] → Type ?u.65903
SubMulAction
R: Type ?u.62749
R
M: Type ?u.62752
M
) : ∀ {
n:
n
:
: Type
}, ((p :
Set: Type ?u.66629 → Type ?u.66629
Set
M: Type ?u.62752
M
) ^
n:
n
) ⊆ (p ^
n:
n
:
Set: Type ?u.72788 → Type ?u.72788
Set
M: Type ?u.62752
M
) |
0:
0
=>

Goals accomplished! 🐙
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M


p ^ 0 ↑(p ^ 0)
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M


p ^ 0 ↑(p ^ 0)
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M


1 ↑(p ^ 0)
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M


p ^ 0 ↑(p ^ 0)
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M


1 1
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M


1 1
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M


p ^ 0 ↑(p ^ 0)

Goals accomplished! 🐙
|
n:
n
+ 1 =>

Goals accomplished! 🐙
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

n:


p ^ (n + 1) ↑(p ^ (n + 1))
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

n:


p ^ (n + 1) ↑(p ^ (n + 1))
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

n:


p ^ Nat.succ n ↑(p ^ Nat.succ n)
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

n:


p ^ (n + 1) ↑(p ^ (n + 1))
R: Type u_1

M: Type u_2

inst✝⁴: Monoid R

inst✝³: MulAction R M

inst✝²: Monoid M

inst✝¹: IsScalarTower R M M

inst✝: SMulCommClass R M M

p: SubMulAction R M

n:


p ^ Nat.succ n p ^ Nat.succ n

Goals accomplished! 🐙
#align sub_mul_action.subset_coe_pow
SubMulAction.subset_coe_pow: ∀ {R : Type u_1} {M : Type u_2} [inst : Monoid R] [inst_1 : MulAction R M] [inst_2 : Monoid M] [inst_3 : IsScalarTower R M M] [inst_4 : SMulCommClass R M M] (p : SubMulAction R M) {n : }, p ^ n ↑(p ^ n)
SubMulAction.subset_coe_pow
end Monoid end SubMulAction