\PassOptionsToPackage{dvipsnames}{xcolor}
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external,matrix,positioning,calc,shapes}
\tikzexternalize
\begin{document}
\section{Associativity}
\tikzsetnextfilename{associativity0}
\begin{tikzpicture}[scale=3]
\newcommand\nodesize{1.5mm}
\node(Init0) at (-0.2, 0){};
\node(Init) at (0, 0){};
\node[draw,circle,fill=Green](B0) at (1, 0){$A$};
\node[draw,circle,fill=Cyan](A0) at (1, 0.7){$B$};
\draw[->](Init0) to (B0);
\draw[->](Init) to[in=180,out=0] (A0);
\node[draw,circle,fill=BurntOrange,inner sep=\nodesize](A1) at (2, 0.7){$C$};
\draw[->](A0) to (A1);
\node[draw,circle,fill=Cyan,inner sep=\nodesize](A0B) at (2.8, 0){$B$};
\draw[->](B0) to[in=180,out=0] (A0B);
\node[draw,circle,fill=BurntOrange,inner sep=\nodesize](A1B) at (2.95, 0){$C$};
\draw[->](A1) to[in=180,out=0] (A0B);
\node(A) at (3.5, 0){};
\draw(A1B) -- (A);
\end{tikzpicture}
\tikzsetnextfilename{associativity1}
\begin{tikzpicture}[scale=3]
\newcommand\nodesize{1.5mm}
\node(Init0) at (-0.2, 0){};
\node(Init) at (0, 0){};
\node[draw,circle,fill=Green](B0) at (1, 0){$A$};
\node[draw,circle,fill=Cyan](A0) at (1, 0.7){$B$};
\draw[->](Init0) to (B0);
\draw[->](Init) to[in=180,out=0] (A0);
\node[draw,circle,fill=BurntOrange](A1) at (2, 0.7){$C$};
\draw[->](A0) to (A1);
\node[draw,circle,fill=Cyan](A0B) at (1.8, 0){$B$};
\draw[->](A0) to[in=180,out=0] (A0B);
\draw[->](B0) to[in=180,out=0] (A0B);
\node[draw,circle,fill=BurntOrange](A1B) at (2.8, 0){$C$};
\draw[->](A0B) to (A1B);
\draw[->](A1) to[in=180,out=0] (A1B);
\node(A) at (3.5, 0){};
\draw(A1B) -- (A);
\end{tikzpicture}
\section{Git bad merge}
\tikzsetnextfilename{badmerge0}
\begin{tikzpicture}
\begin{scope}[yshift=-1.25cm]
\node[Red,inner sep=0](Aa) at (0, 0) {A};
\node[inner sep=0](Ba) at (0, -0.5) {B};
\end{scope}
\node[ForestGreen](Gb1) at (1, 0) {G};
\node[Red](Ab1) at (1, -0.5) {A};
\node(Bb1) at (1, -1) {B};
\path[draw,->](Aa) to (Ab1);
\path[draw,->](Ba) to (Bb1);
\begin{scope}[yshift=1cm]
\node[ForestGreen](Ab2-) at (2, 0) {A};
\node[ForestGreen](Bb2-) at (2, -0.5) {B};
\node[ForestGreen](Gb2) at (2, -1) {G};
\node[Red](Ab2) at (2, -1.5) {A};
\node(Bb2) at (2, -2) {B};
\end{scope}
\path[draw,->](Ab1) to (Ab2);
\path[draw,->](Bb1) to (Bb2);
\path[draw,->](Gb1) to (Gb2);
\begin{scope}[yshift=-2cm,xshift=1cm]
\node[Red](Ac) at (1, 0) {A};
\node(Bc) at (1, -1) {B};
\node[Dandelion](Xc) at (1, -0.5) {X};
\end{scope}
\path[draw,->](Aa) to (Ac);
\path[draw,->](Ba) to[out=0,in=180] (Bc);
\begin{scope}[yshift=0cm,xshift=3cm]
\node(A-m) at (1, 0) {A};
\node[Dandelion](Xm) at (1, -0.5) {X};
\node(B-m) at (1, -1) {B};
\node[ForestGreen](Gm) at (1, -1.5) {G};
\node(Am) at (1, -2) {A};
\node(Bm) at (1, -2.5) {B};
\end{scope}
\path[draw,->](Xc) to[out=0,in=180] (Xm);
\path[draw,->](Gb2) to[out=0,in=180] (Gm);
\end{tikzpicture}
\tikzsetnextfilename{goodmerge}
\begin{tikzpicture}
\begin{scope}[yshift=-1.25cm]
\node[Red,inner sep=0](Aa) at (0, 0) {A};
\node[inner sep=0](Ba) at (0, -0.5) {B};
\end{scope}
\node[ForestGreen](Gb1) at (1, 0) {G};
\node[Red](Ab1) at (1, -0.5) {A};
\node(Bb1) at (1, -1) {B};
\path[draw,->](Aa) to (Ab1);
\path[draw,->](Ba) to (Bb1);
\begin{scope}[yshift=1cm]
\node[ForestGreen](Ab2-) at (2, 0) {A};
\node[ForestGreen](Bb2-) at (2, -0.5) {B};
\node[ForestGreen](Gb2) at (2, -1) {G};
\node[Red](Ab2) at (2, -1.5) {A};
\node(Bb2) at (2, -2) {B};
\end{scope}
\path[draw,->](Ab1) to (Ab2);
\path[draw,->](Bb1) to (Bb2);
\path[draw,->](Gb1) to (Gb2);
\begin{scope}[yshift=-2cm,xshift=1cm]
\node[Red](Ac) at (1, 0) {A};
\node[Dandelion](Xc) at (1, -0.5) {X};
\node(Bc) at (1, -1) {B};
\end{scope}
\path[draw,->](Aa) to (Ac);
\path[draw,->](Ba) to[out=0,in=180] (Bc);
\begin{scope}[yshift=0cm,xshift=3cm]
\node[ForestGreen](A-m) at (1, 0) {A};
\node[ForestGreen](B-m) at (1, -0.5) {B};
\node[ForestGreen](Gm) at (1, -1) {G};
\node[Red](Am) at (1, -1.5) {A};
\node[Dandelion](Xm) at (1, -2) {X};
\node(Bm) at (1, -2.5) {B};
\end{scope}
\path[draw,->](Xc) to[out=0,in=180] (Xm);
\path[draw,->](Gb2) to[out=0,in=180] (Gm);
\end{tikzpicture}
\tikzsetnextfilename{badmerge1}
\begin{tikzpicture}
\begin{scope}[yshift=-1.25cm]
\node[Red,inner sep=0](Aa) at (0, 0) {A};
\node[inner sep=0](Ba) at (0, -0.5) {B};
\end{scope}
\node[ForestGreen](Gb1) at (1, 0) {G};
\node[Red](Ab1) at (1, -0.5) {A};
\node(Bb1) at (1, -1) {B};
\path[draw,->](Aa) to (Ab1);
\path[draw,->](Ba) to (Bb1);
\begin{scope}[yshift=1cm]
\node[ForestGreen](Ab2-) at (2, 0) {A};
\node[ForestGreen](Bb2-) at (2, -0.5) {B};
\node[ForestGreen](Gb2) at (2, -1) {G};
\node[Red](Ab2) at (2, -1.5) {A};
\node(Bb2) at (2, -2) {B};
\end{scope}
\path[draw,->](Ab1) to (Ab2);
\path[draw,->](Bb1) to (Bb2);
\path[draw,->](Gb1) to (Gb2);
\begin{scope}[yshift=-2cm,xshift=1cm]
\node[Red](Ac) at (1, 0) {A};
\node(Bc) at (1, -1) {B};
\node[Dandelion](Xc) at (1, -0.5) {X};
\end{scope}
\path[draw,->](Aa) to (Ac);
\path[draw,->](Ba) to[out=0,in=180] (Bc);
\begin{scope}[yshift=0cm,xshift=3cm]
\node(A-m) at (1, 0) {A};
\node[Dandelion](Xm) at (1, -0.5) {X};
\node(B-m) at (1, -1) {B};
\node[ForestGreen](Gm) at (1, -1.5) {G};
\node[Red](Am) at (1, -2) {A};
\node(Bm) at (1, -2.5) {B};
\end{scope}
\path[draw,->](Xc) to[out=0,in=180] (Xm);
\path[draw,->](Gb2) to[out=0,in=180] (Gm);
\path[draw,dashed,->](Ac) to[out=0,in=180] (Am);
\path[draw,dashed,->](Ab2) to[out=0,in=180] (Am);
\end{tikzpicture}
\tikzsetnextfilename{badmerge2}
\begin{tikzpicture}
\begin{scope}[yshift=-1.25cm]
\node[Red,inner sep=0](Aa) at (0, 0) {A};
\node[inner sep=0](Ba) at (0, -0.5) {B};
\end{scope}
\node[ForestGreen](Gb1) at (1, 0) {G};
\node[Red](Ab1) at (1, -0.5) {A};
\node(Bb1) at (1, -1) {B};
\path[draw,->](Aa) to (Ab1);
\path[draw,->](Ba) to (Bb1);
\begin{scope}[yshift=1cm]
\node[ForestGreen](Ab2-) at (2, 0) {A};
\node[ForestGreen](Bb2-) at (2, -0.5) {B};
\node[ForestGreen](Gb2) at (2, -1) {G};
\node[Red](Ab2) at (2, -1.5) {A};
\node(Bb2) at (2, -2) {B};
\end{scope}
\path[draw,->](Ab1) to (Ab2);
\path[draw,->](Bb1) to (Bb2);
\path[draw,->](Gb1) to (Gb2);
\begin{scope}[yshift=-2cm,xshift=1cm]
\node[Red](Ac) at (1, 0) {A};
\node(Bc) at (1, -1) {B};
\node[Dandelion](Xc) at (1, -0.5) {X};
\end{scope}
\path[draw,->](Aa) to (Ac);
\path[draw,->](Ba) to[out=0,in=180] (Bc);
\begin{scope}[yshift=0cm,xshift=3cm]
\node[Red](A-m) at (1, 0) {A};
\node[Dandelion](Xm) at (1, -0.5) {X};
\node(B-m) at (1, -1) {B};
\node[ForestGreen](Gm) at (1, -1.5) {G};
\node(Am) at (1, -2) {A};
\node(Bm) at (1, -2.5) {B};
\end{scope}
\path[draw,->](Xc) to[out=0,in=180] (Xm);
\path[draw,->](Gb2) to[out=0,in=180] (Gm);
\path[draw,dashed,->](Ac) to[out=0,in=180] (A-m);
\path[draw,dashed,->](Ab2) to[out=0,in=180] (A-m);
\end{tikzpicture}
\section{Theory}
\tikzsetnextfilename{repos-line-add}
\begin{tikzpicture}
\node[inner sep=3](A0) at (0, 0) {A};
\node[inner sep=3](B0) at (0, -0.8) {B};
\node[inner sep=3](C0) at (0, -1.6) {C};
\path[draw, ->](A0) to (B0);
\path[draw, ->](B0) to (C0);
\begin{scope}[xshift=2cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -1.6) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -0.8) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[draw, ->](B1) -- (C1);
\path[draw, ->](A1) -- (D1) node[midway, above right=-1mm]{$c_0$};
\path[draw, ->](D1) -- (B1) node[midway, below right=-1mm]{$c_0$};
\end{scope}
\draw[very thick, ->](0.5, -0.8) -- (1.5, -0.8);
\end{tikzpicture}
\tikzsetnextfilename{repos-line-del}
\begin{tikzpicture}
\node[inner sep=3](A0) at (0, 0) {A};
\node[inner sep=3](B0) at (0, -0.8) {B};
\node[inner sep=3](C0) at (0, -1.6) {C};
\path[draw, ->](A0) to (B0);
\path[draw, ->](B0) to (C0);
\begin{scope}[xshift=2cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -1.6) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -0.8) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[draw, ->](A1) -- (D1) node[midway, above right=-1mm]{$c_0$};
\path[draw, ->](D1) -- (B1) node[midway, below right=-1mm]{$c_0$};
\end{scope}
\draw[very thick, ->](0.5, -0.8) -- (1.5, -0.8);
\begin{scope}[xshift=5cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -1.6) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -0.8) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[dashed, draw, ->](A1) -- (D1) node[midway, above right=-1mm]{$c_1$};
\path[draw, ->](D1) -- (B1) node[midway, below right=-1mm]{$c_0$};
\end{scope}
\begin{scope}[xshift=3cm, yshift=0cm]
\draw[very thick, ->](0.5, -0.8) -- (1.5, -0.8);
\end{scope}
\end{tikzpicture}
\tikzsetnextfilename{inverse2}
\begin{tikzpicture}
\node[inner sep=3](A0) at (0, 0) {A};
\node[inner sep=3](B0) at (0, -0.8) {B};
\node[inner sep=3](C0) at (0, -1.6) {C};
\path[draw, ->](A0) to (B0);
\path[draw, ->](B0) to (C0);
\begin{scope}[xshift=2cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -1.6) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -0.8) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[draw, ->](A1) -- (D1);
\path[draw, ->](D1) -- (B1);
\end{scope}
\draw[very thick, ->](0.5, -0.8) -- (1.5, -0.8);
\begin{scope}[xshift=5cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -1.6) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -0.8) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[dashed, draw, ->](A1) -- (D1);
\path[draw, ->](D1) -- (B1);
\end{scope}
\begin{scope}[xshift=3cm, yshift=0cm]
\draw[very thick, ->](0.5, -0.8) -- (1.5, -0.8);
\end{scope}
\begin{scope}[xshift=3cm]
\begin{scope}[xshift=5cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -1.6) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -0.8) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[draw, ->](A1) -- (D1);
\path[draw, ->](D1) -- (B1);
\end{scope}
\begin{scope}[xshift=3cm, yshift=0cm]
\draw[very thick, ->](0.5, -0.8) -- (1.5, -0.8);
\end{scope}
\end{scope}
\begin{scope}[xshift=2cm, yshift=-4.5cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -1.6) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -0.8) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[dashed, draw, ->](A1) -- (D1);
\path[draw, ->](D1) -- (B1);
\draw[very thick, ->](0.4, 2) -- (0.4, 0.5);
\end{scope}
\begin{scope}[xshift=8cm, yshift=-4.5cm]
\draw[very thick, ->](0.4, 2) -- (0.4, 0.5);
\end{scope}
\begin{scope}[xshift=5cm, yshift=-4.5cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -1.6) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -0.8) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[dashed, draw, ->](A1) edge (D1);
\path[draw, ->,](D1) -- (B1);
\draw[very thick, ->](0.4, 2) -- (0.4, 0.5);
\end{scope}
\begin{scope}[xshift=8cm, yshift=-4.5cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -1.6) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -0.8) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[draw, ->](A1) edge (D1);
\path[draw, ->,](D1) -- (B1);
\end{scope}
\draw[very thick, ->](3.5, -5.5) -- (4.5, -5.5);
\draw[very thick, ->](6.5, -5.5) -- (7.5, -5.5);
\end{tikzpicture}
\tikzsetnextfilename{inverse3}
\begin{tikzpicture}
\node[inner sep=3](A0) at (0, 0) {A};
\node[inner sep=3](B0) at (0, -0.8) {B};
\node[inner sep=3](C0) at (0, -1.6) {C};
\path[draw, ->](A0) to (B0);
\path[draw, ->](B0) to (C0);
\begin{scope}[xshift=2cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -1.6) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -0.8) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[draw, ->](A1) -- (D1) node[midway, above right=-1mm]{$c_0$};
\path[draw, ->](D1) -- (B1) node[midway, below right=-1mm]{$c_0$};
\end{scope}
\draw[very thick, ->](0.5, -0.8) -- (1.5, -0.8);
\begin{scope}[xshift=5cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -1.6) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -0.8) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[dashed, draw, ->](A1) -- (D1) node[midway, above right=-1mm]{$c_1$};
\path[draw, ->](D1) -- (B1) node[midway, below right=-1mm]{$c_0$};
\end{scope}
\begin{scope}[xshift=3cm, yshift=0cm]
\draw[very thick, ->](0.5, -0.8) -- (1.5, -0.8);
\end{scope}
\begin{scope}[xshift=3cm]
\begin{scope}[xshift=5cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -1.6) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -0.8) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[draw, ->](A1) -- (D1) node[midway, above right=-1mm]{$c_3$};
\path[draw, ->](D1) -- (B1) node[midway, below right=-1mm]{$c_0$};
\end{scope}
\begin{scope}[xshift=3cm, yshift=0cm]
\draw[very thick, ->](0.5, -0.8) -- (1.5, -0.8);
\end{scope}
\end{scope}
\begin{scope}[xshift=2cm, yshift=-4.5cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -1.6) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -0.8) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[dashed, draw, ->](A1) -- (D1) node[midway, above right=-1mm]{$c_2$};
\path[draw, ->](D1) -- (B1) node[midway, below right=-1mm]{$c_0$};
\draw[very thick, ->](0.4, 2) -- (0.4, 0.5);
\end{scope}
\begin{scope}[xshift=8cm, yshift=-4.5cm]
\draw[very thick, ->](0.4, 2) -- (0.4, 0.5);
\end{scope}
\begin{scope}[xshift=8cm, yshift=-4.5cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -1.6) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (1, -0.8) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[draw, ->](A1) edge[bend left] (D1);
\path[draw = none](A1) -- (D1) node[midway, above right=0mm]{$c_3$};
\path[dashed, draw, ->, bend right](A1) edge[bend right] (D1);
\path[draw = none](A1) -- (D1) node[midway, below left=0mm]{$c_2$};
\path[draw, ->,](D1) -- (B1) node[midway, below right=-1mm]{$c_0$};
\draw[very thick, ->](0.4, 2) -- (0.4, 0.5);
\end{scope}
\begin{scope}[xshift=5cm, yshift=-4.5cm]
\node[inner sep=3](A3) at (0, 0) {A};
\node[inner sep=3](B3) at (0, -1.6) {B};
\node[inner sep=3](C3) at (0, -2.4) {C};
\node[inner sep=3](D3) at (1, -0.8) {D};
\path[draw, ->](A3) -- (B3);
\path[draw, ->](B3) -- (C3);
\path[draw, ->](B3) -- (C3);
\path[dashed, draw, ->](A3) edge[bend left] (D3);
\path[draw = none](A3) -- (D3) node[midway, above right=0mm]{$c_1$};
\path[dashed, draw, ->, bend right](A3) edge[bend right] (D3);
\path[draw = none](A3) -- (D3) node[midway, below left=0mm]{$c_2$};
\path[draw, ->,](D3) -- (B3) node[midway, below right=-1mm]{$c_0$};
\draw[very thick, ->](0.4, 2) -- (0.4, 0.5);
\end{scope}
\draw[very thick, ->](3.5, -5.5) -- (4.5, -5.5);
\draw[very thick, ->](6.5, -5.5) -- (7.5, -5.5);
\end{tikzpicture}
\tikzsetnextfilename{known-vertices0}
\begin{tikzpicture}
\begin{scope}[xshift=2.4cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -0.8) {B};
\node[inner sep=3](C1) at (0, -1.6) {C};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\end{scope}
\begin{scope}[xshift=7.4cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -0.8) {B};
\node[inner sep=3](C1) at (0, -1.6) {C};
\path[draw, ->](A1) -- (B1);
\path[dashed, draw, ->](B1) -- (C1);
\end{scope}
\draw[very thick, ->](3.5, -0.8) -- (6, -0.8);
\begin{scope}[xshift=2cm, yshift=-4.5cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -0.8) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -1.6) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[draw, ->](B1) -- (D1);
\path[draw, ->](D1) -- (C1);
\draw[very thick, ->](0.4, 2) -- (0.4, 0.5);
\end{scope}
\begin{scope}[xshift=7cm, yshift=-4.5cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -0.8) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -1.6) {D};
\path[draw, ->](A1) -- (B1);
\path[dashed, draw, ->](B1) -- (C1);
\path[draw, ->](B1) -- (D1);
\path[draw, ->](D1) -- (C1);
\draw[very thick, ->](0.4, 2) -- (0.4, 0.5);
\end{scope}
\draw[very thick, ->](3.5, -5.5) -- (6, -5.5);
\end{tikzpicture}
\tikzsetnextfilename{known-vertices1}
\begin{tikzpicture}
\begin{scope}[xshift=2.4cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -0.8) {B};
\node[inner sep=3](C1) at (0, -1.6) {C};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\end{scope}
\begin{scope}[xshift=7.4cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -0.8) {B};
\node[inner sep=3](C1) at (0, -1.6) {C};
\path[dashed, draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\end{scope}
\draw[very thick, ->](3.5, -0.8) -- (6, -0.8);
\begin{scope}[xshift=2cm, yshift=-4.5cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -0.8) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -1.6) {D};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[draw, ->](B1) -- (D1);
\path[draw, ->](D1) -- (C1);
\draw[very thick, ->](0.4, 2) -- (0.4, 0.5);
\end{scope}
\begin{scope}[xshift=7cm, yshift=-4.5cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -0.8) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -1.6) {D};
\path[dashed, draw, ->, Magenta](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[draw, ->, Magenta](B1) -- (D1);
\path[draw, ->](D1) -- (C1);
\node[anchor=west, Magenta](C) at (1, -0.5){These edges are in conflict};
\draw[Magenta](C.west) -- (0.15, -0.4);
\draw[Magenta](C.west) -- (0.5, -1.1);
\draw[very thick, ->](0.4, 2) -- (0.4, 0.5);
\end{scope}
\draw[very thick, ->](3.5, -5.5) -- (6, -5.5);
\end{tikzpicture}
\tikzsetnextfilename{known-vertices2}
\begin{tikzpicture}
\begin{scope}[xshift=2.4cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -0.8) {B};
\node[inner sep=3](C1) at (0, -1.6) {C};
\path[draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\end{scope}
\begin{scope}[xshift=4.4cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -0.8) {B};
\node[inner sep=3](C1) at (0, -1.6) {C};
\path[dashed, draw, ->](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\end{scope}
\draw[very thick, ->](3, -0.8) -- (3.9, -0.8);
\begin{scope}[xshift=6.4cm, yshift=0cm]
\node[inner sep=3](A1) at (0, 0) {A};
\node[inner sep=3](B1) at (0, -0.8) {B};
\node[inner sep=3](C1) at (0, -2.4) {C};
\node[inner sep=3](D1) at (0.8, -1.6) {D};
\path[dashed, draw, ->, Green, thick](A1) -- (B1);
\path[draw, ->](B1) -- (C1);
\path[draw, ->, Green, thick](B1) -- (D1);
\path[draw, ->](D1) -- (C1);
\node[anchor=west, Green](C) at (1, -0.5){These edges are not in conflict};
\draw[Green](C.west) -- (0.15, -0.4);
\draw[Green](C.west) -- (0.5, -1.1);
\end{scope}
\draw[very thick, ->](5, -0.8) -- (5.9, -0.8);
\end{tikzpicture}
\tikzsetnextfilename{pseudo0}
\begin{tikzpicture}
\node[inner sep=3](A0) at (0, 0) {$A_0$};
\node[inner sep=3](A1) at (0, -0.8) {$A_1$};
\node[inner sep=3](A) at (0, -2) {$\vdots$};
\node[inner sep=3](An) at (0, -3.2) {$A_n$};
\path[draw, ->](A0) -- (A1);
\path[draw, ->](A1) -- (A);
\path[draw, ->](A) -- (An);
\draw[very thick, ->](0.5, -1.6) -- (2.5, -1.6);
\begin{scope}[xshift=3cm]
\node[inner sep=3](B) at (0, 0.8) {$B$};
\node[inner sep=3](A0) at (0, 0) {$A_0$};
\node[inner sep=3](A1) at (0, -0.8) {$A_1$};
\node[inner sep=3](A) at (0, -2) {$\vdots$};
\node[inner sep=3](An) at (0, -3.2) {$A_n$};
\node[inner sep=3](C) at (0, -4) {$C$};
\path[draw, ->, dashed](B) -- (A0);
\path[dashed,draw, ->](A0) -- (A1);
\path[dashed,draw, ->](A1) -- (A);
\path[dashed,draw, ->](A) -- (An);
\path[draw, ->](An) -- (C);
\end{scope}
\end{tikzpicture}
\tikzsetnextfilename{pseudo1}
\begin{tikzpicture}
\node[inner sep=3](A0) at (0, 0) {$A_0$};
\node[inner sep=3](A1) at (0, -0.8) {$A_1$};
\node[inner sep=3](A) at (0, -2) {$\vdots$};
\node[inner sep=3](An) at (0, -3.2) {$A_n$};
\path[draw, ->](A0) -- (A1);
\path[draw, ->](A1) -- (A);
\path[draw, ->](A) -- (An);
\draw[very thick, ->](0.5, -1.6) -- (2.5, -1.6);
\begin{scope}[xshift=3cm]
\node[inner sep=3](B) at (0, 0.8) {$B$};
\node[inner sep=3](A0) at (0, 0) {$A_0$};
\node[inner sep=3](A1) at (0, -0.8) {$A_1$};
\node[inner sep=3](A) at (0, -2) {$\vdots$};
\node[inner sep=3](An) at (0, -3.2) {$A_n$};
\node[inner sep=3](C) at (0, -4) {$C$};
\path[draw, ->, dashed](B) -- (A0);
\path[dashed,draw, ->](A0) -- (A1);
\path[dashed,draw, ->](A1) -- (A);
\path[dashed,draw, ->](A) -- (An);
\path[draw, ->](An) -- (C);
\draw[->, dotted](B) to[in=45, out=-45] (C);
\end{scope}
\end{tikzpicture}
\tikzsetnextfilename{new-repos-line-add}
\begin{tikzpicture}
\node[draw, ellipse, inner sep=3](A0) at (0, -0.8) {$c_0: [0,n[$};
\begin{scope}[xshift=4cm, yshift=0.8cm, scale=2]
\node[inner sep=3, draw, ellipse](A1) at (0, -0) {$c_0: [0, i[$};
\node[inner sep=3, draw, ellipse](B1) at (0, -1.6) {$c_0: [i, n[$};
\node[inner sep=3, draw, ellipse](D1) at (0.8, -0.8) {$c_1: [0, m[$};
\path[draw, ->](A1) -- (B1) node[midway, left]{$c_0$};
\path[draw, ->](A1) -- (D1) node[midway, above right=-1mm]{$c_1$};
\path[draw, ->](D1) -- (B1) node[midway, below right=-1mm]{$c_1$};
\end{scope}
\draw[very thick, ->](1.5, -0.8) -- (3.2, -0.8);
\end{tikzpicture}
\tikzsetnextfilename{new-repos-line-del}
\begin{tikzpicture}
\node[draw, ellipse, inner sep=3](A0) at (0, -0.8) {$c_0: [0,n[$};
\begin{scope}[xshift=4cm, yshift=0.8cm,scale=2]
\node[inner sep=3, draw, ellipse](A1) at (0, -0) {$c_0: [0, i[$};
\node[inner sep=3, draw, ellipse](B1) at (0, -1.6) {$c_0: [i, n[$};
\node[inner sep=3, draw, ellipse](D1) at (0.8, -0.8) {$c_1: [0, m[$};
\path[draw, ->](A1) -- (B1) node[midway, left]{$c_0$};
\path[draw, ->](A1) -- (D1) node[midway, above right=-1mm]{$c_1$};
\path[draw, ->](D1) -- (B1) node[midway, below right=-1mm]{$c_1$};
\end{scope}
\draw[very thick, ->](1.5, -0.8) -- (3.2, -0.8);
\begin{scope}[xshift=9.5cm, yshift=0.8cm,scale=2]
\node[inner sep=3, draw, ellipse](A1) at (0, 0.8) {$c_0: [0, j[$};
\node[inner sep=3, draw, ellipse](A2) at (0, -0) {$c_0: [j, i[$};
\node[inner sep=3, draw, ellipse](B1) at (0, -2.4) {$c_0: [i, n[$};
\node[inner sep=3, draw, ellipse](D1) at (0.8, -0.8) {$c_1: [0, k[$};
\node[inner sep=3, draw, ellipse](D2) at (0.8, -1.6) {$c_1: [k, m[$};
\path[draw, ->, dashed](A1) -- (A2) node[midway, right]{$c_2$};
\path[draw, ->](A2) -- (B1) node[midway, left]{$c_0$};
\path[draw, ->, dashed](A2) -- (D1) node[midway, above right=-1mm]{$c_2$};
\path[draw, ->](D1) -- (D2) node[midway, right]{$c_1$};
\path[draw, ->](D2) -- (B1) node[midway, below right=-1mm]{$c_1$};
\end{scope}
\draw[very thick, ->](7, -0.8) -- (9, -0.8);
\end{tikzpicture}
\end{document}