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) 2018 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Kevin Buzzard, Scott Morrison, Johan Commelin, Chris Hughes,
  Johannes HΓΆlzl, Yury Kudryashov
Ported by: FrΓ©dΓ©ric Dupuis

! This file was ported from Lean 3 source module algebra.hom.commute
! leanprover-community/mathlib commit 6eb334bd8f3433d5b08ba156b8ec3e6af47e1904
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.Algebra.Hom.Group
import Mathlib.Algebra.Group.Commute

/-!
# Multiplicative homomorphisms respect semiconjugation and commutation.
-/


section Commute

variable {
F: Type ?u.23
F
M: Type ?u.5
M
N: Type ?u.959
N
:
Type _: Type (?u.953+1)
Type _
} [
Mul: Type ?u.32 β†’ Type ?u.32
Mul
M: Type ?u.5
M
] [
Mul: Type ?u.14 β†’ Type ?u.14
Mul
N: Type ?u.8
N
] {
a: M
a
x: M
x
y: M
y
:
M: Type ?u.5
M
} @[
to_additive: βˆ€ {F : Type u_1} {M : Type u_2} {N : Type u_3} [inst : Add M] [inst_1 : Add N] {a x y : M} [inst_2 : AddHomClass F M N], AddSemiconjBy a x y β†’ βˆ€ (f : F), AddSemiconjBy (↑f a) (↑f x) (↑f y)
to_additive
(attr := simp)] protected theorem
SemiconjBy.map: βˆ€ {F : Type u_1} {M : Type u_2} {N : Type u_3} [inst : Mul M] [inst_1 : Mul N] {a x y : M} [inst_2 : MulHomClass F M N], SemiconjBy a x y β†’ βˆ€ (f : F), SemiconjBy (↑f a) (↑f x) (↑f y)
SemiconjBy.map
[
MulHomClass: Type ?u.46 β†’ (M : outParam (Type ?u.45)) β†’ (N : outParam (Type ?u.44)) β†’ [inst : Mul M] β†’ [inst : Mul N] β†’ Type (max(max?u.46?u.45)?u.44)
MulHomClass
F: Type ?u.23
F
M: Type ?u.26
M
N: Type ?u.29
N
] (
h: SemiconjBy a x y
h
:
SemiconjBy: {M : Type ?u.63} β†’ [inst : Mul M] β†’ M β†’ M β†’ M β†’ Prop
SemiconjBy
a: M
a
x: M
x
y: M
y
) (
f: F
f
:
F: Type ?u.23
F
) :
SemiconjBy: {M : Type ?u.85} β†’ [inst : Mul M] β†’ M β†’ M β†’ M β†’ Prop
SemiconjBy
(
f: F
f
a: M
a
) (
f: F
f
x: M
x
) (
f: F
f
y: M
y
) :=

Goals accomplished! πŸ™
F: Type u_1

M: Type u_2

N: Type u_3

inst✝²: Mul M

inst✝¹: Mul N

a, x, y: M

inst✝: MulHomClass F M N

h: SemiconjBy a x y

f: F


SemiconjBy (↑f a) (↑f x) (↑f y)

Goals accomplished! πŸ™
#align semiconj_by.map
SemiconjBy.map: βˆ€ {F : Type u_1} {M : Type u_2} {N : Type u_3} [inst : Mul M] [inst_1 : Mul N] {a x y : M} [inst_2 : MulHomClass F M N], SemiconjBy a x y β†’ βˆ€ (f : F), SemiconjBy (↑f a) (↑f x) (↑f y)
SemiconjBy.map
#align add_semiconj_by.map
AddSemiconjBy.map: βˆ€ {F : Type u_1} {M : Type u_2} {N : Type u_3} [inst : Add M] [inst_1 : Add N] {a x y : M} [inst_2 : AddHomClass F M N], AddSemiconjBy a x y β†’ βˆ€ (f : F), AddSemiconjBy (↑f a) (↑f x) (↑f y)
AddSemiconjBy.map
@[
to_additive: βˆ€ {F : Type u_1} {M : Type u_2} {N : Type u_3} [inst : Add M] [inst_1 : Add N] {x y : M} [inst_2 : AddHomClass F M N], AddCommute x y β†’ βˆ€ (f : F), AddCommute (↑f x) (↑f y)
to_additive
(attr := simp)] protected theorem
Commute.map: βˆ€ {F : Type u_1} {M : Type u_2} {N : Type u_3} [inst : Mul M] [inst_1 : Mul N] {x y : M} [inst_2 : MulHomClass F M N], Commute x y β†’ βˆ€ (f : F), Commute (↑f x) (↑f y)
Commute.map
[
MulHomClass: Type ?u.976 β†’ (M : outParam (Type ?u.975)) β†’ (N : outParam (Type ?u.974)) β†’ [inst : Mul M] β†’ [inst : Mul N] β†’ Type (max(max?u.976?u.975)?u.974)
MulHomClass
F: Type ?u.953
F
M: Type ?u.956
M
N: Type ?u.959
N
] (
h: Commute x y
h
:
Commute: {S : Type ?u.993} β†’ [inst : Mul S] β†’ S β†’ S β†’ Prop
Commute
x: M
x
y: M
y
) (
f: F
f
:
F: Type ?u.953
F
) :
Commute: {S : Type ?u.1015} β†’ [inst : Mul S] β†’ S β†’ S β†’ Prop
Commute
(
f: F
f
x: M
x
) (
f: F
f
y: M
y
) :=
SemiconjBy.map: βˆ€ {F : Type ?u.1219} {M : Type ?u.1220} {N : Type ?u.1221} [inst : Mul M] [inst_1 : Mul N] {a x y : M} [inst_2 : MulHomClass F M N], SemiconjBy a x y β†’ βˆ€ (f : F), SemiconjBy (↑f a) (↑f x) (↑f y)
SemiconjBy.map
h: Commute x y
h
f: F
f
#align commute.map
Commute.map: βˆ€ {F : Type u_1} {M : Type u_2} {N : Type u_3} [inst : Mul M] [inst_1 : Mul N] {x y : M} [inst_2 : MulHomClass F M N], Commute x y β†’ βˆ€ (f : F), Commute (↑f x) (↑f y)
Commute.map
#align add_commute.map
AddCommute.map: βˆ€ {F : Type u_1} {M : Type u_2} {N : Type u_3} [inst : Add M] [inst_1 : Add N] {x y : M} [inst_2 : AddHomClass F M N], AddCommute x y β†’ βˆ€ (f : F), AddCommute (↑f x) (↑f y)
AddCommute.map
end Commute