mathlib3 documentation

group_theory.subgroup.pointwise

Pointwise instances on subgroup and add_subgroups #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

This file provides the actions

which matches the action of mul_action_set.

These actions are available in the pointwise locale.

Implementation notes #

The pointwise section of this file is almost identical to group_theory/submonoid/pointwise.lean. Where possible, try to keep them in sync.

@[simp]
theorem inv_coe_set {G : Type u_2} {S : Type u_4} [has_involutive_inv G] [set_like S G] [inv_mem_class S G] {H : S} :
@[simp]
theorem neg_coe_set {G : Type u_2} {S : Type u_4} [has_involutive_neg G] [set_like S G] [neg_mem_class S G] {H : S} :
@[simp]
theorem subgroup.inv_subset_closure {G : Type u_2} [group G] (S : set G) :
@[simp]
theorem add_subgroup.closure_induction_left {G : Type u_2} [add_group G] {s : set G} {p : G Prop} {x : G} (h : x add_subgroup.closure s) (H1 : p 0) (Hmul : (x : G), x s (y : G), p y p (x + y)) (Hinv : (x : G), x s (y : G), p y p (-x + y)) :
p x

For additive subgroups generated by a single element, see the simpler zsmul_induction_left.

theorem subgroup.closure_induction_left {G : Type u_2} [group G] {s : set G} {p : G Prop} {x : G} (h : x subgroup.closure s) (H1 : p 1) (Hmul : (x : G), x s (y : G), p y p (x * y)) (Hinv : (x : G), x s (y : G), p y p (x⁻¹ * y)) :
p x

For subgroups generated by a single element, see the simpler zpow_induction_left.

theorem add_subgroup.closure_induction_right {G : Type u_2} [add_group G] {s : set G} {p : G Prop} {x : G} (h : x add_subgroup.closure s) (H1 : p 0) (Hmul : (x y : G), y s p x p (x + y)) (Hinv : (x y : G), y s p x p (x + -y)) :
p x

For additive subgroups generated by a single element, see the simpler zsmul_induction_right.

theorem subgroup.closure_induction_right {G : Type u_2} [group G] {s : set G} {p : G Prop} {x : G} (h : x subgroup.closure s) (H1 : p 1) (Hmul : (x y : G), y s p x p (x * y)) (Hinv : (x y : G), y s p x p (x * y⁻¹)) :
p x

For subgroups generated by a single element, see the simpler zpow_induction_right.

@[simp]
theorem subgroup.closure_induction'' {G : Type u_2} [group G] {s : set G} {p : G Prop} {x : G} (h : x subgroup.closure s) (Hk : (x : G), x s p x) (Hk_inv : (x : G), x s p x⁻¹) (H1 : p 1) (Hmul : (x y : G), p x p y p (x * y)) :
p x

An induction principle for closure membership. If p holds for 1 and all elements of k and their inverse, and is preserved under multiplication, then p holds for all elements of the closure of k.

theorem add_subgroup.closure_induction'' {G : Type u_2} [add_group G] {s : set G} {p : G Prop} {x : G} (h : x add_subgroup.closure s) (Hk : (x : G), x s p x) (Hk_inv : (x : G), x s p (-x)) (H1 : p 0) (Hmul : (x y : G), p x p y p (x + y)) :
p x

An induction principle for additive closure membership. If p holds for 0 and all elements of k and their negation, and is preserved under addition, then p holds for all elements of the additive closure of k.

theorem add_subgroup.supr_induction {G : Type u_2} [add_group G] {ι : Sort u_1} (S : ι add_subgroup G) {C : G Prop} {x : G} (hx : x (i : ι), S i) (hp : (i : ι) (x : G), x S i C x) (h1 : C 0) (hmul : (x y : G), C x C y C (x + y)) :
C x

An induction principle for elements of ⨆ i, S i. If C holds for 0 and all elements of S i for all i, and is preserved under addition, then it holds for all elements of the supremum of S.

theorem subgroup.supr_induction {G : Type u_2} [group G] {ι : Sort u_1} (S : ι subgroup G) {C : G Prop} {x : G} (hx : x (i : ι), S i) (hp : (i : ι) (x : G), x S i C x) (h1 : C 1) (hmul : (x y : G), C x C y C (x * y)) :
C x

An induction principle for elements of ⨆ i, S i. If C holds for 1 and all elements of S i for all i, and is preserved under multiplication, then it holds for all elements of the supremum of S.

theorem subgroup.supr_induction' {G : Type u_2} [group G] {ι : Sort u_1} (S : ι subgroup G) {C : Π (x : G), (x (i : ι), S i) Prop} (hp : (i : ι) (x : G) (H : x S i), C x _) (h1 : C 1 _) (hmul : (x y : G) (hx : x (i : ι), S i) (hy : y (i : ι), S i), C x hx C y hy C (x * y) _) {x : G} (hx : x (i : ι), S i) :
C x hx

