Draft — mutable and not usable as a dependency; its citation marks the draft state.

Lax68.HalinGraphs

Halin graphs

concepts/Lax68/HalinGraphs.lean · lax-68

definition

Loading review…

Sign in with ORCID

Community review

Flags

Each flag is tied to a public ORCID identity and explains why this concept may be incorrect.

No flags have been submitted.

    Community review

    Flag this concept

    State precisely what appears incorrect. This explanation will be public under your ORCID name.

    No source line selected.

    Concept map

    Proven claimOpen claimDefinitionThis conceptRelated conceptA → B: B builds on A

    Definition

    A Halin graph is obtained from a plane tree with no vertex of degree two by joining its leaves in their cyclic order. The construction contains the chosen crossing-free embedding because the word "plane" is part of the defining data, rather than attaching a separate planarity proposition.

    Lean source view on GitHub

    1import Mathlib.Combinatorics.SimpleGraph.Acyclic
    2import Mathlib.Combinatorics.SimpleGraph.Finite
    3import Lax68.StraightLineDrawings
    4
    5/-!
    6---
    7title: Halin graphs
    8type: definition
    9---
    10A Halin graph is obtained from a plane tree with no vertex of degree two by
    11joining its leaves in their cyclic order. The construction
    12contains the chosen crossing-free embedding because the word "plane" is part
    13of the defining data, rather than attaching a separate planarity proposition.
    14-/
    15
    16set_option autoImplicit false
    17
    18namespace Lax68.HalinGraphs
    19
    20def IsLeaf {V : Type*} (T : SimpleGraph V) (v : V) : Prop :=
    21 (T.neighborSet v).ncard = 1
    22
    23def CycleAdjacent {n : ℕ} (i j : Fin n) : Prop :=
    24 i.val + 1 = j.val ∨
    25 j.val + 1 = i.val ∨
    26 (i.val = 0 ∧ j.val + 1 = n) ∨
    27 (j.val = 0 ∧ i.val + 1 = n)
    28
    29def IsCycleOn {V : Type*}
    30 (R : SimpleGraph V) (S : Set V) : Prop :=
    31 (∀ ⦃u v⦄, R.Adj u v → u ∈ S ∧ v ∈ S) ∧
    32 ∃ n : ℕ,
    33 3 ≤ n ∧
    34 ∃ e : Fin n ≃ {v : V // v ∈ S},
    35 ∀ i j,
    36 R.Adj (e i).1 (e j).1CycleAdjacent i j
    37
    38structure Construction {V : Type*} (G : SimpleGraph V) where
    39 tree : SimpleGraph V
    40 rim : SimpleGraph V
    41 tree_isTree : tree.IsTree
    42 noDegreeTwo : ∀ v, (tree.neighborSet v).ncard ≠ 2
    43 rimCycle : IsCycleOn rim {v | IsLeaf tree v}
    44 graph_eq : G = tree ⊔ rim
    45 drawing : StraightLineDrawings.StraightLineDrawing G
    46
    47def IsHalin {V : Type*} (G : SimpleGraph V) : Prop :=
    48 Nonempty (Construction G)
    49
    50end Lax68.HalinGraphs
    51

    Community review

    Discussion

    Ask a question or add context. Endorsements and structured flags are kept in the review panel above; your ORCID profile must share a public name.

    0 comments

    Loading discussion…