OAI/Combinatorics/PlanarL1/Drawing.lean
41 declarations, 0 contain sorry, 0 declared as axioms
- structure
OAI.PlanarL1.Topology.Drawingline 13Source documentation
The literal topological drawing, with its coordinates identified with the complex plane. No polygonal or combinatorial planarity assumption is added.
structure Drawing {V : Type} (G : SimpleGraph V) where … - lemma
OAI.PlanarL1.Topology.drawing_of_planarline 24 - lemma
OAI.PlanarL1.Topology.Drawing.point_on_edge_iffline 41 - def
OAI.PlanarL1.Topology.Drawing.excludedTimesline 62Source documentation
Away from the first/last third of an incident edge, every vertex is uniformly separated from that edge. The set is closed even at both cutoffs.
def excludedTimes (w : V) (d : G.Dart) : Set unitInterval := …
- lemma
OAI.PlanarL1.Topology.Drawing.excludedTimes_closedline 65 - lemma
OAI.PlanarL1.Topology.Drawing.excludedTimes_avoidline 73 - def
OAI.PlanarL1.Topology.Drawing.forbiddenline 87Source documentation
A compact forbidden set for a vertex disk: other vertices and the parts of every drawn edge that must stay outside that disk.
def forbidden (w : V) : Set ℂ := …
- lemma
OAI.PlanarL1.Topology.Drawing.forbidden_compactline 91 - lemma
OAI.PlanarL1.Topology.Drawing.forbidden_avoidline 99 - lemma
OAI.PlanarL1.Topology.Drawing.vertex_diskline 106 - lemma
OAI.PlanarL1.Topology.Drawing.uniform_vertex_disksline 118Source documentation
One common positive radius works for all vertices; arbitrary edge oscillations and arbitrary straight-line distances between drawn vertices are allowed. This radius is topological auxiliary data, not a metric edge scale.
lemma uniform_vertex_disks : ∃ r>0, ∀ w z, z ∈ D.forbidden w → 5*r<dist (D.point w) z := by … - lemma
OAI.PlanarL1.Topology.path_lastExitline 137Source documentation
Last exit from a closed disk before a specified later time. This works for arbitrary continuous paths, including paths which oscillate infinitely near their endpoint. No local straightness of a topological arc is assumed.
lemma path_lastExit {X : Type*} [MetricSpace X] {x y : X} (p : Path x y) {b r : ℝ} (hb : 0<b) (hr : 0<r) (hout : r<dist (p.extend b) x) : ∃ a : ℝ, 0<a ∧ a<b ∧ dist (p.extend a) x=r ∧ ∀ t, a<t → t≤b → r<dist (p.extend t) x := by … - lemma
OAI.PlanarL1.Topology.path_trimStartline 162 - lemma
OAI.PlanarL1.Topology.Drawing.edge_mem_forbiddenline 184 - lemma
OAI.PlanarL1.Topology.Drawing.point_mem_forbiddenline 189 - structure
OAI.PlanarL1.Topology.Drawing.EdgeTrimline 194Source documentation
Truncate one actual drawn edge outside disjoint small vertex disks. The middle arc stays outside every disk, with equality only at its own ends.
structure EdgeTrim (r : ℝ) (d : G.Dart) where …
- lemma
OAI.PlanarL1.Topology.Drawing.edgeTrim_nonemptyline 208 - lemma
OAI.PlanarL1.Topology.Drawing.EdgeTrim.first_lt_lastline 256 - lemma
OAI.PlanarL1.Topology.Drawing.EdgeTrim.middle_outsideline 262 - lemma
OAI.PlanarL1.Topology.Drawing.EdgeTrim.middle_strictline 280 - def
OAI.PlanarL1.Topology.PolygonallyJoinedline 305Source documentation
A finite chain of straight segments contained in a specified set.
def PolygonallyJoined (S : Set E) (x y : E) : Prop := …
- lemma
OAI.PlanarL1.Topology.polygonallyJoined_of_pathline 308 - lemma
OAI.PlanarL1.Topology.PolygonallyJoined.exists_chainline 338Source documentation
Polygonal connectivity has literal finite-list witnesses.
lemma PolygonallyJoined.exists_chain {S : Set E} {x y : E} (h : PolygonallyJoined S x y) : ∃ l : List E, (x::l).IsChain (fun a b => segment ℝ a b ⊆ S) ∧ (x::l).getLast (by simp)=y := by …Mentions: OAI.PlanarL1.Topology.PolygonallyJoined
- lemma
OAI.PlanarL1.Topology.finite_disjoint_open_neighborhoodsline 347Source documentation
Disjoint compact arcs can be simultaneously thickened, while avoiding separate closed obstacles. No finiteness or regularity of the arcs themselves beyond compactness is used.
lemma finite_disjoint_open_neighborhoods {ι X : Type*} [Fintype ι] [MetricSpace X] (K F : ι → Set X) (hK : ∀ i, IsCompact (K i)) (hF : ∀ i, IsClosed (F i)) (hKF : ∀ i, Disjoint (K i) (F i)) (hKK : Pairwise (fun i j => Disjoint (K i) (K j))) : ∃ U : ι → Set X, (∀ i, IsOpen (U i) ∧ K i ⊆ U i ∧ Disjoint (U i) (F i)) ∧ Pairwise (fun i j => Disjoint (U i) (U j)) := by … - lemma
OAI.PlanarL1.Topology.radial_segment_boundaryline 383Source documentation
On a radial segment, the endpoint is the only point at its maximal radius. This is valid in every real normed space, without strict convexity.
lemma radial_segment_boundary {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] {x y z : E} {r : ℝ} (hr : 0<r) (hy : dist y x=r) (hz : z ∈ segment ℝ x y) (hlo : r≤dist z x) : z=y := by … - lemma
OAI.PlanarL1.Topology.compact_segment_complexline 394 - lemma
OAI.PlanarL1.Topology.radial_heads_intersectline 399Source documentation
Distinct radial heads on the same sphere intersect only at their center.
lemma radial_heads_intersect {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] {x y w z : E} {r : ℝ} (hr : 0<r) (hy : dist y x=r) (hw : dist w x=r) (hne : y≠w) (hz : z ∈ segment ℝ x y) (hz' : z ∈ segment ℝ x w) : z=x := by … - def
OAI.PlanarL1.Topology.ForwardDartline 420Source documentation
Choosing only the forward dart avoids treating the two independently supplied oriented parametrizations as one geometric edge.
def ForwardDart {V : Type} [LinearOrder V] (G : SimpleGraph V) := … - instance
OAI.PlanarL1.Topology.ForwardDart.(instance at line 426)line 426 - lemma
OAI.PlanarL1.Topology.ForwardDart.eq_of_endpointsline 428 - def
OAI.PlanarL1.Topology.Drawing.EdgeTrim.middleline 444 - lemma
OAI.PlanarL1.Topology.Drawing.EdgeTrim.middle_rangeline 448 - lemma
OAI.PlanarL1.Topology.Drawing.EdgeTrim.middle_compactline 452 - lemma
OAI.PlanarL1.Topology.Drawing.EdgeTrim.middle_avoid_verticesline 455 - lemma
OAI.PlanarL1.Topology.Drawing.EdgeTrim.middle_radial_headline 461 - lemma
OAI.PlanarL1.Topology.Drawing.EdgeTrim.middle_radial_tailline 476 - lemma
OAI.PlanarL1.Topology.Drawing.forward_middles_disjointline 495 - def
OAI.PlanarL1.Topology.Drawing.middleObstacleline 510Source documentation
Obstacles for the middle of an edge: all vertices and the radial heads of every other unoriented edge.
noncomputable def middleObstacle (d : ForwardDart G) : Set ℂ := …
Mentions: OAI.PlanarL1.Topology.ForwardDart
- lemma
OAI.PlanarL1.Topology.Drawing.middleObstacle_closedline 517 - lemma
OAI.PlanarL1.Topology.Drawing.middleObstacle_disjointline 523 - lemma
OAI.PlanarL1.Topology.Drawing.polygonal_middlesline 540Source documentation
Every trimmed edge can be replaced by a literal finite segment chain, inside mutually disjoint open tubes avoiding all other edge heads and all vertices. This is the needed simultaneous polygonalization step.
lemma polygonal_middles (hr : 0<r) (hsep : ∀ w z, z ∈ D.forbidden w → 5*r<dist (D.point w) z) : ∃ U : ForwardDart G → Set ℂ, (∀ d, IsOpen (U d) ∧ Disjoint (U d) (D.middleObstacle T d) ∧ PolygonallyJoined (U d) (D.edge d.val.fst d.val.snd d.val.adj (T d).first) (D.edge d.val.fst d.val.snd d.val.adj (T d).last)) ∧ Pairwise (fun d e => Disjoint (U d) (U e)) := by …Mentions: OAI.PlanarL1.Topology.ForwardDart, OAI.PlanarL1.Topology.PolygonallyJoined