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) 2020 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov
! This file was ported from Lean 3 source module algebra.hom.iterate
! leanprover-community/mathlib commit 792a2a264169d64986541c6f8f7e3bbb6acb6295
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.Algebra.GroupPower.Lemmas
import Mathlib.GroupTheory.GroupAction.Opposite
/-!
# Iterates of monoid and ring homomorphisms
Iterate of a monoid/ring homomorphism is a monoid/ring homomorphism but it has a wrong type, so Lean
can't apply lemmas like `MonoidHom.map_one` to `f^[n] 1`. Though it is possible to define
a monoid structure on the endomorphisms, quite often we do not want to convert from
`M β* M` to `Monoid.End M` and from `f^[n]` to `f^n` just to apply a simple lemma.
So, we restate standard `*Hom.map_*` lemmas under names `*Hom.iterate_map_*`.
We also prove formulas for iterates of add/mul left/right.
## Tags
homomorphism, iterate
-/
open Function
variable {
Type _}
/-- An auxiliary lemma that can be used to prove `β(f ^ n) = (βf^[n])`. -/
theorem
hom_coe_pow: β {F : Type u_1} [inst : MonoidF] (c : F β M β M),
c1=id β (β (f g : F), c (f*g)=cfβcg) β β (f : F) (n : β), c (f^n)=cf^[n]
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F n: β
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F n: β
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F n: β
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F n: β
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F n: β
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F n: β
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F n: β
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F n: β
M: Type u_2 N: Type ?u.17 G: Type ?u.20 H: Type ?u.23 F: Type u_1 instβ: MonoidF c: F β M β M h1: c1=id hmul: β (f g : F), c (f*g)=cfβcg f: F n: β
hom_coe_pow: β {M : Type u_2} {F : Type u_1} [inst : MonoidF] (c : F β M β M),
c1=id β (β (f g : F), c (f*g)=cfβcg) β β (f : F) (n : β), c (f^n)=cf^[n]
hom_coe_pow: β {M : Type ?u.25127} {F : Type ?u.25126} [inst : MonoidF] (c : F β M β M),
c1=_root_.id β (β (f g : F), c (f*g)=cfβcg) β β (f : F) (n : β), c (f^n)=cf^[n]
hom_coe_pow: β {M : Type ?u.30268} {F : Type ?u.30267} [inst : MonoidF] (c : F β M β M),
c1=id β (β (f g : F), c (f*g)=cfβcg) β β (f : F) (n : β), c (f^n)=cf^[n]
hom_coe_pow: β {M : Type ?u.39873} {F : Type ?u.39872} [inst : MonoidF] (c : F β M β M),
c1=id β (β (f g : F), c (f*g)=cfβcg) β β (f : F) (n : β), c (f^n)=cf^[n]
hom_coe_pow: β {M : Type ?u.44849} {F : Type ?u.44848} [inst : MonoidF] (c : F β M β M),
c1=_root_.id β (β (f g : F), c (f*g)=cfβcg) β β (f : F) (n : β), c (f^n)=cf^[n]
SemiconjBy.function_semiconj_mul_left: β {G : Type u_1} [inst : SemigroupG] {a b c : G},
SemiconjByabc β Semiconj (fun x => a*x) (fun x => b*x) fun x => c*x
SemiconjBy.function_semiconj_mul_left: β {G : Type u_1} [inst : SemigroupG] {a b c : G},
SemiconjByabc β Semiconj (fun x => a*x) (fun x => b*x) fun x => c*x
AddSemiconjBy.function_semiconj_add_left: β {G : Type u_1} [inst : AddSemigroupG] {a b c : G},
AddSemiconjByabc β Semiconj (fun x => a+x) (fun x => b+x) fun x => c+x
SemiconjBy.function_semiconj_mul_left: β {G : Type ?u.89575} [inst : SemigroupG] {a b c : G},
SemiconjByabc β Semiconj (fun x => a*x) (fun x => b*x) fun x => c*x
SemiconjBy.function_semiconj_mul_right_swap: β {G : Type u_1} [inst : SemigroupG] {a b c : G},
SemiconjByabc β Semiconj (fun x => x*a) (fun x => x*c) fun x => x*b
AddSemiconjBy.function_semiconj_add_right_swap: β {G : Type u_1} [inst : AddSemigroupG] {a b c : G},
AddSemiconjByabc β Semiconj (fun x => x+a) (fun x => x+c) fun x => x+b
SemiconjBy.function_semiconj_mul_right_swap: β {G : Type ?u.94328} [inst : SemigroupG] {a b c : G},
SemiconjByabc β Semiconj (fun x => x*a) (fun x => x*c) fun x => x*b