Grafting a leaf on a finite tree #
The graph operation either adds a leaf at an existing branch vertex or subdivides an edge and attaches the new leaf to the subdivision vertex.
noncomputable def
BGW.StableTrees.Marchal.graftGraph
{m : ℕ}
(G : SimpleGraph (Fin m))
(p : ↑G.edgeSet ⊕ { v : Fin m // 3 ≤ G.degree v })
:
Graft a new leaf A_{n+1} (the last vertex) on the middle of an edge (new midpoint m,
new leaf m+1) or on an internal vertex (new leaf m).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The new leaf in a vertex graft.
Equations
Instances For
Old vertices in a vertex graft.
Equations
Instances For
theorem
BGW.StableTrees.Marchal.graftGraph_inr_adj_new_new
{m : ℕ}
(G : SimpleGraph (Fin m))
(v : { v : Fin m // 3 ≤ G.degree v })
:
¬(graftGraph G (Sum.inr v)).Adj (vertexNewLeaf m) (vertexNewLeaf m)
The subdivision midpoint in an edge graft.
Equations
Instances For
The new leaf in an edge graft.
Equations
- BGW.StableTrees.Marchal.edgeNewLeaf m = ⟨m + 1, ⋯⟩
Instances For
Old vertices in an edge graft.
Equations
Instances For
@[simp]
theorem
BGW.StableTrees.Marchal.graftGraph_inl_adj_old_mid
{m : ℕ}
(G : SimpleGraph (Fin m))
(e : ↑G.edgeSet)
(x : Fin m)
:
@[simp]
theorem
BGW.StableTrees.Marchal.graftGraph_inl_adj_mid_new
{m : ℕ}
(G : SimpleGraph (Fin m))
(e : ↑G.edgeSet)
:
(graftGraph G (Sum.inl e)).Adj (edgeMidpoint m) (edgeNewLeaf m)
@[simp]
theorem
BGW.StableTrees.Marchal.graftGraph_inl_adj_old_new
{m : ℕ}
(G : SimpleGraph (Fin m))
(e : ↑G.edgeSet)
(x : Fin m)
:
¬(graftGraph G (Sum.inl e)).Adj (edgeOld x) (edgeNewLeaf m)
theorem
BGW.StableTrees.Marchal.graftGraph_inl_adj_mid_mid
{m : ℕ}
(G : SimpleGraph (Fin m))
(e : ↑G.edgeSet)
:
¬(graftGraph G (Sum.inl e)).Adj (edgeMidpoint m) (edgeMidpoint m)
theorem
BGW.StableTrees.Marchal.graftGraph_inl_adj_new_new
{m : ℕ}
(G : SimpleGraph (Fin m))
(e : ↑G.edgeSet)
:
¬(graftGraph G (Sum.inl e)).Adj (edgeNewLeaf m) (edgeNewLeaf m)
@[simp]
theorem
BGW.StableTrees.Marchal.graftGraph_inl_adj_mid_old
{m : ℕ}
(G : SimpleGraph (Fin m))
(e : ↑G.edgeSet)
(x : Fin m)
:
@[simp]
theorem
BGW.StableTrees.Marchal.graftGraph_inl_adj_new_old
{m : ℕ}
(G : SimpleGraph (Fin m))
(e : ↑G.edgeSet)
(x : Fin m)
:
¬(graftGraph G (Sum.inl e)).Adj (edgeNewLeaf m) (edgeOld x)
@[simp]
theorem
BGW.StableTrees.Marchal.graftGraph_inl_adj_new_mid
{m : ℕ}
(G : SimpleGraph (Fin m))
(e : ↑G.edgeSet)
:
(graftGraph G (Sum.inl e)).Adj (edgeNewLeaf m) (edgeMidpoint m)
@[simp]
theorem
BGW.StableTrees.Marchal.graftGraph_inl_degree_new
{m : ℕ}
(G : SimpleGraph (Fin m))
(e : ↑G.edgeSet)
:
@[simp]
theorem
BGW.StableTrees.Marchal.graftGraph_inl_degree_mid
{m : ℕ}
(G : SimpleGraph (Fin m))
(e : ↑G.edgeSet)
:
@[simp]
theorem
BGW.StableTrees.Marchal.graftGraph_inl_degree_old
{m : ℕ}
(G : SimpleGraph (Fin m))
(e : ↑G.edgeSet)
(x : Fin m)
:
theorem
BGW.StableTrees.Marchal.graftGraph_inl_isTree
{m : ℕ}
(G : SimpleGraph (Fin m))
(e : ↑G.edgeSet)
(hG : G.IsTree)
:
(graftGraph G (Sum.inl e)).IsTree
An edge graft subdivides one edge and adds a leaf, hence remains a tree.
def
BGW.StableTrees.Marchal.extendLast
{n M : ℕ}
(f : Fin (n + 1) ↪ Fin M)
(z : Fin M)
(hz : z ∉ Set.range ⇑f)
:
Extend a label embedding by a new final label outside its range.
Equations
- BGW.StableTrees.Marchal.extendLast f z hz = { toFun := fun (i : Fin (n + 1 + 1)) => Fin.lastCases z (⇑f) i, inj' := ⋯ }