Darts in graphs #
A Dart
or half-edge or bond in a graph is an ordered pair of adjacent vertices, regarded as an
oriented edge. This file defines darts and proves some of their basic properties.
A Dart
is an oriented edge, implemented as an ordered pair of adjacent vertices.
This terminology comes from combinatorial maps, and they are also known as "half-edges"
or "bonds."
- fst : V
- snd : V
- adj : G.Adj self.toProd.1 self.toProd.2
Instances For
@[simp]
theorem
SimpleGraph.Dart.adj
{V : Type u_1}
{G : SimpleGraph V}
(self : G.Dart)
:
G.Adj self.toProd.1 self.toProd.2
instance
SimpleGraph.instDecidableEqDart :
{V : Type u_2} → {G : SimpleGraph V} → [inst : DecidableEq V] → DecidableEq G.Dart
Equations
- SimpleGraph.instDecidableEqDart = SimpleGraph.decEqDart✝
theorem
SimpleGraph.Dart.ext
{V : Type u_1}
{G : SimpleGraph V}
(d₁ : G.Dart)
(d₂ : G.Dart)
(h : d₁.toProd = d₂.toProd)
:
d₁ = d₂
@[simp]
theorem
SimpleGraph.Dart.fst_ne_snd
{V : Type u_1}
{G : SimpleGraph V}
(d : G.Dart)
:
d.toProd.1 ≠ d.toProd.2
@[simp]
theorem
SimpleGraph.Dart.snd_ne_fst
{V : Type u_1}
{G : SimpleGraph V}
(d : G.Dart)
:
d.toProd.2 ≠ d.toProd.1
theorem
SimpleGraph.Dart.toProd_injective
{V : Type u_1}
{G : SimpleGraph V}
:
Function.Injective SimpleGraph.Dart.toProd
instance
SimpleGraph.Dart.fintype
{V : Type u_1}
{G : SimpleGraph V}
[Fintype V]
[DecidableRel G.Adj]
:
Fintype G.Dart
Equations
- One or more equations did not get rendered due to their size.
The edge associated to the dart.
Instances For
@[simp]
theorem
SimpleGraph.Dart.edge_mk
{V : Type u_1}
{G : SimpleGraph V}
{p : V × V}
(h : G.Adj p.1 p.2)
:
@[simp]
theorem
SimpleGraph.Dart.edge_mem
{V : Type u_1}
{G : SimpleGraph V}
(d : G.Dart)
:
d.edge ∈ G.edgeSet
The dart with reversed orientation from a given dart.
Equations
- d.symm = { toProd := d.swap, adj := ⋯ }
Instances For
@[simp]
theorem
SimpleGraph.Dart.symm_toProd
{V : Type u_1}
{G : SimpleGraph V}
(d : G.Dart)
:
d.symm.toProd = d.swap
@[simp]
theorem
SimpleGraph.Dart.symm_mk
{V : Type u_1}
{G : SimpleGraph V}
{p : V × V}
(h : G.Adj p.1 p.2)
:
{ toProd := p, adj := h }.symm = { toProd := p.swap, adj := ⋯ }
@[simp]
theorem
SimpleGraph.Dart.edge_symm
{V : Type u_1}
{G : SimpleGraph V}
(d : G.Dart)
:
d.symm.edge = d.edge
@[simp]
@[simp]
@[simp]
theorem
SimpleGraph.Dart.symm_involutive
{V : Type u_1}
{G : SimpleGraph V}
:
Function.Involutive SimpleGraph.Dart.symm
theorem
SimpleGraph.dart_edge_eq_iff
{V : Type u_1}
{G : SimpleGraph V}
(d₁ : G.Dart)
(d₂ : G.Dart)
:
Two darts are said to be adjacent if they could be consecutive darts in a walk -- that is, the first dart's second vertex is equal to the second dart's first vertex.
Instances For
def
SimpleGraph.dartOfNeighborSet
{V : Type u_1}
(G : SimpleGraph V)
(v : V)
(w : ↑(G.neighborSet v))
:
G.Dart
For a given vertex v
, this is the bijective map from the neighbor set at v
to the darts d
with d.fst = v
.
Equations
- G.dartOfNeighborSet v w = { toProd := (v, ↑w), adj := ⋯ }
Instances For
@[simp]
theorem
SimpleGraph.dartOfNeighborSet_toProd
{V : Type u_1}
(G : SimpleGraph V)
(v : V)
(w : ↑(G.neighborSet v))
:
(G.dartOfNeighborSet v w).toProd = (v, ↑w)
theorem
SimpleGraph.dartOfNeighborSet_injective
{V : Type u_1}
(G : SimpleGraph V)
(v : V)
:
Function.Injective (G.dartOfNeighborSet v)
Equations
- ⋯ = ⋯