OAI/GroupTheory/ArtinCAT0/Winding.lean

GitHub source file

90 declarations, 0 contain sorry, 0 declared as axioms

  1. def OAI.ArtinCAT0.TriangleMesh.passIndex line 9

    Source documentation

    On a collapsed triangular face the two nonconstant sides are paired; on an uncollapsed face every side is a live terminal.

    def passIndex (v : Fin 3 → Fin 3) (i : Fin 3) : Fin 3 :=
    …
  2. lemma OAI.ArtinCAT0.TriangleMesh.passIndex_active line 12
  3. lemma OAI.ArtinCAT0.TriangleMesh.passIndex_involutive line 15
  4. lemma OAI.ArtinCAT0.TriangleMesh.passIndex_fixed_iff line 18
  5. lemma OAI.ArtinCAT0.TriangleMesh.passIndex_reverses line 21
  6. lemma OAI.ArtinCAT0.TriangleMesh.passIndex_cases line 25
  7. lemma OAI.ArtinCAT0.TriangleMesh.exists_constant_side line 30
  8. lemma OAI.ArtinCAT0.TriangleMesh.passIndex_after_constant line 33
  9. lemma OAI.ArtinCAT0.TriangleMesh.sum_three_rotate line 36
  10. lemma OAI.ArtinCAT0.TriangleMesh.sum_collapsed line 40
  11. structure OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling line 62

    Source documentation

    Simplicial labels permit a face to map onto an edge or a vertex. The mate conditions retain the labelled side, not merely its group endpoints.

    structure SimplicialLabeling where
    …
  12. def OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.Active line 78
  13. def OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.Full line 79
  14. abbrev OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.FullFace line 80
  15. abbrev OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.ActiveDart line 81
  16. def OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.wire line 83
  17. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.full_active line 91
  18. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.wire_fixed_iff line 97
  19. def OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.fullDartEquiv line 105
  20. def OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.ZeroEdge line 114

    Source documentation

    Identify the endpoints of every constant side. Quot includes the reflexive, symmetric, and transitive closure automatically.

    def ZeroEdge (v w : V) : Prop :=
    …
  21. abbrev OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.CollapsedVertex line 116
  22. def OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.qvertex line 118
  23. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.qvertex_zero line 120
  24. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.collapsed_zero line 124
  25. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.vertex_zero line 129
  26. def OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.collapsedLabel line 135
  27. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.pass_tail_head line 137
  28. abbrev OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.WireColor line 157
  29. def OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.reverseColor line 159
  30. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.reverseColor_involutive line 161
  31. def OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.wireColor line 165
  32. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.wireColor_mate line 169
  33. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.wireColor_pass line 177
  34. def OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.fullOrder line 189
  35. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.fullOrder_apply line 192
  36. abbrev OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.oldDart line 195
  37. def OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.reducedMate line 197
  38. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.reducedMate_involutive line 200
  39. def OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.reducedMesh line 205
  40. def OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.reducedLabeling line 217
  41. def OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.expandWeight line 226
  42. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.expandWeight_active line 230
  43. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.expandWeight_zero line 233
  44. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.expandWeight_mate line 236
  45. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.expandWeight_collapsed line 246
  46. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.expandWeight_full line 259
  47. lemma OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.reducedMesh_exact line 266
  48. def OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.signedSum line 293
  49. theorem OAI.ArtinCAT0.TriangleMesh.SimplicialLabeling.signed_counts_zero line 299

    Source documentation

    The sphere-counting dependency including every simplicial degeneracy. No unproved identification of a pinched diagram with a sphere is used.

    theorem signed_counts_zero [Fintype F] (he : M.Exact) (w : TargetTriangle → ℤ) :
        L.signedSum w = 0 := by
    …

    Mentions: OAI.ArtinCAT0.TargetTriangle

  50. lemma OAI.ArtinCAT0.mirrorPerm_sq line 312
  51. lemma OAI.ArtinCAT0.mirrorGenerator_sq line 317
  52. lemma OAI.ArtinCAT0.mirrorPerm_delta_sq line 327
  53. lemma OAI.ArtinCAT0.mirrorGenerator_delta line 335
  54. lemma OAI.ArtinCAT0.mirrorGenerator_center line 347
  55. lemma OAI.ArtinCAT0.mirrorLinear_mul line 381
  56. lemma OAI.ArtinCAT0.mirrorVector_inv line 385
  57. lemma OAI.ArtinCAT0.mirrorVector_bounded line 391
  58. lemma OAI.ArtinCAT0.orbit_uniformly_dense line 415
  59. lemma OAI.ArtinCAT0.orbit_chain_control line 428

    Source documentation

    A local bound on an orbit becomes a coarse linear global bound. The constant two only avoids a special case for zero length geodesics.

    lemma orbit_chain_control (hG : GeometricAction G X) (y : X)
        {R C : ℝ} (hR : 0 ≤ R) (hC : 0 ≤ C)
        (hdense : ∀ p : X, ∃ s : G, dist p (s • y) ≤ R)
        (f : G → ℝ)
        (hlocal : ∀ s t : G, dist (s • y) (t • y) ≤ 2*R+1 → |f t-f s| ≤ C)
        (s t : G) : |f t-f s| ≤ 2*C*(1+dist (s • y) (t • y)) := by
    …
  60. abbrev OAI.ArtinCAT0.RayIndex.Point line 499
  61. def OAI.ArtinCAT0.RayIndex.det line 501
  62. def OAI.ArtinCAT0.RayIndex.upward line 503
  63. def OAI.ArtinCAT0.RayIndex.edge line 505
  64. def OAI.ArtinCAT0.RayIndex.above line 507
  65. lemma OAI.ArtinCAT0.RayIndex.edge_self line 509
  66. lemma OAI.ArtinCAT0.RayIndex.edge_reverse line 510
  67. lemma OAI.ArtinCAT0.RayIndex.det_pos_of_cross_right line 512
  68. lemma OAI.ArtinCAT0.RayIndex.det_neg_of_cross_left line 519
  69. lemma OAI.ArtinCAT0.RayIndex.edge_right line 526
  70. lemma OAI.ArtinCAT0.RayIndex.edge_left line 538
  71. lemma OAI.ArtinCAT0.RayIndex.edge_high line 547
  72. lemma OAI.ArtinCAT0.RayIndex.edge_low line 550
  73. def OAI.ArtinCAT0.RayIndex.face line 553
  74. lemma OAI.ArtinCAT0.RayIndex.face_eq line 555
  75. lemma OAI.ArtinCAT0.RayIndex.face_right line 560
  76. lemma OAI.ArtinCAT0.RayIndex.face_left line 565
  77. lemma OAI.ArtinCAT0.RayIndex.face_high line 568
  78. lemma OAI.ArtinCAT0.RayIndex.face_low line 571
  79. lemma OAI.ArtinCAT0.RayIndex.corner_order_cases line 574
  80. lemma OAI.ArtinCAT0.RayIndex.face_permute line 579
  81. lemma OAI.ArtinCAT0.RayIndex.face_collapsed line 586
  82. lemma OAI.ArtinCAT0.RayIndex.face_bbox line 599

    Source documentation

    A nonzero local edge-index sum forces the coordinate bounding box to meet both axes. This avoids a separate topological winding-number API.

    lemma face_bbox (p : Fin 3 → Point) (hp : face p ≠ 0) :
        (∃ i, (p i).1 ≤ 0) ∧ (∃ i, 0 ≤ (p i).1) ∧
          (∃ i, (p i).2 ≤ 0) ∧ (∃ i, 0 < (p i).2) := by
    …

    Mentions: OAI.ArtinCAT0.RayIndex.Point, OAI.ArtinCAT0.RayIndex.face

  83. lemma OAI.ArtinCAT0.RayIndex.face_local line 618
  84. lemma OAI.ArtinCAT0.RayIndex.edge_mate line 632
  85. lemma OAI.ArtinCAT0.RayIndex.patch_boundary_sum line 640

    Source documentation

    Finite Stokes cancellation on any union of faces; no manifold hypotheses are needed because the oriented edge matching is explicit.

    lemma patch_boundary_sum (P : F → Prop) [DecidablePred P] (p : V → Point) :
        (∑ f, if P f then face (fun i => p (M.tail (f,i))) else 0) =
          ∑ d : F × Fin 3, if P d.1 ∧ ¬ P (M.mate d).1 then
            edge (p (M.tail d)) (p (M.tail (TriangleMesh.rotate d))) else 0 := by
    …

    Mentions: OAI.ArtinCAT0.RayIndex.Point, OAI.ArtinCAT0.RayIndex.face, OAI.ArtinCAT0.RayIndex.edge, OAI.ArtinCAT0.TriangleMesh.rotate

  86. def OAI.ArtinCAT0.RayIndex.occurrence line 671
  87. def OAI.ArtinCAT0.RayIndex.target line 673
  88. lemma OAI.ArtinCAT0.RayIndex.occurrence_full line 676
  89. lemma OAI.ArtinCAT0.RayIndex.occurrence_collapsed line 683
  90. theorem OAI.ArtinCAT0.RayIndex.localized_zero line 688