5.5 The LGV lemma: weighted and generalized versions
5.5.1 The weighted version
Let \(K\) be a commutative ring.
For each arc \(a\) of the digraph \(\mathbb {Z}^{2}\), let \(w(a)\) be an element of \(K\). We call \(w(a)\) the weight of \(a\).
For each path \(p\) of \(\mathbb {Z}^{2}\), define the weight \(w(p)\) of \(p\) by
For each path tuple \(\mathbf{p} = (p_1, p_2, \ldots , p_k)\), define the weight \(w(\mathbf{p})\) of \(\mathbf{p}\) by
Let \(k \in \mathbb {N}\). Let \(\mathbf{A} = (A_1, A_2, \ldots , A_k)\) and \(\mathbf{B} = (B_1, B_2, \ldots , B_k)\) be two \(k\)-vertices. Then,
Here, “\(p : A_i \to B_j\)” means “\(p\) is a path from \(A_i\) to \(B_j\)”.
This is the special case of Theorem 5.155 for the integer lattice \(\mathbb {Z}^2\), which is a path-finite acyclic digraph.
5.5.2 Generalization to acyclic digraphs
Let \(K\) be a commutative ring.
Let \(D\) be a path-finite (but possibly infinite) acyclic digraph.
For each arc \(a\) of \(D\), let \(w(a) \in K\). For each path \(p\) of \(D\), define \(w(p) := \prod _{a \text{ is an arc of } p} w(a)\). For each path tuple \(\mathbf{p} = (p_1, \ldots , p_k)\), define \(w(\mathbf{p}) := w(p_1) \cdots w(p_k)\).
Let \(k \in \mathbb {N}\). Let \(\mathbf{A} = (A_1, \ldots , A_k)\) and \(\mathbf{B} = (B_1, \ldots , B_k)\) be two \(k\)-tuples of vertices of \(D\). Then,
The same argument as for Proposition 5.153 can be used here; just replace \(\operatorname {sign}(\sigma , \mathbf{p}) := (-1)^{\sigma }\) by \(\operatorname {sign}(\sigma , \mathbf{p}) = (-1)^{\sigma } \cdot w(\mathbf{p})\). The only new observation required is that when we exchange the tails of two paths in our path tuple, the weight of the path tuple does not change. This is clear: the weight of a path tuple is the product of the weights of all arcs in all paths of the tuple; when we exchange the tails of two paths, some arcs get moved from one path to the other, but the total product stays unchanged.
More precisely, the proof expands the determinant via the Leibniz formula. Each summand \((-1)^\sigma \prod _i M_{i,\sigma (i)}\) expands (by distributivity) into a sum over all path tuples from \(\mathbf{A}\) to \(\sigma (\mathbf{B})\), weighted by \((-1)^\sigma \, w(\mathbf{p})\). Split the sum into non-intersecting and intersecting path tuples.
For the intersecting path tuples, a sign-reversing involution \(\varphi \) (Lemma 5.161) is defined as follows: given an intersecting path tuple paired with a permutation \((\sigma , \mathbf{p})\), find the canonical first intersection point, exchange the tails of the two relevant paths at that point, and compose \(\sigma \) with the corresponding transposition. This involution reverses the sign factor \((-1)^\sigma \) (Lemma 5.162) while preserving the weight \(w(\mathbf{p})\) (Lemma 5.163), and has no fixed points among intersecting path tuples (Lemma 5.164). Therefore the contributions of intersecting path tuples cancel in pairs, leaving only the non-intersecting ones.
5.5.3 Helper lemmas for the sign-reversing involution
In an acyclic digraph \(D\), all vertices on a path are distinct.
If a vertex appeared twice at positions \(i {\lt} j\), we could extract the subpath from \(i\) to \(j\), which forms a cycle. By acyclicity, this subpath has length \(1\), so \(i = j\).
Let \(D\) be an acyclic digraph with arc weight function \(w\). Let \(p\) and \(q\) be two paths sharing a vertex \(v\). Let \((p', q')\) be the result of exchanging the tails of \(p\) and \(q\) at \(v\) (i.e., \(p'\) takes the head of \(p\) up to \(v\) followed by the tail of \(q\) from \(v\), and symmetrically for \(q'\)). Then \(w(p) \cdot w(q) = w(p') \cdot w(q')\).
The weight of a path is the product of the weights of its arcs. When we exchange tails at \(v\), arcs are redistributed between the two paths, but the total multiset of arcs is preserved. Hence the product is unchanged.
Let \(D\) be an acyclic digraph, and let \(p, q\) be paths sharing a vertex \(v\). Let \((p', q')\) be the result of exchanging the tails of \(p\) and \(q\) at \(v\). Then exchanging the tails of \(p'\) and \(q'\) at \(v\) returns \((p, q)\).
Exchanging tails at \(v\) twice returns each path to its original form, since the head and tail of each path at \(v\) are restored.
Let \(D\) be a path-finite acyclic digraph. If \((\sigma , \mathbf{p})\) is an intersecting path tuple with permutation, then \(\varphi (\sigma , \mathbf{p})\) is also intersecting.
By Lemma 5.158, exchanging tails is an involution. If the result were non-intersecting, applying \(\varphi \) again would give a non-intersecting tuple equal to the original (contradicting the hypothesis that it is intersecting).
Let \(D\) be an acyclic digraph and \((\sigma , \mathbf{p})\) an intersecting path tuple with canonical intersection data \((i, j, v)\). After applying the sign-reversing map, the canonical intersection data of the resulting tuple \(\varphi (\sigma , \mathbf{p})\) is still \((i, j, v)\).
The head of path \(i\) (vertices before \(v\), inclusive) is unchanged by the tail exchange, so \(v\) remains the first crowded vertex on path \(i\). Furthermore, \(i\) is still the smallest crowded path index (indices below \(i\) have unchanged paths), and \(j\) is still the largest index sharing vertex \(v\) with \(i\) (the set of path indices containing \(v\) is preserved).
Let \(D\) be a path-finite acyclic digraph. Let \((\sigma , \mathbf{p})\) be an intersecting path tuple with permutation. Then the sign-reversing map \(\varphi \) satisfies: if \(\varphi (\sigma , \mathbf{p})\) is intersecting, then \(\varphi (\varphi (\sigma , \mathbf{p})) = (\sigma , \mathbf{p})\).
The sign-reversing map \(\varphi \) satisfies: if \(\varphi (\sigma ,\mathbf{p}) = (\sigma ', \mathbf{p}')\), then \((-1)^{\sigma '} = -(-1)^{\sigma }\).
The permutation component of \(\varphi (\sigma , \mathbf{p})\) is \(\sigma \cdot (i\; j)\) for distinct \(i \ne j\) (Lemma 5.165). Since transpositions have sign \(-1\), the sign of the new permutation is \(-(-1)^\sigma \).
The sign-reversing map \(\varphi \) satisfies: if \(\varphi (\sigma , \mathbf{p}) = (\sigma ', \mathbf{p}')\), then \(w(\mathbf{p}') = w(\mathbf{p})\).
The sign-reversing map \(\varphi \) has no fixed points among intersecting path tuples: if \(\mathbf{p}\) is intersecting, then \(\varphi (\sigma , \mathbf{p}) \ne (\sigma , \mathbf{p})\).
The permutation component changes by a non-trivial transposition, so it cannot equal \(\sigma \).
The sign-reversing map \(\varphi \) applied to \((\sigma , \mathbf{p})\) produces a permutation \(\sigma ' = \sigma \cdot (i\; j)\) for some distinct indices \(i \ne j\).
By definition: the canonical intersection data selects indices \(i\) and \(j\), and \(\varphi \) composes \(\sigma \) with the transposition \((i\; j)\).
The sign-reversing map \(\varphi \) applied to \((\sigma , \mathbf{p})\) produces paths \(\mathbf{p}'\) such that: paths at indices \(i\) and \(j\) have their tails exchanged at the crowded vertex \(v\), while all other paths remain unchanged.
By definition: \(\varphi \) selects the canonical intersection data \((i, j, v)\) and exchanges the tails of paths \(i\) and \(j\) at \(v\), leaving all other paths untouched.
5.5.4 Infrastructure for the LGV proof
For any path-finite acyclic digraph \(D\) with arc weights \(w\),
Apply the sign-reversing involution \(\varphi \) as a fixed-point-free involution. Each pair \(\{ (\sigma , \mathbf{p}),\; \varphi (\sigma , \mathbf{p})\} \) contributes \((-1)^\sigma w(\mathbf{p}) + (-(-1)^\sigma ) w(\mathbf{p}) = 0\).
For any path-finite digraph \(D\) with arc weights \(w\),
where the sum ranges over all pairs of a permutation \(\sigma \) and a path tuple \(\mathbf{p}\) from \(\mathbf{A}\) to \(\sigma (\mathbf{B})\).
Expand \(\det (M)\) by the Leibniz formula. Each summand \((-1)^\sigma \prod _i M_{i,\sigma (i)}\) expands (using the definition \(M_{i,j} = \sum _{p : A_i \to B_j} w(p)\) and distributivity) into a sum over all path tuples from \(\mathbf{A}\) to \(\sigma (\mathbf{B})\). Combine over all \(\sigma \) to obtain the sum over all pairs \((\sigma , \mathbf{p})\).
The sum over non-intersecting path tuples with permutation equals
Decompose the set of non-intersecting path tuples with permutation as a disjoint union over permutations \(\sigma \) and nipats from \(\mathbf{A}\) to \(\sigma (\mathbf{B})\), then factor out \((-1)^\sigma \) from each inner sum.
For a path-finite digraph \(D\) with arc weights \(w\),
Expand the finite product of finite sums using distributivity. The resulting index set bijects with all path tuples (choosing one path for each component).
5.5.5 The nonpermutable case
Let \(f : \mathbb {Z} \to \mathbb {Z}\) satisfy \(|f(n+1) - f(n)| \le 1\) for all \(n \in [a, b)\). If \(f(a) \ge 0\) and \(f(b) \le 0\), then there exists \(c \in [a, b]\) with \(f(c) = 0\).
By induction on \(b - a\). If \(f(a) = 0\), take \(c = a\). Otherwise, \(f(a) {\gt} 0\) and the step bound gives \(f(a+1) \ge 0\). If \(f(a+1) \le 0\), take \(c = a + 1\); otherwise apply the induction hypothesis to \([a+1, b]\).
Let \(A, A', B, B' \in \mathbb {Z}^2\) with \(\operatorname {x}(A') \le \operatorname {x}(A)\), \(\operatorname {y}(A) \le \operatorname {y}(A')\), \(\operatorname {x}(B') \le \operatorname {x}(B)\), and \(\operatorname {y}(B) \le \operatorname {y}(B')\). If \(p\) is a path from \(A\) to \(B'\) and \(p'\) is a path from \(A'\) to \(B\), then \(p\) and \(p'\) share a vertex.
Consider the “coordinate sum” \(s = x + y\) along each path. The range of \(s\)-values for \(p\) is \([A_x + A_y,\; B'_x + B'_y]\), and for \(p'\) it is \([A'_x + A'_y,\; B_x + B_y]\). These ranges overlap. At the low end of the overlap, the \(x\)-coordinate of \(p\) is \(\ge \) that of \(p'\); at the high end, it is \(\le \). Since the \(x\)-coordinate changes by at most \(1\) per step, a discrete intermediate value argument (Lemma 5.171) yields a value of \(s\) where \(p\) and \(p'\) have the same \(x\)-coordinate. Since they also have the same coordinate sum \(s\), the \(y\)-coordinates agree as well, so they share that vertex.
If \(\sigma \in S_k\) satisfies \(\sigma (i) \le \sigma (j)\) whenever \(i {\lt} j\), then \(\sigma = \operatorname {id}\).
By strong induction. If \(\sigma \) is monotone, then for the smallest element \(i\) we have \(\sigma (i) \ge i\) (otherwise injectivity is violated) and \(\sigma (i) \le i\) (otherwise the preimage of \(i\) would have to be smaller, violating monotonicity). Hence \(\sigma (i) = i\), and the claim follows by induction.
Under the sorting conditions of Corollary 5.175, if \(\sigma \in S_k\) is not the identity permutation, then there are no non-intersecting path tuples from \(\mathbf{A}\) to \(\sigma (\mathbf{B})\).
Since \(\sigma \ne \operatorname {id}\), by Lemma 5.173 there exists \(i \in [k-1]\) with \(\sigma (i) {\gt} \sigma (i+1)\). The sorting conditions then satisfy the hypotheses of Lemma 5.172 for paths \(p_i : A_i \to B_{\sigma (i+1)}\) and \(p_{i+1} : A_{i+1} \to B_{\sigma (i)}\), so these two paths must intersect. Hence no nipat exists.
Consider the setting of Theorem 5.154, but additionally assume that
Here, \(\operatorname {x}(P)\) and \(\operatorname {y}(P)\) denote the two coordinates of any point \(P \in \mathbb {Z}^2\).
Then, there are no nipats from \(\mathbf{A}\) to \(\sigma (\mathbf{B})\) when \(\sigma \in S_k\) is not the identity permutation \(\operatorname {id} \in S_k\). Therefore, the claim of Theorem 5.154 simplifies to
Let \(\sigma \in S_k\) be a permutation that is not the identity permutation \(\operatorname {id} \in S_k\). By Lemma 5.174, there are no nipats from \(\mathbf{A}\) to \(\sigma (\mathbf{B})\), so
Now, Theorem 5.154 yields
5.5.6 Applications
Nonnegativity of binomial coefficient determinants
Let \(a, b, c, d\) be nonnegative integers with \(a \ge b\) and \(c \ge d\). Then
By induction on \(c - d\). The base case \(c = d\) is trivial. For the inductive step, use the identity \(\binom {n}{m+1}(m+1) = \binom {n}{m}(n - m)\) to reduce the \((c+1)\) case to the \(c\) case, together with the inequality \(b - m \le a - m\) (from \(b \le a\)).
The number of lattice paths in \(\mathbb {Z}^2\) from \((0, -a)\) to \((b, -b)\) equals \(\binom {a}{b}\).
A path from \((0,-a)\) to \((b,-b)\) has exactly \(a\) steps (the coordinate sum \(x+y\) increases from \(-a\) to \(0\)), of which exactly \(b\) are east-steps (the \(x\)-coordinate increases from \(0\) to \(b\)). Choosing which \(b\) of the \(a\) steps are east-steps gives a bijection with \(b\)-element subsets of \([a]\), so the count is \(\binom {a}{b}\).
There is a bijection between paths from \((0, -a)\) to \((b, -b)\) in the integer lattice and \(b\)-element subsets of \(\{ 1, \ldots , a\} \).
- One or more equations did not get rendered due to their size.
A path is uniquely determined by the positions of its east-steps among all \(a\) steps. This gives a bijection to \(b\)-element subsets of \(\{ 1, \ldots , a\} \).
Helpers for Corollary 5.181
With \(A_i = (0, -a_i)\), \(B_j = (b_j, -b_j)\), and unit arc weights, the path weight matrix equals the matrix \(\bigl(\binom {a_i}{b_j}\bigr)\).
The \((i,j)\) entry of the path weight matrix (with unit weights) is the number of paths from \(A_i\) to \(B_j\), which by Lemma 5.177 equals \(\binom {a_i}{b_j}\).
With unit arc weights on the integer lattice,
This is the specialization of the signed ipat cancellation (Lemma 5.167) to unit weights, where the weight of each path tuple is \(1\) and the sum reduces to a signed cardinality count.
Let \(k \in \mathbb {N}\). Let \(a_1, a_2, \ldots , a_k\) and \(b_1, b_2, \ldots , b_k\) be nonnegative integers such that
Then,
Set \(K = \mathbb {Z}\) and \(w(a) := 1\) for each arc \(a\) of \(\mathbb {Z}^2\). Define the lattice points
for all \(i \in [k]\). These lattice points satisfy the assumptions of Corollary 5.175. Hence, 20 entails
Using Proposition 5.129, the matrix on the left hand side is \(\bigl(\binom {a_i}{b_j}\bigr)_{1 \le i \le k,\; 1 \le j \le k}\). The right hand side is \(\ge 0\), so the determinant is \(\ge 0\).
In Lean, the cases \(k = 0\) and \(k = 1\) are proved directly (empty and \(1\times 1\) determinants), \(k = 2\) uses the FKG inequality (Lemma 5.176), and \(k \ge 3\) uses the full LGV machinery.
Catalan Hankel determinant
The Dyck digraph (with vertex set \(\mathbb {Z} \times \mathbb {N}\) and arcs \((i,j) \to (i+1, j+1)\) and \((i,j) \to (i+1, j-1)\) for \(j {\gt} 0\)) is acyclic.
Every arc increases the first coordinate by \(1\), so any path is strictly increasing in the first coordinate. Hence there can be no cycle.
The Dyck digraph is path-finite.
Since the first coordinate increases by exactly \(1\) on each arc, a path of length \(n\) visits vertices whose first coordinates form a consecutive sequence. The second coordinate is bounded by the first coordinate difference, so there are only finitely many possible vertex sequences.
The number of paths from \((0, 0)\) to \((2n, 0)\) in the Dyck digraph equals the Catalan number \(c_n\).
A path from \((0,0)\) to \((2n, 0)\) in the Dyck digraph consists of \(2n\) steps, each going either up-right or down-right, and never going below the \(x\)-axis. Such a path is exactly a Dyck path of semilength \(n\). The bijection with Dyck words (Lemma 5.185) establishes the correspondence with the Catalan number.
Helpers for the Dyck path–DyckWord bijection
There is a bijection between paths from \((0, 0)\) to \((2n, 0)\) in the Dyck digraph and Dyck words of semilength \(n\). The forward direction converts each arc into an up or down step; the backward direction constructs a vertex list from a Dyck word.
- LGV.dyckPathToWord p hstart hfinish = { toList := LGV.dyckPathToSteps p, count_U_eq_count_D := ⋯, count_D_le_count_U := ⋯ }
- LGV.dyckWordToPath w = { vertices := LGV.dyckWordToVertices w, nonempty := ⋯, arcs_valid := ⋯ }
The forward map sends each arc \((x, y) \to (x+1, y+1)\) to an up-step and each arc \((x, y) \to (x+1, y-1)\) to a down-step, verifying that the resulting list of steps forms a well-formed Dyck word. The backward map constructs vertices by scanning the Dyck word and accumulating \(y\)-coordinates. Round-trip equalities (the two maps are mutual inverses) are verified by induction on the step list.
The number of paths from \((-2i, 0)\) to \((2j, 0)\) in the Dyck digraph equals \(c_{i+j}\).
For any integer \(d\), translation by \((d, 0)\) is a bijection on paths in the Dyck digraph: if \(p\) is a path from \(A\) to \(B\), then translating each vertex by \((d, 0)\) gives a path from \(A + (d, 0)\) to \(B + (d, 0)\). The map is injective and surjective (the inverse translates by \((-d, 0)\)).
Each arc \((x, y) \to (x+1, y \pm 1)\) is preserved by horizontal translation, so the translated vertex list forms a valid path. Injectivity follows from injectivity of the translation map on vertices. Surjectivity follows from the inverse translation.
The Catalan Hankel matrix \((c_{i+j})_{0 \le i,j {\lt} k}\) equals the path weight matrix of the Dyck digraph with unit arc weights and \(k\)-vertices \(A_i = (-2i, 0)\), \(B_j = (2j, 0)\).
The \((i,j)\) entry of the path weight matrix (with unit weights) counts paths from \((-2i, 0)\) to \((2j, 0)\), which equals \(c_{i+j}\) by Lemma 5.186.
Helpers for the unique nipat (Catalan case)
For each \(i \in \mathbb {N}\), define the nested Dyck path \(\gamma _i\) as the path in the Dyck digraph from \((-2i, 0)\) to \((2i, 0)\) that goes straight up (northeast) from \((-2i, 0)\) to \((0, 2i)\) and then straight down (southeast) from \((0, 2i)\) to \((2i, 0)\). This path has \(4i\) arcs and visits the vertices \((j - 2i,\; \min (j,\; 4i - j))\) for \(j = 0, 1, \ldots , 4i\).
- LGV.nestedDyckPath n = { vertices := LGV.nestedDyckVertices n, nonempty := ⋯, arcs_valid := ⋯ }
The vertex list is constructed explicitly. The start and finish are verified by evaluating the vertex list at positions \(0\) and \(4i\). Each consecutive pair of vertices forms a valid Dyck arc (either up-right or down-right, with \(y \ge 0\)).
For \(i \ne j\), the nested Dyck paths \(\gamma _i\) and \(\gamma _j\) share no vertices.
A vertex on \(\gamma _i\) at position \(m\) has \(y = \min (m, 4i - m)\). At any shared \(x\)-coordinate, the corresponding positions yield different \(y\)-coordinates when \(i \ne j\), because the maximum height \(2i\) differs.
For any path \(p\) in the Dyck digraph, the \(y\)-coordinate at step \(m\) has the same parity as \(y_{\mathrm{start}} + m\), where \(y_{\mathrm{start}}\) is the \(y\)-coordinate of the starting vertex. (Each arc changes \(y\) by \(\pm 1\), so the parity alternates.)
By induction on \(m\). Each arc changes \(y\) by \(\pm 1\), flipping the parity.
For a path \(p\) in the Dyck digraph from \((-2i, 0)\) to \((2i, 0)\), the \(y\)-coordinate at step \(m\) satisfies \(y_m \le \min (m,\; 4i - m)\).
Each step changes \(y\) by at most \(+1\), so \(y_m \le m\). Symmetrically, \(y\) must return to \(0\) in \(4i - m\) remaining steps, so \(y_m \le 4i - m\).
Define \(k\)-vertices \(A_i := (-2(i-1), 0)\) and \(B_i := (2(i-1), 0)\) for \(i \in [k]\). There is exactly one non-intersecting path tuple from \(\mathbf{A}\) to \(\mathbf{B}\) in the Dyck digraph: the nested Dyck paths, where path \(i\) goes from \((-2i, 0)\) up to \((0, 2i)\) and back down to \((2i, 0)\).
Existence and non-intersection: The nested Dyck path for index \(i\) visits only vertices \((x, y)\) with \(|x| \le 2i\) and \(y \le 2i\), and at the midpoint \(x = 0\) it reaches height exactly \(2i\). Two nested paths for indices \(i \ne j\) are disjoint because they reach different maximum heights (Lemma 5.190).
Uniqueness: Any nipat must equal the nested one. At the midpoint of path \(i\) (step \(2i\)), the \(y\)-coordinate must be exactly \(2i\): it is at most \(2i\) (by Lemma 5.192), has the correct parity (by Lemma 5.191), and cannot equal \(2m\) for any \(m {\lt} i\) because that would force a shared vertex with the (inductively determined) path \(m\). Once the midpoint heights are fixed, the entire path is forced (it must go straight up, then straight down) by parity and the non-intersection constraint.
For \(k \ge 2\), the full proof uses strong induction on the path index.
Let \(k \in \mathbb {N}\). Recall the Catalan numbers \(c_n = \frac{1}{n+1}\binom {2n}{n}\) for all \(n \in \mathbb {N}\). Then,
We use not the lattice \(\mathbb {Z}^2\), but a different digraph: the simple digraph with vertex set \(\mathbb {Z} \times \mathbb {N}\) and arcs \((i,j) \to (i+1, j+1)\) for all \((i,j) \in \mathbb {Z} \times \mathbb {N}\) and \((i,j) \to (i+1, j-1)\) for all \((i,j) \in \mathbb {Z} \times \mathbb {P}\). It is easy to see that this digraph is acyclic and path-finite.
Set \(K = \mathbb {Z}\) and \(w(a) = 1\) for each arc \(a\). Define \(A_i := (-2(i-1), 0)\) and \(B_i := (2(i-1), 0)\) for \(i \in [k]\).
The Catalan number \(c_n\) counts the paths from \((0,0)\) to \((2n,0)\) on this digraph (Dyck paths). Hence \(c_n\) also counts the paths from \((i,0)\) to \((2n+i, 0)\) for any \(i \in \mathbb {N}\). By Lemma 5.184, the number of paths from \(A_i\) to \(B_j\) is \(c_{i+j-2}\). Hence the path weight matrix is the Catalan Hankel matrix (Lemma 5.188).
It is not hard to show (Lemma 5.193) that there is only one nipat from \(\mathbf{A}\) to \(\mathbf{B}\). Moreover, there are no nipats from \(\mathbf{A}\) to \(\sigma (\mathbf{B})\) for \(\sigma \ne \operatorname {id}\) (by an argument analogous to Corollary 5.175). Hence, by Theorem 5.155, the determinant equals \(1\).
5.5.7 Bridge between path representations
There is a bijection between step-based lattice paths (lists of east/north steps starting at a given point) and vertex-based digraph paths in \(\mathbb {Z}^2\) starting at that point. The forward direction computes the list of visited vertices; the backward direction recovers the step sequence from consecutive vertex pairs.
Different step sequences starting from the same point produce different vertex-based paths.
By induction on the path length. If two step sequences produce the same vertex list, the second vertices must agree. Since each step (east or north) produces a distinct target from the same source, the first steps must be equal. Apply the induction hypothesis to the tails.
Every vertex-based path in the integer lattice starting at a given point is the image of some step sequence.
Convert the path’s vertex list to a step list by recovering each step from consecutive vertex pairs: if the \(x\)-coordinate increases by \(1\), the step is east; otherwise it is north. The round-trip identity follows by construction.
A step-based lattice path tuple is intersecting if and only if the corresponding vertex-based path tuple is intersecting.
Both representations check whether any two paths share a vertex. Since the step-to-vertex map preserves the vertex list, a vertex \(v\) appears in two step-based paths if and only if it appears in the corresponding vertex-based paths.