@@ -13,13 +13,15 @@ class has_scalar (α : Type u) (γ : Type v) := (smul : α → γ → γ)
13
13
14
14
infixr ` • `:73 := has_scalar.smul
15
15
16
- class monoid_action (α : Type u) (β : Type v) [monoid α] extends has_scalar α β :=
17
- (one : ∀ b : β, (1 : α) • b = b)
18
- (mul : ∀ (x y : α) (b : β), (x * y) • b = x • y • b)
16
+ class action (α : Type u) (β : Type v) [monoid α] extends has_scalar α β :=
17
+ (one_smul : ∀ b : β, (1 : α) • b = b)
18
+ (mul_smul : ∀ (x y : α) (b : β), (x * y) • b = x • y • b)
19
19
20
- namespace monoid_action
20
+ namespace action
21
21
22
- variables (α) [monoid α] [monoid_action α β]
22
+ variables (α) [monoid α] [action α β]
23
+
24
+ attribute [simp] one_smul
23
25
24
26
def orbit (b : β) := set.range (λ x : α, x • b)
25
27
@@ -32,7 +34,7 @@ iff.rfl
32
34
⟨x, rfl⟩
33
35
34
36
@[simp] lemma mem_orbit_self (b : β) : b ∈ orbit α b :=
35
- ⟨1 , by simp [monoid_action.one ]⟩
37
+ ⟨1 , by simp [action.one_smul ]⟩
36
38
37
39
instance orbit_fintype (b : β) [fintype α] [decidable_eq β] :
38
40
fintype (orbit α b) := set.fintype_range _
@@ -62,33 +64,31 @@ lemma mem_fixed_points' {b : β} : b ∈ fixed_points α β ↔
62
64
λ h b, mem_stabilizer_iff.2 (h _ (mem_orbit _ _))⟩
63
65
64
66
def comp_hom [monoid γ] (g : γ → α) [is_monoid_hom g] :
65
- monoid_action γ β :=
67
+ action γ β :=
66
68
{ smul := λ x b, (g x) • b,
67
- one := by simp [is_monoid_hom.map_one g, monoid_action.one],
68
- mul := by simp [is_monoid_hom.map_mul g, monoid_action.mul] }
69
-
70
- end monoid_action
69
+ one_smul := by simp [is_monoid_hom.map_one g, action.one_smul],
70
+ mul_smul := by simp [is_monoid_hom.map_mul g, action.mul_smul] }
71
71
72
- class group_action (α : Type u) (β : Type v) [group α] extends monoid_action α β
72
+ end action
73
73
74
- namespace group_action
75
- variables [group α] [group_action α β]
74
+ namespace action
75
+ variables [group α] [action α β]
76
76
77
77
section
78
- open monoid_action quotient_group
78
+ open action quotient_group
79
79
80
80
variables (α) (β)
81
81
82
82
def to_perm (g : α) : equiv.perm β :=
83
83
{ to_fun := (•) g,
84
84
inv_fun := (•) g⁻¹,
85
- left_inv := λ a, by rw [← monoid_action.mul , inv_mul_self, monoid_action.one ],
86
- right_inv := λ a, by rw [← monoid_action.mul , mul_inv_self, monoid_action.one ] }
85
+ left_inv := λ a, by rw [← action.mul_smul , inv_mul_self, action.one_smul ],
86
+ right_inv := λ a, by rw [← action.mul_smul , mul_inv_self, action.one_smul ] }
87
87
88
88
variables {α} {β}
89
89
90
90
instance : is_group_hom (to_perm α β) :=
91
- { mul := λ x y, equiv.ext _ _ (λ a, monoid_action.mul x y a) }
91
+ { mul := λ x y, equiv.ext _ _ (λ a, action.mul_smul x y a) }
92
92
93
93
lemma bijective (g : α) : function.bijective (λ b : β, g • b) :=
94
94
(to_perm α β g).bijective
@@ -97,25 +97,21 @@ lemma orbit_eq_iff {a b : β} :
97
97
orbit α a = orbit α b ↔ a ∈ orbit α b:=
98
98
⟨λ h, h ▸ mem_orbit_self _,
99
99
λ ⟨x, (hx : x • b = a)⟩, set.ext (λ c, ⟨λ ⟨y, (hy : y • a = c)⟩, ⟨y * x,
100
- show (y * x) • b = c, by rwa [monoid_action.mul , hx]⟩,
100
+ show (y * x) • b = c, by rwa [action.mul_smul , hx]⟩,
101
101
λ ⟨y, (hy : y • b = c)⟩, ⟨y * x⁻¹,
102
102
show (y * x⁻¹) • a = c, by
103
103
conv {to_rhs, rw [← hy, ← mul_one y, ← inv_mul_self x, ← mul_assoc,
104
- monoid_action.mul , hx]}⟩⟩)⟩
104
+ action.mul_smul , hx]}⟩⟩)⟩
105
105
106
106
instance (b : β) : is_subgroup (stabilizer α b) :=
107
- { one_mem := monoid_action.one _ _,
107
+ { one_mem := action.one_smul _ _,
108
108
mul_mem := λ x y (hx : x • b = b) (hy : y • b = b),
109
- show (x * y) • b = b, by rw monoid_action.mul ; simp *,
109
+ show (x * y) • b = b, by rw action.mul_smul ; simp *,
110
110
inv_mem := λ x (hx : x • b = b), show x⁻¹ • b = b,
111
- by rw [← hx, ← monoid_action.mul , inv_mul_self, monoid_action.one , hx] }
111
+ by rw [← hx, ← action.mul_smul , inv_mul_self, action.one_smul , hx] }
112
112
113
- variables (β)
114
113
115
- def comp_hom [group γ] (g : γ → α) [is_group_hom g] :
116
- group_action γ β := { ..monoid_action.comp_hom β g }
117
-
118
- variables (α)
114
+ variables (α) (β)
119
115
120
116
def orbit_rel : setoid β :=
121
117
{ r := λ a b, a ∈ orbit α b,
@@ -131,35 +127,35 @@ noncomputable def orbit_equiv_quotient_stabilizer (b : β) :
131
127
equiv.symm (@equiv.of_bijective _ _
132
128
(λ x : quotient (stabilizer α b), quotient.lift_on' x
133
129
(λ x, (⟨x • b, mem_orbit _ _⟩ : orbit α b))
134
- (λ g h (H : _ = _), subtype.eq $ (group_action .bijective (g⁻¹)).1
130
+ (λ g h (H : _ = _), subtype.eq $ (action .bijective (g⁻¹)).1
135
131
$ show g⁻¹ • (g • b) = g⁻¹ • (h • b),
136
- by rw [← monoid_action.mul , ← monoid_action.mul ,
137
- H, inv_mul_self, monoid_action.one ]))
132
+ by rw [← action.mul_smul , ← action.mul_smul ,
133
+ H, inv_mul_self, action.one_smul ]))
138
134
⟨λ g h, quotient.induction_on₂' g h (λ g h H, quotient.sound' $
139
135
have H : g • b = h • b := subtype.mk.inj H,
140
136
show (g⁻¹ * h) • b = b,
141
- by rw [monoid_action.mul , ← H, ← monoid_action.mul , inv_mul_self, monoid_action.one ]),
137
+ by rw [action.mul_smul , ← H, ← action.mul_smul , inv_mul_self, action.one_smul ]),
142
138
λ ⟨b, ⟨g, hgb⟩⟩, ⟨g, subtype.eq hgb⟩⟩)
143
139
144
140
end
145
141
146
- open quotient_group monoid_action is_subgroup
142
+ open quotient_group action is_subgroup
147
143
148
144
def mul_left_cosets (H : set α) [is_subgroup H]
149
145
(x : α) (y : quotient H) : quotient H :=
150
146
quotient.lift_on' y (λ y, quotient_group.mk ((x : α) * y))
151
147
(λ a b (hab : _ ∈ H), quotient_group.eq.2
152
148
(by rwa [mul_inv_rev, ← mul_assoc, mul_assoc (a⁻¹), inv_mul_self, mul_one]))
153
149
154
- instance (H : set α) [is_subgroup H] : group_action α (quotient H) :=
150
+ instance (H : set α) [is_subgroup H] : action α (quotient H) :=
155
151
{ smul := mul_left_cosets H,
156
- one := λ a, quotient.induction_on' a (λ a, quotient_group.eq.2
152
+ one_smul := λ a, quotient.induction_on' a (λ a, quotient_group.eq.2
157
153
(by simp [is_submonoid.one_mem])),
158
- mul := λ x y a, quotient.induction_on' a (λ a, quotient_group.eq.2
154
+ mul_smul := λ x y a, quotient.induction_on' a (λ a, quotient_group.eq.2
159
155
(by simp [mul_inv_rev, is_submonoid.one_mem, mul_assoc])) }
160
156
161
157
instance mul_left_cosets_comp_subtype_val (H I : set α) [is_subgroup H] [is_subgroup I] :
162
- group_action I (quotient H) :=
163
- group_action .comp_hom (quotient H) (subtype.val : I → α)
158
+ action I (quotient H) :=
159
+ action .comp_hom (quotient H) (subtype.val : I → α)
164
160
165
- end group_action
161
+ end action
0 commit comments