A dependent version of subgroup.supr_induction.

theorem add_subgroup.supr_induction' {G : Type u_2} [add_group G] {ι : Sort u_1} (S : ι add_subgroup G) {C : Π (x : G), (x (i : ι), S i) Prop} (hp : (i : ι) (x : G) (H : x S i), C x _) (h1 : C 0 _) (hmul : (x y : G) (hx : x (i : ι), S i) (hy : y (i : ι), S i), C x hx C y hy C (x + y) _) {x : G} (hx : x (i : ι), S i) :
C x hx

A dependent version of add_subgroup.supr_induction.

theorem subgroup.sup_eq_closure {G : Type u_2} [group G] (H K : subgroup G) :
theorem add_subgroup.add_normal {G : Type u_2} [add_group G] (H N : add_subgroup G) [N.normal] :
(H N) = H + N

The carrier of H ⊔ N is just ↑H + ↑N (pointwise set addition) when N is normal.

theorem subgroup.mul_normal {G : Type u_2} [group G] (H N : subgroup G) [N.normal] :
(H N) = H * N

The carrier of H ⊔ N is just ↑H * ↑N (pointwise set product) when N is normal.

theorem add_subgroup.normal_add {G : Type u_2} [add_group G] (N H : add_subgroup G) [N.normal] :
(N H) = N + H

The carrier of N ⊔ H is just ↑N + ↑H (pointwise set addition) when N is normal.

theorem subgroup.normal_mul {G : Type u_2} [group G] (N H : subgroup G) [N.normal] :
(N H) = N * H

The carrier of N ⊔ H is just ↑N * ↑H (pointwise set product) when N is normal.

