Replace dot and ASCII graphs with svg images

RELNOTES: None.
PiperOrigin-RevId: 273474344
diff --git a/site/docs/build-ref.html b/site/docs/build-ref.html
index c204193..a02c46c 100644
--- a/site/docs/build-ref.html
+++ b/site/docs/build-ref.html
@@ -651,8 +651,8 @@
 
 <p>
   A target <code>X</code> is <i>actually dependent</i> on target
-  <code>Y</code> iff <code>Y</code> must be present, built and
-  up-to-date in order for <code>X</code> to be built correctly.
+  <code>Y</code> if and only if <code>Y</code> must be present, built
+  and up-to-date in order for <code>X</code> to be built correctly.
   "Built" could mean generated, processed, compiled, linked,
   archived, compressed, executed, or any of the other kinds of tasks
   that routinely occur during a build.
@@ -660,8 +660,8 @@
 
 <p>
   A target <code>X</code> has a <i>declared dependency</i> on target
-  <code>Y</code> iff there is a dependency edge from <code>X</code> to
-  <code>Y</code> in the package of <code>X</code>.
+  <code>Y</code> if and only if there is a dependency edge from <code>X</code>
+  to <code>Y</code> in the package of <code>X</code>.
 </p>
 
 <p>
@@ -753,11 +753,28 @@
 }</b>
 </pre>
 </div>
-<pre style="clear: both;">
-Declared dependency graph:  a --&gt; b --&gt; c
-
-Actual dependency graph:    a --&gt; b --&gt; c
-</pre>
+<table style='margin: auto; width: 100%'><tr>
+<td style='padding: 10px; text-align: center'>
+<!-- digraph G {
+  graph [size="4,4"];
+  node [shape=circle];
+  rankdir="LR";
+  a -> b -> c;
+} -->
+<img src="images/a_b_c.svg" alt="a_b_c.svg" style="margin-left=10;" />
+<p><i>Declared dependency graph</i></p>
+</td>
+<td style='padding: 10px; text-align: center'>
+<!-- digraph G {
+  graph [size="4,4"];
+  node [shape=circle];
+  rankdir="LR";
+  a -> b -> c;
+} -->
+<img src="images/a_b_c.svg" alt="a_b_c.svg" style="margin-left=10;" />
+<p><i>Actual dependency graph</i></p>
+</td>
+</tr></table>
 The declared dependencies overapproximate the actual dependencies.
 All is well.
 </div>
@@ -778,12 +795,29 @@
 </pre>
 </div>
 
-<pre style="clear: both;">
-Declared dependency graph:  a --&gt; b --&gt; c
-
-Actual dependency graph:    a --&gt; b --&gt;_c
-                             \_________/|
-</pre>
+<table style='margin: auto; width: 100%'><tr>
+<td style='padding: 10px; text-align: center'>
+<!-- digraph G {
+  graph [size="4,4"];
+  node [shape=circle];
+  rankdir="LR";
+  a -> b -> c;
+} -->
+<img src="images/a_b_c.svg" alt="a_b_c.svg" style="margin-left=10;" />
+<p><i>Declared dependency graph</i></p>
+</td>
+<td style='padding: 10; text-align: center'>
+<!-- digraph G {
+  graph [size="4,4"];
+  node [shape=circle];
+  rankdir="LR";
+  a -> b -> c;
+  a -> c [constraint=false];
+} -->
+<img src="images/a_b_c_ac.svg" alt="a_b_c_ac.svg" style="margin-left=10;" />
+<p><i>Actual dependency graph</i></p>
+</td>
+</tr></table>
 The declared dependencies no longer overapproximate the actual
 dependencies.  This may build ok, because the transitive closures of
 the two graphs are equal, but masks a problem: <code>a</code> has an
@@ -814,12 +848,31 @@
 }
 </pre>
 </div>
-<pre style="clear: both;">
-Declared dependency graph:  a --&gt; b     c
-
-Actual dependency graph:    a --&gt; b    _c
-                             \_________/|
-</pre>
+<table style='margin: auto; width: 100%'><tr>
+<td style='padding: 10px; text-align: center'>
+<!-- digraph G {
+  graph [size="4,4"];
+  node [shape=circle];
+  rankdir="LR";
+  a -> b;
+  b -> c [style=invis];
+} -->
+<img src="images/ab_c.svg" alt="ab_c.svg" style="margin-left=10;" />
+<p><i>Declared dependency graph</i></p>
+</td>
+<td style='padding: 10; text-align: center'>
+<!-- digraph G {
+  graph [size="4,4"];
+  node [shape=circle];
+  rankdir="LR";
+  a -> b;
+  b -> c [style=invis];
+  a -> c [constraint=false];
+} -->
+<img src="images/a_b_a_c.svg" alt="a_b_a_c.svg" style="margin-left=10;" />
+<p><i>Actual dependency graph</i></p>
+</td>
+</tr></table>
 <p>
   The declared dependency graph is now an underapproximation of the
   actual dependencies, even when transitively closed; the build is
