Maps (semi)conjugating a shift to a shift #
Denote by $S^1$ the unit circle UnitAddCircle
.
A common way to study a self-map $f\colon S^1\to S^1$ of degree 1
is to lift it to a map $\tilde f\colon \mathbb R\to \mathbb R$
such that $\tilde f(x + 1) = \tilde f(x)+1$ for all x
.
In this file we define a structure and a typeclass
for bundled maps satisfying f (x + a) = f x + b
.
We use parameters a
and b
instead of 1
to accommodate for two use cases:
- maps between circles of different lengths;
- self-maps $f\colon S^1\to S^1$ of degree other than one, including orientation-reversing maps.
A bundled map f : G → H
such that f (x + a) = f x + b
for all x
.
One can think about f
as a lift to G
of a map between two AddCircle
s.
- toFun : G → H
The underlying function of an
AddConstMap
. Use automatic coercion to function instead. An
AddConstMap
satisfiesf (x + a) = f x + b
. Usemap_add_const
instead.
Instances For
A bundled map f : G → H
such that f (x + a) = f x + b
for all x
.
One can think about f
as a lift to G
of a map between two AddCircle
s.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Typeclass for maps satisfying f (x + a) = f x + b
.
Note that a
and b
are outParam
s,
so one should not add instances like
[AddConstMapClass F G H a b] : AddConstMapClass F G H (-a) (-b)
.
A map of
AddConstMapClass
class semiconjugates shift bya
to the shift byb
:∀ x, f (x + a) = f x + b
.
Instances
Properties of AddConstMapClass
maps #
In this section we prove properties like f (x + n • a) = f x + n • b
.
Auxiliary lemmas for the "monotonicity on a fundamental interval implies monotonicity" lemmas.
We formulate it for any relation so that the proof works both for Monotone
and StrictMono
.
Coercion to function #
Equations
- AddConstMap.instFunLike = { coe := AddConstMap.toFun, coe_injective' := ⋯ }
Equations
- ⋯ = ⋯
Constructions about G →+c[a, b] H
#
The identity map as G →+c[a, a] G
.
Equations
- AddConstMap.id = { toFun := id, map_add_const' := ⋯ }
Instances For
Equations
- AddConstMap.instInhabited = { default := AddConstMap.id }
Composition of two AddConstMap
s.
Instances For
Change constants a
and b
in (f : G →+c[a, b] H)
to improve definitional equalities.
Equations
- f.replaceConsts a' b' ha hb = { toFun := ⇑f, map_add_const' := ⋯ }
Instances For
Additive action on G →+c[a, b] H
#
If f
is an AddConstMap
, then so is (c +ᵥ f ·)
.
Equations
- AddConstMap.instVAddOfVAddAssocClass = { vadd := fun (c : K) (f : AddConstMap G H a b) => { toFun := c +ᵥ ⇑f, map_add_const' := ⋯ } }
Equations
- AddConstMap.instAddActionOfVAddAssocClass = Function.Injective.addAction (fun (f : AddConstMap G H a b) => ⇑f) ⋯ ⋯
Monoid structure on endomorphisms G →+c[a, a] G
#
Equations
- AddConstMap.instMul = { mul := AddConstMap.comp }
Equations
- AddConstMap.instOne = { one := AddConstMap.id }
Equations
- AddConstMap.instPowNat = { pow := fun (f : AddConstMap G G a a) (n : ℕ) => { toFun := (⇑f)^[n], map_add_const' := ⋯ } }
Equations
- AddConstMap.instMonoid = Function.Injective.monoid (fun (f : AddConstMap G G a a) => ⇑f) ⋯ ⋯ ⋯ ⋯
Coercion to functions as a monoid homomorphism to Function.End G
.
Equations
- AddConstMap.toEnd = { toFun := DFunLike.coe, map_one' := ⋯, map_mul' := ⋯ }
Instances For
Multiplicative action on (b : H) × (G →+c[a, b] H)
#
If K
acts distributively on H
, then for each f : G →+c[a, b] H
we define (AddConstMap.smul c f : G →+c[a, c • b] H)
.
One can show that this defines a multiplicative action of K
on (b : H) × (G →+c[a, b] H)
but we don't do this at the moment because we don't need this.
Pointwise scalar multiplication of f : G →+c[a, b] H
as a map G →+c[a, c • b] H
.
Equations
- AddConstMap.smul c f = { toFun := c • ⇑f, map_add_const' := ⋯ }
Instances For
The map that sends c
to a translation by c
as a monoid homomorphism from Multiplicative G
to G →+c[a, a] G
.
Equations
- AddConstMap.addLeftHom = { toFun := fun (c : Multiplicative G) => Multiplicative.toAdd c +ᵥ AddConstMap.id, map_one' := ⋯, map_mul' := ⋯ }
Instances For
If f : G → H
is an AddConstMap
, then so is fun x ↦ -f (-x)
.
Equations
- AddConstMap.conjNeg = Function.Involutive.toPerm (fun (f : AddConstMap G H a b) => { toFun := fun (x : G) => -f (-x), map_add_const' := ⋯ }) ⋯
Instances For
A map f : R →+c[1, a] G
is defined by its values on Set.Ico 0 1
.
Equations
- One or more equations did not get rendered due to their size.