Graph
Definition 1.31. A graph G = (V, A, s, t) consists of a set V whose elements are called vertices, a set A whose elements are called arrows, and two functions s, t : A → V known as the source and target functions respectively. Given a ∈ A with s(a) = v and t(a) = w, we say that a is an arrow from v to w.
By a path in G we mean any sequence of arrows such that the target of one arrow is the source of the next. This includes sequences of length 1, which are just arrows a ∈ A in G, and sequences of length 0, which just start and end at the same vertex v, without traversing any arrows.
module definitions.chapter1.Graph where open import Data.List using (List; []; _∷_) open import Relation.Binary.PropositionalEquality using (_≡_) -- A graph G = (V, A, s, t) consists of vertices V, arrows A, -- and source and target functions s, t : A → V record Graph : Set₁ where field V : Set -- Vertices A : Set -- Arrows s : A → V -- Source function t : A → V -- Target function -- A path in G is a sequence of arrows where the target of one arrow -- is the source of the next data Path (G : Graph) : Graph.V G → Graph.V G → Set where -- Length 0: empty path from v to v [] : ∀ {v} → Path G v v -- Length ≥ 1: cons an arrow onto a path _∷_ : ∀ {v w u} → (a : Graph.A G) → Graph.s G a ≡ v → Graph.t G a ≡ w → Path G w u → Path G v u