diff --git a/site/docs/images/a_b_a_c.svg b/site/docs/images/a_b_a_c.svg
new file mode 100644
index 0000000..d38be07
--- /dev/null
+++ b/site/docs/images/a_b_a_c.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: G Pages: 1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="188pt" height="56pt" viewBox="0.00 0.00 188.00 55.76">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 51.757)">
+<title>G</title>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-51.757 184,-51.757 184,4 -4,4"/>
+<!-- a -->
+<g id="node1" class="node">
+<title>a</title>
+<ellipse fill="none" stroke="black" cx="18" cy="-29.757" rx="18" ry="18"/>
+<text text-anchor="middle" x="18" y="-26.057" font-family="Times,serif" font-size="14.00">a</text>
+</g>
+<!-- b -->
+<g id="node2" class="node">
+<title>b</title>
+<ellipse fill="none" stroke="black" cx="90" cy="-29.757" rx="18" ry="18"/>
+<text text-anchor="middle" x="90" y="-26.057" font-family="Times,serif" font-size="14.00">b</text>
+</g>
+<!-- a&#45;&gt;b -->
+<g id="edge1" class="edge">
+<title>a-&gt;b</title>
+<path fill="none" stroke="black" d="M36.1686,-29.757C43.869,-29.757 53.0257,-29.757 61.5834,-29.757"/>
+<polygon fill="black" stroke="black" points="61.5868,-33.2571 71.5867,-29.757 61.5867,-26.2571 61.5868,-33.2571"/>
+</g>
+<!-- c -->
+<g id="node3" class="node">
+<title>c</title>
+<ellipse fill="none" stroke="black" cx="162" cy="-29.757" rx="18" ry="18"/>
+<text text-anchor="middle" x="162" y="-26.057" font-family="Times,serif" font-size="14.00">c</text>
+</g>
+<!-- a&#45;&gt;c -->
+<g id="edge3" class="edge">
+<title>a-&gt;c</title>
+<path fill="none" stroke="black" d="M33.3269,-19.6799C43.7533,-13.4476 58.1264,-6.0321 72,-2.757 87.572,.919 92.428,.919 108,-2.757 118.2968,-5.1878 128.8688,-9.8992 137.8982,-14.7149"/>
+<polygon fill="black" stroke="black" points="136.2461,-17.8015 146.6731,-19.6799 139.6933,-11.7091 136.2461,-17.8015"/>
+</g>
+<!-- b&#45;&gt;c -->
+</g>
+</svg>
diff --git a/site/docs/images/a_b_c.svg b/site/docs/images/a_b_c.svg
new file mode 100644
index 0000000..acd948a
--- /dev/null
+++ b/site/docs/images/a_b_c.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: G Pages: 1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="188pt" height="44pt" viewBox="0.00 0.00 188.00 44.00">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
+<title>G</title>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-40 184,-40 184,4 -4,4"/>
+<!-- a -->
+<g id="node1" class="node">
+<title>a</title>
+<ellipse fill="none" stroke="black" cx="18" cy="-18" rx="18" ry="18"/>
+<text text-anchor="middle" x="18" y="-14.3" font-family="Times,serif" font-size="14.00">a</text>
+</g>
+<!-- b -->
+<g id="node2" class="node">
+<title>b</title>
+<ellipse fill="none" stroke="black" cx="90" cy="-18" rx="18" ry="18"/>
+<text text-anchor="middle" x="90" y="-14.3" font-family="Times,serif" font-size="14.00">b</text>
+</g>
+<!-- a&#45;&gt;b -->
+<g id="edge1" class="edge">
+<title>a-&gt;b</title>
+<path fill="none" stroke="black" d="M36.1686,-18C43.869,-18 53.0257,-18 61.5834,-18"/>
+<polygon fill="black" stroke="black" points="61.5868,-21.5001 71.5867,-18 61.5867,-14.5001 61.5868,-21.5001"/>
+</g>
+<!-- c -->
+<g id="node3" class="node">
+<title>c</title>
+<ellipse fill="none" stroke="black" cx="162" cy="-18" rx="18" ry="18"/>
+<text text-anchor="middle" x="162" y="-14.3" font-family="Times,serif" font-size="14.00">c</text>
+</g>
+<!-- b&#45;&gt;c -->
+<g id="edge2" class="edge">
+<title>b-&gt;c</title>
+<path fill="none" stroke="black" d="M108.1686,-18C115.869,-18 125.0257,-18 133.5834,-18"/>
+<polygon fill="black" stroke="black" points="133.5868,-21.5001 143.5867,-18 133.5867,-14.5001 133.5868,-21.5001"/>
+</g>
+</g>
+</svg>
diff --git a/site/docs/images/a_b_c_ac.svg b/site/docs/images/a_b_c_ac.svg
new file mode 100644
index 0000000..b099c53
--- /dev/null
+++ b/site/docs/images/a_b_c_ac.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: G Pages: 1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="188pt" height="56pt" viewBox="0.00 0.00 188.00 55.76">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 51.757)">
+<title>G</title>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-51.757 184,-51.757 184,4 -4,4"/>
+<!-- a -->
+<g id="node1" class="node">
+<title>a</title>
+<ellipse fill="none" stroke="black" cx="18" cy="-29.757" rx="18" ry="18"/>
+<text text-anchor="middle" x="18" y="-26.057" font-family="Times,serif" font-size="14.00">a</text>
+</g>
+<!-- b -->
+<g id="node2" class="node">
+<title>b</title>
+<ellipse fill="none" stroke="black" cx="90" cy="-29.757" rx="18" ry="18"/>
+<text text-anchor="middle" x="90" y="-26.057" font-family="Times,serif" font-size="14.00">b</text>
+</g>
+<!-- a&#45;&gt;b -->
+<g id="edge1" class="edge">
+<title>a-&gt;b</title>
+<path fill="none" stroke="black" d="M36.1686,-29.757C43.869,-29.757 53.0257,-29.757 61.5834,-29.757"/>
+<polygon fill="black" stroke="black" points="61.5868,-33.2571 71.5867,-29.757 61.5867,-26.2571 61.5868,-33.2571"/>
+</g>
+<!-- c -->
+<g id="node3" class="node">
+<title>c</title>
+<ellipse fill="none" stroke="black" cx="162" cy="-29.757" rx="18" ry="18"/>
+<text text-anchor="middle" x="162" y="-26.057" font-family="Times,serif" font-size="14.00">c</text>
+</g>
+<!-- a&#45;&gt;c -->
+<g id="edge3" class="edge">
+<title>a-&gt;c</title>
+<path fill="none" stroke="black" d="M33.3269,-19.6799C43.7533,-13.4476 58.1264,-6.0321 72,-2.757 87.572,.919 92.428,.919 108,-2.757 118.2968,-5.1878 128.8688,-9.8992 137.8982,-14.7149"/>
+<polygon fill="black" stroke="black" points="136.2461,-17.8015 146.6731,-19.6799 139.6933,-11.7091 136.2461,-17.8015"/>
+</g>
+<!-- b&#45;&gt;c -->
+<g id="edge2" class="edge">
+<title>b-&gt;c</title>
+<path fill="none" stroke="black" d="M108.1686,-29.757C115.869,-29.757 125.0257,-29.757 133.5834,-29.757"/>
+<polygon fill="black" stroke="black" points="133.5868,-33.2571 143.5867,-29.757 133.5867,-26.2571 133.5868,-33.2571"/>
+</g>
+</g>
+</svg>
diff --git a/site/docs/images/ab_c.svg b/site/docs/images/ab_c.svg
new file mode 100644
index 0000000..bcc4563
--- /dev/null
+++ b/site/docs/images/ab_c.svg
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: G Pages: 1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="188pt" height="44pt" viewBox="0.00 0.00 188.00 44.00">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
+<title>G</title>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-40 184,-40 184,4 -4,4"/>
+<!-- a -->
+<g id="node1" class="node">
+<title>a</title>
+<ellipse fill="none" stroke="black" cx="18" cy="-18" rx="18" ry="18"/>
+<text text-anchor="middle" x="18" y="-14.3" font-family="Times,serif" font-size="14.00">a</text>
+</g>
+<!-- b -->
+<g id="node2" class="node">
+<title>b</title>
+<ellipse fill="none" stroke="black" cx="90" cy="-18" rx="18" ry="18"/>
+<text text-anchor="middle" x="90" y="-14.3" font-family="Times,serif" font-size="14.00">b</text>
+</g>
+<!-- a&#45;&gt;b -->
+<g id="edge1" class="edge">
+<title>a-&gt;b</title>
+<path fill="none" stroke="black" d="M36.1686,-18C43.869,-18 53.0257,-18 61.5834,-18"/>
+<polygon fill="black" stroke="black" points="61.5868,-21.5001 71.5867,-18 61.5867,-14.5001 61.5868,-21.5001"/>
+</g>
+<!-- c -->
+<g id="node3" class="node">
+<title>c</title>
+<ellipse fill="none" stroke="black" cx="162" cy="-18" rx="18" ry="18"/>
+<text text-anchor="middle" x="162" y="-14.3" font-family="Times,serif" font-size="14.00">c</text>
+</g>
+<!-- b&#45;&gt;c -->
+</g>
+</svg>
diff --git a/site/docs/images/allpaths.svg b/site/docs/images/allpaths.svg
new file mode 100644
index 0000000..47d0ee3
--- /dev/null
+++ b/site/docs/images/allpaths.svg
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: allpaths Pages: 1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="152pt" height="288pt" viewBox="0.00 0.00 152.33 288.00">
+<g id="graph0" class="graph" transform="scale(.8456 .8456) rotate(0) translate(4 336.5928)">
+<title>allpaths</title>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-336.5928 176.1482,-336.5928 176.1482,4 -4,4"/>
+<!-- n1 -->
+<g id="node1" class="node">
+<title>n1</title>
+<ellipse fill="none" stroke="black" cx="40" cy="-312.4446" rx="18" ry="18"/>
+</g>
+<!-- n2 -->
+<g id="node2" class="node">
+<title>n2</title>
+<ellipse fill="pink" stroke="black" cx="41" cy="-236.1482" rx="18" ry="18"/>
+</g>
+<!-- n1&#45;&gt;n2 -->
+<g id="edge1" class="edge">
+<title>n1-&gt;n2</title>
+<path fill="none" stroke="black" d="M40.237,-294.3634C40.3532,-285.4965 40.4959,-274.6075 40.6264,-264.6554"/>
+<polygon fill="black" stroke="black" points="44.1298,-264.4091 40.7612,-254.364 37.1304,-264.3173 44.1298,-264.4091"/>
+</g>
+<!-- n3 -->
+<g id="node3" class="node">
+<title>n3</title>
+<ellipse fill="pink" stroke="black" cx="18" cy="-162" rx="18" ry="18"/>
+</g>
+<!-- n2&#45;&gt;n3 -->
+<g id="edge2" class="edge">
+<title>n2-&gt;n3</title>
+<path fill="none" stroke="black" d="M35.6655,-218.9508C32.9275,-210.1237 29.5274,-199.1624 26.4435,-189.2204"/>
+<polygon fill="black" stroke="black" points="29.6908,-187.8752 23.3852,-179.3611 23.0051,-189.9491 29.6908,-187.8752"/>
+</g>
+<!-- n10 -->
+<g id="node10" class="node">
+<title>n10</title>
+<ellipse fill="pink" stroke="black" cx="23" cy="-90" rx="18" ry="18"/>
+</g>
+<!-- n2&#45;&gt;n10 -->
+<g id="edge9" class="edge">
+<title>n2-&gt;n10</title>
+<path fill="none" stroke="black" d="M44.2389,-218.297C47.0603,-199.5961 49.9868,-169.4573 45,-144 43.1054,-134.328 39.4698,-124.2023 35.6916,-115.3671"/>
+<polygon fill="black" stroke="black" points="38.7737,-113.6893 31.4504,-106.033 32.4008,-116.5851 38.7737,-113.6893"/>
+</g>
+<!-- n3&#45;&gt;n10 -->
+<g id="edge10" class="edge">
+<title>n3-&gt;n10</title>
+<path fill="none" stroke="black" d="M19.2617,-143.8314C19.7965,-136.131 20.4323,-126.9743 21.0266,-118.4166"/>
+<polygon fill="black" stroke="black" points="24.52,-118.6317 21.7213,-108.4133 17.5368,-118.1467 24.52,-118.6317"/>
+</g>
+<!-- n4 -->
+<g id="node4" class="node">
+<title>n4</title>
+<ellipse fill="pink" stroke="black" cx="74" cy="-18" rx="18" ry="18"/>
+<text text-anchor="middle" x="74" y="-14.3" font-family="Times,serif" font-size="14.00">E</text>
+</g>
+<!-- n5 -->
+<g id="node5" class="node">
+<title>n5</title>
+<ellipse fill="pink" stroke="black" cx="96" cy="-236.1482" rx="18" ry="18"/>
+</g>
+<!-- n6 -->
+<g id="node6" class="node">
+<title>n6</title>
+<ellipse fill="pink" stroke="black" cx="114" cy="-162" rx="18" ry="18"/>
+</g>
+<!-- n5&#45;&gt;n6 -->
+<g id="edge5" class="edge">
+<title>n5-&gt;n6</title>
+<path fill="none" stroke="black" d="M100.2657,-218.5761C102.3577,-209.9588 104.9266,-199.3765 107.2745,-189.7046"/>
+<polygon fill="black" stroke="black" points="110.7446,-190.2464 109.7025,-179.7029 103.9421,-188.595 110.7446,-190.2464"/>
+</g>
+<!-- n6&#45;&gt;n4 -->
+<g id="edge6" class="edge">
+<title>n6-&gt;n4</title>
+<path fill="none" stroke="black" d="M106.6597,-145.2221C102.2549,-134.6847 96.7901,-120.7254 93,-108 86.8937,-87.4979 81.9754,-63.8091 78.6739,-45.8822"/>
+<polygon fill="black" stroke="black" points="82.0777,-45.033 76.8756,-35.8032 75.1866,-46.2626 82.0777,-45.033"/>
+</g>
+<!-- n9 -->
+<g id="node9" class="node">
+<title>n9</title>
+<ellipse fill="none" stroke="black" cx="120" cy="-90" rx="18" ry="18"/>
+</g>
+<!-- n6&#45;&gt;n9 -->
+<g id="edge8" class="edge">
+<title>n6-&gt;n9</title>
+<path fill="none" stroke="black" d="M115.5141,-143.8314C116.1558,-136.131 116.9188,-126.9743 117.6319,-118.4166"/>
+<polygon fill="black" stroke="black" points="121.1229,-118.6694 118.4656,-108.4133 114.1471,-118.088 121.1229,-118.6694"/>
+</g>
+<!-- n7 -->
+<g id="node7" class="node">
+<title>n7</title>
+<ellipse fill="pink" stroke="black" cx="96" cy="-312.4446" rx="20.2975" ry="20.2975"/>
+<text text-anchor="middle" x="96" y="-308.7446" font-family="Times,serif" font-size="14.00">S1</text>
+</g>
+<!-- n7&#45;&gt;n2 -->
+<g id="edge4" class="edge">
+<title>n7-&gt;n2</title>
+<path fill="none" stroke="black" d="M84.0658,-295.8894C76.3372,-285.1683 66.1629,-271.0544 57.6441,-259.2371"/>
+<polygon fill="black" stroke="black" points="60.4794,-257.1848 51.7924,-251.1195 54.801,-261.2782 60.4794,-257.1848"/>
+</g>
+<!-- n7&#45;&gt;n5 -->
+<g id="edge3" class="edge">
+<title>n7-&gt;n5</title>
+<path fill="none" stroke="black" d="M96,-291.9986C96,-283.5595 96,-273.6353 96,-264.5119"/>
+<polygon fill="black" stroke="black" points="99.5001,-264.3065 96,-254.3065 92.5001,-264.3065 99.5001,-264.3065"/>
+</g>
+<!-- n8 -->
+<g id="node8" class="node">
+<title>n8</title>
+<ellipse fill="pink" stroke="black" cx="152" cy="-236.1482" rx="20.2975" ry="20.2975"/>
+<text text-anchor="middle" x="152" y="-232.4482" font-family="Times,serif" font-size="14.00">S2</text>
+</g>
+<!-- n8&#45;&gt;n6 -->
+<g id="edge7" class="edge">
+<title>n8-&gt;n6</title>
+<path fill="none" stroke="black" d="M142.8013,-218.199C138.0739,-208.9747 132.2319,-197.5753 127.0475,-187.4592"/>
+<polygon fill="black" stroke="black" points="130.012,-185.5695 122.3363,-178.2664 123.7824,-188.7621 130.012,-185.5695"/>
+</g>
+<!-- n10&#45;&gt;n4 -->
+<g id="edge11" class="edge">
+<title>n10-&gt;n4</title>
+<path fill="none" stroke="black" d="M33.5672,-75.0816C40.4738,-65.3311 49.6369,-52.395 57.4935,-41.3032"/>
+<polygon fill="black" stroke="black" points="60.5222,-43.0827 63.4463,-32.8993 54.81,-39.0365 60.5222,-43.0827"/>
+</g>
+<!-- n11 -->
+<g id="node11" class="node">
+<title>n11</title>
+<ellipse fill="none" stroke="black" cx="20" cy="-18" rx="18" ry="18"/>
+</g>
+<!-- n10&#45;&gt;n11 -->
+<g id="edge12" class="edge">
+<title>n10-&gt;n11</title>
+<path fill="none" stroke="black" d="M22.243,-71.8314C21.9221,-64.131 21.5406,-54.9743 21.184,-46.4166"/>
+<polygon fill="black" stroke="black" points="24.6806,-46.2589 20.7672,-36.4133 17.6867,-46.5503 24.6806,-46.2589"/>
+</g>
+</g>
+</svg>
diff --git a/site/docs/images/deps.svg b/site/docs/images/deps.svg
new file mode 100644
index 0000000..4354222
--- /dev/null
+++ b/site/docs/images/deps.svg
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: G1 Pages: 1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="157pt" height="246pt" viewBox="0.00 0.00 156.50 246.00">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 242)">
+<title>G1</title>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-242 152.5,-242 152.5,4 -4,4"/>
+<!-- r1 -->
+<g id="node1" class="node">
+<title>r1</title>
+<polygon fill="none" stroke="black" points="88.5,-173 34.5,-173 34.5,-137 88.5,-137 88.5,-173"/>
+<text text-anchor="middle" x="61.5" y="-152.5" font-family="Courier,monospace" font-weight="bold" font-size="10.00" fill="#006000">rule</text>
+</g>
+<!-- s1 -->
+<g id="node3" class="node">
+<title>s1</title>
+<ellipse fill="none" stroke="black" cx="14.5" cy="-223.5" rx="14.5" ry="14.5"/>
+<text text-anchor="middle" x="14.5" y="-221" font-family="Courier,monospace" font-weight="bold" font-size="10.00" fill="#006000">in</text>
+</g>
+<!-- r1&#45;&gt;s1 -->
+<g id="edge1" class="edge">
+<title>r1-&gt;s1</title>
+<path fill="none" stroke="black" d="M48.9049,-173.3567C42.6407,-182.4865 35.0482,-193.5522 28.5909,-202.9632"/>
+<polygon fill="black" stroke="black" points="25.5999,-201.1362 22.8282,-211.3621 31.3719,-205.0965 25.5999,-201.1362"/>
+</g>
+<!-- s2 -->
+<g id="node4" class="node">
+<title>s2</title>
+<ellipse fill="none" stroke="black" cx="61.5" cy="-223.5" rx="14.5" ry="14.5"/>
+<text text-anchor="middle" x="61.5" y="-221" font-family="Courier,monospace" font-weight="bold" font-size="10.00" fill="#006000">in</text>
+</g>
+<!-- r1&#45;&gt;s2 -->
+<g id="edge2" class="edge">
+<title>r1-&gt;s2</title>
+<path fill="none" stroke="black" d="M61.5,-173.3567C61.5,-181.1589 61.5,-190.3749 61.5,-198.7638"/>
+<polygon fill="black" stroke="black" points="58.0001,-198.7787 61.5,-208.7787 65.0001,-198.7788 58.0001,-198.7787"/>
+</g>
+<!-- s3 -->
+<g id="node5" class="node">
+<title>s3</title>
+<ellipse fill="none" stroke="black" cx="108.5" cy="-223.5" rx="14.5" ry="14.5"/>
+<text text-anchor="middle" x="108.5" y="-221" font-family="Courier,monospace" font-weight="bold" font-size="10.00" fill="#006000">in</text>
+</g>
+<!-- r1&#45;&gt;s3 -->
+<g id="edge3" class="edge">
+<title>r1-&gt;s3</title>
+<path fill="none" stroke="black" d="M74.0951,-173.3567C80.3593,-182.4865 87.9518,-193.5522 94.4091,-202.9632"/>
+<polygon fill="black" stroke="black" points="91.6281,-205.0965 100.1718,-211.3621 97.4001,-201.1362 91.6281,-205.0965"/>
+</g>
+<!-- r2 -->
+<g id="node2" class="node">
+<title>r2</title>
+<polygon fill="none" stroke="black" points="148.5,-101 94.5,-101 94.5,-65 148.5,-65 148.5,-101"/>
+<text text-anchor="middle" x="121.5" y="-80.5" font-family="Courier,monospace" font-weight="bold" font-size="10.00" fill="#006000">rule</text>
+</g>
+<!-- r2&#45;&gt;r1 -->
+<g id="edge5" class="edge">
+<title>r2-&gt;r1</title>
+<path fill="none" stroke="black" d="M106.3595,-101.1686C99.3783,-109.546 90.9609,-119.6469 83.3124,-128.8251"/>
+<polygon fill="black" stroke="black" points="80.5575,-126.6638 76.8444,-136.5867 85.9351,-131.1452 80.5575,-126.6638"/>
+</g>
+<!-- s4 -->
+<g id="node6" class="node">
+<title>s4</title>
+<ellipse fill="none" stroke="black" cx="121.5" cy="-155" rx="14.5" ry="14.5"/>
+<text text-anchor="middle" x="121.5" y="-152.5" font-family="Courier,monospace" font-weight="bold" font-size="10.00" fill="#006000">in</text>
+</g>
+<!-- r2&#45;&gt;s4 -->
+<g id="edge4" class="edge">
+<title>r2-&gt;s4</title>
+<path fill="none" stroke="black" d="M121.5,-101.1686C121.5,-110.0069 121.5,-120.7634 121.5,-130.331"/>
+<polygon fill="black" stroke="black" points="118.0001,-130.4622 121.5,-140.4622 125.0001,-130.4623 118.0001,-130.4622"/>
+</g>
+<!-- o1 -->
+<g id="node7" class="node">
+<title>o1</title>
+<ellipse fill="none" stroke="black" cx="61.5" cy="-83" rx="14.5" ry="14.5"/>
+<text text-anchor="middle" x="61.5" y="-80.5" font-family="Courier,monospace" font-weight="bold" font-size="10.00" fill="#006000">out</text>
+</g>
+<!-- o1&#45;&gt;r1 -->
+<g id="edge6" class="edge">
+<title>o1-&gt;r1</title>
+<path fill="none" stroke="black" d="M61.5,-97.5703C61.5,-105.8989 61.5,-116.6335 61.5,-126.564"/>
+<polygon fill="black" stroke="black" points="58.0001,-126.872 61.5,-136.872 65.0001,-126.8721 58.0001,-126.872"/>
+</g>
+<!-- o2 -->
+<g id="node8" class="node">
+<title>o2</title>
+<ellipse fill="none" stroke="black" cx="121.5" cy="-14.5" rx="14.5" ry="14.5"/>
+<text text-anchor="middle" x="121.5" y="-12" font-family="Courier,monospace" font-weight="bold" font-size="10.00" fill="#006000">out</text>
+</g>
+<!-- o2&#45;&gt;r2 -->
+<g id="edge7" class="edge">
+<title>o2-&gt;r2</title>
+<path fill="none" stroke="black" d="M121.5,-29.0271C121.5,-36.5355 121.5,-45.9623 121.5,-54.8278"/>
+<polygon fill="black" stroke="black" points="118.0001,-54.8287 121.5,-64.8287 125.0001,-54.8287 118.0001,-54.8287"/>
+</g>
+</g>
+</svg>
diff --git a/site/docs/images/graph_ex_1.svg b/site/docs/images/graph_ex_1.svg
new file mode 100644
index 0000000..dd7427f
--- /dev/null
+++ b/site/docs/images/graph_ex_1.svg
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: mygraph Pages: 1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="710pt" height="332pt" viewBox="0.00 0.00 709.50 332.00">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
+<title>mygraph</title>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-328 705.5,-328 705.5,4 -4,4"/>
+<!-- //net/proto_compiler:protocol&#45;compiler -->
+<g id="node1" class="node">
+<title>//net/proto_compiler:protocol-compiler</title>
+<polygon fill="none" stroke="black" points="418,-324 188,-324 188,-288 418,-288 418,-324"/>
+<text text-anchor="middle" x="303" y="-302.3" font-family="Times,serif" font-size="14.00">//net/proto_compiler:protocol-compiler</text>
+</g>
+<!-- //net/proto_compiler:util -->
+<g id="node2" class="node">
+<title>//net/proto_compiler:util</title>
+<polygon fill="none" stroke="black" points="150,-180 0,-180 0,-144 150,-144 150,-180"/>
+<text text-anchor="middle" x="75" y="-158.3" font-family="Times,serif" font-size="14.00">//net/proto_compiler:util</text>
+</g>
+<!-- //net/proto_compiler:protocol&#45;compiler&#45;&gt;//net/proto_compiler:util -->
+<g id="edge1" class="edge">
+<title>//net/proto_compiler:protocol-compiler-&gt;//net/proto_compiler:util</title>
+<path fill="none" stroke="black" d="M239.5865,-287.9961C214.5565,-279.2804 186.2795,-267.3314 163,-252 136.491,-234.5418 111.7343,-207.9214 95.2752,-188.1561"/>
+<polygon fill="black" stroke="black" points="97.7805,-185.69 88.7485,-180.1516 92.3553,-190.1136 97.7805,-185.69"/>
+</g>
+<!-- //net/proto_compiler:protocol&#45;compiler&#45;lib -->
+<g id="node3" class="node">
+<title>//net/proto_compiler:protocol-compiler-lib</title>
+<polygon fill="none" stroke="black" points="701.5,-252 452.5,-252 452.5,-216 701.5,-216 701.5,-252"/>
+<text text-anchor="middle" x="577" y="-230.3" font-family="Times,serif" font-size="14.00">//net/proto_compiler:protocol-compiler-lib</text>
+</g>
+<!-- //net/proto_compiler:protocol&#45;compiler&#45;&gt;//net/proto_compiler:protocol&#45;compiler&#45;lib -->
+<g id="edge2" class="edge">
+<title>//net/proto_compiler:protocol-compiler-&gt;//net/proto_compiler:protocol-compiler-lib</title>
+<path fill="none" stroke="black" d="M371.7881,-287.9243C410.3041,-277.8033 458.4771,-265.1447 498.4684,-254.6361"/>
+<polygon fill="black" stroke="black" points="499.4015,-258.0098 508.1836,-252.0831 497.6224,-251.2396 499.4015,-258.0098"/>
+</g>
+<!-- //net/proto2/bridge/public:compiler_upgrader -->
+<g id="node4" class="node">
+<title>//net/proto2/bridge/public:compiler_upgrader</title>
+<polygon fill="none" stroke="black" points="434.5,-252 171.5,-252 171.5,-216 434.5,-216 434.5,-252"/>
+<text text-anchor="middle" x="303" y="-230.3" font-family="Times,serif" font-size="14.00">//net/proto2/bridge/public:compiler_upgrader</text>
+</g>
+<!-- //net/proto_compiler:protocol&#45;compiler&#45;&gt;//net/proto2/bridge/public:compiler_upgrader -->
+<g id="edge3" class="edge">
+<title>//net/proto_compiler:protocol-compiler-&gt;//net/proto2/bridge/public:compiler_upgrader</title>
+<path fill="none" stroke="black" d="M303,-287.8314C303,-280.131 303,-270.9743 303,-262.4166"/>
+<polygon fill="black" stroke="black" points="306.5001,-262.4132 303,-252.4133 299.5001,-262.4133 306.5001,-262.4132"/>
+</g>
+<!-- //net/proto_compiler:parser -->
+<g id="node6" class="node">
+<title>//net/proto_compiler:parser</title>
+<polygon fill="none" stroke="black" points="548.5,-108 383.5,-108 383.5,-72 548.5,-72 548.5,-108"/>
+<text text-anchor="middle" x="466" y="-86.3" font-family="Times,serif" font-size="14.00">//net/proto_compiler:parser</text>
+</g>
+<!-- //net/proto_compiler:util&#45;&gt;//net/proto_compiler:parser -->
+<g id="edge9" class="edge">
+<title>//net/proto_compiler:util-&gt;//net/proto_compiler:parser</title>
+<path fill="none" stroke="black" d="M150.0776,-145.7681C153.0893,-145.1626 156.0723,-144.571 159,-144 230.8248,-129.9926 312.4276,-115.7165 373.4389,-105.3638"/>
+<polygon fill="black" stroke="black" points="374.1563,-108.7922 383.4317,-103.672 372.9878,-101.8905 374.1563,-108.7922"/>
+</g>
+<!-- //net/proto_compiler:proto&#45;min&#45;lib -->
+<g id="node5" class="node">
+<title>//net/proto_compiler:proto-min-lib</title>
+<polygon fill="none" stroke="black" points="700,-180 494,-180 494,-144 700,-144 700,-180"/>
+<text text-anchor="middle" x="597" y="-158.3" font-family="Times,serif" font-size="14.00">//net/proto_compiler:proto-min-lib</text>
+</g>
+<!-- //net/proto_compiler:protocol&#45;compiler&#45;lib&#45;&gt;//net/proto_compiler:proto&#45;min&#45;lib -->
+<g id="edge11" class="edge">
+<title>//net/proto_compiler:protocol-compiler-lib-&gt;//net/proto_compiler:proto-min-lib</title>
+<path fill="none" stroke="black" d="M582.0468,-215.8314C584.2094,-208.0463 586.7853,-198.7729 589.1848,-190.1347"/>
+<polygon fill="black" stroke="black" points="592.581,-190.9852 591.8852,-180.4133 585.8364,-189.1117 592.581,-190.9852"/>
+</g>
+<!-- //net/proto_compiler:protocol&#45;compiler&#45;lib&#45;&gt;//net/proto_compiler:parser -->
+<g id="edge10" class="edge">
+<title>//net/proto_compiler:protocol-compiler-lib-&gt;//net/proto_compiler:parser</title>
+<path fill="none" stroke="black" d="M529.6391,-215.7791C513.2165,-207.2457 496.1464,-195.4806 485,-180 472.1477,-162.1502 467.6252,-137.4553 466.1895,-118.448"/>
+<polygon fill="black" stroke="black" points="469.6758,-118.0892 465.6686,-108.2814 462.685,-118.4475 469.6758,-118.0892"/>
+</g>
+<!-- //net/proto2/bridge/internal:compiler_upgrader -->
+<g id="node8" class="node">
+<title>//net/proto2/bridge/internal:compiler_upgrader</title>
+<polygon fill="none" stroke="black" points="438,-180 168,-180 168,-144 438,-144 438,-180"/>
+<text text-anchor="middle" x="303" y="-158.3" font-family="Times,serif" font-size="14.00">//net/proto2/bridge/internal:compiler_upgrader</text>
+</g>
+<!-- //net/proto2/bridge/public:compiler_upgrader&#45;&gt;//net/proto2/bridge/internal:compiler_upgrader -->
+<g id="edge12" class="edge">
+<title>//net/proto2/bridge/public:compiler_upgrader-&gt;//net/proto2/bridge/internal:compiler_upgrader</title>
+<path fill="none" stroke="black" d="M297.0476,-215.8314C296.2972,-208.131 296.0763,-198.9743 296.3849,-190.4166"/>
+<polygon fill="black" stroke="black" points="299.8792,-190.6161 297.024,-180.4133 292.8935,-190.1697 299.8792,-190.6161"/>
+</g>
+<!-- //net/proto_compiler:proto&#45;min&#45;lib&#45;&gt;//net/proto_compiler:parser -->
+<g id="edge4" class="edge">
+<title>//net/proto_compiler:proto-min-lib-&gt;//net/proto_compiler:parser</title>
+<path fill="none" stroke="black" d="M563.9432,-143.8314C547.0323,-134.5368 526.2615,-123.1208 508.2059,-113.1971"/>
+<polygon fill="black" stroke="black" points="509.4957,-109.9122 499.0463,-108.1628 506.124,-116.0468 509.4957,-109.9122"/>
+</g>
+<!-- //util/regexp:regexp -->
+<g id="node7" class="node">
+<title>//util/regexp:regexp</title>
+<polygon fill="none" stroke="black" points="582.5,-36 459.5,-36 459.5,0 582.5,0 582.5,-36"/>
+<text text-anchor="middle" x="521" y="-14.3" font-family="Times,serif" font-size="14.00">//util/regexp:regexp</text>
+</g>
+<!-- //net/proto_compiler:proto&#45;min&#45;lib&#45;&gt;//util/regexp:regexp -->
+<g id="edge5" class="edge">
+<title>//net/proto_compiler:proto-min-lib-&gt;//util/regexp:regexp</title>
+<path fill="none" stroke="black" d="M590.352,-143.9306C583.2667,-125.4072 571.2598,-95.9968 558,-72 552.9416,-62.8456 546.7384,-53.2943 540.8671,-44.8146"/>
+<polygon fill="black" stroke="black" points="543.5648,-42.5677 534.9308,-36.4273 537.8511,-46.6117 543.5648,-42.5677"/>
+</g>
+<!-- //net/proto_compiler:parser&#45;&gt;//util/regexp:regexp -->
+<g id="edge8" class="edge">
+<title>//net/proto_compiler:parser-&gt;//util/regexp:regexp</title>
+<path fill="none" stroke="black" d="M479.8788,-71.8314C486.2136,-63.5386 493.8384,-53.557 500.7926,-44.4533"/>
+<polygon fill="black" stroke="black" points="503.6452,-46.4847 506.9343,-36.4133 498.0825,-42.2353 503.6452,-46.4847"/>
+</g>
+<!-- //net/proto2/bridge/internal:compiler_upgrader&#45;&gt;//net/proto2/bridge/public:compiler_upgrader -->
+<g id="edge7" class="edge">
+<title>//net/proto2/bridge/internal:compiler_upgrader-&gt;//net/proto2/bridge/public:compiler_upgrader</title>
+<path fill="none" stroke="black" d="M308.976,-180.4133C309.7071,-188.0593 309.9203,-197.1084 309.6155,-205.5726"/>
+<polygon fill="black" stroke="black" points="306.1048,-205.6264 308.9524,-215.8314 313.0902,-206.078 306.1048,-205.6264"/>
+</g>
+<!-- //net/proto2/bridge/internal:compiler_upgrader&#45;&gt;//net/proto_compiler:parser -->
+<g id="edge6" class="edge">
+<title>//net/proto2/bridge/internal:compiler_upgrader-&gt;//net/proto_compiler:parser</title>
+<path fill="none" stroke="black" d="M344.1318,-143.8314C365.9321,-134.2018 392.8878,-122.295 415.9004,-112.1299"/>
+<polygon fill="black" stroke="black" points="417.4308,-115.2802 425.164,-108.038 414.6024,-108.877 417.4308,-115.2802"/>
+</g>
+</g>
+</svg>
diff --git a/site/docs/images/out-ranked.svg b/site/docs/images/out-ranked.svg
new file mode 100644
index 0000000..07e9680
--- /dev/null
+++ b/site/docs/images/out-ranked.svg
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: mygraph Pages: 1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="139pt" height="260pt" viewBox="0.00 0.00 138.50 260.00">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
+<title>mygraph</title>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-256 134.5,-256 134.5,4 -4,4"/>
+<!-- //a:a -->
+<g id="node1" class="node">
+<title>//a:a</title>
+<polygon fill="none" stroke="black" points="55,-108 1,-108 1,-72 55,-72 55,-108"/>
+<text text-anchor="middle" x="28" y="-86.3" font-family="Times,serif" font-size="14.00">//a:a</text>
+</g>
+<!-- //a:a.cc -->
+<g id="node2" class="node">
+<title>//a:a.cc</title>
+<polygon fill="none" stroke="black" points="56,-36 0,-36 0,0 56,0 56,-36"/>
+<text text-anchor="middle" x="28" y="-14.3" font-family="Times,serif" font-size="14.00">//a:a.cc</text>
+</g>
+<!-- //a:a&#45;&gt;//a:a.cc -->
+<g id="edge1" class="edge">
+<title>//a:a-&gt;//a:a.cc</title>
+<path fill="none" stroke="black" d="M28,-71.8314C28,-64.131 28,-54.9743 28,-46.4166"/>
+<polygon fill="black" stroke="black" points="31.5001,-46.4132 28,-36.4133 24.5001,-46.4133 31.5001,-46.4132"/>
+</g>
+<!-- //b:b -->
+<g id="node3" class="node">
+<title>//b:b</title>
+<polygon fill="none" stroke="black" points="110,-180 56,-180 56,-144 110,-144 110,-180"/>
+<text text-anchor="middle" x="83" y="-158.3" font-family="Times,serif" font-size="14.00">//b:b</text>
+</g>
+<!-- //b:b&#45;&gt;//a:a -->
+<g id="edge2" class="edge">
+<title>//b:b-&gt;//a:a</title>
+<path fill="none" stroke="black" d="M69.1212,-143.8314C62.7864,-135.5386 55.1616,-125.557 48.2074,-116.4533"/>
+<polygon fill="black" stroke="black" points="50.9175,-114.2353 42.0657,-108.4133 45.3548,-118.4847 50.9175,-114.2353"/>
+</g>
+<!-- //b:b.cc -->
+<g id="node4" class="node">
+<title>//b:b.cc</title>
+<polygon fill="none" stroke="black" points="130.5,-108 73.5,-108 73.5,-72 130.5,-72 130.5,-108"/>
+<text text-anchor="middle" x="102" y="-86.3" font-family="Times,serif" font-size="14.00">//b:b.cc</text>
+</g>
+<!-- //b:b&#45;&gt;//b:b.cc -->
+<g id="edge3" class="edge">
+<title>//b:b-&gt;//b:b.cc</title>
+<path fill="none" stroke="black" d="M87.7945,-143.8314C89.8489,-136.0463 92.296,-126.7729 94.5756,-118.1347"/>
+<polygon fill="black" stroke="black" points="97.9735,-118.9753 97.1409,-108.4133 91.2052,-117.1892 97.9735,-118.9753"/>
+</g>
+<!-- //c:c -->
+<g id="node5" class="node">
+<title>//c:c</title>
+<polygon fill="none" stroke="black" points="82,-252 28,-252 28,-216 82,-216 82,-252"/>
+<text text-anchor="middle" x="55" y="-230.3" font-family="Times,serif" font-size="14.00">//c:c</text>
+</g>
+<!-- //c:c&#45;&gt;//a:a -->
+<g id="edge5" class="edge">
+<title>//c:c-&gt;//a:a</title>
+<path fill="none" stroke="black" d="M51.5804,-215.7623C46.9549,-191.0928 38.6612,-146.8598 33.245,-117.9731"/>
+<polygon fill="black" stroke="black" points="36.6748,-117.2733 31.3918,-108.0896 29.7947,-118.5634 36.6748,-117.2733"/>
+</g>
+<!-- //c:c&#45;&gt;//b:b -->
+<g id="edge4" class="edge">
+<title>//c:c-&gt;//b:b</title>
+<path fill="none" stroke="black" d="M62.0656,-215.8314C65.126,-207.9617 68.7779,-198.5712 72.1682,-189.8533"/>
+<polygon fill="black" stroke="black" points="75.4768,-191.0019 75.8393,-180.4133 68.9527,-188.4647 75.4768,-191.0019"/>
+</g>
+</g>
+</svg>
diff --git a/site/docs/images/somepath1.svg b/site/docs/images/somepath1.svg
new file mode 100644
index 0000000..5e5f881
--- /dev/null
+++ b/site/docs/images/somepath1.svg
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: somepath1 Pages: 1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="152pt" height="288pt" viewBox="0.00 0.00 152.33 288.00">
+<g id="graph0" class="graph" transform="scale(.8456 .8456) rotate(0) translate(4 336.5928)">
+<title>somepath1</title>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-336.5928 176.1482,-336.5928 176.1482,4 -4,4"/>
+<!-- n1 -->
+<g id="node1" class="node">
+<title>n1</title>
+<ellipse fill="none" stroke="black" cx="40" cy="-312.4446" rx="18" ry="18"/>
+</g>
+<!-- n2 -->
+<g id="node2" class="node">
+<title>n2</title>
+<ellipse fill="pink" stroke="black" cx="41" cy="-236.1482" rx="18" ry="18"/>
+</g>
+<!-- n1&#45;&gt;n2 -->
+<g id="edge1" class="edge">
+<title>n1-&gt;n2</title>
+<path fill="none" stroke="black" d="M40.237,-294.3634C40.3532,-285.4965 40.4959,-274.6075 40.6264,-264.6554"/>
+<polygon fill="black" stroke="black" points="44.1298,-264.4091 40.7612,-254.364 37.1304,-264.3173 44.1298,-264.4091"/>
+</g>
+<!-- n3 -->
+<g id="node3" class="node">
+<title>n3</title>
+<ellipse fill="pink" stroke="black" cx="18" cy="-162" rx="18" ry="18"/>
+</g>
+<!-- n2&#45;&gt;n3 -->
+<g id="edge2" class="edge">
+<title>n2-&gt;n3</title>
+<path fill="none" stroke="black" d="M35.6655,-218.9508C32.9275,-210.1237 29.5274,-199.1624 26.4435,-189.2204"/>
+<polygon fill="black" stroke="black" points="29.6908,-187.8752 23.3852,-179.3611 23.0051,-189.9491 29.6908,-187.8752"/>
+</g>
+<!-- n10 -->
+<g id="node10" class="node">
+<title>n10</title>
+<ellipse fill="pink" stroke="black" cx="23" cy="-90" rx="18" ry="18"/>
+</g>
+<!-- n2&#45;&gt;n10 -->
+<g id="edge9" class="edge">
+<title>n2-&gt;n10</title>
+<path fill="none" stroke="black" d="M44.2389,-218.297C47.0603,-199.5961 49.9868,-169.4573 45,-144 43.1054,-134.328 39.4698,-124.2023 35.6916,-115.3671"/>
+<polygon fill="black" stroke="black" points="38.7737,-113.6893 31.4504,-106.033 32.4008,-116.5851 38.7737,-113.6893"/>
+</g>
+<!-- n3&#45;&gt;n10 -->
+<g id="edge10" class="edge">
+<title>n3-&gt;n10</title>
+<path fill="none" stroke="black" d="M19.2617,-143.8314C19.7965,-136.131 20.4323,-126.9743 21.0266,-118.4166"/>
+<polygon fill="black" stroke="black" points="24.52,-118.6317 21.7213,-108.4133 17.5368,-118.1467 24.52,-118.6317"/>
+</g>
+<!-- n4 -->
+<g id="node4" class="node">
+<title>n4</title>
+<ellipse fill="pink" stroke="black" cx="74" cy="-18" rx="18" ry="18"/>
+<text text-anchor="middle" x="74" y="-14.3" font-family="Times,serif" font-size="14.00">E</text>
+</g>
+<!-- n5 -->
+<g id="node5" class="node">
+<title>n5</title>
+<ellipse fill="none" stroke="black" cx="96" cy="-236.1482" rx="18" ry="18"/>
+</g>
+<!-- n6 -->
+<g id="node6" class="node">
+<title>n6</title>
+<ellipse fill="none" stroke="black" cx="114" cy="-162" rx="18" ry="18"/>
+</g>
+<!-- n5&#45;&gt;n6 -->
+<g id="edge5" class="edge">
+<title>n5-&gt;n6</title>
+<path fill="none" stroke="black" d="M100.2657,-218.5761C102.3577,-209.9588 104.9266,-199.3765 107.2745,-189.7046"/>
+<polygon fill="black" stroke="black" points="110.7446,-190.2464 109.7025,-179.7029 103.9421,-188.595 110.7446,-190.2464"/>
+</g>
+<!-- n6&#45;&gt;n4 -->
+<g id="edge6" class="edge">
+<title>n6-&gt;n4</title>
+<path fill="none" stroke="black" d="M106.6597,-145.2221C102.2549,-134.6847 96.7901,-120.7254 93,-108 86.8937,-87.4979 81.9754,-63.8091 78.6739,-45.8822"/>
+<polygon fill="black" stroke="black" points="82.0777,-45.033 76.8756,-35.8032 75.1866,-46.2626 82.0777,-45.033"/>
+</g>
+<!-- n9 -->
+<g id="node9" class="node">
+<title>n9</title>
+<ellipse fill="none" stroke="black" cx="120" cy="-90" rx="18" ry="18"/>
+</g>
+<!-- n6&#45;&gt;n9 -->
+<g id="edge8" class="edge">
+<title>n6-&gt;n9</title>
+<path fill="none" stroke="black" d="M115.5141,-143.8314C116.1558,-136.131 116.9188,-126.9743 117.6319,-118.4166"/>
+<polygon fill="black" stroke="black" points="121.1229,-118.6694 118.4656,-108.4133 114.1471,-118.088 121.1229,-118.6694"/>
+</g>
+<!-- n7 -->
+<g id="node7" class="node">
+<title>n7</title>
+<ellipse fill="pink" stroke="black" cx="96" cy="-312.4446" rx="20.2975" ry="20.2975"/>
+<text text-anchor="middle" x="96" y="-308.7446" font-family="Times,serif" font-size="14.00">S1</text>
+</g>
+<!-- n7&#45;&gt;n2 -->
+<g id="edge4" class="edge">
+<title>n7-&gt;n2</title>
+<path fill="none" stroke="black" d="M84.0658,-295.8894C76.3372,-285.1683 66.1629,-271.0544 57.6441,-259.2371"/>
+<polygon fill="black" stroke="black" points="60.4794,-257.1848 51.7924,-251.1195 54.801,-261.2782 60.4794,-257.1848"/>
+</g>
+<!-- n7&#45;&gt;n5 -->
+<g id="edge3" class="edge">
+<title>n7-&gt;n5</title>
+<path fill="none" stroke="black" d="M96,-291.9986C96,-283.5595 96,-273.6353 96,-264.5119"/>
+<polygon fill="black" stroke="black" points="99.5001,-264.3065 96,-254.3065 92.5001,-264.3065 99.5001,-264.3065"/>
+</g>
+<!-- n8 -->
+<g id="node8" class="node">
+<title>n8</title>
+<ellipse fill="none" stroke="black" cx="152" cy="-236.1482" rx="20.2975" ry="20.2975"/>
+<text text-anchor="middle" x="152" y="-232.4482" font-family="Times,serif" font-size="14.00">S2</text>
+</g>
+<!-- n8&#45;&gt;n6 -->
+<g id="edge7" class="edge">
+<title>n8-&gt;n6</title>
+<path fill="none" stroke="black" d="M142.8013,-218.199C138.0739,-208.9747 132.2319,-197.5753 127.0475,-187.4592"/>
+<polygon fill="black" stroke="black" points="130.012,-185.5695 122.3363,-178.2664 123.7824,-188.7621 130.012,-185.5695"/>
+</g>
+<!-- n10&#45;&gt;n4 -->
+<g id="edge11" class="edge">
+<title>n10-&gt;n4</title>
+<path fill="none" stroke="black" d="M33.5672,-75.0816C40.4738,-65.3311 49.6369,-52.395 57.4935,-41.3032"/>
+<polygon fill="black" stroke="black" points="60.5222,-43.0827 63.4463,-32.8993 54.81,-39.0365 60.5222,-43.0827"/>
+</g>
+<!-- n11 -->
+<g id="node11" class="node">
+<title>n11</title>
+<ellipse fill="none" stroke="black" cx="20" cy="-18" rx="18" ry="18"/>
+</g>
+<!-- n10&#45;&gt;n11 -->
+<g id="edge12" class="edge">
+<title>n10-&gt;n11</title>
+<path fill="none" stroke="black" d="M22.243,-71.8314C21.9221,-64.131 21.5406,-54.9743 21.184,-46.4166"/>
+<polygon fill="black" stroke="black" points="24.6806,-46.2589 20.7672,-36.4133 17.6867,-46.5503 24.6806,-46.2589"/>
+</g>
+</g>
+</svg>
diff --git a/site/docs/images/somepath2.svg b/site/docs/images/somepath2.svg
new file mode 100644
index 0000000..911f2c9
--- /dev/null
+++ b/site/docs/images/somepath2.svg
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: somepath2 Pages: 1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="152pt" height="288pt" viewBox="0.00 0.00 152.33 288.00">
+<g id="graph0" class="graph" transform="scale(.8456 .8456) rotate(0) translate(4 336.5928)">
+<title>somepath2</title>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-336.5928 176.1482,-336.5928 176.1482,4 -4,4"/>
+<!-- n1 -->
+<g id="node1" class="node">
+<title>n1</title>
+<ellipse fill="none" stroke="black" cx="40" cy="-312.4446" rx="18" ry="18"/>
+</g>
+<!-- n2 -->
+<g id="node2" class="node">
+<title>n2</title>
+<ellipse fill="none" stroke="black" cx="41" cy="-236.1482" rx="18" ry="18"/>
+</g>
+<!-- n1&#45;&gt;n2 -->
+<g id="edge1" class="edge">
+<title>n1-&gt;n2</title>
+<path fill="none" stroke="black" d="M40.237,-294.3634C40.3532,-285.4965 40.4959,-274.6075 40.6264,-264.6554"/>
+<polygon fill="black" stroke="black" points="44.1298,-264.4091 40.7612,-254.364 37.1304,-264.3173 44.1298,-264.4091"/>
+</g>
+<!-- n3 -->
+<g id="node3" class="node">
+<title>n3</title>
+<ellipse fill="none" stroke="black" cx="18" cy="-162" rx="18" ry="18"/>
+</g>
+<!-- n2&#45;&gt;n3 -->
+<g id="edge2" class="edge">
+<title>n2-&gt;n3</title>
+<path fill="none" stroke="black" d="M35.6655,-218.9508C32.9275,-210.1237 29.5274,-199.1624 26.4435,-189.2204"/>
+<polygon fill="black" stroke="black" points="29.6908,-187.8752 23.3852,-179.3611 23.0051,-189.9491 29.6908,-187.8752"/>
+</g>
+<!-- n10 -->
+<g id="node10" class="node">
+<title>n10</title>
+<ellipse fill="none" stroke="black" cx="23" cy="-90" rx="18" ry="18"/>
+</g>
+<!-- n2&#45;&gt;n10 -->
+<g id="edge9" class="edge">
+<title>n2-&gt;n10</title>
+<path fill="none" stroke="black" d="M44.2389,-218.297C47.0603,-199.5961 49.9868,-169.4573 45,-144 43.1054,-134.328 39.4698,-124.2023 35.6916,-115.3671"/>
+<polygon fill="black" stroke="black" points="38.7737,-113.6893 31.4504,-106.033 32.4008,-116.5851 38.7737,-113.6893"/>
+</g>
+<!-- n3&#45;&gt;n10 -->
+<g id="edge10" class="edge">
+<title>n3-&gt;n10</title>
+<path fill="none" stroke="black" d="M19.2617,-143.8314C19.7965,-136.131 20.4323,-126.9743 21.0266,-118.4166"/>
+<polygon fill="black" stroke="black" points="24.52,-118.6317 21.7213,-108.4133 17.5368,-118.1467 24.52,-118.6317"/>
+</g>
+<!-- n4 -->
+<g id="node4" class="node">
+<title>n4</title>
+<ellipse fill="pink" stroke="black" cx="74" cy="-18" rx="18" ry="18"/>
+<text text-anchor="middle" x="74" y="-14.3" font-family="Times,serif" font-size="14.00">E</text>
+</g>
+<!-- n5 -->
+<g id="node5" class="node">
+<title>n5</title>
+<ellipse fill="none" stroke="black" cx="96" cy="-236.1482" rx="18" ry="18"/>
+</g>
+<!-- n6 -->
+<g id="node6" class="node">
+<title>n6</title>
+<ellipse fill="pink" stroke="black" cx="114" cy="-162" rx="18" ry="18"/>
+</g>
+<!-- n5&#45;&gt;n6 -->
+<g id="edge5" class="edge">
+<title>n5-&gt;n6</title>
+<path fill="none" stroke="black" d="M100.2657,-218.5761C102.3577,-209.9588 104.9266,-199.3765 107.2745,-189.7046"/>
+<polygon fill="black" stroke="black" points="110.7446,-190.2464 109.7025,-179.7029 103.9421,-188.595 110.7446,-190.2464"/>
+</g>
+<!-- n6&#45;&gt;n4 -->
+<g id="edge6" class="edge">
+<title>n6-&gt;n4</title>
+<path fill="none" stroke="black" d="M106.6597,-145.2221C102.2549,-134.6847 96.7901,-120.7254 93,-108 86.8937,-87.4979 81.9754,-63.8091 78.6739,-45.8822"/>
+<polygon fill="black" stroke="black" points="82.0777,-45.033 76.8756,-35.8032 75.1866,-46.2626 82.0777,-45.033"/>
+</g>
+<!-- n9 -->
+<g id="node9" class="node">
+<title>n9</title>
+<ellipse fill="none" stroke="black" cx="120" cy="-90" rx="18" ry="18"/>
+</g>
+<!-- n6&#45;&gt;n9 -->
+<g id="edge8" class="edge">
+<title>n6-&gt;n9</title>
+<path fill="none" stroke="black" d="M115.5141,-143.8314C116.1558,-136.131 116.9188,-126.9743 117.6319,-118.4166"/>
+<polygon fill="black" stroke="black" points="121.1229,-118.6694 118.4656,-108.4133 114.1471,-118.088 121.1229,-118.6694"/>
+</g>
+<!-- n7 -->
+<g id="node7" class="node">
+<title>n7</title>
+<ellipse fill="none" stroke="black" cx="96" cy="-312.4446" rx="20.2975" ry="20.2975"/>
+<text text-anchor="middle" x="96" y="-308.7446" font-family="Times,serif" font-size="14.00">S1</text>
+</g>
+<!-- n7&#45;&gt;n2 -->
+<g id="edge4" class="edge">
+<title>n7-&gt;n2</title>
+<path fill="none" stroke="black" d="M84.0658,-295.8894C76.3372,-285.1683 66.1629,-271.0544 57.6441,-259.2371"/>
+<polygon fill="black" stroke="black" points="60.4794,-257.1848 51.7924,-251.1195 54.801,-261.2782 60.4794,-257.1848"/>
+</g>
+<!-- n7&#45;&gt;n5 -->
+<g id="edge3" class="edge">
+<title>n7-&gt;n5</title>
+<path fill="none" stroke="black" d="M96,-291.9986C96,-283.5595 96,-273.6353 96,-264.5119"/>
+<polygon fill="black" stroke="black" points="99.5001,-264.3065 96,-254.3065 92.5001,-264.3065 99.5001,-264.3065"/>
+</g>
+<!-- n8 -->
+<g id="node8" class="node">
+<title>n8</title>
+<ellipse fill="pink" stroke="black" cx="152" cy="-236.1482" rx="20.2975" ry="20.2975"/>
+<text text-anchor="middle" x="152" y="-232.4482" font-family="Times,serif" font-size="14.00">S2</text>
+</g>
+<!-- n8&#45;&gt;n6 -->
+<g id="edge7" class="edge">
+<title>n8-&gt;n6</title>
+<path fill="none" stroke="black" d="M142.8013,-218.199C138.0739,-208.9747 132.2319,-197.5753 127.0475,-187.4592"/>
+<polygon fill="black" stroke="black" points="130.012,-185.5695 122.3363,-178.2664 123.7824,-188.7621 130.012,-185.5695"/>
+</g>
+<!-- n10&#45;&gt;n4 -->
+<g id="edge11" class="edge">
+<title>n10-&gt;n4</title>
+<path fill="none" stroke="black" d="M33.5672,-75.0816C40.4738,-65.3311 49.6369,-52.395 57.4935,-41.3032"/>
+<polygon fill="black" stroke="black" points="60.5222,-43.0827 63.4463,-32.8993 54.81,-39.0365 60.5222,-43.0827"/>
+</g>
+<!-- n11 -->
+<g id="node11" class="node">
+<title>n11</title>
+<ellipse fill="none" stroke="black" cx="20" cy="-18" rx="18" ry="18"/>
+</g>
+<!-- n10&#45;&gt;n11 -->
+<g id="edge12" class="edge">
+<title>n10-&gt;n11</title>
+<path fill="none" stroke="black" d="M22.243,-71.8314C21.9221,-64.131 21.5406,-54.9743 21.184,-46.4166"/>
+<polygon fill="black" stroke="black" points="24.6806,-46.2589 20.7672,-36.4133 17.6867,-46.5503 24.6806,-46.2589"/>
+</g>
+</g>
+</svg>
diff --git a/site/docs/images/targets.svg b/site/docs/images/targets.svg
new file mode 100644
index 0000000..82f47e7
--- /dev/null
+++ b/site/docs/images/targets.svg
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: G1 Pages: 1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="498pt" height="188pt" viewBox="0.00 0.00 498.19 188.00">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
+<title>G1</title>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-184 494.1903,-184 494.1903,4 -4,4"/>
+<!-- Target -->
+<g id="node1" class="node">
+<title>Target</title>
+<ellipse fill="none" stroke="black" cx="319.1459" cy="-162" rx="33.5952" ry="18"/>
+<text text-anchor="middle" x="319.1459" y="-158.3" font-family="Times,serif" font-size="14.00">Target</text>
+</g>
+<!-- Rule -->
+<g id="node2" class="node">
+<title>Rule</title>
+<ellipse fill="none" stroke="black" cx="196.1459" cy="-90" rx="27.0966" ry="18"/>
+<text text-anchor="middle" x="196.1459" y="-86.3" font-family="Times,serif" font-size="14.00">Rule</text>
+</g>
+<!-- Target&#45;&gt;Rule -->
+<g id="edge1" class="edge">
+<title>Target-&gt;Rule</title>
+<path fill="none" stroke="black" d="M296.2988,-148.6261C276.3598,-136.9545 247.3049,-119.9468 225.6191,-107.2526"/>
+<polygon fill="black" stroke="black" points="227.2227,-104.1357 216.8244,-102.1045 223.6864,-110.1769 227.2227,-104.1357"/>
+</g>
+<!-- File -->
+<g id="node6" class="node">
+<title>File</title>
+<ellipse fill="none" stroke="black" cx="319.1459" cy="-90" rx="27" ry="18"/>
+<text text-anchor="middle" x="319.1459" y="-86.3" font-family="Times,serif" font-size="14.00">File</text>
+</g>
+<!-- Target&#45;&gt;File -->
+<g id="edge5" class="edge">
+<title>Target-&gt;File</title>
+<path fill="none" stroke="black" d="M319.1459,-143.8314C319.1459,-136.131 319.1459,-126.9743 319.1459,-118.4166"/>
+<polygon fill="black" stroke="black" points="322.646,-118.4132 319.1459,-108.4133 315.646,-118.4133 322.646,-118.4132"/>
+</g>
+<!-- Package group -->
+<g id="node9" class="node">
+<title>Package group</title>
+<ellipse fill="none" stroke="black" cx="427.1459" cy="-90" rx="63.0888" ry="18"/>
+<text text-anchor="middle" x="427.1459" y="-86.3" font-family="Times,serif" font-size="14.00">Package group</text>
+</g>
+<!-- Target&#45;&gt;Package group -->
+<g id="edge8" class="edge">
+<title>Target-&gt;Package group</title>
+<path fill="none" stroke="black" d="M340.4832,-147.7751C355.5596,-137.7242 376.077,-124.0459 393.3637,-112.5215"/>
+<polygon fill="black" stroke="black" points="395.684,-115.1811 402.0631,-106.7219 391.8011,-109.3567 395.684,-115.1811"/>
+</g>
+<!-- cc_library -->
+<g id="node3" class="node">
+<title>cc_library</title>
+<ellipse fill="none" stroke="black" cx="46.1459" cy="-18" rx="46.2923" ry="18"/>
+<text text-anchor="middle" x="46.1459" y="-14.3" font-family="Times,serif" font-size="14.00">cc_library</text>
+</g>
+<!-- Rule&#45;&gt;cc_library -->
+<g id="edge2" class="edge">
+<title>Rule-&gt;cc_library</title>
+<path fill="none" stroke="black" d="M174.0129,-79.3762C150.5101,-68.0948 112.9146,-50.049 84.5596,-36.4386"/>
+<polygon fill="black" stroke="black" points="85.8614,-33.1811 75.3316,-32.0091 82.8322,-39.4918 85.8614,-33.1811"/>
+</g>
+<!-- java_test -->
+<g id="node4" class="node">
+<title>java_test</title>
+<ellipse fill="none" stroke="black" cx="152.1459" cy="-18" rx="42.4939" ry="18"/>
+<text text-anchor="middle" x="152.1459" y="-14.3" font-family="Times,serif" font-size="14.00">java_test</text>
+</g>
+<!-- Rule&#45;&gt;java_test -->
+<g id="edge3" class="edge">
+<title>Rule-&gt;java_test</title>
+<path fill="none" stroke="black" d="M185.9408,-73.3008C180.654,-64.6496 174.077,-53.8873 168.134,-44.1623"/>
+<polygon fill="black" stroke="black" points="171.1106,-42.3209 162.9095,-35.6132 165.1376,-45.9711 171.1106,-42.3209"/>
+</g>
+<!-- ... -->
+<g id="node5" class="node">
+<title>...</title>
+<ellipse fill="none" stroke="black" cx="239.1459" cy="-18" rx="27" ry="18"/>
+<text text-anchor="middle" x="239.1459" y="-14.3" font-family="Times,serif" font-size="14.00">...</text>
+</g>
+<!-- Rule&#45;&gt;... -->
+<g id="edge4" class="edge">
+<title>Rule-&gt;...</title>
+<path fill="none" stroke="black" d="M206.3363,-72.937C211.5308,-64.2393 217.9565,-53.4799 223.7407,-43.7948"/>
+<polygon fill="black" stroke="black" points="226.9061,-45.3206 229.0287,-34.9405 220.8963,-41.7314 226.9061,-45.3206"/>
+</g>
+<!-- Source -->
+<g id="node7" class="node">
+<title>Source</title>
+<ellipse fill="none" stroke="black" cx="319.1459" cy="-18" rx="35.194" ry="18"/>
+<text text-anchor="middle" x="319.1459" y="-14.3" font-family="Times,serif" font-size="14.00">Source</text>
+</g>
+<!-- File&#45;&gt;Source -->
+<g id="edge6" class="edge">
+<title>File-&gt;Source</title>
+<path fill="none" stroke="black" d="M319.1459,-71.8314C319.1459,-64.131 319.1459,-54.9743 319.1459,-46.4166"/>
+<polygon fill="black" stroke="black" points="322.646,-46.4132 319.1459,-36.4133 315.646,-46.4133 322.646,-46.4132"/>
+</g>
+<!-- Generated -->
+<g id="node8" class="node">
+<title>Generated</title>
+<ellipse fill="none" stroke="black" cx="419.1459" cy="-18" rx="46.5926" ry="18"/>
+<text text-anchor="middle" x="419.1459" y="-14.3" font-family="Times,serif" font-size="14.00">Generated</text>
+</g>
+<!-- File&#45;&gt;Generated -->
+<g id="edge7" class="edge">
+<title>File-&gt;Generated</title>
+<path fill="none" stroke="black" d="M337.9551,-76.4574C352.2161,-66.1894 372.1136,-51.8633 388.6413,-39.9633"/>
+<polygon fill="black" stroke="black" points="390.8591,-42.6794 396.9294,-33.9959 386.7689,-36.9986 390.8591,-42.6794"/>
+</g>
+</g>
+</svg>
diff --git a/site/docs/query.html b/site/docs/query.html
index 29b49a0..51e98eb 100644
--- a/site/docs/query.html
+++ b/site/docs/query.html
@@ -677,8 +677,7 @@
 
 <table style='margin: auto'><tr>
 <td style='text-align: center'>
