Documentation

LeanPool.LeanModularForms.ValenceFormula.RectHomotopy.AngleAnalysis

Angle analysis and winding number invariance #

Defines angle functions for fdPolygonRadialCircle and circleParamCW, analyzes the branch cut crossing on segment 4, constructs a lifted angle that tracks the full -2π rotation, and proves center-translation invariance of the winding number.

noncomputable def RectHomotopyProof.angleOnCircle (p z : ) :

The angle of a point on the unit circle around p.

Equations
Instances For

    The angle function for circleParamCW.

    Equations
    Instances For
      noncomputable def RectHomotopyProof.angleHomotopy (p : ) :

      S¹ angle interpolation homotopy.

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

        Polygon vertex at t=0: top-right corner (1/2 + HHeight·i).

        Polygon vertex at t=1: rho'.

        Polygon vertex at t=4: top-left corner (-1/2 + HHeight·i).

        theorem RectHomotopyProof.v0_quadrant (p : ) (hp_re : |p.re| < 1 / 2) (hp_im : p.im < HHeight) :
        (fdPolygon 0 - p).re > 0 (fdPolygon 0 - p).im > 0

        Direction from p to z0 is in Q1 (re > 0, im > 0).

        theorem RectHomotopyProof.interior_point_im_bound (p : ) (hp_norm : p > 1) (hp_re : |p.re| < 1 / 2) (hp_im_pos : 0 < p.im) :
        p.im > 3 / 2

        For interior points with ‖p‖ > 1, |p.re| < 1/2, 0 < p.im, we have p.im > √3/2.

        theorem RectHomotopyProof.v1_quadrant (p : ) (hp_norm : p > 1) (hp_re : |p.re| < 1 / 2) (hp_im_pos : 0 < p.im) :
        (fdPolygon 1 - p).re > 0 (fdPolygon 1 - p).im < 0

        Direction from p to fdPolygon 1 (= rho') is in Q4 (re > 0, im < 0).

        Polygon vertex at t=3: rho.

        theorem RectHomotopyProof.v3_quadrant (p : ) (hp_norm : p > 1) (hp_re : |p.re| < 1 / 2) (hp_im_pos : 0 < p.im) :
        (fdPolygon 3 - p).re < 0 (fdPolygon 3 - p).im < 0

        Direction from p to fdPolygon 3 (= rho) is in Q3 (re < 0, im < 0).

        theorem RectHomotopyProof.v4_quadrant (p : ) (hp_re : |p.re| < 1 / 2) (hp_im : p.im < HHeight) :
        (fdPolygon 4 - p).re < 0 (fdPolygon 4 - p).im > 0

        Direction from p to fdPolygon 4 is in Q2 (re < 0, im > 0).

        theorem RectHomotopyProof.arg_Q1 (z : ) (hz_re : 0 < z.re) (hz_im : 0 < z.im) :
        0 < z.arg z.arg < Real.pi / 2

        Q1: re > 0, im > 0 → 0 < arg < π/2.

        theorem RectHomotopyProof.arg_Q4 (z : ) (hz_re : 0 < z.re) (hz_im : z.im < 0) :
        -(Real.pi / 2) < z.arg z.arg < 0

        Q4: re > 0, im < 0 → -π/2 < arg < 0.

        theorem RectHomotopyProof.arg_Q3 (z : ) (hz_im : z.im < 0) :

        Q3: im < 0 → -π < arg < 0.

        theorem RectHomotopyProof.arg_Q2 (z : ) (hz_re : z.re < 0) (hz_im : 0 < z.im) :

        Q2: re < 0, im > 0 → π/2 < arg ≤ π.

        noncomputable def RectHomotopyProof.tL (p : ) :

        The unique time on seg4 where (fdPolygon t - p) crosses the negative real axis.

        Equations
        Instances For
          theorem RectHomotopyProof.tL_mem_Ioo (p : ) (hp_norm : p > 1) (hp_re : |p.re| < 1 / 2) (hp_im_pos : 0 < p.im) (hp_im : p.im < HHeight) :
          tL p Set.Ioo 3 4

          tL is in (3, 4) for interior points.

          theorem RectHomotopyProof.seg4_vec_re_neg (p : ) (hp_re : |p.re| < 1 / 2) (t : ) (ht : t Set.Ioc 3 4) :
          (fdPolygon t - p).re < 0

          On seg4, (fdPolygon t - p).re < 0.

          theorem RectHomotopyProof.seg4_im_formula (t : ) (ht : t Set.Ioc 3 4) :
          (fdPolygon t).im = 3 / 2 + (t - 3) * (HHeight - 3 / 2)

          On seg4, the imaginary part of fdPolygon t.

          theorem RectHomotopyProof.seg4_vec_im_sign (p : ) (hp_norm : p > 1) (hp_re : |p.re| < 1 / 2) (hp_im_pos : 0 < p.im) (hp_im : p.im < HHeight) (t : ) (ht : t Set.Ioc 3 4) :
          (t < tL p(fdPolygon t - p).im < 0) (t = tL p(fdPolygon t - p).im = 0) (tL p < t0 < (fdPolygon t - p).im)

          Sign of (fdPolygon t - p).im on seg4: negative before tL, zero at tL, positive after.

          theorem RectHomotopyProof.seg4_vec_at_tL (p : ) (hp_norm : p > 1) (hp_re : |p.re| < 1 / 2) (hp_im_pos : 0 < p.im) (hp_im : p.im < HHeight) :
          (fdPolygon (tL p) - p).re < 0 (fdPolygon (tL p) - p).im = 0

          At tL, the vector fdPolygon t - p is a nonzero negative real.

          theorem RectHomotopyProof.arg_at_tL_eq_pi (p : ) (hp_norm : p > 1) (hp_re : |p.re| < 1 / 2) (hp_im_pos : 0 < p.im) (hp_im : p.im < HHeight) :

          arg at tL equals π (negative real).

          theorem RectHomotopyProof.arg_seg4_before (p : ) (hp_norm : p > 1) (hp_re : |p.re| < 1 / 2) (hp_im_pos : 0 < p.im) (hp_im : p.im < HHeight) (t : ) (ht : t Set.Ioc 3 4) (htL : t < tL p) :
          (fdPolygon t - p).arg < 0

          Before tL on seg4: arg < 0.

          theorem RectHomotopyProof.arg_seg4_after (p : ) (hp_norm : p > 1) (hp_re : |p.re| < 1 / 2) (hp_im_pos : 0 < p.im) (hp_im : p.im < HHeight) (t : ) (ht : t Set.Ioc 3 4) (htL : tL p < t) :
          0 < (fdPolygon t - p).arg

          After tL on seg4: arg > 0.

          theorem RectHomotopyProof.arg_normalize_eq (z : ) (hz : z 0) :
          (z / z).arg = z.arg

          arg is preserved under normalization.

          fdPolygonRadialCircleAngle equals arg(fdPolygon t - p).

          Lifted angle function that accounts for branch cut crossing.

          Equations
          Instances For

            fdPolygon 0 ≠ p for interior points.

            fdPolygon 5 ≠ p for interior points.

            theorem RectHomotopyProof.lifted_angle_at_zero (p : ) (hp_norm : p > 1) (hp_re : |p.re| < 1 / 2) (hp_im_pos : 0 < p.im) (hp_im : p.im < HHeight) :

            At t=0, the lifted angle equals the raw angle (0 < tL).

            theorem RectHomotopyProof.lifted_angle_at_five (p : ) (hp_norm : p > 1) (hp_re : |p.re| < 1 / 2) (hp_im_pos : 0 < p.im) (hp_im : p.im < HHeight) :

            At t=5, the lifted angle is raw angle minus 2π (5 > tL).

            fdPolygon is periodic with period 5.

            The lifted angle total change is -2π.

            theorem RectHomotopyProof.fdPolygonRadialCircle_angle_change (p : ) (hp_norm : p > 1) (hp_re : |p.re| < 1 / 2) (hp_im_pos : 0 < p.im) (hp_im : p.im < HHeight) :

            Equality form of wrap count.

            theorem RectHomotopyProof.fdPolygonRadialCircle_wrapCount (p : ) (hp_norm : p > 1) (hp_re : |p.re| < 1 / 2) (hp_im_pos : 0 < p.im) (hp_im : p.im < HHeight) :

            Wrap count for the lifted angle function.

            circleParamCW also makes exactly one clockwise loop.

            noncomputable def RectHomotopyProof.refY₀ :

            Reference Y-coordinate on imaginary axis.

            Equations
            Instances For
              noncomputable def RectHomotopyProof.refP₀ :

              The reference point p₀ = I * Y₀ on the imaginary axis.

              Equations
              Instances For
                theorem RectHomotopyProof.winding_fdPolygon_center_invariant (p₁ p₂ : ) (_hp₁_norm : p₁ > 1) (_hp₁_re : |p₁.re| < 1 / 2) (_hp₁_im : p₁.im < HHeight) (_hp₂_norm : p₂ > 1) (_hp₂_re : |p₂.re| < 1 / 2) (_hp₂_im : p₂.im < HHeight) (havoid : sSet.Icc 0 1, tSet.Icc 0 5, fdPolygon t (1 - s) * p₁ + s * p₂) :

                Center-translation homotopy invariance of winding number.