theorem subgroup.mul_inf_assoc {G : Type u_2} [group G] (A B C : subgroup G) (h : A C) :
A * (B C) = A * B C
theorem add_subgroup.add_inf_assoc {G : Type u_2} [add_group G] (A B C : add_subgroup G) (h : A C) :
A + (B C) = (A + B) C
theorem subgroup.inf_mul_assoc {G : Type u_2} [group G] (A B C : subgroup G) (h : C A) :
(A B) * C = A B * C
theorem add_subgroup.inf_add_assoc {G : Type u_2} [add_group G] (A B C : add_subgroup G) (h : C A) :
(A B) + C = A (B + C)
@[protected, instance]
def subgroup.sup_normal {G : Type u_2} [group G] (H K : subgroup G) [hH : H.normal] [hK : K.normal] :
(H K).normal
theorem subgroup.smul_opposite_image_mul_preimage {G : Type u_2} [group G] {H : subgroup G} (g : G) (h : (subgroup.opposite H)) (s : set G) :
(λ (y : G), h y) '' (has_mul.mul g ⁻¹' s) = has_mul.mul g ⁻¹' ((λ (y : G), h y) '' s)
theorem add_subgroup.vadd_opposite_image_add_preimage {G : Type u_2} [add_group G] {H : add_subgroup G} (g : G) (h : (add_subgroup.opposite H)) (s : set G) :
(λ (y : G), h +ᵥ y) '' (has_add.add g ⁻¹' s) = has_add.add g ⁻¹' ((λ (y : G), h +ᵥ y) '' s)

Pointwise action #

@[protected]
def subgroup.pointwise_mul_action {α : Type u_1} {G : Type u_2} [group G] [monoid α] [mul_distrib_mul_action α G] :

The action on a subgroup corresponding to applying the action to every element.

This is available as an instance in the pointwise locale.

Equations
theorem subgroup.pointwise_smul_def {α : Type u_1} {G : Type u_2} [group G] [monoid α] [mul_distrib_mul_action α G] {a : α} (S : subgroup G) :
@[simp]
theorem subgroup.coe_pointwise_smul {α : Type u_1} {G : Type u_2} [group G] [monoid α] [mul_distrib_mul_action α G] (a : α) (S : subgroup G) :
(a S) = a S
@[simp]
theorem subgroup.pointwise_smul_to_submonoid {α : Type u_1} {G : Type u_2} [group G] [monoid α] [mul_distrib_mul_action α G] (a : α) (S : subgroup G) :
theorem subgroup.smul_mem_pointwise_smul {α : Type u_1} {G : Type u_2} [group G] [monoid α] [mul_distrib_mul_action α G] (m : G) (a : α) (S : subgroup G) :
m S a m a S
theorem subgroup.mem_smul_pointwise_iff_exists {α : Type u_1} {G : Type u_2} [group G] [monoid α] [mul_distrib_mul_action α G] (m : G) (a : α) (S : subgroup G) :
m a S (s : G), s S a s = m
@[simp]
theorem subgroup.smul_bot {α : Type u_1} {G : Type u_2} [group G] [monoid α] [mul_distrib_mul_action α G] (a : α) :
theorem subgroup.smul_sup {α : Type u_1} {G : Type u_2} [group G] [monoid α] [mul_distrib_mul_action α G] (a : α) (S T : subgroup G) :
a (S T) = a S a T
theorem subgroup.smul_closure {α : Type u_1} {G : Type u_2} [group G] [monoid α] [mul_distrib_mul_action α G] (a : α) (s : set G) :
theorem subgroup.conj_smul_le_of_le {G : Type u_2} [group G] {P H : subgroup G} (hP : P H) (h : H) :
theorem subgroup.conj_smul_subgroup_of {G : Type u_2} [group G] {P H : subgroup G} (hP : P H) (h : H) :
@[simp]
theorem subgroup.smul_mem_pointwise_smul_iff {α : Type u_1} {G : Type u_2} [group G] [group α] [mul_distrib_mul_action α G] {a : α} {S : subgroup G} {x : G} :
a x a S x S
theorem subgroup.mem_pointwise_smul_iff_inv_smul_mem {α : Type u_1} {G : Type u_2} [group G] [group α] [mul_distrib_mul_action α G] {a : α} {S : subgroup G} {x : G} :
x a S a⁻¹ x S
theorem subgroup.mem_inv_pointwise_smul_iff {α : Type u_1} {G : Type u_2} [group G] [group α] [mul_distrib_mul_action α G] {a : α} {S : subgroup G} {x : G} :
x a⁻¹ S a x S
@[simp]
theorem subgroup.pointwise_smul_le_pointwise_smul_iff {α : Type u_1} {G : Type u_2} [group G] [group α] [mul_distrib_mul_action α G] {a : α} {S T : subgroup G} :
a S a T S T
theorem subgroup.pointwise_smul_subset_iff {α : Type u_1} {G : Type u_2} [group G] [group α] [mul_distrib_mul_action α G] {a : α} {S T : subgroup G} :
a S T S a⁻¹ T
theorem subgroup.subset_pointwise_smul_iff {α : Type u_1} {G : Type u_2} [group G] [group α] [mul_distrib_mul_action α G] {a : α} {S T : subgroup G} :
S a T a⁻¹ S T
@[simp]
theorem subgroup.smul_inf {α : Type u_1} {G : Type u_2} [group G] [group α] [mul_distrib_mul_action α G] (a : α) (S T : subgroup G) :
a (S T) = a S a T
@[simp]
theorem subgroup.equiv_smul_apply_coe {α : Type u_1} {G : Type u_2} [group G] [group α] [mul_distrib_mul_action α G] (a : α) (H : subgroup G) (ᾰ : (H.to_submonoid)) :
def subgroup.equiv_smul {α : Type u_1} {G : Type u_2} [group G] [group α] [mul_distrib_mul_action α G] (a : α) (H : subgroup G) :
H ≃* (a H)

Applying a mul_distrib_mul_action results in an isomorphic subgroup

Equations
theorem subgroup.subgroup_mul_singleton {G : Type u_2} [group G] {H : subgroup G} {h : G} (hh : h H) :
H * {h} = H
theorem subgroup.singleton_mul_subgroup {G : Type u_2} [group G] {H : subgroup G} {h : G} (hh : h H) :
{h} * H = H
theorem subgroup.normal.conj_act {G : Type u_1} [group G] {H : subgroup G} (hH : H.normal) (g : conj_act G) :
g H = H
@[simp]
theorem subgroup.smul_normal {G : Type u_2} [group G] (g : G) (H : subgroup G) [h : H.normal] :
@[simp]
theorem subgroup.smul_mem_pointwise_smul_iff₀ {α : Type u_1} {G : Type u_2} [group G] [group_with_zero α] [mul_distrib_mul_action α G] {a : α} (ha : a 0) (S : subgroup G) (x : G) :
a x a S x S
theorem subgroup.mem_pointwise_smul_iff_inv_smul_mem₀ {α : Type u_1} {G : Type u_2} [group G] [group_with_zero α] [mul_distrib_mul_action α G] {a : α} (ha : a 0) (S : subgroup G) (x : G) :
x a S a⁻¹ x S
theorem subgroup.mem_inv_pointwise_smul_iff₀ {α : Type u_1} {G : Type u_2} [group G] [group_with_zero α] [mul_distrib_mul_action α G] {a : α} (ha : a 0) (S : subgroup G) (x : G) :
x a⁻¹ S a x S
@[simp]
theorem subgroup.pointwise_smul_le_pointwise_smul_iff₀ {α : Type u_1} {G : Type u_2} [group G] [group_with_zero α] [mul_distrib_mul_action α G] {a : α} (ha : a 0) {S T : subgroup G} :
a S a T S T
theorem subgroup.pointwise_smul_le_iff₀ {α : Type u_1} {G : Type u_2} [group G] [group_with_zero α] [mul_distrib_mul_action α G] {a : α} (ha : a 0) {S T : subgroup G} :
a S T S a⁻¹ T
theorem subgroup.le_pointwise_smul_iff₀ {α : Type u_1} {G : Type u_2} [group G] [group_with_zero α] [mul_distrib_mul_action α G] {a : α} (ha : a 0) {S T : subgroup G} :
S a T a⁻¹ S T
@[protected]

The action on an additive subgroup corresponding to applying the action to every element.

This is available as an instance in the pointwise locale.

Equations
@[simp]
theorem add_subgroup.coe_pointwise_smul {α : Type u_1} {A : Type u_3} [add_group A] [monoid α] [distrib_mul_action α A] (a : α) (S : add_subgroup A) :
(a S) = a S
@[simp]
theorem add_subgroup.smul_mem_pointwise_smul {α : Type u_1} {A : Type u_3} [add_group A] [monoid α] [distrib_mul_action α A] (m : A) (a : α) (S : add_subgroup A) :
m S a m a S
theorem add_subgroup.mem_smul_pointwise_iff_exists {α : Type u_1} {A : Type u_3} [add_group A] [monoid α] [distrib_mul_action α A] (m : A) (a : α) (S : add_subgroup A) :
m a S (s : A), s S a s = m
@[simp]
theorem add_subgroup.smul_mem_pointwise_smul_iff {α : Type u_1} {A : Type u_3} [add_group A] [group α] [distrib_mul_action α A] {a : α} {S : add_subgroup A} {x : A} :
a x a S x S
theorem add_subgroup.mem_pointwise_smul_iff_inv_smul_mem {α : Type u_1} {A : Type u_3} [add_group A] [group α] [distrib_mul_action α A] {a : α} {S : add_subgroup A} {x : A} :
x a S a⁻¹ x S
theorem add_subgroup.mem_inv_pointwise_smul_iff {α : Type u_1} {A : Type u_3} [add_group A] [group α] [distrib_mul_action α A] {a : α} {S : add_subgroup A} {x : A} :
x a⁻¹ S a x S
@[simp]
theorem add_subgroup.pointwise_smul_le_pointwise_smul_iff {α : Type u_1} {A : Type u_3} [add_group A] [group α] [distrib_mul_action α A] {a : α} {S T : add_subgroup A} :
a S a T S T
theorem add_subgroup.pointwise_smul_le_iff {α : Type u_1} {A : Type u_3} [add_group A] [group α] [distrib_mul_action α A] {a : α} {S T : add_subgroup A} :
a S T S a⁻¹ T
theorem add_subgroup.le_pointwise_smul_iff {α : Type u_1} {A : Type u_3} [add_group A] [group α] [distrib_mul_action α A] {a : α} {S T : add_subgroup A} :
S a T a⁻¹ S T
@[simp]
theorem add_subgroup.smul_mem_pointwise_smul_iff₀ {α : Type u_1} {A : Type u_3} [add_group A] [group_with_zero α] [distrib_mul_action α A] {a : α} (ha : a 0) (S : add_subgroup A) (x : A) :
a x a S x S
theorem add_subgroup.mem_pointwise_smul_iff_inv_smul_mem₀ {α : Type u_1} {A : Type u_3} [add_group A] [group_with_zero α] [distrib_mul_action α A] {a : α} (ha : a 0) (S : add_subgroup A) (x : A) :
x a S a⁻¹ x S
theorem add_subgroup.mem_inv_pointwise_smul_iff₀ {α : Type u_1} {A : Type u_3} [add_group A] [group_with_zero α] [distrib_mul_action α A] {a : α} (ha : a 0) (S : add_subgroup A) (x : A) :
x a⁻¹ S a x S
@[simp]
theorem add_subgroup.pointwise_smul_le_pointwise_smul_iff₀ {α : Type u_1} {A : Type u_3} [add_group A] [group_with_zero α] [distrib_mul_action α A] {a : α} (ha : a 0) {S T : add_subgroup A} :
a S a T S T
theorem add_subgroup.pointwise_smul_le_iff₀ {α : Type u_1} {A : Type u_3} [add_group A] [group_with_zero α] [distrib_mul_action α A] {a : α} (ha : a 0) {S T : add_subgroup A} :
a S T S a⁻¹ T
theorem add_subgroup.le_pointwise_smul_iff₀ {α : Type u_1} {A : Type u_3} [add_group A] [group_with_zero α] [distrib_mul_action α A] {a : α} (ha : a 0) {S T : add_subgroup A} :
S a T a⁻¹ S T