Documentation

LeanPool.ClassificationOfSurfaces.WeightedCircle

Weighted subdivisions of the circle #

A positive list of integral weights determines the orientation-preserving piecewise-linear map which sends the ith unit interval to an interval of length equal to the ith weight. This file packages that map as a homeomorphism of intervals and, after identifying endpoints, as a homeomorphism of circles. It is the geometric core of Gallier--Xu P1 edge subdivision.

Piecewise-linear cumulative stretching by a list of integral weights.

Equations
Instances For

    The inverse piecewise-linear cumulative stretching.

    Equations
    Instances For

      Every weight is strictly positive.

      Equations
      Instances For
        theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.sum_take_lt_sum {weights : List } (h : Positive weights) (i : Fin weights.length) :
        (List.take (↑i) weights).sum < weights.sum

        Stretching is continuous; adjacent affine pieces agree at every breakpoint.

        Inverse stretching is continuous when every weight is positive.

        theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.stretch_nonneg {weights : List } (h : Positive weights) {x : } (hx0 : 0 x) (hxlen : x weights.length) :
        0 stretch weights x
        theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.stretch_le_sum {weights : List } (h : Positive weights) {x : } (hx0 : 0 x) (hxlen : x weights.length) :
        stretch weights x weights.sum
        theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.stretch_pos {weights : List } (h : Positive weights) {x : } (hx0 : 0 < x) (hxlen : x weights.length) :
        0 < stretch weights x
        theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.unstretch_nonneg {weights : List } (h : Positive weights) {y : } (hy0 : 0 y) (hysum : y weights.sum) :
        0 unstretch weights y
        theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.unstretch_le_length {weights : List } (h : Positive weights) {y : } (hy0 : 0 y) (hysum : y weights.sum) :
        unstretch weights y weights.length
        theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.unstretch_pos {weights : List } (h : Positive weights) {y : } (hy0 : 0 < y) (hysum : y weights.sum) :
        0 < unstretch weights y
        theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.unstretch_stretch {weights : List } (h : Positive weights) {x : } (hx0 : 0 x) (hxlen : x weights.length) :
        unstretch weights (stretch weights x) = x
        theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.stretch_unstretch {weights : List } (h : Positive weights) {y : } (hy0 : 0 y) (hysum : y weights.sum) :
        stretch weights (unstretch weights y) = y
        noncomputable def LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.intervalHomeomorph (weights : List ) (h : Positive weights) :
        (Set.Icc 0 (0 + weights.length)) ≃ₜ (Set.Icc 0 (0 + weights.sum))

        Positive weights give a homeomorphism from the interval of positions to the interval of expanded positions.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.intervalHomeomorph_apply_val (weights : List ) (h : Positive weights) (x : (Set.Icc 0 (0 + weights.length))) :
          ((intervalHomeomorph weights h) x) = stretch weights x
          theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.intervalHomeomorph_endpointIdent_iff (weights : List ) (h : Positive weights) [Fact (0 < weights.length)] [Fact (0 < weights.sum)] (x y : (Set.Icc 0 (0 + weights.length))) :
          AddCircle.EndpointIdent (↑weights.length) 0 x y AddCircle.EndpointIdent (↑weights.sum) 0 ((intervalHomeomorph weights h) x) ((intervalHomeomorph weights h) y)
          noncomputable def LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.endpointQuotHomeomorph (weights : List ) (h : Positive weights) [Fact (0 < weights.length)] [Fact (0 < weights.sum)] :

          The interval homeomorphism descends after identifying both pairs of endpoints.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            noncomputable def LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.addCircleHomeomorph (weights : List ) (h : Positive weights) (hne : weights []) :
            AddCircle weights.length ≃ₜ AddCircle weights.sum

            The weighted interval map with endpoints identified, as a homeomorphism of additive circles.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              The weighted subdivision homeomorphism transported to the complex unit circle.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.addCircleHomeomorph_apply_of_mem_Ico (weights : List ) (h : Positive weights) (hne : weights []) (x : ) (hx : x Set.Ico 0 weights.length) :
                (addCircleHomeomorph weights h hne) x = (stretch weights x)
                theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.circleHomeomorph_exp_of_mem_Ico (weights : List ) (h : Positive weights) (hne : weights []) (x : ) (hx : x Set.Ico 0 weights.length) :
                (circleHomeomorph weights h hne) (Circle.exp (2 * Real.pi / weights.length * x)) = Circle.exp (2 * Real.pi / weights.sum * stretch weights x)

                On the fundamental interval, the circle homeomorphism is exactly the weighted piecewise-linear angular map.

                theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.stretch_index_add (weights : List ) (i : Fin weights.length) (t : unitInterval) :
                stretch weights (i + t) = (List.take (↑i) weights).sum + (weights.get i) * t

                On the ith unit interval, stretching is affine with slope equal to the ith weight.

                theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.circleHomeomorph_exp_index_add (weights : List ) (h : Positive weights) (hne : weights []) (i : Fin weights.length) (t : unitInterval) (hnotLastEndpoint : i + t < weights.length) :
                (circleHomeomorph weights h hne) (Circle.exp (2 * Real.pi / weights.length * (i + t))) = Circle.exp (2 * Real.pi / weights.sum * ((List.take (↑i) weights).sum + (weights.get i) * t))

                The weighted circle homeomorphism sends a point of side i to the boundary coordinate obtained by adding the weighted prefix and the affine local parameter.

                theorem LeanEval.Topology.ClassificationOfSurfaces.WeightedCircle.circleHomeomorph_exp_index_add' (weights : List ) (h : Positive weights) (hne : weights []) (i : Fin weights.length) (t : unitInterval) :
                (circleHomeomorph weights h hne) (Circle.exp (2 * Real.pi / weights.length * (i + t))) = Circle.exp (2 * Real.pi / weights.sum * ((List.take (↑i) weights).sum + (weights.get i) * t))

                Endpoint-inclusive form of circleHomeomorph_exp_index_add. The only additional case is the terminal endpoint of the last source interval; both displayed angles then represent the basepoint of their respective circles.