eyeprolog 0.5.5 → 0.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/book-assets/aggregation-market.svg +5 -5
- package/book-assets/and-or-binding-trace.svg +4 -4
- package/book-assets/arithmetic-binding-flow.svg +2 -2
- package/book-assets/auditable-decision-service.svg +2 -2
- package/book-assets/bounded-experimental-math.svg +3 -3
- package/book-assets/cli-observation-loop.svg +2 -2
- package/book-assets/context-data-boundary.svg +3 -3
- package/book-assets/correctness-obligations.svg +2 -2
- package/book-assets/debugging-four-lenses.svg +2 -2
- package/book-assets/example-landscape.svg +2 -2
- package/book-assets/finite-search-funnel.svg +3 -3
- package/book-assets/herbrand-world.svg +2 -2
- package/book-assets/integrity-check-control-panel.svg +3 -3
- package/book-assets/iso-control-board.svg +5 -5
- package/book-assets/iso-state-operator-console.svg +4 -4
- package/book-assets/iso-stream-roundtrip.svg +2 -2
- package/book-assets/iso-term-prism.svg +2 -2
- package/book-assets/knowledge-engineering-workflow.svg +3 -3
- package/book-assets/laboratory-progression.svg +1 -1
- package/book-assets/lists-train.svg +2 -2
- package/book-assets/logic-and-control.svg +5 -5
- package/book-assets/negation-guest-registry.svg +3 -3
- package/book-assets/part-1-relations.svg +4 -4
- package/book-assets/part-2-search.svg +4 -4
- package/book-assets/part-3-trustworthy-reasoning.svg +1 -1
- package/book-assets/part-4-craft.svg +6 -6
- package/book-assets/part-5-relational-design.svg +2 -2
- package/book-assets/part-6-mathematics.svg +2 -2
- package/book-assets/part-7-laboratory.svg +3 -3
- package/book-assets/part-8-standard-prolog.svg +5 -5
- package/book-assets/pattern-selection-map.svg +2 -2
- package/book-assets/program-construction-loop.svg +2 -2
- package/book-assets/program-transformation-workbench.svg +3 -3
- package/book-assets/proof-and-search.svg +3 -3
- package/book-assets/proof-as-computation.svg +2 -2
- package/book-assets/rdf-adapter-pipeline.svg +3 -3
- package/book-assets/recursion-induction-ladder.svg +3 -3
- package/book-assets/reference-navigation.svg +1 -1
- package/book-assets/relational-test-spectrum.svg +2 -2
- package/book-assets/review-lenses.svg +2 -2
- package/book-assets/sockets-providers.svg +2 -2
- package/book-assets/syntax-relations.svg +2 -2
- package/book-assets/termination-map.svg +2 -2
- package/book-assets/title-page.svg +21 -19
- package/book-assets/unification.svg +3 -3
- package/package.json +1 -1
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
<title id="title">Aggregation at a produce market</title>
|
|
3
3
|
<desc id="desc">Baskets with measured weights pass over a market counter into count, sum, minimum, and maximum result cards.</desc>
|
|
4
4
|
<style>
|
|
5
|
-
.wall{fill:#FFF3D8}.counter{fill:#
|
|
5
|
+
.wall{fill:#FFF3D8}.counter{fill:#E4C13C}.basket{fill:#E5B23B;stroke:#A48800;stroke-width:3}.fruit{stroke:#008EAA;stroke-width:2}
|
|
6
6
|
.card{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.text{fill:#17324D;font:15px ui-monospace,monospace}
|
|
7
|
-
.flow{fill:none;stroke:#
|
|
7
|
+
.flow{fill:none;stroke:#C8A100;stroke-width:3}.result{fill:#DDF7FB;stroke:#008EAA;stroke-width:3}
|
|
8
8
|
</style>
|
|
9
9
|
<rect width="900" height="380" class="wall"/><rect y="235" width="900" height="145" class="counter"/>
|
|
10
|
-
<g transform="translate(65 120)"><path class="basket" d="M0 40 H140 L120 130 H20Z"/><path d="M30 40 Q70-35 110 40" fill="none" stroke="#
|
|
11
|
-
<g transform="translate(245 130) scale(.85)"><path class="basket" d="M0 40 H140 L120 130 H20Z"/><path d="M30 40 Q70-35 110 40" fill="none" stroke="#
|
|
12
|
-
<g transform="translate(395 135) scale(.78)"><path class="basket" d="M0 40 H140 L120 130 H20Z"/><path d="M30 40 Q70-35 110 40" fill="none" stroke="#
|
|
10
|
+
<g transform="translate(65 120)"><path class="basket" d="M0 40 H140 L120 130 H20Z"/><path d="M30 40 Q70-35 110 40" fill="none" stroke="#A48800" stroke-width="5"/><circle class="fruit" cx="48" cy="55" r="25" fill="#D8AE1E"/><circle class="fruit" cx="91" cy="57" r="27" fill="#F2C94C"/><rect class="card" x="38" y="93" width="65" height="30"/><text class="text" x="70" y="114" text-anchor="middle">2 kg</text></g>
|
|
11
|
+
<g transform="translate(245 130) scale(.85)"><path class="basket" d="M0 40 H140 L120 130 H20Z"/><path d="M30 40 Q70-35 110 40" fill="none" stroke="#A48800" stroke-width="5"/><circle class="fruit" cx="48" cy="55" r="25" fill="#D8AE1E"/><circle class="fruit" cx="91" cy="57" r="27" fill="#F2C94C"/><rect class="card" x="38" y="93" width="65" height="30"/><text class="text" x="70" y="114" text-anchor="middle">5 kg</text></g>
|
|
12
|
+
<g transform="translate(395 135) scale(.78)"><path class="basket" d="M0 40 H140 L120 130 H20Z"/><path d="M30 40 Q70-35 110 40" fill="none" stroke="#A48800" stroke-width="5"/><circle class="fruit" cx="48" cy="55" r="25" fill="#D8AE1E"/><circle class="fruit" cx="91" cy="57" r="27" fill="#F2C94C"/><rect class="card" x="38" y="93" width="65" height="30"/><text class="text" x="70" y="114" text-anchor="middle">3 kg</text></g>
|
|
13
13
|
<path class="flow" d="M520 190 C575 190 575 95 630 95 M520 190 C575 190 575 165 630 165 M520 190 C575 190 575 235 630 235 M520 190 C575 190 575 305 630 305"/>
|
|
14
14
|
<rect class="result" x="630" y="67" width="210" height="55" rx="8"/><text class="text" x="735" y="100" text-anchor="middle">count = 3</text>
|
|
15
15
|
<rect class="result" x="630" y="137" width="210" height="55" rx="8"/><text class="text" x="735" y="170" text-anchor="middle">sum = 10 kg</text>
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
6
|
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.goal{fill:#E8FAFC;stroke:#008EAA;stroke-width:2}
|
|
7
|
-
.choice{fill:#FFF4BF;stroke:#
|
|
8
|
-
.title{fill:#
|
|
7
|
+
.choice{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.fail{fill:#FFF1D8;stroke:#C8A100;stroke-width:2}
|
|
8
|
+
.title{fill:#C8A100;font:bold 24px Georgia,serif}.label{fill:#17324D;font:bold 17px Georgia,serif}
|
|
9
9
|
.prose{fill:#405E70;font:16px Georgia,serif}.code{fill:#102A3A;font:15px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
10
|
-
.line{fill:none;stroke:#537487;stroke-width:2}.dash{fill:none;stroke:#
|
|
10
|
+
.line{fill:none;stroke:#537487;stroke-width:2}.dash{fill:none;stroke:#C8A100;stroke-width:2;stroke-dasharray:6 5}
|
|
11
11
|
</style>
|
|
12
12
|
<marker id="arrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" fill="#537487"/></marker>
|
|
13
|
-
<marker id="redarrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" fill="#
|
|
13
|
+
<marker id="redarrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" fill="#C8A100"/></marker>
|
|
14
14
|
</defs>
|
|
15
15
|
<rect width="900" height="510" fill="#FFF9E8"/>
|
|
16
16
|
<text class="title" x="450" y="34" text-anchor="middle">READING ONE COMPUTATION</text>
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
<title id="title">Binding values before arithmetic</title>
|
|
3
3
|
<desc id="desc">A finite generator binds N, arithmetic computes its square, and a comparison filters the result; reversing the first two steps leaves arithmetic without an input.</desc>
|
|
4
4
|
<defs><style>
|
|
5
|
-
.bg{fill:#FFF9E8}.box{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.gold{fill:#FFF4BF;stroke:#
|
|
6
|
-
.title{fill:#
|
|
5
|
+
.bg{fill:#FFF9E8}.box{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.rose{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}
|
|
6
|
+
.title{fill:#C8A100;font:bold 24px Georgia,serif}.label{fill:#17324D;font:bold 17px Georgia,serif}.code{fill:#102A3A;font:15px ui-monospace,monospace}.prose{fill:#405E70;font:15px Georgia,serif}.line{fill:none;stroke:#537487;stroke-width:3}
|
|
7
7
|
</style><marker id="a" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" fill="#537487"/></marker></defs>
|
|
8
8
|
<rect class="bg" width="900" height="420"/><text class="title" x="450" y="38" text-anchor="middle">ARITHMETIC RUNS ON BOUND VALUES</text>
|
|
9
9
|
<rect class="green" x="45" y="95" width="220" height="150" rx="12"/><text class="label" x="155" y="128" text-anchor="middle">1 · GENERATE</text><text class="code" x="155" y="166" text-anchor="middle">between(1,10,N)</text><text class="prose" x="155" y="202" text-anchor="middle">binds N to one finite</text><text class="prose" x="155" y="225" text-anchor="middle">candidate at a time</text>
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
<title id="title">An auditable decision service keeps evidence, policy, decision, and proof connected</title>
|
|
3
3
|
<desc id="desc">Versioned evidence and policy flow through integrity checks and reasoning to a permit decision. A proof bundle points back to every source and theory version, while an explicit integrity query exposes invalid inputs.</desc>
|
|
4
4
|
<defs><style>
|
|
5
|
-
.bg{fill:#FFF9E8}.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.blue{fill:#DCEFF7;stroke:#537487;stroke-width:2}.rose{fill:#FFF0D6;stroke:#
|
|
6
|
-
.title{fill:#
|
|
5
|
+
.bg{fill:#FFF9E8}.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.blue{fill:#DCEFF7;stroke:#537487;stroke-width:2}.rose{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}.dark{fill:#2C657A;stroke:#17324D;stroke-width:3}
|
|
6
|
+
.title{fill:#C8A100;font:bold 24px Georgia,serif}.label{fill:#17324D;font:bold 16px Georgia,serif}.code{fill:#102A3A;font:13px ui-monospace,monospace}.light{fill:#FFFDF8;font:14px ui-monospace,monospace}.prose{fill:#405E70;font:14px Georgia,serif}.line{fill:none;stroke:#537487;stroke-width:3}
|
|
7
7
|
</style><marker id="a" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" fill="#537487"/></marker></defs>
|
|
8
8
|
<rect class="bg" width="900" height="460"/><text class="title" x="450" y="38" text-anchor="middle">THE AUDIT TRAIL IS PART OF THE DECISION</text>
|
|
9
9
|
<rect class="paper" x="30" y="90" width="195" height="105" rx="10"/><text class="label" x="127" y="120" text-anchor="middle">SOURCE FACTS</text><text class="code" x="127" y="151" text-anchor="middle">person · badge</text><text class="code" x="127" y="176" text-anchor="middle">source_version(v7)</text>
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
<title id="title">Finite search as experimental mathematics</title>
|
|
3
3
|
<desc id="desc">A universal conjecture is restricted to a declared finite domain. Search either returns a counterexample, which refutes the conjecture, or exhausts the box, which supplies bounded evidence but not a universal proof.</desc>
|
|
4
4
|
<defs><style>
|
|
5
|
-
.bg{fill:#FFF9E8}.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.domain{fill:#DCEFF7;stroke:#537487;stroke-width:3}.bad{fill:#FFF0D6;stroke:#
|
|
6
|
-
.title{fill:#
|
|
5
|
+
.bg{fill:#FFF9E8}.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.domain{fill:#DCEFF7;stroke:#537487;stroke-width:3}.bad{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}.good{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}
|
|
6
|
+
.title{fill:#C8A100;font:bold 24px Georgia,serif}.label{fill:#17324D;font:bold 17px Georgia,serif}.code{fill:#102A3A;font:14px ui-monospace,monospace}.prose{fill:#405E70;font:15px Georgia,serif}.line{fill:none;stroke:#537487;stroke-width:3}
|
|
7
7
|
</style><marker id="a" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" fill="#537487"/></marker></defs>
|
|
8
8
|
<rect class="bg" width="900" height="440"/><text class="title" x="450" y="38" text-anchor="middle">FINITE SEARCH: REFUTATION AND BOUNDED EVIDENCE</text>
|
|
9
9
|
<rect class="paper" x="30" y="125" width="210" height="125" rx="10"/><text class="label" x="135" y="158" text-anchor="middle">CONJECTURE</text><text class="code" x="135" y="198" text-anchor="middle">∀ n . P(n)</text><text class="prose" x="135" y="227" text-anchor="middle">a universal claim</text>
|
|
10
|
-
<path class="line" marker-end="url(#a)" d="M240 187H292"/><rect class="domain" x="300" y="75" width="300" height="250" rx="16"/><text class="label" x="450" y="110" text-anchor="middle">DECLARED FINITE DOMAIN</text><text class="code" x="450" y="145" text-anchor="middle">between(-100,100,n)</text><circle cx="380" cy="205" r="12" fill="#008EAA"/><circle cx="425" cy="235" r="12" fill="#008EAA"/><circle cx="480" cy="185" r="12" fill="#008EAA"/><circle cx="530" cy="245" r="12" fill="#
|
|
10
|
+
<path class="line" marker-end="url(#a)" d="M240 187H292"/><rect class="domain" x="300" y="75" width="300" height="250" rx="16"/><text class="label" x="450" y="110" text-anchor="middle">DECLARED FINITE DOMAIN</text><text class="code" x="450" y="145" text-anchor="middle">between(-100,100,n)</text><circle cx="380" cy="205" r="12" fill="#008EAA"/><circle cx="425" cy="235" r="12" fill="#008EAA"/><circle cx="480" cy="185" r="12" fill="#008EAA"/><circle cx="530" cy="245" r="12" fill="#C8A100"/><text class="prose" x="450" y="295" text-anchor="middle">test every generated point</text>
|
|
11
11
|
<path class="line" marker-end="url(#a)" d="M600 150C645 135 650 125 680 125"/><rect class="bad" x="688" y="75" width="182" height="125" rx="10"/><text class="label" x="779" y="108" text-anchor="middle">FOUND n</text><text class="code" x="779" y="145" text-anchor="middle">¬ P(n)</text><text class="prose" x="779" y="175" text-anchor="middle">global refutation</text>
|
|
12
12
|
<path class="line" marker-end="url(#a)" d="M600 260C645 275 650 290 680 290"/><rect class="good" x="688" y="240" width="182" height="125" rx="10"/><text class="label" x="779" y="273" text-anchor="middle">NONE FOUND</text><text class="code" x="779" y="310" text-anchor="middle">P(-100..100)</text><text class="prose" x="779" y="340" text-anchor="middle">bounded evidence</text>
|
|
13
13
|
<text class="prose" x="450" y="410" text-anchor="middle">Exhaustion proves the bounded statement—not the unbounded theorem.</text>
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
<desc id="desc">A predicted result and an EyeProlog program enter the command line. It emits answers and proofs on standard output, warnings and statistics on standard error, and a process status. Comparison of prediction and evidence leads to a focused revision.</desc>
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
|
-
.bg{fill:#FFF9E8}.source{fill:#FFF4BF;stroke:#
|
|
7
|
-
.line{fill:none;stroke:#537487;stroke-width:3;stroke-linecap:round}.arrow{fill:#537487}.title{fill:#
|
|
6
|
+
.bg{fill:#FFF9E8}.source{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.engine{fill:#17324D;stroke:#102A3A;stroke-width:3}.out{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.diag{fill:#BFEAF1;stroke:#087F98;stroke-width:2}.status{fill:#FFE7BF;stroke:#C8A100;stroke-width:2}.compare{fill:#FFFDF8;stroke:#537487;stroke-width:2}
|
|
7
|
+
.line{fill:none;stroke:#537487;stroke-width:3;stroke-linecap:round}.arrow{fill:#537487}.title{fill:#9D8200;font:bold 24px Georgia,serif}.label{fill:#102A3A;font:bold 17px Georgia,serif}.small{fill:#405E70;font:15px Georgia,serif}.code{fill:#FFFDF8;font:17px ui-monospace,SFMono-Regular,Consolas,monospace}.loop{fill:#9D8200;font:bold 16px Georgia,serif}
|
|
8
8
|
</style>
|
|
9
9
|
</defs>
|
|
10
10
|
<rect width="900" height="470" class="bg"/>
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
<title id="title">Text becomes structured context without becoming global fact</title>
|
|
3
3
|
<desc id="desc">Raw text is normalized into a message context. An ordinary relation inspects members inside that context, while a boundary prevents those members from becoming ambient facts.</desc>
|
|
4
4
|
<defs><style>
|
|
5
|
-
.bg{fill:#FFF9E8}.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.ctx{fill:#DDF7FB;stroke:#008EAA;stroke-width:3}.warn{fill:#FFF0D6;stroke:#
|
|
6
|
-
.title{fill:#
|
|
5
|
+
.bg{fill:#FFF9E8}.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.ctx{fill:#DDF7FB;stroke:#008EAA;stroke-width:3}.warn{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}
|
|
6
|
+
.title{fill:#C8A100;font:bold 24px Georgia,serif}.label{fill:#17324D;font:bold 17px Georgia,serif}.code{fill:#102A3A;font:14px ui-monospace,monospace}.prose{fill:#405E70;font:15px Georgia,serif}.line{fill:none;stroke:#537487;stroke-width:3}
|
|
7
7
|
</style><marker id="a" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" fill="#537487"/></marker></defs>
|
|
8
8
|
<rect class="bg" width="900" height="430"/><text class="title" x="450" y="38" text-anchor="middle">STRUCTURE TEXT AT THE MODEL BOUNDARY</text>
|
|
9
9
|
<rect class="paper" x="30" y="105" width="210" height="150" rx="10"/><text class="label" x="135" y="138" text-anchor="middle">RAW INPUT</text><text class="code" x="135" y="178" text-anchor="middle">" TEMP 91 "</text><text class="prose" x="135" y="215" text-anchor="middle">trim · normalize · parse</text>
|
|
10
10
|
<path class="line" marker-end="url(#a)" d="M240 180H292"/>
|
|
11
11
|
<rect class="ctx" x="300" y="75" width="330" height="220" rx="16"/><text class="label" x="465" y="110" text-anchor="middle">MESSAGE CONTEXT · event_17</text><rect class="paper" x="340" y="135" width="250" height="38" rx="18"/><text class="code" x="465" y="159" text-anchor="middle">severity(high)</text><rect class="paper" x="340" y="183" width="250" height="38" rx="18"/><text class="code" x="465" y="207" text-anchor="middle">source(sensor_3)</text><rect class="paper" x="340" y="231" width="250" height="38" rx="18"/><text class="code" x="465" y="255" text-anchor="middle">reading(temp,91)</text>
|
|
12
12
|
<path class="line" marker-end="url(#a)" d="M630 185H680"/><rect class="paper" x="688" y="105" width="182" height="150" rx="10"/><text class="label" x="779" y="138" text-anchor="middle">INSPECT</text><text class="code" x="779" y="178" text-anchor="middle">context_member/2</text><text class="prose" x="779" y="211" text-anchor="middle">walks members</text><text class="prose" x="779" y="233" text-anchor="middle">inside this message</text>
|
|
13
|
-
<path d="M285 315H645" stroke="#
|
|
13
|
+
<path d="M285 315H645" stroke="#C8A100" stroke-width="3" stroke-dasharray="8 6"/><text class="label" x="465" y="340" text-anchor="middle">CONTEXT BOUNDARY</text>
|
|
14
14
|
<rect class="warn" x="245" y="360" width="440" height="45" rx="9"/><text class="code" x="465" y="388" text-anchor="middle">inspection ≠ asserting severity(high) globally</text>
|
|
15
15
|
</svg>
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
<title id="title">Correctness, completeness, and termination are separate obligations</title>
|
|
3
3
|
<desc id="desc">Three overlapping circles represent no false answers, all intended answers, and finite computation. The dependable operational contract lies where all three overlap.</desc>
|
|
4
4
|
<defs><style>
|
|
5
|
-
.bg{fill:#FFF9E8}.sound{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.complete{fill:#DCEFF7;stroke:#537487;stroke-width:2}.term{fill:#FFF4BF;stroke:#
|
|
6
|
-
.title{fill:#
|
|
5
|
+
.bg{fill:#FFF9E8}.sound{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.complete{fill:#DCEFF7;stroke:#537487;stroke-width:2}.term{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.contract{fill:#FFFDF8;stroke:#C8A100;stroke-width:2.5}
|
|
6
|
+
.title{fill:#C8A100;font:bold 24px Georgia,serif}.label{fill:#17324D;font:bold 17px Georgia,serif}.prose{fill:#405E70;font:15px Georgia,serif}.code{fill:#102A3A;font:14px ui-monospace,monospace}.center{fill:#9D8200;font:bold 17px Georgia,serif}.line{fill:none;stroke:#537487;stroke-width:3}
|
|
7
7
|
</style><marker id="arrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" fill="#537487"/></marker></defs>
|
|
8
8
|
<rect class="bg" width="900" height="430"/><text class="title" x="450" y="38" text-anchor="middle">THREE PROMISES, THREE PROOF OBLIGATIONS</text>
|
|
9
9
|
<rect class="sound" x="35" y="85" width="250" height="155" rx="12"/><text class="label" x="160" y="120" text-anchor="middle">SOUNDNESS</text><text class="prose" x="160" y="157" text-anchor="middle">Every returned answer</text><text class="prose" x="160" y="181" text-anchor="middle">is justified.</text><text class="code" x="160" y="216" text-anchor="middle">no false answers</text>
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
6
|
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}
|
|
7
|
-
.gold{fill:#FFF4BF;stroke:#
|
|
8
|
-
.blue{fill:#DCEFF7;stroke:#537487;stroke-width:2}.title{fill:#
|
|
7
|
+
.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.rose{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}
|
|
8
|
+
.blue{fill:#DCEFF7;stroke:#537487;stroke-width:2}.title{fill:#C8A100;font:bold 24px Georgia,serif}
|
|
9
9
|
.label{fill:#17324D;font:bold 17px Georgia,serif}.prose{fill:#405E70;font:15px Georgia,serif}
|
|
10
10
|
.code{fill:#102A3A;font:14px ui-monospace,SFMono-Regular,Consolas,monospace}.line{fill:none;stroke:#537487;stroke-width:2.5}
|
|
11
11
|
</style>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<style>
|
|
6
6
|
.bg{fill:#FFF9E8}.region{stroke:#17324D;stroke-width:2}.core{fill:#17324D;stroke:#102A3A;stroke-width:3}
|
|
7
7
|
.path{fill:none;stroke:#FFFDF8;stroke-width:5;stroke-linecap:round;opacity:.9}.link{fill:none;stroke:#537487;stroke-width:2.5;stroke-dasharray:6 5}
|
|
8
|
-
.title{fill:#
|
|
8
|
+
.title{fill:#9D8200;font:bold 24px Georgia,serif}.label{fill:#102A3A;font:bold 17px Georgia,serif}
|
|
9
9
|
.small{fill:#405E70;font:16px Georgia,serif}.output{fill:#405E70;font:14px Georgia,serif}.code{fill:#DDF7FB;font:16px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
10
10
|
</style>
|
|
11
11
|
</defs>
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
|
|
42
42
|
<rect x="305" y="385" width="140" height="55" rx="10" fill="#FFFDF8" stroke="#008EAA" stroke-width="2"/>
|
|
43
43
|
<text class="label" x="375" y="408" text-anchor="middle">ANSWERS</text><text class="output" x="375" y="428" text-anchor="middle">ground results</text>
|
|
44
|
-
<rect x="455" y="385" width="140" height="55" rx="10" fill="#FFFDF8" stroke="#
|
|
44
|
+
<rect x="455" y="385" width="140" height="55" rx="10" fill="#FFFDF8" stroke="#E2BA22" stroke-width="2"/>
|
|
45
45
|
<text class="label" x="525" y="408" text-anchor="middle">PROOFS</text><text class="output" x="525" y="428" text-anchor="middle">supporting steps</text>
|
|
46
46
|
<path class="link" d="M410 325L382 385M490 325L518 385"/>
|
|
47
47
|
<text class="small" x="450" y="474" text-anchor="middle">predict → run → compare → inspect → revise</text>
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
6
|
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}
|
|
7
|
-
.gold{fill:#FFF4BF;stroke:#
|
|
8
|
-
.title{fill:#
|
|
7
|
+
.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.rose{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}
|
|
8
|
+
.title{fill:#C8A100;font:bold 24px Georgia,serif}.label{fill:#17324D;font:bold 17px Georgia,serif}
|
|
9
9
|
.prose{fill:#405E70;font:16px Georgia,serif}.code{fill:#102A3A;font:15px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
10
|
-
.line{fill:none;stroke:#537487;stroke-width:2.5}.cut{fill:none;stroke:#
|
|
10
|
+
.line{fill:none;stroke:#537487;stroke-width:2.5}.cut{fill:none;stroke:#C8A100;stroke-width:2}
|
|
11
11
|
</style>
|
|
12
12
|
<marker id="arrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" fill="#537487"/></marker>
|
|
13
13
|
</defs>
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
<style>
|
|
9
9
|
.box{fill:#FFFDF8;stroke:#17324D;stroke-width:2}
|
|
10
10
|
.model{fill:#E8FAFC;stroke:#008EAA;stroke-width:3}
|
|
11
|
-
.title{fill:#
|
|
12
|
-
.box-title{fill:#
|
|
11
|
+
.title{fill:#C8A100;font:bold 19px Georgia,serif}
|
|
12
|
+
.box-title{fill:#C8A100;font:bold 17px Georgia,serif}
|
|
13
13
|
.box-sub{fill:#405E70;font:15px Georgia,serif}
|
|
14
14
|
.text{fill:#102A3A;font:18px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
15
15
|
.prose{fill:#405E70;font:17px Georgia,serif}
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
<desc id="desc">Conflicting lower and upper limits produce an invalid-state result for the host to handle before operation.</desc>
|
|
4
4
|
<style>
|
|
5
5
|
.wall{fill:#EAF8FA}.panel{fill:#2C657A;stroke:#17324D;stroke-width:4}.screen{fill:#FFFDF8;stroke:#17324D;stroke-width:2}
|
|
6
|
-
.text{fill:#17324D;font:17px ui-monospace,monospace}.light{fill:#
|
|
7
|
-
.wire{fill:none;stroke:#
|
|
6
|
+
.text{fill:#17324D;font:17px ui-monospace,monospace}.light{fill:#C8A100;stroke:#9D8200;stroke-width:3}.safe{fill:#008EAA}
|
|
7
|
+
.wire{fill:none;stroke:#C8A100;stroke-width:5}.lever{fill:#D6F3F7;stroke:#17324D;stroke-width:3}
|
|
8
8
|
</style>
|
|
9
9
|
<rect width="900" height="380" class="wall"/><rect class="panel" x="55" y="40" width="790" height="300" rx="15"/>
|
|
10
10
|
<rect class="screen" x="95" y="80" width="230" height="120" rx="7"/><text class="text" x="210" y="110" text-anchor="middle">LOWER LIMIT</text><text class="text" x="210" y="165" text-anchor="middle" font-size="30">80</text>
|
|
11
11
|
<rect class="screen" x="575" y="80" width="230" height="120" rx="7"/><text class="text" x="690" y="110" text-anchor="middle">UPPER LIMIT</text><text class="text" x="690" y="165" text-anchor="middle" font-size="30">60</text>
|
|
12
12
|
<path class="wire" d="M325 140 H390 M510 140 H575"/><circle class="light" cx="450" cy="140" r="48"/><text x="450" y="132" text-anchor="middle" fill="#FFFDF8" font-family="Georgia,serif" font-weight="bold" font-size="18">INVALID</text><text x="450" y="157" text-anchor="middle" fill="#FFFDF8" font-family="ui-monospace,monospace" font-size="14">FOUND</text>
|
|
13
|
-
<rect class="screen" x="300" y="230" width="300" height="65" rx="8"/><text class="text" x="450" y="256" text-anchor="middle">invalid_limits(Low, High).</text><text x="450" y="280" text-anchor="middle" fill="#
|
|
13
|
+
<rect class="screen" x="300" y="230" width="300" height="65" rx="8"/><text class="text" x="450" y="256" text-anchor="middle">invalid_limits(Low, High).</text><text x="450" y="280" text-anchor="middle" fill="#C8A100" font-family="ui-monospace,monospace" font-size="16">reported to the host</text>
|
|
14
14
|
<circle cx="140" cy="265" r="16" class="safe"/><circle cx="760" cy="265" r="16" class="light"/>
|
|
15
15
|
</svg>
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
<desc id="desc">A goal enters a control board, branches through choice and exception recovery, then solutions flow into findall, bagof, and setof collectors.</desc>
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
|
-
.bg{fill:#FFF9E8}.box{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.choice{fill:#FFEBC7;stroke:#
|
|
7
|
-
.ok{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.group{fill:#DCEFF7;stroke:#537487;stroke-width:2}.gold{fill:#FFF4BF;stroke:#
|
|
8
|
-
.title{fill:#
|
|
6
|
+
.bg{fill:#FFF9E8}.box{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.choice{fill:#FFEBC7;stroke:#C8A100;stroke-width:2}
|
|
7
|
+
.ok{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.group{fill:#DCEFF7;stroke:#537487;stroke-width:2}.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}
|
|
8
|
+
.title{fill:#C8A100;font:bold 23px Georgia,serif}.label{fill:#17324D;font:bold 16px Georgia,serif}
|
|
9
9
|
.code{fill:#102A3A;font:14px ui-monospace,SFMono-Regular,Consolas,monospace}.prose{fill:#405E70;font:15px Georgia,serif}
|
|
10
|
-
.line{fill:none;stroke:#537487;stroke-width:2.5}.error{fill:none;stroke:#
|
|
10
|
+
.line{fill:none;stroke:#537487;stroke-width:2.5}.error{fill:none;stroke:#C8A100;stroke-width:2.5;stroke-dasharray:7 5}
|
|
11
11
|
</style>
|
|
12
12
|
<marker id="a" markerWidth="7" markerHeight="7" refX="6" refY="3.5" orient="auto"><path d="M0 0L7 3.5L0 7Z" fill="#537487"/></marker>
|
|
13
|
-
<marker id="r" markerWidth="7" markerHeight="7" refX="6" refY="3.5" orient="auto"><path d="M0 0L7 3.5L0 7Z" fill="#
|
|
13
|
+
<marker id="r" markerWidth="7" markerHeight="7" refX="6" refY="3.5" orient="auto"><path d="M0 0L7 3.5L0 7Z" fill="#C8A100"/></marker>
|
|
14
14
|
</defs>
|
|
15
15
|
<rect width="900" height="390" class="bg"/><text class="title" x="450" y="34" text-anchor="middle">FROM A GOAL TO A CONTROLLED ANSWER SET</text>
|
|
16
16
|
<rect class="box" x="30" y="145" width="130" height="70" rx="10"/><text class="label" x="95" y="174" text-anchor="middle">GOAL</text><text class="code" x="95" y="199" text-anchor="middle">route(A, B)</text>
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
6
|
.bg{fill:#EAF8FA}.panel{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.slot{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}
|
|
7
|
-
.first{fill:#FFEBC7;stroke:#
|
|
8
|
-
.title{fill:#
|
|
7
|
+
.first{fill:#FFEBC7;stroke:#C8A100;stroke-width:2}.last{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.blue{fill:#DCEFF7;stroke:#537487;stroke-width:2}
|
|
8
|
+
.title{fill:#C8A100;font:bold 23px Georgia,serif}.label{fill:#17324D;font:bold 16px Georgia,serif}
|
|
9
9
|
.code{fill:#102A3A;font:14px ui-monospace,SFMono-Regular,Consolas,monospace}.prose{fill:#405E70;font:15px Georgia,serif}
|
|
10
|
-
.line{fill:none;stroke:#537487;stroke-width:2.5}.redline{fill:none;stroke:#
|
|
10
|
+
.line{fill:none;stroke:#537487;stroke-width:2.5}.redline{fill:none;stroke:#C8A100;stroke-width:2.5}
|
|
11
11
|
</style>
|
|
12
12
|
<marker id="a" markerWidth="7" markerHeight="7" refX="6" refY="3.5" orient="auto"><path d="M0 0L7 3.5L0 7Z" fill="#537487"/></marker>
|
|
13
|
-
<marker id="r" markerWidth="7" markerHeight="7" refX="6" refY="3.5" orient="auto"><path d="M0 0L7 3.5L0 7Z" fill="#
|
|
13
|
+
<marker id="r" markerWidth="7" markerHeight="7" refX="6" refY="3.5" orient="auto"><path d="M0 0L7 3.5L0 7Z" fill="#C8A100"/></marker>
|
|
14
14
|
</defs>
|
|
15
15
|
<rect width="900" height="410" class="bg"/><text class="title" x="450" y="34" text-anchor="middle">SOLVER-LOCAL STATE AND READABLE SYNTAX</text>
|
|
16
16
|
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
6
|
.bg{fill:#FFF9E8}.term{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.stream{fill:#DCEFF7;stroke:#537487;stroke-width:2}
|
|
7
|
-
.file{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.eof{fill:#FFF4BF;stroke:#
|
|
8
|
-
.title{fill:#
|
|
7
|
+
.file{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.eof{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}
|
|
8
|
+
.title{fill:#C8A100;font:bold 23px Georgia,serif}.label{fill:#17324D;font:bold 16px Georgia,serif}
|
|
9
9
|
.code{fill:#102A3A;font:14px ui-monospace,SFMono-Regular,Consolas,monospace}.prose{fill:#405E70;font:15px Georgia,serif}
|
|
10
10
|
.line{fill:none;stroke:#537487;stroke-width:2.5}.unit{fill:#FFFDF8;stroke:#537487;stroke-width:1.5}
|
|
11
11
|
</style>
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
6
|
.bg{fill:#FFF9E8}.term{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.card{fill:#FFFDF8;stroke:#17324D;stroke-width:2}
|
|
7
|
-
.blue{fill:#DCEFF7;stroke:#537487;stroke-width:2}.gold{fill:#FFF4BF;stroke:#
|
|
8
|
-
.title{fill:#
|
|
7
|
+
.blue{fill:#DCEFF7;stroke:#537487;stroke-width:2}.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}
|
|
8
|
+
.title{fill:#C8A100;font:bold 23px Georgia,serif}.label{fill:#17324D;font:bold 16px Georgia,serif}
|
|
9
9
|
.code{fill:#102A3A;font:14px ui-monospace,SFMono-Regular,Consolas,monospace}.prose{fill:#405E70;font:15px Georgia,serif}
|
|
10
10
|
.ray{fill:none;stroke:#537487;stroke-width:2.2}
|
|
11
11
|
</style>
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
<defs><marker id="a" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto"><path d="M0 0 L0 6 L9 3Z" fill="#2C657A"/></marker></defs>
|
|
5
5
|
<style>
|
|
6
6
|
.bg{fill:#FFF3D8}.box{fill:#FFFDF8;stroke:#17324D;stroke-width:2.5}.concept{fill:#DDF7FB;stroke:#008EAA;stroke-width:3}
|
|
7
|
-
.text{fill:#17324D;font:16px ui-monospace,monospace}.title{fill:#
|
|
8
|
-
.arrow{fill:none;stroke:#2C657A;stroke-width:3;marker-end:url(#a)}.proof{fill:#F6D978;stroke:#
|
|
7
|
+
.text{fill:#17324D;font:16px ui-monospace,monospace}.title{fill:#9D8200;font:bold 17px Georgia,serif}
|
|
8
|
+
.arrow{fill:none;stroke:#2C657A;stroke-width:3;marker-end:url(#a)}.proof{fill:#F6D978;stroke:#E2BA22;stroke-width:2}
|
|
9
9
|
</style>
|
|
10
10
|
<rect width="900" height="380" class="bg"/>
|
|
11
11
|
<rect class="box" x="35" y="95" width="165" height="190" rx="8"/><text class="title" x="118" y="125" text-anchor="middle">SOURCE FACTS</text><text class="text" x="55" y="165">sensor(91)</text><text class="text" x="55" y="200">limit(80)</text><text class="text" x="55" y="235">device(b1)</text>
|
|
12
12
|
<path class="arrow" d="M200 190 H260"/><rect class="box" x="265" y="120" width="165" height="140" rx="8"/><text class="title" x="348" y="150" text-anchor="middle">NORMALIZE</text><text class="text" x="285" y="190">celsius(91)</text><text class="text" x="285" y="225">max_temp(80)</text>
|
|
13
13
|
<path class="arrow" d="M430 190 H490"/><rect class="concept" x="495" y="120" width="165" height="140" rx="8"/><text class="title" x="578" y="150" text-anchor="middle">CONCEPT</text><text class="text" x="520" y="195">overheated(b1)</text>
|
|
14
14
|
<path class="arrow" d="M660 190 H720"/><rect class="concept" x="725" y="120" width="145" height="140" rx="8"/><text class="title" x="798" y="150" text-anchor="middle">DECISION</text><text class="text" x="747" y="195">isolate(b1)</text><text class="text" x="755" y="225">cool(b1)</text>
|
|
15
|
-
<path class="arrow" d="M578 265 C578 315 665 315 715 300"/><path class="proof" d="M715 270 H845 V345 H715Z"/><path d="M715 270 H760 L775 285 H845" fill="#F2C94C" stroke="#
|
|
15
|
+
<path class="arrow" d="M578 265 C578 315 665 315 715 300"/><path class="proof" d="M715 270 H845 V345 H715Z"/><path d="M715 270 H760 L775 285 H845" fill="#F2C94C" stroke="#E2BA22" stroke-width="2"/><text class="text" x="780" y="318" text-anchor="middle">why/2</text>
|
|
16
16
|
</svg>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
6
|
.bg{fill:#FFF9E8}.stage{stroke:#537487;stroke-width:2}.s1{fill:#DDF7FB}.s2{fill:#BFEAF1}.s3{fill:#FFF4BF}.s4{fill:#FFE7BF}.s5{fill:#17324D;stroke:#102A3A;stroke-width:3}
|
|
7
|
-
.line{fill:none;stroke:#537487;stroke-width:4;stroke-linecap:round}.arrow{fill:#537487}.title{fill:#
|
|
7
|
+
.line{fill:none;stroke:#537487;stroke-width:4;stroke-linecap:round}.arrow{fill:#537487}.title{fill:#9D8200;font:bold 24px Georgia,serif}.number{fill:#9D8200;font:bold 20px Georgia,serif}.label{fill:#102A3A;font:bold 17px Georgia,serif}.small{fill:#405E70;font:15px Georgia,serif}.white{fill:#FFFDF8}.thread{fill:#405E70;font:italic 16px Georgia,serif}
|
|
8
8
|
</style>
|
|
9
9
|
</defs>
|
|
10
10
|
<rect width="900" height="470" class="bg"/>
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
<title id="title">Lists as railway carriages</title>
|
|
3
3
|
<desc id="desc">A train of labeled carriages shows a list head, its tail, and two shorter trains joining through append.</desc>
|
|
4
4
|
<style>
|
|
5
|
-
.sky{fill:#EAF8FA}.ground{fill:#FFF3D8}.rail{stroke:#2C657A;stroke-width:5}.tie{stroke:#
|
|
5
|
+
.sky{fill:#EAF8FA}.ground{fill:#FFF3D8}.rail{stroke:#2C657A;stroke-width:5}.tie{stroke:#A48800;stroke-width:3}
|
|
6
6
|
.car{fill:#FFFDF8;stroke:#17324D;stroke-width:3}.head{fill:#DDF7FB;stroke:#008EAA;stroke-width:4}
|
|
7
|
-
.wheel{fill:#2C657A;stroke:#17324D;stroke-width:2}.text{fill:#17324D;font:18px ui-monospace,monospace}.brace{fill:none;stroke:#
|
|
7
|
+
.wheel{fill:#2C657A;stroke:#17324D;stroke-width:2}.text{fill:#17324D;font:18px ui-monospace,monospace}.brace{fill:none;stroke:#C8A100;stroke-width:3}
|
|
8
8
|
</style>
|
|
9
9
|
<rect width="900" height="340" class="sky"/><rect y="230" width="900" height="110" class="ground"/>
|
|
10
10
|
<line class="rail" x1="40" y1="275" x2="860" y2="275"/><g class="tie"><line x1="70" y1="260" x2="70" y2="290"/><line x1="150" y1="260" x2="150" y2="290"/><line x1="230" y1="260" x2="230" y2="290"/><line x1="310" y1="260" x2="310" y2="290"/><line x1="390" y1="260" x2="390" y2="290"/><line x1="470" y1="260" x2="470" y2="290"/><line x1="550" y1="260" x2="550" y2="290"/><line x1="630" y1="260" x2="630" y2="290"/><line x1="710" y1="260" x2="710" y2="290"/><line x1="790" y1="260" x2="790" y2="290"/></g>
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}
|
|
10
10
|
.ink{fill:#102A3A;font:18px Georgia,serif}
|
|
11
11
|
.small{fill:#405E70;font:15px Georgia,serif}
|
|
12
|
-
.label{fill:#
|
|
12
|
+
.label{fill:#C8A100;font:bold 18px Georgia,serif}
|
|
13
13
|
.code{fill:#102A3A;font:17px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
14
14
|
.line{stroke:#405E70;stroke-width:2;fill:none;marker-end:url(#arrow)}
|
|
15
15
|
</style>
|
|
@@ -36,10 +36,10 @@
|
|
|
36
36
|
<rect class="paper" x="630" y="55" width="235" height="305" rx="8"/>
|
|
37
37
|
<text class="label" x="747" y="92" text-anchor="middle">CONTROL</text>
|
|
38
38
|
<text class="ink" x="653" y="130">How is it found?</text>
|
|
39
|
-
<circle cx="680" cy="170" r="8" fill="#
|
|
40
|
-
<circle cx="735" cy="215" r="8" fill="#
|
|
41
|
-
<circle cx="790" cy="260" r="8" fill="#
|
|
42
|
-
<path d="M686 176 L728 209 M741 221 L783 254" stroke="#
|
|
39
|
+
<circle cx="680" cy="170" r="8" fill="#C8A100"/>
|
|
40
|
+
<circle cx="735" cy="215" r="8" fill="#C8A100"/>
|
|
41
|
+
<circle cx="790" cy="260" r="8" fill="#C8A100"/>
|
|
42
|
+
<path d="M686 176 L728 209 M741 221 L783 254" stroke="#C8A100" stroke-width="3"/>
|
|
43
43
|
<text class="small" x="653" y="300">Choose an edge first;</text>
|
|
44
44
|
<text class="small" x="653" y="323">then solve a smaller or</text>
|
|
45
45
|
<text class="small" x="653" y="346">reused path question.</text>
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
<title id="title">Negation and a complete guest registry</title>
|
|
3
3
|
<desc id="desc">A receptionist checks a complete event registry; one invited name is absent from the blocked list, making closed-world negation meaningful.</desc>
|
|
4
4
|
<style>
|
|
5
|
-
.wall{fill:#EAF8FA}.desk{fill:#
|
|
5
|
+
.wall{fill:#EAF8FA}.desk{fill:#E4C13C}.book{fill:#FFFDF8;stroke:#17324D;stroke-width:3}.line{stroke:#2C657A;stroke-width:2}
|
|
6
6
|
.person{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.coat{fill:#D6F3F7;stroke:#17324D;stroke-width:2}
|
|
7
|
-
.text{fill:#17324D;font:15px ui-monospace,monospace}.red{fill:#
|
|
7
|
+
.text{fill:#17324D;font:15px ui-monospace,monospace}.red{fill:#C8A100}.green{fill:#008EAA}.stamp{fill:none;stroke:#008EAA;stroke-width:4}
|
|
8
8
|
</style>
|
|
9
9
|
<rect width="900" height="380" class="wall"/><rect y="285" width="900" height="95" class="desk"/>
|
|
10
10
|
<g transform="translate(105 210)"><circle class="person" cx="0" cy="-55" r="24"/><path class="coat" d="M-38-25 Q0-50 38-25 L30 65 H-30Z"/></g>
|
|
@@ -13,5 +13,5 @@
|
|
|
13
13
|
<text class="text" x="285" y="135">ada</text><circle class="green" cx="470" cy="130" r="8"/><text class="text" x="285" y="180">byron</text><circle class="green" cx="470" cy="175" r="8"/><text class="text" x="285" y="225">clara</text><circle class="green" cx="470" cy="220" r="8"/>
|
|
14
14
|
<text class="text" x="555" y="135">byron</text><circle class="red" cx="750" cy="130" r="8"/>
|
|
15
15
|
<circle class="stamp" cx="650" cy="220" r="48"/><path class="stamp" d="M620 220 L641 241 L682 195"/><text class="text" x="650" y="290" text-anchor="middle">not(blocked(clara))</text>
|
|
16
|
-
<path d="M150 165 C195 130 225 125 270 130" fill="none" stroke="#
|
|
16
|
+
<path d="M150 165 C195 130 225 125 270 130" fill="none" stroke="#C8A100" stroke-width="3"/>
|
|
17
17
|
</svg>
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
<desc id="desc">People, homes, a school, and a bicycle are connected by labeled facts in a small town scene.</desc>
|
|
4
4
|
<style>
|
|
5
5
|
.sky{fill:#EAF8FA}.ground{fill:#FFF3D8}.road{fill:#D9D1C1}
|
|
6
|
-
.building{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.roof{fill:#
|
|
7
|
-
.tree{fill:#55BFD0;stroke:#008EAA;stroke-width:2}.trunk{stroke:#
|
|
6
|
+
.building{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.roof{fill:#D8AE1E;stroke:#17324D;stroke-width:2}
|
|
7
|
+
.tree{fill:#55BFD0;stroke:#008EAA;stroke-width:2}.trunk{stroke:#A48800;stroke-width:8}
|
|
8
8
|
.person{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.shirt{fill:#D6F3F7;stroke:#17324D;stroke-width:2}
|
|
9
|
-
.relation{fill:none;stroke:#
|
|
10
|
-
.label{fill:#FFFDF8;stroke:#
|
|
9
|
+
.relation{fill:none;stroke:#C8A100;stroke-width:2.5;stroke-dasharray:7 5}
|
|
10
|
+
.label{fill:#FFFDF8;stroke:#C8A100;stroke-width:1.5}.text{fill:#9D8200;font:14px ui-monospace,monospace}
|
|
11
11
|
.detail{fill:none;stroke:#17324D;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
|
|
12
12
|
.bike-frame{fill:none;stroke:#008EAA;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
|
|
13
13
|
.bike-part{fill:none;stroke:#17324D;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
<desc id="desc">A traveler studies several mountain paths; dead ends and a loop are marked while one green route reaches a cabin.</desc>
|
|
4
4
|
<style>
|
|
5
5
|
.sky{fill:#EAF8FA}.hill1{fill:#BDEBF0}.hill2{fill:#6BCBD7}.snow{fill:#FFFDF8}
|
|
6
|
-
.path{fill:none;stroke:#
|
|
6
|
+
.path{fill:none;stroke:#A48800;stroke-width:7;stroke-linecap:round;stroke-dasharray:9 7}
|
|
7
7
|
.chosen{fill:none;stroke:#008EAA;stroke-width:9;stroke-linecap:round}
|
|
8
|
-
.dead{stroke:#
|
|
9
|
-
.ink{fill:none;stroke:#17324D;stroke-width:3;stroke-linecap:round}.coat{fill:#
|
|
8
|
+
.dead{stroke:#C8A100;stroke-width:5}.sign{fill:#FFFDF8;stroke:#17324D;stroke-width:2}
|
|
9
|
+
.ink{fill:none;stroke:#17324D;stroke-width:3;stroke-linecap:round}.coat{fill:#D8AE1E;stroke:#17324D;stroke-width:2}
|
|
10
10
|
</style>
|
|
11
11
|
<rect width="900" height="420" class="sky"/>
|
|
12
12
|
<circle cx="735" cy="85" r="43" fill="#F6D978"/>
|
|
@@ -22,6 +22,6 @@
|
|
|
22
22
|
<line class="dead" x1="380" y1="327" x2="410" y2="357"/><line class="dead" x1="410" y1="327" x2="380" y2="357"/>
|
|
23
23
|
<line class="dead" x1="647" y1="132" x2="675" y2="158"/><line class="dead" x1="675" y1="132" x2="647" y2="158"/>
|
|
24
24
|
<g transform="translate(75 315)"><circle cx="0" cy="-35" r="14" class="sign"/><path class="coat" d="M-22-13 Q0-28 22-13 L18 37 H-18Z"/><path class="ink" d="M-8 37 L-12 66 M8 37 L13 66 M18-2 L35 10"/></g>
|
|
25
|
-
<g transform="translate(760 205)"><rect class="sign" x="0" y="28" width="92" height="62"/><polygon points="-12,30 46,-10 104,30" fill="#
|
|
25
|
+
<g transform="translate(760 205)"><rect class="sign" x="0" y="28" width="92" height="62"/><polygon points="-12,30 46,-10 104,30" fill="#D8AE1E" stroke="#17324D" stroke-width="2"/><rect x="37" y="58" width="22" height="32" fill="#E5B23B" stroke="#17324D" stroke-width="2"/><path d="M72 0 Q65-25 76-43" class="ink"/></g>
|
|
26
26
|
<g transform="translate(220 292)"><path class="ink" d="M0 38 V0"/><path class="sign" d="M0 3 L62 3 L52-17 L0-17Z"/><path class="sign" d="M0 28 L-55 28 L-45 8 L0 8Z"/></g>
|
|
27
27
|
</svg>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<style>
|
|
5
5
|
.wall{fill:#EAF5F7}.panel{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.screen{fill:#DDF6F9;stroke:#008EAA;stroke-width:2}
|
|
6
6
|
.console{fill:#2C657A}.ink{fill:none;stroke:#17324D;stroke-width:3;stroke-linecap:round}
|
|
7
|
-
.wire{fill:none;stroke:#
|
|
7
|
+
.wire{fill:none;stroke:#C8A100;stroke-width:2.5}.hot{fill:#D8AE1E}.safe{fill:#008EAA}
|
|
8
8
|
.text{fill:#17324D;font:16px ui-monospace,monospace}.small{fill:#405E70;font:15px Georgia,serif}
|
|
9
9
|
</style>
|
|
10
10
|
<rect width="900" height="420" class="wall"/>
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
<title id="title">A logic programmer's workbench</title>
|
|
3
3
|
<desc id="desc">A programmer moves between domain notes, clause cards, a graph sketch, and tested EyeProlog code at a warm workbench.</desc>
|
|
4
4
|
<style>
|
|
5
|
-
.wall{fill:#FFF3D8}.desk{fill:#
|
|
5
|
+
.wall{fill:#FFF3D8}.desk{fill:#E4C13C}.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}
|
|
6
6
|
.screen{fill:#17324D;stroke:#102A3A;stroke-width:5}.code{fill:#DDF7FB;font:16px ui-monospace,monospace}
|
|
7
|
-
.ink{fill:none;stroke:#17324D;stroke-width:2.5;stroke-linecap:round}.red{stroke:#
|
|
8
|
-
.note{fill:#F6D978;stroke:#
|
|
7
|
+
.ink{fill:none;stroke:#17324D;stroke-width:2.5;stroke-linecap:round}.red{stroke:#C8A100}.green{stroke:#008EAA}
|
|
8
|
+
.note{fill:#F6D978;stroke:#E2BA22;stroke-width:1.5}.cup{fill:#D6F3F7;stroke:#17324D;stroke-width:2}
|
|
9
9
|
</style>
|
|
10
10
|
<rect width="900" height="420" class="wall"/><rect y="290" width="900" height="130" class="desk"/>
|
|
11
|
-
<rect class="paper" x="45" y="45" width="220" height="190" rx="4"/><text x="155" y="76" text-anchor="middle" fill="#
|
|
11
|
+
<rect class="paper" x="45" y="45" width="220" height="190" rx="4"/><text x="155" y="76" text-anchor="middle" fill="#9D8200" font-family="Georgia,serif" font-size="18">DOMAIN SKETCH</text>
|
|
12
12
|
<circle cx="90" cy="125" r="17" fill="#FFFDF8" stroke="#17324D" stroke-width="2"/><circle cx="195" cy="115" r="17" fill="#FFFDF8" stroke="#17324D" stroke-width="2"/><circle cx="145" cy="190" r="17" fill="#FFFDF8" stroke="#17324D" stroke-width="2"/>
|
|
13
13
|
<path class="ink green" d="M107 124 L177 116 M102 139 L135 177 M185 131 L156 177"/><text x="144" y="150" fill="#405E70" font-family="ui-monospace,monospace" font-size="14">relations</text>
|
|
14
|
-
<rect class="note" x="280" y="58" width="130" height="74" transform="rotate(-5 345 95)"/><text x="345" y="91" text-anchor="middle" fill="#
|
|
15
|
-
<rect class="note" x="285" y="152" width="145" height="78" transform="rotate(4 357 191)"/><text x="357" y="187" text-anchor="middle" fill="#
|
|
14
|
+
<rect class="note" x="280" y="58" width="130" height="74" transform="rotate(-5 345 95)"/><text x="345" y="91" text-anchor="middle" fill="#9D8200" font-family="ui-monospace,monospace" font-size="15">What does one</text><text x="345" y="111" text-anchor="middle" fill="#9D8200" font-family="ui-monospace,monospace" font-size="15">fact mean?</text>
|
|
15
|
+
<rect class="note" x="285" y="152" width="145" height="78" transform="rotate(4 357 191)"/><text x="357" y="187" text-anchor="middle" fill="#9D8200" font-family="ui-monospace,monospace" font-size="15">Which argument</text><text x="357" y="207" text-anchor="middle" fill="#9D8200" font-family="ui-monospace,monospace" font-size="15">gets smaller?</text>
|
|
16
16
|
<rect class="screen" x="470" y="35" width="360" height="235" rx="10"/>
|
|
17
17
|
<text class="code" x="495" y="75">path(X, Y) :- edge(X, Y).</text>
|
|
18
18
|
<text class="code" x="495" y="110">path(X, Z) :-</text><text class="code" x="520" y="135">edge(X, Y),</text><text class="code" x="520" y="160">path(Y, Z).</text>
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
6
|
.bg{fill:#FFF5DF}.panel{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.hub{fill:#DDF7FB;stroke:#008EAA;stroke-width:3}
|
|
7
|
-
.ink{fill:none;stroke:#537487;stroke-width:2.5;stroke-linecap:round}.green{stroke:#008EAA}.red{stroke:#
|
|
7
|
+
.ink{fill:none;stroke:#537487;stroke-width:2.5;stroke-linecap:round}.green{stroke:#008EAA}.red{stroke:#C8A100}.gold{stroke:#E2BA22}
|
|
8
8
|
.node{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.ok{fill:#E8FAFC;stroke:#008EAA;stroke-width:2}
|
|
9
|
-
.title{fill:#
|
|
9
|
+
.title{fill:#9D8200;font:bold 24px Georgia,serif}.label{fill:#17324D;font:17px Georgia,serif}
|
|
10
10
|
.code{fill:#17324D;font:14px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
11
11
|
</style>
|
|
12
12
|
<marker id="arrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" fill="#537487"/></marker>
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
6
|
.sky{fill:#EAF7F9}.ground{fill:#F2DFAC}.stone{fill:#FFFAE8;stroke:#17324D;stroke-width:2}
|
|
7
|
-
.arch{fill:#DDAE4F;stroke:#
|
|
8
|
-
.green{stroke:#008EAA}.red{stroke:#
|
|
7
|
+
.arch{fill:#DDAE4F;stroke:#9D8200;stroke-width:3}.water{fill:#BFEAF1}.ink{fill:none;stroke:#17324D;stroke-width:2.5;stroke-linecap:round}
|
|
8
|
+
.green{stroke:#008EAA}.red{stroke:#C8A100}.gold{stroke:#E2BA22}.title{fill:#9D8200;font:bold 24px Georgia,serif}
|
|
9
9
|
.label{fill:#17324D;font:18px Georgia,serif}.code{fill:#102A3A;font:15px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
10
10
|
</style>
|
|
11
11
|
<marker id="arr" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" fill="#008EAA"/></marker>
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
<desc id="desc">A theory on a laboratory bench moves through prediction, tests, search statistics, proof inspection, and a controlled revision loop.</desc>
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
|
-
.bg{fill:#FFF3D8}.bench{fill:#
|
|
6
|
+
.bg{fill:#FFF3D8}.bench{fill:#E4C13C}.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}
|
|
7
7
|
.screen{fill:#17324D;stroke:#102A3A;stroke-width:4}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}
|
|
8
|
-
.gold{fill:#FFF4BF;stroke:#
|
|
9
|
-
.line{fill:none;stroke:#537487;stroke-width:2.5}.title{fill:#
|
|
8
|
+
.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.red{fill:#FFECCB;stroke:#C8A100;stroke-width:2}
|
|
9
|
+
.line{fill:none;stroke:#537487;stroke-width:2.5}.title{fill:#9D8200;font:bold 24px Georgia,serif}
|
|
10
10
|
.label{fill:#17324D;font:17px Georgia,serif}.code{fill:#DDF7FB;font:15px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
11
11
|
.darkcode{fill:#17324D;font:14px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
12
12
|
</style>
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
<desc id="desc">A programmer at a workbench connects an ISO Prolog manual to control, term, state, operator, and stream instruments.</desc>
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
|
-
.wall{fill:#EAF8FA}.floor{fill:#FFF3D8}.bench{fill:#
|
|
6
|
+
.wall{fill:#EAF8FA}.floor{fill:#FFF3D8}.bench{fill:#E4C13C;stroke:#A48800;stroke-width:3}
|
|
7
7
|
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.screen{fill:#102A3A;stroke:#17324D;stroke-width:3}
|
|
8
|
-
.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.gold{fill:#FFF4BF;stroke:#
|
|
9
|
-
.red{fill:#FFEBC7;stroke:#
|
|
8
|
+
.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}
|
|
9
|
+
.red{fill:#FFEBC7;stroke:#C8A100;stroke-width:2}.blue{fill:#DCEFF7;stroke:#537487;stroke-width:2}
|
|
10
10
|
.ink{fill:#17324D;font:16px Georgia,serif}.label{fill:#17324D;font:bold 15px Georgia,serif}
|
|
11
11
|
.code{fill:#DDF7FB;font:14px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
12
12
|
.screen-code{fill:#DDF7FB;font:12px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
13
13
|
.small-label{fill:#17324D;font:bold 14px Georgia,serif}.small-ink{fill:#17324D;font:14px Georgia,serif}
|
|
14
|
-
.line{fill:none;stroke:#537487;stroke-width:2.5;stroke-linecap:round}.wire{fill:none;stroke:#
|
|
14
|
+
.line{fill:none;stroke:#537487;stroke-width:2.5;stroke-linecap:round}.wire{fill:none;stroke:#C8A100;stroke-width:3}
|
|
15
15
|
</style>
|
|
16
|
-
<marker id="arrow" markerWidth="7" markerHeight="7" refX="6" refY="3.5" orient="auto"><path d="M0 0L7 3.5L0 7Z" fill="#
|
|
16
|
+
<marker id="arrow" markerWidth="7" markerHeight="7" refX="6" refY="3.5" orient="auto"><path d="M0 0L7 3.5L0 7Z" fill="#C8A100"/></marker>
|
|
17
17
|
</defs>
|
|
18
18
|
<rect width="900" height="300" class="wall"/><rect y="300" width="900" height="140" class="floor"/>
|
|
19
19
|
<rect class="bench" x="55" y="270" width="790" height="42" rx="5"/><rect class="bench" x="100" y="310" width="24" height="110"/><rect class="bench" x="776" y="310" width="24" height="110"/>
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
<title id="title">Choose a reasoning pattern by the problem that needs solving</title>
|
|
3
3
|
<desc id="desc">A central design question branches by symptom: drifting meaning, infinite search, unsafe absence, repeated subproblems, opaque decisions, or representational duplicates, each pointing to a named pattern.</desc>
|
|
4
4
|
<defs><style>
|
|
5
|
-
.bg{fill:#FFF9E8}.core{fill:#2C657A;stroke:#17324D;stroke-width:3}.box{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.gold{fill:#FFF4BF;stroke:#
|
|
6
|
-
.title{fill:#
|
|
5
|
+
.bg{fill:#FFF9E8}.core{fill:#2C657A;stroke:#17324D;stroke-width:3}.box{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.rose{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}.blue{fill:#DCEFF7;stroke:#537487;stroke-width:2}
|
|
6
|
+
.title{fill:#C8A100;font:bold 24px Georgia,serif}.label{fill:#17324D;font:bold 13px Georgia,serif}.light{fill:#FFFDF8;font:bold 16px Georgia,serif}.prose{fill:#405E70;font:13px Georgia,serif}.line{fill:none;stroke:#537487;stroke-width:2.5}
|
|
7
7
|
</style></defs>
|
|
8
8
|
<rect class="bg" width="900" height="460"/><text class="title" x="450" y="38" text-anchor="middle">A PATTERN STARTS WITH A NAMED DESIGN PROBLEM</text>
|
|
9
9
|
<rect class="core" x="335" y="175" width="230" height="100" rx="18"/><text class="light" x="450" y="211" text-anchor="middle">WHAT IS GOING WRONG?</text><text class="light" x="450" y="243" text-anchor="middle">choose by consequence</text>
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
<title id="title">Constructing a relational program from examples and invariants</title>
|
|
3
3
|
<desc id="desc">A ground sentence leads to examples and near misses, then a representation and invariant, clauses, and checked answers; surprising answers loop back to refine meaning.</desc>
|
|
4
4
|
<defs><style>
|
|
5
|
-
.bg{fill:#FFF9E8}.box{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.gold{fill:#FFF4BF;stroke:#
|
|
6
|
-
.title{fill:#
|
|
5
|
+
.bg{fill:#FFF9E8}.box{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.rose{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}
|
|
6
|
+
.title{fill:#C8A100;font:bold 24px Georgia,serif}.label{fill:#17324D;font:bold 14px Georgia,serif}.code{fill:#102A3A;font:13px ui-monospace,monospace}.prose{fill:#405E70;font:14px Georgia,serif}.line{fill:none;stroke:#537487;stroke-width:3}
|
|
7
7
|
</style><marker id="a" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" fill="#537487"/></marker></defs>
|
|
8
8
|
<rect class="bg" width="900" height="460"/><text class="title" x="450" y="38" text-anchor="middle">CONSTRUCT THE RELATION FROM MEANING</text>
|
|
9
9
|
<rect class="green" x="35" y="105" width="175" height="115" rx="10"/><text class="label" x="122" y="137" text-anchor="middle">GROUND SENTENCE</text><text class="code" x="122" y="177" text-anchor="middle">routeable(p7,north)</text><text class="prose" x="122" y="203" text-anchor="middle">read it aloud</text>
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
6
|
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.source{fill:#17324D;stroke:#102A3A;stroke-width:3}
|
|
7
|
-
.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.gold{fill:#FFF4BF;stroke:#
|
|
8
|
-
.rose{fill:#FFF0D6;stroke:#
|
|
9
|
-
.title{fill:#
|
|
7
|
+
.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}
|
|
8
|
+
.rose{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}.blue{fill:#DCEFF7;stroke:#537487;stroke-width:2}
|
|
9
|
+
.title{fill:#C8A100;font:bold 24px Georgia,serif}.label{fill:#17324D;font:bold 17px Georgia,serif}
|
|
10
10
|
.prose{fill:#405E70;font:15px Georgia,serif}.code{fill:#102A3A;font:14px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
11
11
|
.light{fill:#DDF7FB;font:15px ui-monospace,SFMono-Regular,Consolas,monospace}.line{fill:none;stroke:#537487;stroke-width:2.5}
|
|
12
12
|
</style>
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
<style>
|
|
6
6
|
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}
|
|
7
7
|
.goal{fill:#E8FAFC;stroke:#008EAA;stroke-width:2}
|
|
8
|
-
.fail{fill:#FFF1D8;stroke:#
|
|
9
|
-
.repeat{fill:#FFF4BF;stroke:#
|
|
10
|
-
.title{fill:#
|
|
8
|
+
.fail{fill:#FFF1D8;stroke:#C8A100;stroke-width:2}
|
|
9
|
+
.repeat{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}
|
|
10
|
+
.title{fill:#C8A100;font:bold 23px Georgia,serif}
|
|
11
11
|
.text{fill:#102A3A;font:14px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
12
12
|
.prose{fill:#405E70;font:17px Georgia,serif}
|
|
13
13
|
.line{stroke:#537487;stroke-width:2}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
<title id="title">Proof search computes a witness for an existential claim</title>
|
|
3
3
|
<desc id="desc">An existential question enters a small theory. Unification and search produce a ground answer together with a derivation tree, separating witness discovery from proof evidence.</desc>
|
|
4
4
|
<defs><style>
|
|
5
|
-
.bg{fill:#FFF9E8}.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.gold{fill:#FFF4BF;stroke:#
|
|
6
|
-
.title{fill:#
|
|
5
|
+
.bg{fill:#FFF9E8}.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.dark{fill:#2C657A;stroke:#17324D;stroke-width:3}
|
|
6
|
+
.title{fill:#C8A100;font:bold 24px Georgia,serif}.label{fill:#17324D;font:bold 17px Georgia,serif}.code{fill:#102A3A;font:14px ui-monospace,monospace}.light{fill:#FFFDF8;font:14px ui-monospace,monospace}.prose{fill:#405E70;font:15px Georgia,serif}.line{fill:none;stroke:#537487;stroke-width:3}
|
|
7
7
|
</style><marker id="a" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" fill="#537487"/></marker></defs>
|
|
8
8
|
<rect class="bg" width="900" height="430"/><text class="title" x="450" y="38" text-anchor="middle">A SUCCESSFUL QUERY RETURNS TWO KINDS OF WITNESS</text>
|
|
9
9
|
<rect class="paper" x="30" y="115" width="220" height="135" rx="10"/><text class="label" x="140" y="148" text-anchor="middle">QUESTION</text><text class="code" x="140" y="188" text-anchor="middle">∃ X . mortal(X)</text><text class="prose" x="140" y="222" text-anchor="middle">does someone satisfy it?</text>
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
<defs><marker id="a" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto"><path d="M0 0 L0 6 L9 3Z" fill="#2C657A"/></marker></defs>
|
|
5
5
|
<style>
|
|
6
6
|
.bg{fill:#EAF8FA}.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.adapter{fill:#DDF7FB;stroke:#008EAA;stroke-width:4}
|
|
7
|
-
.text{fill:#17324D;font:15px ui-monospace,monospace}.title{fill:#
|
|
8
|
-
.flow{fill:none;stroke:#2C657A;stroke-width:4;marker-end:url(#a)}.graph{fill:none;stroke:#
|
|
7
|
+
.text{fill:#17324D;font:15px ui-monospace,monospace}.title{fill:#9D8200;font:bold 19px Georgia,serif}
|
|
8
|
+
.flow{fill:none;stroke:#2C657A;stroke-width:4;marker-end:url(#a)}.graph{fill:none;stroke:#C8A100;stroke-width:3}
|
|
9
9
|
</style>
|
|
10
10
|
<rect width="900" height="380" class="bg"/>
|
|
11
|
-
<g transform="translate(35 65)"><rect class="paper" width="190" height="240" rx="6"/><text class="title" x="95" y="35" text-anchor="middle">RDF SOURCES</text><circle cx="52" cy="90" r="13" fill="#
|
|
11
|
+
<g transform="translate(35 65)"><rect class="paper" width="190" height="240" rx="6"/><text class="title" x="95" y="35" text-anchor="middle">RDF SOURCES</text><circle cx="52" cy="90" r="13" fill="#D8AE1E"/><circle cx="135" cy="75" r="13" fill="#008EAA"/><circle cx="115" cy="145" r="13" fill="#F2C94C"/><path class="graph" d="M65 87 L122 78 M128 88 L119 132 M62 99 L105 139"/><text class="text" x="95" y="195" text-anchor="middle">Turtle · TriG</text><text class="text" x="95" y="220" text-anchor="middle">JSON-LD · RDF/XML</text></g>
|
|
12
12
|
<path class="flow" d="M230 185 H295"/><rect class="adapter" x="305" y="92" width="290" height="186" rx="16"/><text class="title" x="450" y="125" text-anchor="middle">EXPLICIT ADAPTER</text><text class="text" x="330" y="165">rdf(Subject,</text><text class="text" x="365" y="190">Predicate,</text><text class="text" x="365" y="215">Object, Graph)</text><text class="text" x="330" y="250">+ EyeProlog rules</text>
|
|
13
13
|
<path class="flow" d="M595 185 H660"/><g transform="translate(670 65)"><rect class="paper" width="195" height="240" rx="6"/><text class="title" x="98" y="35" text-anchor="middle">DERIVED RDF</text><text class="text" x="20" y="82"><s> <ancestor> <o></text><text class="text" x="20" y="110"><s> <status> "safe"</text><text class="text" x="20" y="160">RDF 1.2 N-Quads</text><text class="text" x="20" y="195">named graphs and</text><text class="text" x="20" y="220">triple terms retained</text></g>
|
|
14
14
|
</svg>
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
6
|
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}
|
|
7
|
-
.gold{fill:#FFF4BF;stroke:#
|
|
8
|
-
.title{fill:#
|
|
7
|
+
.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.blue{fill:#DCEFF7;stroke:#537487;stroke-width:2}
|
|
8
|
+
.title{fill:#C8A100;font:bold 24px Georgia,serif}.label{fill:#17324D;font:bold 18px Georgia,serif}
|
|
9
9
|
.prose{fill:#405E70;font:16px Georgia,serif}.code{fill:#102A3A;font:15px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
10
|
-
.line{fill:none;stroke:#537487;stroke-width:2.5}.rung{stroke:#
|
|
10
|
+
.line{fill:none;stroke:#537487;stroke-width:2.5}.rung{stroke:#E2BA22;stroke-width:4}
|
|
11
11
|
</style>
|
|
12
12
|
<marker id="arrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" fill="#537487"/></marker>
|
|
13
13
|
</defs>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
6
|
.bg{fill:#FFF9E8}.question{fill:#17324D;stroke:#102A3A;stroke-width:3}.card{stroke:#537487;stroke-width:2}.practice{fill:#DDF7FB}.guide{fill:#FFF4BF}
|
|
7
|
-
.line{fill:none;stroke:#537487;stroke-width:3;stroke-linecap:round}.arrow{fill:#537487}.title{fill:#
|
|
7
|
+
.line{fill:none;stroke:#537487;stroke-width:3;stroke-linecap:round}.arrow{fill:#537487}.title{fill:#9D8200;font:bold 24px Georgia,serif}
|
|
8
8
|
.q{fill:#FFFDF8;font:bold 19px Georgia,serif}.qsmall{fill:#FFFDF8;font:15px Georgia,serif}.chapter{fill:#102A3A;font:bold 18px Georgia,serif}.small{fill:#405E70;font:15px Georgia,serif}.caption{fill:#405E70;font:italic 16px Georgia,serif}
|
|
9
9
|
</style>
|
|
10
10
|
</defs>
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
<title id="title">A relational theory needs more than single input-output tests</title>
|
|
3
3
|
<desc id="desc">A public relation sits at the center of a test spectrum covering meaning, modes, finite properties, metamorphic changes, proof provenance, integrity, and scale.</desc>
|
|
4
4
|
<defs><style>
|
|
5
|
-
.bg{fill:#FFF9E8}.core{fill:#2C657A;stroke:#17324D;stroke-width:3}.box{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.gold{fill:#FFF4BF;stroke:#
|
|
6
|
-
.title{fill:#
|
|
5
|
+
.bg{fill:#FFF9E8}.core{fill:#2C657A;stroke:#17324D;stroke-width:3}.box{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.rose{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}.blue{fill:#DCEFF7;stroke:#537487;stroke-width:2}
|
|
6
|
+
.title{fill:#C8A100;font:bold 24px Georgia,serif}.label{fill:#17324D;font:bold 13px Georgia,serif}.light{fill:#FFFDF8;font:bold 16px Georgia,serif}.prose{fill:#405E70;font:13px Georgia,serif}.line{fill:none;stroke:#537487;stroke-width:2.5}
|
|
7
7
|
</style></defs>
|
|
8
8
|
<rect class="bg" width="900" height="460"/><text class="title" x="450" y="38" text-anchor="middle">TEST THE RELATION, NOT JUST ONE CALL</text>
|
|
9
9
|
<rect class="core" x="340" y="170" width="220" height="105" rx="18"/><text class="light" x="450" y="207" text-anchor="middle">PUBLIC RELATION</text><text class="light" x="450" y="241" text-anchor="middle">path/2 contract</text>
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
<desc id="desc">Meaning, logic, control, evidence, and boundary surround one program artifact. A lower loop says predict, run, explain, and revise.</desc>
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
|
-
.bg{fill:#FFF9E8}.artifact{fill:#17324D;stroke:#102A3A;stroke-width:3}.lens{stroke-width:2}.meaning{fill:#DDF7FB;stroke:#008EAA}.logic{fill:#BFEAF1;stroke:#087F98}.control{fill:#FFF4BF;stroke:#
|
|
7
|
-
.line{fill:none;stroke:#537487;stroke-width:2.5}.cycle{fill:none;stroke:#
|
|
6
|
+
.bg{fill:#FFF9E8}.artifact{fill:#17324D;stroke:#102A3A;stroke-width:3}.lens{stroke-width:2}.meaning{fill:#DDF7FB;stroke:#008EAA}.logic{fill:#BFEAF1;stroke:#087F98}.control{fill:#FFF4BF;stroke:#E2BA22}.evidence{fill:#FFE7BF;stroke:#C8A100}.boundary{fill:#E2F2F7;stroke:#367C95}
|
|
7
|
+
.line{fill:none;stroke:#537487;stroke-width:2.5}.cycle{fill:none;stroke:#9D8200;stroke-width:3;stroke-linecap:round}.arrow{fill:#9D8200}.title{fill:#9D8200;font:bold 24px Georgia,serif}.label{fill:#102A3A;font:bold 17px Georgia,serif}.small{fill:#405E70;font:15px Georgia,serif}.code{fill:#FFFDF8;font:17px ui-monospace,SFMono-Regular,Consolas,monospace}.verb{fill:#9D8200;font:bold 15px Georgia,serif}
|
|
8
8
|
</style>
|
|
9
9
|
</defs>
|
|
10
10
|
<rect width="900" height="470" class="bg"/>
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
<desc id="desc">A file, database, and AI extractor offer parent facts through one declared predicate contract to the same ancestor rules.</desc>
|
|
4
4
|
<style>
|
|
5
5
|
.bg{fill:#FFF3D8}.provider{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.socket{fill:#DDF7FB;stroke:#008EAA;stroke-width:4}
|
|
6
|
-
.engine{fill:#2C657A;stroke:#17324D;stroke-width:3}.text{fill:#17324D;font:16px ui-monospace,monospace}.small{fill:#405E70;font:13px ui-monospace,monospace}.claim-text{fill:#
|
|
7
|
-
.cable{fill:none;stroke:#
|
|
6
|
+
.engine{fill:#2C657A;stroke:#17324D;stroke-width:3}.text{fill:#17324D;font:16px ui-monospace,monospace}.small{fill:#405E70;font:13px ui-monospace,monospace}.claim-text{fill:#9D8200;font:11px ui-monospace,monospace}.light{fill:#FFFDF8;font:16px ui-monospace,monospace}
|
|
7
|
+
.cable{fill:none;stroke:#C8A100;stroke-width:4;stroke-linecap:round}.claim{fill:#FFFDF8;stroke:#C8A100;stroke-width:2}.pin{fill:#17324D}
|
|
8
8
|
</style>
|
|
9
9
|
<rect width="900" height="380" class="bg"/>
|
|
10
10
|
<rect class="provider" x="35" y="40" width="190" height="80" rx="8"/><text class="text" x="130" y="73" text-anchor="middle">family.pl</text><text class="text" x="130" y="99" text-anchor="middle">facts</text>
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
6
|
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.tree{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}
|
|
7
|
-
.gold{fill:#FFF4BF;stroke:#
|
|
8
|
-
.title{fill:#
|
|
7
|
+
.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.blue{fill:#DCEFF7;stroke:#537487;stroke-width:2}
|
|
8
|
+
.title{fill:#C8A100;font:bold 24px Georgia,serif}.label{fill:#17324D;font:bold 17px Georgia,serif}
|
|
9
9
|
.prose{fill:#405E70;font:16px Georgia,serif}.code{fill:#102A3A;font:15px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
10
10
|
.line{fill:none;stroke:#537487;stroke-width:2;stroke-linecap:round}
|
|
11
11
|
</style>
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
<title id="title">Three different termination arguments</title>
|
|
3
3
|
<desc id="desc">Recursive calls may terminate because a structural measure decreases, because finite tabled calls reach a fixed point, or fail to terminate because terms grow without bound.</desc>
|
|
4
4
|
<defs><style>
|
|
5
|
-
.bg{fill:#FFF9E8}.good{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.table{fill:#DCEFF7;stroke:#537487;stroke-width:2}.bad{fill:#FFF0D6;stroke:#
|
|
6
|
-
.title{fill:#
|
|
5
|
+
.bg{fill:#FFF9E8}.good{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.table{fill:#DCEFF7;stroke:#537487;stroke-width:2}.bad{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}
|
|
6
|
+
.title{fill:#C8A100;font:bold 24px Georgia,serif}.label{fill:#17324D;font:bold 15px Georgia,serif}.code{fill:#102A3A;font:14px ui-monospace,monospace}.prose{fill:#405E70;font:15px Georgia,serif}.line{fill:none;stroke:#537487;stroke-width:2.5}
|
|
7
7
|
</style><marker id="a" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" fill="#537487"/></marker></defs>
|
|
8
8
|
<rect class="bg" width="900" height="440"/><text class="title" x="450" y="38" text-anchor="middle">ASK WHAT MAKES THE CALL SPACE FINITE</text>
|
|
9
9
|
<rect class="good" x="30" y="80" width="260" height="285" rx="12"/><text class="label" x="160" y="115" text-anchor="middle">DECREASING STRUCTURE</text><text class="code" x="160" y="155" text-anchor="middle">[a,b,c] → [b,c]</text><text class="code" x="160" y="190" text-anchor="middle">→ [c] → []</text><path class="line" marker-end="url(#a)" d="M160 210V250"/><text class="prose" x="160" y="280" text-anchor="middle">well-founded measure:</text><text class="code" x="160" y="306" text-anchor="middle">list length ↓</text><text class="label" x="160" y="345" text-anchor="middle">TERMINATES</text>
|
|
@@ -13,21 +13,23 @@
|
|
|
13
13
|
.bg { fill: url(#paper); }
|
|
14
14
|
.navy { fill: #0B4F6C; }
|
|
15
15
|
.green { fill: #00A6C8; }
|
|
16
|
-
.wine { fill: #
|
|
17
|
-
.gold { fill: #
|
|
16
|
+
.wine { fill: #D8B400; }
|
|
17
|
+
.gold { fill: #E7C531; }
|
|
18
18
|
.cream { fill: #FFFDF8; }
|
|
19
19
|
.navy-stroke { stroke: #0B4F6C; fill: none; }
|
|
20
20
|
.green-stroke { stroke: #00A6C8; fill: none; }
|
|
21
|
-
.wine-stroke { stroke: #
|
|
22
|
-
.gold-stroke { stroke: #
|
|
21
|
+
.wine-stroke { stroke: #D8B400; fill: none; }
|
|
22
|
+
.gold-stroke { stroke: #E7C531; fill: none; }
|
|
23
23
|
.thin { stroke-width: 2; }
|
|
24
24
|
.mid { stroke-width: 3; }
|
|
25
25
|
.thick { stroke-width: 5; }
|
|
26
26
|
.round { stroke-linecap: round; stroke-linejoin: round; }
|
|
27
27
|
.title1 { fill:#0B4F6C; font-family: Georgia, 'Times New Roman', serif; font-size:64px; font-weight:500; }
|
|
28
|
-
.title2 { font-family:
|
|
28
|
+
.title2 { font-family: 'Avenir Next', Avenir, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size:112px; font-weight:700; letter-spacing:-4px; }
|
|
29
|
+
.logo-eye { fill:#1498E6; stroke:#0B4F6C; stroke-width:1.2; paint-order:stroke fill; }
|
|
30
|
+
.logo-prolog { fill:#F4D21A; stroke:#C8A100; stroke-width:1.6; paint-order:stroke fill; }
|
|
29
31
|
.subtitle { fill:#00A6C8; font-family: Georgia, 'Times New Roman', serif; font-size:28px; }
|
|
30
|
-
.author { fill:#
|
|
32
|
+
.author { fill:#D8B400; font-family: Georgia, 'Times New Roman', serif; font-size:25px; }
|
|
31
33
|
.section { font-family: Georgia, 'Times New Roman', serif; font-size:20px; font-weight:700; letter-spacing:2px; }
|
|
32
34
|
.smallserif { font-family: Georgia, 'Times New Roman', serif; font-size:18px; }
|
|
33
35
|
.paneltitle { font-family: Georgia, 'Times New Roman', serif; font-size:21px; font-weight:700; letter-spacing:0.4px; }
|
|
@@ -47,7 +49,7 @@
|
|
|
47
49
|
<g id="header">
|
|
48
50
|
<text x="500" y="105" text-anchor="middle" class="title1">The Art of</text>
|
|
49
51
|
<text x="500" y="238" text-anchor="middle" class="title2">
|
|
50
|
-
<tspan
|
|
52
|
+
<tspan class="logo-eye">Eye</tspan><tspan class="logo-prolog">Prolog</tspan>
|
|
51
53
|
</text>
|
|
52
54
|
|
|
53
55
|
<line x1="110" y1="274" x2="445" y2="274" class="gold-stroke thin round"/>
|
|
@@ -72,7 +74,7 @@
|
|
|
72
74
|
<!-- hero diagrams -->
|
|
73
75
|
<g id="prolog-rules">
|
|
74
76
|
<rect x="80" y="510" width="220" height="180" rx="18"
|
|
75
|
-
fill="#FFFDF8" stroke="#
|
|
77
|
+
fill="#FFFDF8" stroke="#D8B400" stroke-width="3"/>
|
|
76
78
|
<text x="100" y="552" class="codesm" style="font-size:14px">path(X, Y) :-</text>
|
|
77
79
|
<text x="122" y="580" class="codesm" style="font-size:14px">edge(X, Y).</text>
|
|
78
80
|
<text x="100" y="615" class="codesm" style="font-size:14px">path(X, Y) :-</text>
|
|
@@ -104,22 +106,22 @@
|
|
|
104
106
|
<!-- abstract bridge -->
|
|
105
107
|
<g id="bridge">
|
|
106
108
|
<path d="M320 710 C338 560, 410 500, 500 500 C590 500, 662 560, 680 710"
|
|
107
|
-
fill="none" stroke="#
|
|
109
|
+
fill="none" stroke="#F6DB83" stroke-width="62" stroke-linecap="round"/>
|
|
108
110
|
<path d="M320 710 C338 560, 410 500, 500 500 C590 500, 662 560, 680 710"
|
|
109
111
|
class="navy-stroke mid round"/>
|
|
110
112
|
|
|
111
|
-
<path d="M442 488 L558 488 L572 556 L428 556 Z" fill="#
|
|
112
|
-
<text x="500" y="523" text-anchor="middle" class="section
|
|
113
|
+
<path d="M442 488 L558 488 L572 556 L428 556 Z" fill="#FBEDB8" stroke="#0B4F6C" stroke-width="3"/>
|
|
114
|
+
<text x="500" y="523" text-anchor="middle" class="section" style="font-size:14px; letter-spacing:0.5px;"><tspan class="logo-eye">EYE</tspan><tspan class="logo-prolog">PROLOG</tspan></text>
|
|
113
115
|
|
|
114
|
-
<rect x="290" y="690" width="68" height="148" rx="7" fill="#
|
|
115
|
-
<rect x="278" y="676" width="92" height="22" rx="5" fill="#
|
|
116
|
-
<rect x="276" y="830" width="96" height="24" rx="5" fill="#
|
|
116
|
+
<rect x="290" y="690" width="68" height="148" rx="7" fill="#F9E8A3" stroke="#0B4F6C" stroke-width="3"/>
|
|
117
|
+
<rect x="278" y="676" width="92" height="22" rx="5" fill="#F5D86E" stroke="#0B4F6C" stroke-width="3"/>
|
|
118
|
+
<rect x="276" y="830" width="96" height="24" rx="5" fill="#F5D86E" stroke="#0B4F6C" stroke-width="3"/>
|
|
117
119
|
<line x1="306" y1="708" x2="306" y2="824" class="gold-stroke thin"/>
|
|
118
120
|
<line x1="342" y1="708" x2="342" y2="824" class="gold-stroke thin"/>
|
|
119
121
|
|
|
120
|
-
<rect x="642" y="690" width="68" height="148" rx="7" fill="#
|
|
121
|
-
<rect x="630" y="676" width="92" height="22" rx="5" fill="#
|
|
122
|
-
<rect x="628" y="830" width="96" height="24" rx="5" fill="#
|
|
122
|
+
<rect x="642" y="690" width="68" height="148" rx="7" fill="#F9E8A3" stroke="#0B4F6C" stroke-width="3"/>
|
|
123
|
+
<rect x="630" y="676" width="92" height="22" rx="5" fill="#F5D86E" stroke="#0B4F6C" stroke-width="3"/>
|
|
124
|
+
<rect x="628" y="830" width="96" height="24" rx="5" fill="#F5D86E" stroke="#0B4F6C" stroke-width="3"/>
|
|
123
125
|
<line x1="658" y1="708" x2="658" y2="824" class="gold-stroke thin"/>
|
|
124
126
|
<line x1="694" y1="708" x2="694" y2="824" class="gold-stroke thin"/>
|
|
125
127
|
</g>
|
|
@@ -145,8 +147,8 @@
|
|
|
145
147
|
|
|
146
148
|
<!-- panels -->
|
|
147
149
|
<g id="panel1">
|
|
148
|
-
<rect x="45" y="925" width="280" height="360" rx="28" class="panel" stroke="#
|
|
149
|
-
<circle cx="185" cy="925" r="38" fill="#FFFDF8" stroke="#
|
|
150
|
+
<rect x="45" y="925" width="280" height="360" rx="28" class="panel" stroke="#D8B400"/>
|
|
151
|
+
<circle cx="185" cy="925" r="38" fill="#FFFDF8" stroke="#D8B400" stroke-width="3"/>
|
|
150
152
|
<text x="185" y="936" text-anchor="middle" class="code wine" style="font-size:27px">:-</text>
|
|
151
153
|
<text x="185" y="990" text-anchor="middle" class="paneltitle wine" style="font-size:20px">1. ISO PROLOG RULES</text>
|
|
152
154
|
|
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
</marker>
|
|
8
8
|
<style>
|
|
9
9
|
.node{fill:#FFFDF8;stroke:#17324D;stroke-width:2}
|
|
10
|
-
.var{fill:#FFF4BF;stroke:#
|
|
10
|
+
.var{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}
|
|
11
11
|
.value{fill:#E8FAFC;stroke:#008EAA;stroke-width:2}
|
|
12
12
|
.text{fill:#102A3A;font:17px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
13
|
-
.title{fill:#
|
|
13
|
+
.title{fill:#C8A100;font:bold 22px Georgia,serif}
|
|
14
14
|
.line{stroke:#537487;stroke-width:2}
|
|
15
|
-
.bind{stroke:#
|
|
15
|
+
.bind{stroke:#E2BA22;stroke-width:2.5;stroke-dasharray:7 6;fill:none;marker-end:url(#arrow)}
|
|
16
16
|
</style>
|
|
17
17
|
</defs>
|
|
18
18
|
<rect width="900" height="500" fill="#FFF9E8"/>
|