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,
denoted as f: G →+c[a, b] H.
One can think about f as a lift to G of a map between two AddCircles.
- toFun : G → H
The underlying function of an
AddConstMap. Use automatic coercion to function instead. An
AddConstMapsatisfiesf (x + a) = f x + b. Usemap_add_constinstead.
Instances For
A bundled map f : G → H such that f (x + a) = f x + b for all x,
denoted as f: G →+c[a, b] H.
One can think about f as a lift to G of a map between two AddCircles.
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 outParams,
so one should not add instances like
[AddConstMapClass F G H a b] : AddConstMapClass F G H (-a) (-b).
A map of
AddConstMapClassclass semiconjugates shift byato 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' := ⋯ }
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 AddConstMaps.
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.