-<div class='graphviz dot'><!--
-digraph somepath1 {
+<!-- digraph somepath1 {
   graph [size="4,4"]
   node [label="",shape=circle];
   n1;
@@ -703,13 +702,12 @@
   n3 -> n10;
   n10 -> n4;
   n10 -> n11;
-}
---></div>
+} -->
+<img src="images/somepath1.svg" alt="somepath1.svg" style="margin-left=10;" />
 <p><code>somepath(S1 + S2, E)</code>,<br/>one possible result.</p>
 </td>
 <td style='padding: 40px; text-align: center'>
-<div class='graphviz dot'><!--
-digraph somepath2 {
+<!-- digraph somepath2 {
   graph [size="4,4"]
   node [label="",shape=circle];
 
@@ -733,13 +731,12 @@
   n3 -> n10;
   n10 -> n4;
   n10 -> n11;
-}
---></div>
+} -->
+<img src="images/somepath2.svg" alt="somepath2.svg" style="margin-left=10;" />
 <p><code>somepath(S1 + S2, E)</code>,<br/>another possible result.</p>
 </td>
 <td style='text-align: center'>
-<div class='graphviz dot'><!--
-digraph allpaths {
+<!-- digraph allpaths {
   graph [size="4,4"]
   node [label="",shape=circle];
   n1;
@@ -765,8 +762,8 @@
   n3 -> n10;
   n10 -> n4;
   n10 -> n11;
-}
---></div>
+} -->
+<img src="images/allpaths.svg" alt="allpaths.svg" style="margin-left=10;" />
 <p><code>allpaths(S1 + S2, E)</code>.</p>
 </td>
 </tr></table>
@@ -1269,16 +1266,15 @@
 </p>
 
 <table style='margin: auto'><tr><td>
-<div class='graphviz dot'><!--
-digraph mygraph {
+<!-- digraph mygraph {
   node [shape=box];
 "//a:a" -> "//a:a.cc"
 "//b:b" -> "//a:a"
 "//b:b" -> "//b:b.cc"
 "//c:c" -> "//b:b"
 "//c:c" -> "//a:a"
-}
---></div>
+} -->
+<img src="images/out-ranked.svg" alt="out-ranked.svg" style="margin-left=10;" />
 </td><td>
 <pre>
 minrank