Semiconjugate elements of a semigroup #
Main definitions #
We say that x
is semiconjugate to y
by a
(SemiconjBy a x y
), if a * x = y * a
.
In this file we provide operations on SemiconjBy _ _ _
.
In the names of these operations, we treat a
as the “left” argument, and both x
and y
as
“right” arguments. This way most names in this file agree with the names of the corresponding lemmas
for Commute a b = SemiconjBy a b b
. As a side effect, some lemmas have only _right
version.
Lean does not immediately recognise these terms as equations, so for rewriting we need syntax like
rw [(h.pow_right 5).eq]
rather than just rw [h.pow_right 5]
.
This file provides only basic operations (mul_left
, mul_right
, inv_right
etc). Other
operations (pow_right
, field inverse etc) are in the files that define corresponding notions.
x
is additive semiconjugate to y
by a
if a + x = y + a
Equations
- AddSemiconjBy a x y = (a + x = y + a)
Instances For
x
is semiconjugate to y
by a
, if a * x = y * a
.
Equations
- SemiconjBy a x y = (a * x = y * a)
Instances For
Equality behind AddSemiconjBy a x y
; useful for rewriting.
Equality behind SemiconjBy a x y
; useful for rewriting.
If a
semiconjugates x
to y
and x'
to y'
,
then it semiconjugates x + x'
to y + y'
.
If a
semiconjugates x
to y
and x'
to y'
,
then it semiconjugates x * x'
to y * y'
.
If b
semiconjugates x
to y
and a
semiconjugates y
to z
, then a + b
semiconjugates x
to z
.
If b
semiconjugates x
to y
and a
semiconjugates y
to z
, then a * b
semiconjugates x
to z
.
Equations
- AddSemiconjBy.transitive.match_1 motive x x x x x h_1 = Exists.casesOn x fun w h => Exists.casesOn x fun w_1 h_1 => h_1 x x x w h w_1 h_1
Instances For
The relation “there exists an element that semiconjugates a
to b
” on an additive
semigroup is transitive.
The relation “there exists an element that semiconjugates a
to b
” on a semigroup
is transitive.
Any element semiconjugates 0
to 0
.
Any element semiconjugates 1
to 1
.
Zero semiconjugates any element to itself.
One semiconjugates any element to itself.
The relation “there exists an element that semiconjugates a
to b
” on an additive
monoid (or, more generally, on an AddZeroClass
type) is reflexive.
The relation “there exists an element that semiconjugates a
to b
” on a monoid (or, more
generally, on MulOneClass
type) is reflexive.
a
semiconjugates x
to a + x + -a
.
a
semiconjugates x
to a * x * a⁻¹
.