@@ -6,6 +6,7 @@ Author: Yury Kudryashov
6
6
7
7
import algebra.group_power
8
8
import logic.function.iterate
9
+ import group_theory.perm.basic
9
10
10
11
/-!
11
12
# Iterates of monoid and ring homomorphisms
@@ -28,6 +29,12 @@ open function
28
29
29
30
variables {M : Type *} {N : Type *} {G : Type *} {H : Type *}
30
31
32
+ /-- An auxiliary lemma that can be used to prove `⇑(f ^ n) = (⇑f^[n])`. -/
33
+ lemma hom_coe_pow {F : Type *} [monoid F] (c : F → M → M) (h1 : c 1 = id)
34
+ (hmul : ∀ f g, c (f * g) = c f ∘ c g) (f : F) : ∀ n, c (f ^ n) = (c f^[n])
35
+ | 0 := h1
36
+ | (n + 1 ) := by rw [pow_succ, iterate_succ', hmul, hom_coe_pow]
37
+
31
38
namespace monoid_hom
32
39
33
40
variables [monoid M] [monoid N] [group G] [group H]
@@ -52,6 +59,9 @@ commute.iterate_left (λ x, f.map_pow x m) n a
52
59
theorem iterate_map_gpow (f : G →* G) (a) (n : ℕ) (m : ℤ) : f^[n] (a^m) = (f^[n] a)^m :=
53
60
commute.iterate_left (λ x, f.map_gpow x m) n a
54
61
62
+ lemma coe_pow {M} [comm_monoid M] (f : monoid.End M) (n : ℕ) : ⇑(f^n) = (f^[n]) :=
63
+ hom_coe_pow _ rfl (λ f g, rfl) _ _
64
+
55
65
end monoid_hom
56
66
57
67
namespace add_monoid_hom
@@ -79,9 +89,8 @@ section semiring
79
89
80
90
variables {R : Type *} [semiring R] (f : R →+* R) (n : ℕ) (x y : R)
81
91
82
- lemma coe_pow : ∀ n : ℕ, ⇑(f^n) = (f^[n])
83
- | 0 := rfl
84
- | (n+1 ) := by { simp only [function.iterate_succ, pow_succ', coe_mul, coe_pow n] }
92
+ lemma coe_pow (n : ℕ) : ⇑(f^n) = (f^[n]) :=
93
+ hom_coe_pow _ rfl (λ f g, rfl) f n
85
94
86
95
theorem iterate_map_one : f^[n] 1 = 1 := f.to_monoid_hom.iterate_map_one n
87
96
@@ -116,6 +125,9 @@ f.to_add_monoid_hom.iterate_map_gsmul n m x
116
125
117
126
end ring_hom
118
127
128
+ lemma equiv.perm.coe_pow {α : Type *} (f : equiv.perm α) (n : ℕ) : ⇑(f ^ n) = (f^[n]) :=
129
+ hom_coe_pow _ rfl (λ _ _, rfl) _ _
130
+
119
131
@[simp] lemma mul_left_iterate [monoid M] (a : M) (n : ℕ) : ((*) a)^[n] = (*) (a^n) :=
120
132
nat.rec_on n (funext $ λ x, by simp) $ λ n ihn,
121
133
funext $ λ x, by simp [iterate_succ, ihn, pow_succ', mul_assoc]
0 commit comments