proarrow-0.1.0.0: lattice.svg
<?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 10.0.1 (20240210.2158)
-->
<!-- Title: optics Pages: 1 -->
<svg width="685pt" height="404pt"
viewBox="0.00 0.00 684.75 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 400)">
<title>optics</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-400 680.75,-400 680.75,4 -4,4"/>
<!-- Fold -->
<g id="node1" class="node">
<title>Fold</title>
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M339.12,-396C339.12,-396 309.12,-396 309.12,-396 303.12,-396 297.12,-390 297.12,-384 297.12,-384 297.12,-372 297.12,-372 297.12,-366 303.12,-360 309.12,-360 309.12,-360 339.12,-360 339.12,-360 345.12,-360 351.12,-366 351.12,-372 351.12,-372 351.12,-384 351.12,-384 351.12,-390 345.12,-396 339.12,-396"/>
<text text-anchor="middle" x="324.12" y="-372.2" font-family="Helvetica,sans-Serif" font-size="14.00">Fold</text>
</g>
<!-- AffineFold -->
<g id="node2" class="node">
<title>AffineFold</title>
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M396.5,-324C396.5,-324 343.75,-324 343.75,-324 337.75,-324 331.75,-318 331.75,-312 331.75,-312 331.75,-300 331.75,-300 331.75,-294 337.75,-288 343.75,-288 343.75,-288 396.5,-288 396.5,-288 402.5,-288 408.5,-294 408.5,-300 408.5,-300 408.5,-312 408.5,-312 408.5,-318 402.5,-324 396.5,-324"/>
<text text-anchor="middle" x="370.12" y="-300.2" font-family="Helvetica,sans-Serif" font-size="14.00">AffineFold</text>
</g>
<!-- Fold->AffineFold -->
<g id="edge1" class="edge">
<title>Fold->AffineFold</title>
<path fill="none" stroke="black" d="M335.5,-359.7C342.63,-348.85 351.78,-334.92 358.89,-324.1"/>
</g>
<!-- Traversal -->
<g id="node8" class="node">
<title>Traversal</title>
<path fill="none" stroke="black" d="M301.25,-324C301.25,-324 253,-324 253,-324 247,-324 241,-318 241,-312 241,-312 241,-300 241,-300 241,-294 247,-288 253,-288 253,-288 301.25,-288 301.25,-288 307.25,-288 313.25,-294 313.25,-300 313.25,-300 313.25,-312 313.25,-312 313.25,-318 307.25,-324 301.25,-324"/>
<text text-anchor="middle" x="277.12" y="-300.2" font-family="Helvetica,sans-Serif" font-size="14.00">Traversal</text>
</g>
<!-- Fold->Traversal -->
<g id="edge2" class="edge">
<title>Fold->Traversal</title>
<path fill="none" stroke="black" d="M312.51,-359.7C305.22,-348.85 295.87,-334.92 288.61,-324.1"/>
</g>
<!-- Getter -->
<g id="node3" class="node">
<title>Getter</title>
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M391.25,-252C391.25,-252 361,-252 361,-252 355,-252 349,-246 349,-240 349,-240 349,-228 349,-228 349,-222 355,-216 361,-216 361,-216 391.25,-216 391.25,-216 397.25,-216 403.25,-222 403.25,-228 403.25,-228 403.25,-240 403.25,-240 403.25,-246 397.25,-252 391.25,-252"/>
<text text-anchor="middle" x="376.12" y="-228.2" font-family="Helvetica,sans-Serif" font-size="14.00">Getter</text>
</g>
<!-- AffineFold->Getter -->
<g id="edge7" class="edge">
<title>AffineFold->Getter</title>
<path fill="none" stroke="black" d="M371.61,-287.7C372.54,-276.85 373.73,-262.92 374.66,-252.1"/>
</g>
<!-- AffineTraversal -->
<g id="node12" class="node">
<title>AffineTraversal</title>
<path fill="none" stroke="black" d="M318.5,-252C318.5,-252 235.75,-252 235.75,-252 229.75,-252 223.75,-246 223.75,-240 223.75,-240 223.75,-228 223.75,-228 223.75,-222 229.75,-216 235.75,-216 235.75,-216 318.5,-216 318.5,-216 324.5,-216 330.5,-222 330.5,-228 330.5,-228 330.5,-240 330.5,-240 330.5,-246 324.5,-252 318.5,-252"/>
<text text-anchor="middle" x="277.12" y="-228.2" font-family="Helvetica,sans-Serif" font-size="14.00">AffineTraversal</text>
</g>
<!-- AffineFold->AffineTraversal -->
<g id="edge8" class="edge">
<title>AffineFold->AffineTraversal</title>
<path fill="none" stroke="black" d="M347.14,-287.7C332.83,-276.93 314.49,-263.12 300.17,-252.35"/>
</g>
<!-- Lens -->
<g id="node16" class="node">
<title>Lens</title>
<path fill="none" stroke="black" d="M389.12,-180C389.12,-180 359.12,-180 359.12,-180 353.12,-180 347.12,-174 347.12,-168 347.12,-168 347.12,-156 347.12,-156 347.12,-150 353.12,-144 359.12,-144 359.12,-144 389.12,-144 389.12,-144 395.12,-144 401.12,-150 401.12,-156 401.12,-156 401.12,-168 401.12,-168 401.12,-174 395.12,-180 389.12,-180"/>
<text text-anchor="middle" x="374.12" y="-156.2" font-family="Helvetica,sans-Serif" font-size="14.00">Lens</text>
</g>
<!-- Getter->Lens -->
<g id="edge16" class="edge">
<title>Getter->Lens</title>
<path fill="none" stroke="black" d="M375.63,-215.7C375.32,-204.85 374.92,-190.92 374.61,-180.1"/>
</g>
<!-- MonoidalLens -->
<g id="node17" class="node">
<title>MonoidalLens</title>
<path fill="none" stroke="black" d="M316.5,-180C316.5,-180 239.75,-180 239.75,-180 233.75,-180 227.75,-174 227.75,-168 227.75,-168 227.75,-156 227.75,-156 227.75,-150 233.75,-144 239.75,-144 239.75,-144 316.5,-144 316.5,-144 322.5,-144 328.5,-150 328.5,-156 328.5,-156 328.5,-168 328.5,-168 328.5,-174 322.5,-180 316.5,-180"/>
<text text-anchor="middle" x="278.12" y="-156.2" font-family="Helvetica,sans-Serif" font-size="14.00">MonoidalLens</text>
</g>
<!-- Getter->MonoidalLens -->
<g id="edge17" class="edge">
<title>Getter->MonoidalLens</title>
<path fill="none" stroke="black" d="M351.65,-215.52C336.57,-204.74 317.31,-190.99 302.29,-180.26"/>
</g>
<!-- Review -->
<g id="node4" class="node">
<title>Review</title>
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M48.25,-252C48.25,-252 12,-252 12,-252 6,-252 0,-246 0,-240 0,-240 0,-228 0,-228 0,-222 6,-216 12,-216 12,-216 48.25,-216 48.25,-216 54.25,-216 60.25,-222 60.25,-228 60.25,-228 60.25,-240 60.25,-240 60.25,-246 54.25,-252 48.25,-252"/>
<text text-anchor="middle" x="30.12" y="-228.2" font-family="Helvetica,sans-Serif" font-size="14.00">Review</text>
</g>
<!-- Prism -->
<g id="node18" class="node">
<title>Prism</title>
<path fill="none" stroke="black" d="M158.12,-180C158.12,-180 128.12,-180 128.12,-180 122.12,-180 116.12,-174 116.12,-168 116.12,-168 116.12,-156 116.12,-156 116.12,-150 122.12,-144 128.12,-144 128.12,-144 158.12,-144 158.12,-144 164.12,-144 170.12,-150 170.12,-156 170.12,-156 170.12,-168 170.12,-168 170.12,-174 164.12,-180 158.12,-180"/>
<text text-anchor="middle" x="143.12" y="-156.2" font-family="Helvetica,sans-Serif" font-size="14.00">Prism</text>
</g>
<!-- Review->Prism -->
<g id="edge24" class="edge">
<title>Review->Prism</title>
<path fill="none" stroke="black" d="M58.35,-215.52C75.87,-204.66 98.27,-190.78 115.65,-180.02"/>
</g>
<!-- AlgebraicLens -->
<g id="node5" class="node">
<title>AlgebraicLens</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M621.75,-108C621.75,-108 528.5,-108 528.5,-108 522.5,-108 516.5,-102 516.5,-96 516.5,-96 516.5,-84 516.5,-84 516.5,-78 522.5,-72 528.5,-72 528.5,-72 621.75,-72 621.75,-72 627.75,-72 633.75,-78 633.75,-84 633.75,-84 633.75,-96 633.75,-96 633.75,-102 627.75,-108 621.75,-108"/>
<text text-anchor="middle" x="575.12" y="-84.2" font-family="Helvetica,sans-Serif" font-size="14.00">AlgebraicLens m</text>
</g>
<!-- ClassifyingLens -->
<g id="node6" class="node">
<title>ClassifyingLens</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M664.75,-36C664.75,-36 571.5,-36 571.5,-36 565.5,-36 559.5,-30 559.5,-24 559.5,-24 559.5,-12 559.5,-12 559.5,-6 565.5,0 571.5,0 571.5,0 664.75,0 664.75,0 670.75,0 676.75,-6 676.75,-12 676.75,-12 676.75,-24 676.75,-24 676.75,-30 670.75,-36 664.75,-36"/>
<text text-anchor="middle" x="618.12" y="-12.2" font-family="Helvetica,sans-Serif" font-size="14.00">ClassifyingLens l</text>
</g>
<!-- AlgebraicLens->ClassifyingLens -->
<g id="edge27" class="edge">
<title>AlgebraicLens->ClassifyingLens</title>
<path fill="none" stroke="black" d="M585.75,-71.7C592.42,-60.85 600.98,-46.92 607.62,-36.1"/>
</g>
<!-- Setter -->
<g id="node7" class="node">
<title>Setter</title>
<path fill="none" stroke="black" d="M510.12,-396C510.12,-396 480.12,-396 480.12,-396 474.12,-396 468.12,-390 468.12,-384 468.12,-384 468.12,-372 468.12,-372 468.12,-366 474.12,-360 480.12,-360 480.12,-360 510.12,-360 510.12,-360 516.12,-360 522.12,-366 522.12,-372 522.12,-372 522.12,-384 522.12,-384 522.12,-390 516.12,-396 510.12,-396"/>
<text text-anchor="middle" x="495.12" y="-372.2" font-family="Helvetica,sans-Serif" font-size="14.00">Setter</text>
</g>
<!-- Setter->Traversal -->
<g id="edge3" class="edge">
<title>Setter->Traversal</title>
<path fill="none" stroke="black" d="M467.87,-369.11C433.83,-359.13 373.88,-341.18 323.12,-324 320.06,-322.96 316.89,-321.86 313.72,-320.73"/>
</g>
<!-- Cotraversal -->
<g id="node9" class="node">
<title>Cotraversal</title>
<path fill="none" stroke="black" d="M561.62,-324C561.62,-324 500.62,-324 500.62,-324 494.62,-324 488.62,-318 488.62,-312 488.62,-312 488.62,-300 488.62,-300 488.62,-294 494.62,-288 500.62,-288 500.62,-288 561.62,-288 561.62,-288 567.62,-288 573.62,-294 573.62,-300 573.62,-300 573.62,-312 573.62,-312 573.62,-318 567.62,-324 561.62,-324"/>
<text text-anchor="middle" x="531.12" y="-300.2" font-family="Helvetica,sans-Serif" font-size="14.00">Cotraversal</text>
</g>
<!-- Setter->Cotraversal -->
<g id="edge4" class="edge">
<title>Setter->Cotraversal</title>
<path fill="none" stroke="black" d="M504.02,-359.7C509.6,-348.85 516.77,-334.92 522.33,-324.1"/>
</g>
<!-- Tracer -->
<g id="node10" class="node">
<title>Tracer</title>
<path fill="none" stroke="black" d="M486.62,-108C486.62,-108 455.62,-108 455.62,-108 449.62,-108 443.62,-102 443.62,-96 443.62,-96 443.62,-84 443.62,-84 443.62,-78 449.62,-72 455.62,-72 455.62,-72 486.62,-72 486.62,-72 492.62,-72 498.62,-78 498.62,-84 498.62,-84 498.62,-96 498.62,-96 498.62,-102 492.62,-108 486.62,-108"/>
<text text-anchor="middle" x="471.12" y="-84.2" font-family="Helvetica,sans-Serif" font-size="14.00">Tracer</text>
</g>
<!-- Setter->Tracer -->
<g id="edge5" class="edge">
<title>Setter->Tracer</title>
<path fill="none" stroke="black" d="M522.33,-367.1C541.87,-358.61 567.27,-344.47 582.12,-324 610.66,-284.67 617.99,-260.78 599.12,-216 578.87,-167.91 530.07,-129.1 498.92,-108.11"/>
</g>
<!-- Glass -->
<g id="node11" class="node">
<title>Glass</title>
<path fill="none" stroke="black" d="M463.12,-252C463.12,-252 433.12,-252 433.12,-252 427.12,-252 421.12,-246 421.12,-240 421.12,-240 421.12,-228 421.12,-228 421.12,-222 427.12,-216 433.12,-216 433.12,-216 463.12,-216 463.12,-216 469.12,-216 475.12,-222 475.12,-228 475.12,-228 475.12,-240 475.12,-240 475.12,-246 469.12,-252 463.12,-252"/>
<text text-anchor="middle" x="448.12" y="-228.2" font-family="Helvetica,sans-Serif" font-size="14.00">Glass</text>
</g>
<!-- Setter->Glass -->
<g id="edge6" class="edge">
<title>Setter->Glass</title>
<path fill="none" stroke="black" d="M489.36,-359.59C480.29,-332.19 462.8,-279.32 453.79,-252.11"/>
</g>
<!-- Traversal->AffineTraversal -->
<g id="edge9" class="edge">
<title>Traversal->AffineTraversal</title>
<path fill="none" stroke="black" d="M277.12,-287.7C277.12,-276.85 277.12,-262.92 277.12,-252.1"/>
</g>
<!-- MonoidalTraversal -->
<g id="node13" class="node">
<title>MonoidalTraversal</title>
<path fill="none" stroke="black" d="M194,-252C194,-252 90.25,-252 90.25,-252 84.25,-252 78.25,-246 78.25,-240 78.25,-240 78.25,-228 78.25,-228 78.25,-222 84.25,-216 90.25,-216 90.25,-216 194,-216 194,-216 200,-216 206,-222 206,-228 206,-228 206,-240 206,-240 206,-246 200,-252 194,-252"/>
<text text-anchor="middle" x="142.12" y="-228.2" font-family="Helvetica,sans-Serif" font-size="14.00">MonoidalTraversal</text>
</g>
<!-- Traversal->MonoidalTraversal -->
<g id="edge10" class="edge">
<title>Traversal->MonoidalTraversal</title>
<path fill="none" stroke="black" d="M243.41,-287.52C222.63,-276.74 196.11,-262.99 175.41,-252.26"/>
</g>
<!-- Kaleidoscope -->
<g id="node14" class="node">
<title>Kaleidoscope</title>
<path fill="none" stroke="black" d="M578.62,-252C578.62,-252 505.62,-252 505.62,-252 499.62,-252 493.62,-246 493.62,-240 493.62,-240 493.62,-228 493.62,-228 493.62,-222 499.62,-216 505.62,-216 505.62,-216 578.62,-216 578.62,-216 584.62,-216 590.62,-222 590.62,-228 590.62,-228 590.62,-240 590.62,-240 590.62,-246 584.62,-252 578.62,-252"/>
<text text-anchor="middle" x="542.12" y="-228.2" font-family="Helvetica,sans-Serif" font-size="14.00">Kaleidoscope</text>
</g>
<!-- Cotraversal->Kaleidoscope -->
<g id="edge11" class="edge">
<title>Cotraversal->Kaleidoscope</title>
<path fill="none" stroke="black" d="M533.84,-287.7C535.55,-276.85 537.74,-262.92 539.44,-252.1"/>
</g>
<!-- Iso -->
<g id="node20" class="node">
<title>Iso</title>
<path fill="none" stroke="black" d="M324.12,-36C324.12,-36 294.12,-36 294.12,-36 288.12,-36 282.12,-30 282.12,-24 282.12,-24 282.12,-12 282.12,-12 282.12,-6 288.12,0 294.12,0 294.12,0 324.12,0 324.12,0 330.12,0 336.12,-6 336.12,-12 336.12,-12 336.12,-24 336.12,-24 336.12,-30 330.12,-36 324.12,-36"/>
<text text-anchor="middle" x="309.12" y="-12.2" font-family="Helvetica,sans-Serif" font-size="14.00">Iso</text>
</g>
<!-- Tracer->Iso -->
<g id="edge33" class="edge">
<title>Tracer->Iso</title>
<path fill="none" stroke="black" d="M443.28,-76.1C440.2,-74.7 437.1,-73.31 434.12,-72 400.7,-57.24 361.93,-40.92 336.54,-30.35"/>
</g>
<!-- Grate -->
<g id="node15" class="node">
<title>Grate</title>
<path fill="none" stroke="black" d="M463.12,-180C463.12,-180 433.12,-180 433.12,-180 427.12,-180 421.12,-174 421.12,-168 421.12,-168 421.12,-156 421.12,-156 421.12,-150 427.12,-144 433.12,-144 433.12,-144 463.12,-144 463.12,-144 469.12,-144 475.12,-150 475.12,-156 475.12,-156 475.12,-168 475.12,-168 475.12,-174 469.12,-180 463.12,-180"/>
<text text-anchor="middle" x="448.12" y="-156.2" font-family="Helvetica,sans-Serif" font-size="14.00">Grate</text>
</g>
<!-- Glass->Grate -->
<g id="edge14" class="edge">
<title>Glass->Grate</title>
<path fill="none" stroke="black" d="M448.12,-215.7C448.12,-204.85 448.12,-190.92 448.12,-180.1"/>
</g>
<!-- Glass->Lens -->
<g id="edge13" class="edge">
<title>Glass->Lens</title>
<path fill="none" stroke="black" d="M429.83,-215.7C418.45,-204.93 403.86,-191.12 392.46,-180.35"/>
</g>
<!-- Glass->MonoidalLens -->
<g id="edge15" class="edge">
<title>Glass->MonoidalLens</title>
<path fill="none" stroke="black" d="M420.69,-219.82C417.81,-218.5 414.92,-217.21 412.12,-216 383.2,-203.47 350.29,-190.43 324.32,-180.42"/>
</g>
<!-- AffineTraversal->Lens -->
<g id="edge18" class="edge">
<title>AffineTraversal->Lens</title>
<path fill="none" stroke="black" d="M301.1,-215.7C316.03,-204.93 335.15,-191.12 350.09,-180.35"/>
</g>
<!-- AffineTraversal->MonoidalLens -->
<g id="edge20" class="edge">
<title>AffineTraversal->MonoidalLens</title>
<path fill="none" stroke="black" d="M277.37,-215.7C277.53,-204.85 277.73,-190.92 277.88,-180.1"/>
</g>
<!-- AffineTraversal->Prism -->
<g id="edge19" class="edge">
<title>AffineTraversal->Prism</title>
<path fill="none" stroke="black" d="M243.66,-215.52C221.02,-203.69 191.51,-188.27 170.32,-177.21"/>
</g>
<!-- MonoidalTraversal->MonoidalLens -->
<g id="edge21" class="edge">
<title>MonoidalTraversal->MonoidalLens</title>
<path fill="none" stroke="black" d="M176.09,-215.52C197.02,-204.74 223.74,-190.99 244.59,-180.26"/>
</g>
<!-- MonoidalTraversal->Prism -->
<g id="edge22" class="edge">
<title>MonoidalTraversal->Prism</title>
<path fill="none" stroke="black" d="M142.37,-215.7C142.53,-204.85 142.73,-190.92 142.88,-180.1"/>
</g>
<!-- PowerGrate -->
<g id="node19" class="node">
<title>PowerGrate</title>
<path fill="none" stroke="black" d="M413.5,-108C413.5,-108 348.75,-108 348.75,-108 342.75,-108 336.75,-102 336.75,-96 336.75,-96 336.75,-84 336.75,-84 336.75,-78 342.75,-72 348.75,-72 348.75,-72 413.5,-72 413.5,-72 419.5,-72 425.5,-78 425.5,-84 425.5,-84 425.5,-96 425.5,-96 425.5,-102 419.5,-108 413.5,-108"/>
<text text-anchor="middle" x="381.12" y="-84.2" font-family="Helvetica,sans-Serif" font-size="14.00">PowerGrate</text>
</g>
<!-- MonoidalTraversal->PowerGrate -->
<g id="edge23" class="edge">
<title>MonoidalTraversal->PowerGrate</title>
<path fill="none" stroke="black" d="M152.8,-215.77C166.03,-195.78 190.37,-163.12 219.12,-144 254.85,-120.24 302.08,-106.39 336.32,-98.85"/>
</g>
<!-- Kaleidoscope->ClassifyingLens -->
<g id="edge28" class="edge">
<title>Kaleidoscope->ClassifyingLens</title>
<path fill="none" stroke="black" d="M562.88,-215.69C587.5,-193.64 627.22,-152.98 643.12,-108 651.79,-83.49 639.48,-54.36 629.27,-36.27"/>
</g>
<!-- Kaleidoscope->Grate -->
<g id="edge12" class="edge">
<title>Kaleidoscope->Grate</title>
<path fill="none" stroke="black" d="M518.89,-215.7C504.43,-204.93 485.89,-191.12 471.42,-180.35"/>
</g>
<!-- Grate->PowerGrate -->
<g id="edge25" class="edge">
<title>Grate->PowerGrate</title>
<path fill="none" stroke="black" d="M431.56,-143.7C421.18,-132.85 407.85,-118.92 397.5,-108.1"/>
</g>
<!-- Lens->Iso -->
<g id="edge29" class="edge">
<title>Lens->Iso</title>
<path fill="none" stroke="black" d="M354.96,-143.57C345.52,-133.96 334.76,-121.3 328.12,-108 316.56,-84.81 312.02,-54.81 310.24,-36.24"/>
</g>
<!-- MonoidalLens->AlgebraicLens -->
<g id="edge26" class="edge">
<title>MonoidalLens->AlgebraicLens</title>
<path fill="none" stroke="black" d="M328.8,-146.39C331.95,-145.56 335.08,-144.76 338.12,-144 412.67,-125.52 432.31,-125.32 507.12,-108 510.09,-107.31 513.12,-106.6 516.18,-105.87"/>
</g>
<!-- MonoidalLens->Iso -->
<g id="edge30" class="edge">
<title>MonoidalLens->Iso</title>
<path fill="none" stroke="black" d="M281.09,-143.53C284.23,-125.53 289.51,-96.7 295.12,-72 297.87,-59.94 301.43,-46.46 304.28,-36.11"/>
</g>
<!-- Prism->Iso -->
<g id="edge31" class="edge">
<title>Prism->Iso</title>
<path fill="none" stroke="black" d="M163.48,-143.59C195.43,-116.26 256.97,-63.61 288.86,-36.33"/>
</g>
<!-- PowerGrate->Iso -->
<g id="edge32" class="edge">
<title>PowerGrate->Iso</title>
<path fill="none" stroke="black" d="M363.33,-71.7C352.25,-60.93 338.05,-47.12 326.97,-36.35"/>
</g>
</g>
</svg>