eyeprolog 0.5.17 → 0.6.0
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/README.md +2 -6
- package/book-assets/aggregation-market.svg +4 -4
- package/book-assets/and-or-binding-trace.svg +2 -2
- package/book-assets/auditable-decision-service.svg +1 -1
- package/book-assets/bounded-experimental-math.svg +1 -1
- package/book-assets/cli-observation-loop.svg +1 -1
- package/book-assets/correctness-obligations.svg +1 -1
- package/book-assets/debugging-four-lenses.svg +1 -1
- package/book-assets/example-landscape.svg +1 -1
- package/book-assets/finite-search-funnel.svg +1 -1
- package/book-assets/herbrand-world.svg +1 -1
- package/book-assets/integrity-check-control-panel.svg +1 -1
- package/book-assets/iso-control-board.svg +2 -2
- package/book-assets/iso-state-operator-console.svg +1 -1
- package/book-assets/iso-stream-roundtrip.svg +1 -1
- package/book-assets/iso-term-prism.svg +1 -1
- package/book-assets/knowledge-engineering-workflow.svg +2 -2
- package/book-assets/laboratory-progression.svg +1 -1
- package/book-assets/lists-train.svg +1 -1
- package/book-assets/logic-and-control.svg +4 -4
- package/book-assets/negation-guest-registry.svg +2 -2
- package/book-assets/part-1-relations.svg +7 -7
- package/book-assets/part-2-search.svg +4 -4
- package/book-assets/part-3-trustworthy-reasoning.svg +5 -5
- package/book-assets/part-4-craft.svg +3 -3
- package/book-assets/part-5-relational-design.svg +2 -2
- package/book-assets/part-6-mathematics.svg +7 -7
- package/book-assets/part-7-laboratory.svg +2 -2
- package/book-assets/part-8-standard-prolog.svg +3 -3
- package/book-assets/pattern-selection-map.svg +1 -1
- package/book-assets/program-transformation-workbench.svg +1 -1
- package/book-assets/proof-and-search.svg +2 -2
- package/book-assets/rdf-adapter-pipeline.svg +1 -1
- package/book-assets/recursion-induction-ladder.svg +1 -1
- package/book-assets/recursion-tabling-railway.svg +1 -1
- package/book-assets/relational-test-spectrum.svg +1 -1
- package/book-assets/review-lenses.svg +1 -1
- package/book-assets/sockets-providers.svg +1 -1
- package/book-assets/syntax-relations.svg +1 -1
- package/book-assets/termination-map.svg +1 -1
- package/book-assets/title-page.svg +51 -51
- package/book-assets/unification.svg +1 -1
- package/conformance-report.md +2 -2
- package/examples/blocks-world-planning.pl +3 -3
- package/examples/combinatorics-findall-sort.pl +4 -4
- package/examples/complex.pl +3 -3
- package/examples/d3-group.pl +3 -3
- package/examples/dijkstra-findall-sort.pl +3 -3
- package/examples/enigma1225.pl +1 -1
- package/examples/eulerian-path.pl +4 -4
- package/examples/four-color-map.pl +2 -2
- package/examples/input/odrl-dpv-healthcare-risk-ranked-rules.pl +1 -1
- package/examples/input/odrl-dpv-risk-ranked-rules.pl +1 -1
- package/examples/input/rdf12-annotated-claims-rules.pl +1 -1
- package/examples/odrl-dpv-healthcare-risk-ranked.pl +1 -1
- package/examples/odrl-dpv-risk-ranked.pl +1 -1
- package/examples/output/complex.pl +5 -0
- package/examples/output/enigma1225.pl +1 -1
- package/examples/output/iso-integer-arithmetic.pl +1 -1
- package/examples/proof/d3-group.pl +4 -4
- package/examples/proof/iso-dynamic-database.pl +1 -1
- package/examples/quine-mccluskey.pl +7 -7
- package/examples/rdf12-annotated-claims.pl +1 -1
- package/examples/sudoku.pl +1 -1
- package/package.json +1 -2
- package/playground.html +0 -3
- package/src/eyeprolog-autoload.js +1 -7
- package/src/eyeprolog-common-library.pl +1 -1
- package/src/eyeprolog-library.pl +10 -57
- package/src/iso.js +229 -19
- package/src/parser.js +39 -19
- package/src/program.js +5 -2
- package/test/conformance/ISO-MATRIX.md +37 -0
- package/test/conformance/README.md +3 -1
- package/test/conformance/cases/aggregation/098_aggregation_nested_templates.pl +3 -0
- package/test/conformance/cases/arithmetic/062_reusable_numeric_builtins.pl +2 -2
- package/test/conformance/cases/arithmetic/081_zero_safe_numeric_functions.pl +2 -2
- package/test/conformance/cases/arithmetic/extra_acos_one.pl +1 -1
- package/test/conformance/cases/arithmetic/extra_asin_zero.pl +1 -1
- package/test/conformance/cases/arithmetic/extra_atan2_axis.pl +1 -1
- package/test/conformance/cases/iso/corrigenda_arithmetic.pl +15 -0
- package/test/conformance/cases/iso/corrigenda_bar_operator.pl +10 -0
- package/test/conformance/cases/iso/corrigenda_call_closure.pl +9 -0
- package/test/conformance/cases/iso/corrigenda_catch_callability.pl +7 -0
- package/test/conformance/cases/iso/corrigenda_retractall.pl +14 -0
- package/test/conformance/cases/iso/corrigenda_sort_keysort.pl +10 -0
- package/test/conformance/cases/iso/corrigenda_term_predicates.pl +11 -0
- package/test/conformance/cases/iso/corrigendum1_double_quote_operator.pl +9 -0
- package/test/conformance/cases/iso/corrigendum3_write_variable_names.pl +8 -0
- package/test/conformance/cases/lists/031_lists_aggregation_ordering.pl +1 -1
- package/test/conformance/cases/lists/045_sort_deduplicates_atoms.pl +2 -2
- package/test/conformance/cases/lists/087_sort_reverse_length.pl +2 -2
- package/test/conformance/cases/lists/extra_sort_iri_atoms.pl +1 -1
- package/test/conformance/cases/lists/sort_structured_terms.pl +1 -1
- package/test/conformance/errors/iso/arithmetic_float_overflow.pl +3 -0
- package/test/conformance/errors/iso/arithmetic_underflow.pl +3 -0
- package/test/conformance/errors/iso/catch_unbound_goal.pl +1 -1
- package/test/conformance/errors/iso/corrigenda_atan2_zero.pl +3 -0
- package/test/conformance/errors/iso/corrigenda_integer_negative_power.pl +3 -0
- package/test/conformance/errors/iso/corrigenda_keysort_pair_type.pl +3 -0
- package/test/conformance/errors/iso/corrigenda_op_bar_priority.pl +3 -0
- package/test/conformance/errors/iso/corrigenda_op_empty_list.pl +3 -0
- package/test/conformance/errors/iso/corrigenda_op_infix_postfix_conflict.pl +5 -0
- package/test/conformance/errors/iso/corrigenda_open_uninstantiation.pl +3 -0
- package/test/conformance/errors/iso/corrigenda_retractall_static.pl +4 -0
- package/test/conformance/errors/iso/corrigenda_sort_output_type.pl +3 -0
- package/test/conformance/errors/iso/corrigenda_sort_partial.pl +3 -0
- package/test/conformance/errors/iso/corrigendum3_close_option_component_variable.pl +3 -0
- package/test/conformance/errors/iso/corrigendum3_open_option_variable.pl +3 -0
- package/test/conformance/errors/iso/corrigendum3_write_option_variable.pl +3 -0
- package/test/conformance/expected/aggregation/098_aggregation_nested_templates.pl +1 -0
- package/test/conformance/expected/iso/corrigenda_arithmetic.pl +1 -0
- package/test/conformance/expected/iso/corrigenda_bar_operator.pl +1 -0
- package/test/conformance/expected/iso/corrigenda_call_closure.pl +1 -0
- package/test/conformance/expected/iso/corrigenda_catch_callability.pl +1 -0
- package/test/conformance/expected/iso/corrigenda_retractall.pl +1 -0
- package/test/conformance/expected/iso/corrigenda_sort_keysort.pl +1 -0
- package/test/conformance/expected/iso/corrigenda_term_predicates.pl +1 -0
- package/test/conformance/expected/iso/corrigendum1_double_quote_operator.pl +1 -0
- package/test/conformance/expected/iso/corrigendum3_write_variable_names.pl +2 -0
- package/test/conformance/expected-errors/iso/arithmetic_float_overflow.txt +1 -0
- package/test/conformance/expected-errors/iso/arithmetic_underflow.txt +1 -0
- package/test/conformance/expected-errors/iso/corrigenda_atan2_zero.txt +1 -0
- package/test/conformance/expected-errors/iso/corrigenda_integer_negative_power.txt +1 -0
- package/test/conformance/expected-errors/iso/corrigenda_keysort_pair_type.txt +1 -0
- package/test/conformance/expected-errors/iso/corrigenda_op_bar_priority.txt +1 -0
- package/test/conformance/expected-errors/iso/corrigenda_op_empty_list.txt +1 -0
- package/test/conformance/expected-errors/iso/corrigenda_op_infix_postfix_conflict.txt +1 -0
- package/test/conformance/expected-errors/iso/corrigenda_open_uninstantiation.txt +1 -0
- package/test/conformance/expected-errors/iso/corrigenda_retractall_static.txt +1 -0
- package/test/conformance/expected-errors/iso/corrigenda_sort_output_type.txt +1 -0
- package/test/conformance/expected-errors/iso/corrigenda_sort_partial.txt +1 -0
- package/test/conformance/expected-errors/iso/corrigendum3_close_option_component_variable.txt +1 -0
- package/test/conformance/expected-errors/iso/corrigendum3_open_option_variable.txt +1 -0
- package/test/conformance/expected-errors/iso/corrigendum3_write_option_variable.txt +1 -0
- package/test/conformance/expected-errors/iso/retract_static_procedure.txt +1 -1
- package/test/run-regression.mjs +3 -3
- package/the-art-of-eyeprolog.md +43 -46
- package/eyeprolog-logo.svg +0 -148
package/README.md
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
# EyeProlog
|
|
2
2
|
|
|
3
|
-
<p align="center">
|
|
4
|
-
<img src="eyeprolog-logo.svg" alt="EyeProlog logo" width="520">
|
|
5
|
-
</p>
|
|
6
|
-
|
|
7
3
|
[](https://www.npmjs.com/package/eyeprolog)
|
|
8
4
|
[](https://doi.org/10.5281/zenodo.21446308)
|
|
9
5
|
|
|
@@ -33,8 +29,8 @@ proper list of one-character atoms (`chars`), matching Trealla and Scryer.
|
|
|
33
29
|
|
|
34
30
|
## Portable library
|
|
35
31
|
|
|
36
|
-
EyeProlog adds
|
|
37
|
-
**All
|
|
32
|
+
EyeProlog adds 44 public library predicates to its 127-entry ISO core registry.
|
|
33
|
+
**All 44 are ordinary Prolog clauses** across `src/eyeprolog-library.pl` and
|
|
38
34
|
`src/eyeprolog-common-library.pl`; both are autoloaded in Node and the
|
|
39
35
|
browser. None requires host support. Other Prolog systems should load only
|
|
40
36
|
`eyeprolog-library.pl`, which avoids redefining their common list predicates.
|
|
@@ -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:#
|
|
5
|
+
.wall{fill:#FFF0D6}.counter{fill:#F6D978}.basket{fill:#E2BA22;stroke:#9D8200;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
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="#9D8200" stroke-width="5"/><circle class="fruit" cx="48" cy="55" r="25" fill="#E2BA22"/><circle class="fruit" cx="91" cy="57" r="27" fill="#F6D978"/><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="#9D8200" stroke-width="5"/><circle class="fruit" cx="48" cy="55" r="25" fill="#E2BA22"/><circle class="fruit" cx="91" cy="57" r="27" fill="#F6D978"/><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="#9D8200" stroke-width="5"/><circle class="fruit" cx="48" cy="55" r="25" fill="#E2BA22"/><circle class="fruit" cx="91" cy="57" r="27" fill="#F6D978"/><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>
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
<desc id="desc">An ancestor query chooses between clauses, completes every goal in a recursive clause, carries bindings from left to right, and rewinds to the latest choice after failure.</desc>
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
|
-
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.goal{fill:#
|
|
7
|
-
.choice{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.fail{fill:#
|
|
6
|
+
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.goal{fill:#EAF8FA;stroke:#008EAA;stroke-width:2}
|
|
7
|
+
.choice{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.fail{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}
|
|
8
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}.dash{fill:none;stroke:#C8A100;stroke-width:2;stroke-dasharray:6 5}
|
|
@@ -2,7 +2,7 @@
|
|
|
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:#
|
|
5
|
+
.bg{fill:#FFF9E8}.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.blue{fill:#DDF7FB;stroke:#537487;stroke-width:2}.rose{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}.dark{fill:#2C657A;stroke:#17324D;stroke-width:3}
|
|
6
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>
|
|
@@ -2,7 +2,7 @@
|
|
|
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:#
|
|
5
|
+
.bg{fill:#FFF9E8}.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.domain{fill:#DDF7FB;stroke:#537487;stroke-width:3}.bad{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}.good{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}
|
|
6
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>
|
|
@@ -3,7 +3,7 @@
|
|
|
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:#E2BA22;stroke-width:2}.engine{fill:#17324D;stroke:#102A3A;stroke-width:3}.out{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.diag{fill:#BFEAF1;stroke:#
|
|
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:#2C657A;stroke-width:2}.status{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}.compare{fill:#FFFDF8;stroke:#537487;stroke-width:2}
|
|
7
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>
|
|
@@ -2,7 +2,7 @@
|
|
|
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:#
|
|
5
|
+
.bg{fill:#FFF9E8}.sound{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.complete{fill:#DDF7FB;stroke:#537487;stroke-width:2}.term{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.contract{fill:#FFFDF8;stroke:#C8A100;stroke-width:2.5}
|
|
6
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>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<style>
|
|
6
6
|
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}
|
|
7
7
|
.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.rose{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}
|
|
8
|
-
.blue{fill:#
|
|
8
|
+
.blue{fill:#DDF7FB;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>
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
<text class="small" x="755" y="130" text-anchor="middle">puzzles · routes · schedules</text>
|
|
23
23
|
<text class="small" x="755" y="151" text-anchor="middle">states · optimization</text>
|
|
24
24
|
|
|
25
|
-
<path class="region" fill="#
|
|
25
|
+
<path class="region" fill="#FFF0D6" d="M35 280H245L300 345L270 440H35Z"/>
|
|
26
26
|
<text class="label" x="145" y="326" text-anchor="middle">POLICY & TRUST</text>
|
|
27
27
|
<text class="small" x="145" y="353" text-anchor="middle">decisions · provenance</text>
|
|
28
28
|
<text class="small" x="145" y="374" text-anchor="middle">integrity · audit</text>
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<rect width="900" height="500" fill="#FFF9E8"/>
|
|
15
15
|
<text class="title" x="450" y="35" text-anchor="middle">DESIGN THE SEARCH BEFORE RUNNING IT</text>
|
|
16
16
|
<path d="M80 85H820L690 360H210Z" fill="#FFFDF8" stroke="#17324D" stroke-width="2"/>
|
|
17
|
-
<path d="M80 85H820L780 170H120Z" fill="#
|
|
17
|
+
<path d="M80 85H820L780 170H120Z" fill="#DDF7FB"/>
|
|
18
18
|
<path d="M120 170H780L740 255H160Z" fill="#FFF0D6"/>
|
|
19
19
|
<path d="M160 255H740L700 340H200Z" fill="#DDF7FB"/>
|
|
20
20
|
<text class="label" x="450" y="113" text-anchor="middle">1 · GENERATE A FINITE DOMAIN</text>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
</marker>
|
|
8
8
|
<style>
|
|
9
9
|
.box{fill:#FFFDF8;stroke:#17324D;stroke-width:2}
|
|
10
|
-
.model{fill:#
|
|
10
|
+
.model{fill:#EAF8FA;stroke:#008EAA;stroke-width:3}
|
|
11
11
|
.title{fill:#C8A100;font:bold 19px Georgia,serif}
|
|
12
12
|
.box-title{fill:#C8A100;font:bold 17px Georgia,serif}
|
|
13
13
|
.box-sub{fill:#405E70;font:15px Georgia,serif}
|
|
@@ -4,7 +4,7 @@
|
|
|
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
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:#
|
|
7
|
+
.wire{fill:none;stroke:#C8A100;stroke-width:5}.lever{fill:#DDF7FB;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>
|
|
@@ -3,8 +3,8 @@
|
|
|
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:#
|
|
7
|
-
.ok{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.group{fill:#
|
|
6
|
+
.bg{fill:#FFF9E8}.box{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.choice{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}
|
|
7
|
+
.ok{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.group{fill:#DDF7FB;stroke:#537487;stroke-width:2}.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}
|
|
8
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}.error{fill:none;stroke:#C8A100;stroke-width:2.5;stroke-dasharray:7 5}
|
|
@@ -4,7 +4,7 @@
|
|
|
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:#
|
|
7
|
+
.first{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}.last{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.blue{fill:#DDF7FB;stroke:#537487;stroke-width:2}
|
|
8
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}.redline{fill:none;stroke:#C8A100;stroke-width:2.5}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<desc id="desc">A structured event term is canonically written with a period, stored as text, read back with variable metadata, and followed to the end-of-stream state.</desc>
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
|
-
.bg{fill:#FFF9E8}.term{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.stream{fill:#
|
|
6
|
+
.bg{fill:#FFF9E8}.term{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.stream{fill:#DDF7FB;stroke:#537487;stroke-width:2}
|
|
7
7
|
.file{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.eof{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}
|
|
8
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}
|
|
@@ -4,7 +4,7 @@
|
|
|
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:#
|
|
7
|
+
.blue{fill:#DDF7FB;stroke:#537487;stroke-width:2}.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}
|
|
8
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}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<desc id="desc">Sensor readings and records move through normalization, domain concepts, and a decision, with a proof folder retaining the evidence.</desc>
|
|
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
|
-
.bg{fill:#
|
|
6
|
+
.bg{fill:#FFF0D6}.box{fill:#FFFDF8;stroke:#17324D;stroke-width:2.5}.concept{fill:#DDF7FB;stroke:#008EAA;stroke-width:3}
|
|
7
7
|
.text{fill:#17324D;font:16px ui-monospace,monospace}.title{fill:#9D8200;font:bold 17px Georgia,serif}
|
|
8
8
|
.arrow{fill:none;stroke:#2C657A;stroke-width:3;marker-end:url(#a)}.proof{fill:#F6D978;stroke:#E2BA22;stroke-width:2}
|
|
9
9
|
</style>
|
|
@@ -12,5 +12,5 @@
|
|
|
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="#
|
|
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="#F6D978" stroke="#E2BA22" stroke-width="2"/><text class="text" x="780" y="318" text-anchor="middle">why/2</text>
|
|
16
16
|
</svg>
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<desc id="desc">Five connected stages group laboratories one and two as relational foundations, three and four as finite search, five through seven as mathematical and symbolic methods, eight through eleven as domain reasoning, and twelve as an integrated release-quality service.</desc>
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
|
-
.bg{fill:#FFF9E8}.stage{stroke:#537487;stroke-width:2}.s1{fill:#DDF7FB}.s2{fill:#BFEAF1}.s3{fill:#FFF4BF}.s4{fill:#
|
|
6
|
+
.bg{fill:#FFF9E8}.stage{stroke:#537487;stroke-width:2}.s1{fill:#DDF7FB}.s2{fill:#BFEAF1}.s3{fill:#FFF4BF}.s4{fill:#FFF0D6}.s5{fill:#17324D;stroke:#102A3A;stroke-width:3}
|
|
7
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>
|
|
@@ -2,7 +2,7 @@
|
|
|
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:#
|
|
5
|
+
.sky{fill:#EAF8FA}.ground{fill:#FFF0D6}.rail{stroke:#2C657A;stroke-width:5}.tie{stroke:#9D8200;stroke-width:3}
|
|
6
6
|
.car{fill:#FFFDF8;stroke:#17324D;stroke-width:3}.head{fill:#DDF7FB;stroke:#008EAA;stroke-width:4}
|
|
7
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>
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
<rect class="paper" x="35" y="55" width="235" height="305" rx="8"/>
|
|
25
25
|
<text class="label" x="152" y="92" text-anchor="middle">LOGIC</text>
|
|
26
26
|
<text class="ink" x="58" y="130">What is true?</text>
|
|
27
|
-
<path d="M65 172 C95 142,125 202,155 172 S215 202,245 172" fill="none" stroke="#
|
|
28
|
-
<circle cx="65" cy="172" r="7" fill="#
|
|
29
|
-
<circle cx="155" cy="172" r="7" fill="#
|
|
30
|
-
<circle cx="245" cy="172" r="7" fill="#
|
|
27
|
+
<path d="M65 172 C95 142,125 202,155 172 S215 202,245 172" fill="none" stroke="#2C657A" stroke-width="4"/>
|
|
28
|
+
<circle cx="65" cy="172" r="7" fill="#2C657A"/>
|
|
29
|
+
<circle cx="155" cy="172" r="7" fill="#2C657A"/>
|
|
30
|
+
<circle cx="245" cy="172" r="7" fill="#2C657A"/>
|
|
31
31
|
<text class="small" x="58" y="225">An edge followed by a</text>
|
|
32
32
|
<text class="small" x="58" y="248">path is itself a path.</text>
|
|
33
33
|
<text class="small" x="58" y="292">Ground consequences form</text>
|
|
@@ -2,8 +2,8 @@
|
|
|
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:#
|
|
6
|
-
.person{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.coat{fill:#
|
|
5
|
+
.wall{fill:#EAF8FA}.desk{fill:#F6D978}.book{fill:#FFFDF8;stroke:#17324D;stroke-width:3}.line{stroke:#2C657A;stroke-width:2}
|
|
6
|
+
.person{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.coat{fill:#DDF7FB;stroke:#17324D;stroke-width:2}
|
|
7
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"/>
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
<title id="title">Relations in an ordinary town</title>
|
|
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
|
-
.sky{fill:#EAF8FA}.ground{fill:#
|
|
6
|
-
.building{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.roof{fill:#
|
|
7
|
-
.tree{fill:#
|
|
8
|
-
.person{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.shirt{fill:#
|
|
5
|
+
.sky{fill:#EAF8FA}.ground{fill:#FFF0D6}.road{fill:#D9D1C1}
|
|
6
|
+
.building{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.roof{fill:#E2BA22;stroke:#17324D;stroke-width:2}
|
|
7
|
+
.tree{fill:#78AFC0;stroke:#008EAA;stroke-width:2}.trunk{stroke:#9D8200;stroke-width:8}
|
|
8
|
+
.person{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.shirt{fill:#DDF7FB;stroke:#17324D;stroke-width:2}
|
|
9
9
|
.relation{fill:none;stroke:#C8A100;stroke-width:2.5;stroke-dasharray:7 5}
|
|
10
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}
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
<rect width="900" height="265" class="sky"/><rect y="265" width="900" height="155" class="ground"/>
|
|
16
16
|
<path class="road" d="M0 355 C220 305 390 385 565 335 S770 300 900 325 L900 420 L0 420Z"/>
|
|
17
17
|
<rect class="building" x="65" y="155" width="190" height="140"/><polygon class="roof" points="45,160 160,75 275,160"/>
|
|
18
|
-
<rect x="93" y="202" width="45" height="93" fill="#
|
|
19
|
-
<rect x="178" y="195" width="47" height="48" fill="#
|
|
18
|
+
<rect x="93" y="202" width="45" height="93" fill="#E2BA22" stroke="#17324D" stroke-width="2"/>
|
|
19
|
+
<rect x="178" y="195" width="47" height="48" fill="#BFEAF1" stroke="#17324D" stroke-width="2"/>
|
|
20
20
|
<rect class="building" x="650" y="120" width="180" height="155"/><polygon class="roof" points="625,125 740,48 855,125"/>
|
|
21
|
-
<rect x="716" y="194" width="50" height="81" fill="#
|
|
21
|
+
<rect x="716" y="194" width="50" height="81" fill="#E2BA22" stroke="#17324D" stroke-width="2"/>
|
|
22
22
|
<text x="740" y="163" text-anchor="middle" fill="#17324D" font-family="Georgia,serif" font-size="18">SCHOOL</text>
|
|
23
23
|
<line class="trunk" x1="570" y1="165" x2="570" y2="282"/><circle class="tree" cx="570" cy="125" r="55"/>
|
|
24
24
|
<g transform="translate(340 230)"><circle class="person" cx="0" cy="-42" r="19"/><path class="shirt" d="M-30 -15 Q0-35 30-15 L24 48 H-24Z"/><path class="detail" d="M-12 48 L-15 85 M12 48 L16 85"/></g>
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
<title id="title">Searching for a route through the hills</title>
|
|
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
|
-
.sky{fill:#EAF8FA}.hill1{fill:#
|
|
6
|
-
.path{fill:none;stroke:#
|
|
5
|
+
.sky{fill:#EAF8FA}.hill1{fill:#BFEAF1}.hill2{fill:#78AFC0}.snow{fill:#FFFDF8}
|
|
6
|
+
.path{fill:none;stroke:#9D8200;stroke-width:7;stroke-linecap:round;stroke-dasharray:9 7}
|
|
7
7
|
.chosen{fill:none;stroke:#008EAA;stroke-width:9;stroke-linecap:round}
|
|
8
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:#
|
|
9
|
+
.ink{fill:none;stroke:#17324D;stroke-width:3;stroke-linecap:round}.coat{fill:#E2BA22;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="#E2BA22" stroke="#17324D" stroke-width="2"/><rect x="37" y="58" width="22" height="32" fill="#E2BA22" 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>
|
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
<title id="title">Evidence-backed spacecraft diagnosis</title>
|
|
3
3
|
<desc id="desc">A spacecraft engineer reviews current, resistance, and temperature evidence whose proof lines converge on a battery warning and safe action.</desc>
|
|
4
4
|
<style>
|
|
5
|
-
.wall{fill:#
|
|
5
|
+
.wall{fill:#EAF8FA}.panel{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.screen{fill:#DDF7FB;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:#C8A100;stroke-width:2.5}.hot{fill:#
|
|
7
|
+
.wire{fill:none;stroke:#C8A100;stroke-width:2.5}.hot{fill:#E2BA22}.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"/>
|
|
11
|
-
<circle cx="90" cy="75" r="38" fill="#78AFC0"/><path d="M52 75 Q90 42 128 75 Q90 108 52 75" fill="#
|
|
11
|
+
<circle cx="90" cy="75" r="38" fill="#78AFC0"/><path d="M52 75 Q90 42 128 75 Q90 108 52 75" fill="#BFEAF1"/>
|
|
12
12
|
<rect class="console" x="35" y="320" width="830" height="100" rx="8"/>
|
|
13
13
|
<rect class="panel" x="155" y="45" width="165" height="130" rx="7"/><text class="text" x="238" y="72" text-anchor="middle">CURRENT</text><path class="ink" d="M180 137 L205 122 L230 130 L260 87 L295 108"/><text class="text" x="238" y="160" text-anchor="middle">12.1 A</text>
|
|
14
14
|
<rect class="panel" x="370" y="45" width="165" height="130" rx="7"/><text class="text" x="452" y="72" text-anchor="middle">RESISTANCE</text><path class="ink" d="M393 119 L410 119 L420 96 L440 142 L460 96 L480 142 L492 119 L512 119"/><text class="text" x="452" y="160" text-anchor="middle">0.42 Ω</text>
|
|
15
15
|
<rect class="panel" x="585" y="45" width="165" height="130" rx="7"/><text class="text" x="668" y="72" text-anchor="middle">TEMPERATURE</text><rect x="645" y="87" width="18" height="53" rx="9" fill="#FFFDF8" stroke="#17324D" stroke-width="2"/><rect class="hot" x="650" y="105" width="8" height="30" rx="4"/><circle class="hot" cx="654" cy="140" r="12"/><text class="text" x="700" y="127">91 °C</text>
|
|
16
16
|
<path class="wire" d="M238 176 C238 235 370 210 425 268"/><path class="wire" d="M452 176 L452 255"/><path class="wire" d="M668 176 C668 235 540 210 485 268"/>
|
|
17
17
|
<rect class="screen" x="355" y="250" width="195" height="80" rx="10"/><text class="text" x="452" y="280" text-anchor="middle">THERMAL WARNING</text><text class="small" x="452" y="307" text-anchor="middle">three premises</text>
|
|
18
|
-
<g transform="translate(90 270)"><circle class="panel" cx="0" cy="-42" r="18"/><path d="M-30-15 Q0-35 30-15 L24 50 H-24Z" fill="#
|
|
19
|
-
<rect x="635" y="255" width="175" height="63" rx="9" fill="#
|
|
18
|
+
<g transform="translate(90 270)"><circle class="panel" cx="0" cy="-42" r="18"/><path d="M-30-15 Q0-35 30-15 L24 50 H-24Z" fill="#DDF7FB" stroke="#17324D" stroke-width="2"/><path class="ink" d="M-12 50 L-15 82 M12 50 L16 82 M22 2 L65-18"/></g>
|
|
19
|
+
<rect x="635" y="255" width="175" height="63" rx="9" fill="#EAF8FA" stroke="#008EAA" stroke-width="3"/><circle class="safe" cx="666" cy="286" r="15"/><path d="M658 286 L664 293 L676 278" fill="none" stroke="#FFFDF8" stroke-width="4"/><text class="text" x="730" y="282" text-anchor="middle">ISOLATE</text><text class="text" x="730" y="303" text-anchor="middle">& COOL</text>
|
|
20
20
|
<path d="M550 290 L632 287" fill="none" stroke="#008EAA" stroke-width="4"/>
|
|
21
21
|
</svg>
|
|
@@ -2,10 +2,10 @@
|
|
|
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:#
|
|
5
|
+
.wall{fill:#FFF0D6}.desk{fill:#F6D978}.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
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:#
|
|
8
|
+
.note{fill:#F6D978;stroke:#E2BA22;stroke-width:1.5}.cup{fill:#DDF7FB;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
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>
|
|
@@ -17,7 +17,7 @@
|
|
|
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>
|
|
19
19
|
<text class="code" x="495" y="205">eyeprolog --goal 'path(a, X)' program.pl</text>
|
|
20
|
-
<text x="495" y="240" fill="#
|
|
20
|
+
<text x="495" y="240" fill="#78AFC0" font-family="ui-monospace,monospace" font-size="16">✓ answers and proofs agree</text>
|
|
21
21
|
<path d="M625 270 L675 305 H580Z" fill="#2C657A"/>
|
|
22
22
|
<rect x="545" y="304" width="165" height="12" rx="6" fill="#2C657A"/>
|
|
23
23
|
<g transform="translate(115 285)"><ellipse class="cup" cx="0" cy="45" rx="45" ry="12"/><path class="cup" d="M-45 0 H45 L35 45 H-35Z"/><path class="ink" d="M45 10 Q78 12 65 36 Q58 46 38 38"/><path d="M-15-8 Q-25-35-8-48 M10-8 Q22-32 8-48" fill="none" stroke="#FFFDF8" stroke-width="3" opacity=".8"/></g>
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
<desc id="desc">A central relation connects a search tree, a syntax tree, a transformed program, and an auditable decision, with meaning held steady at the center.</desc>
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
|
-
.bg{fill:#
|
|
6
|
+
.bg{fill:#FFF0D6}.panel{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.hub{fill:#DDF7FB;stroke:#008EAA;stroke-width:3}
|
|
7
7
|
.ink{fill:none;stroke:#537487;stroke-width:2.5;stroke-linecap:round}.green{stroke:#008EAA}.red{stroke:#C8A100}.gold{stroke:#E2BA22}
|
|
8
|
-
.node{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.ok{fill:#
|
|
8
|
+
.node{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.ok{fill:#EAF8FA;stroke:#008EAA;stroke-width:2}
|
|
9
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>
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
<desc id="desc">A bridge carries mathematical definitions and proof across symbolic clauses into witnesses, counterexamples, and inspectable derivations.</desc>
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
|
-
.sky{fill:#
|
|
7
|
-
.arch{fill:#
|
|
6
|
+
.sky{fill:#EAF8FA}.ground{fill:#FFF4BF}.stone{fill:#FFF9E8;stroke:#17324D;stroke-width:2}
|
|
7
|
+
.arch{fill:#E2BA22;stroke:#9D8200;stroke-width:3}.water{fill:#BFEAF1}.ink{fill:none;stroke:#17324D;stroke-width:2.5;stroke-linecap:round}
|
|
8
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>
|
|
@@ -31,23 +31,23 @@
|
|
|
31
31
|
|
|
32
32
|
<rect class="stone" x="660" y="80" width="205" height="190" rx="10"/>
|
|
33
33
|
<text class="label" x="762" y="110" text-anchor="middle">COMPUTATION</text>
|
|
34
|
-
<circle cx="710" cy="155" r="20" fill="#
|
|
34
|
+
<circle cx="710" cy="155" r="20" fill="#EAF8FA" stroke="#008EAA" stroke-width="2"/>
|
|
35
35
|
<text class="code" x="710" y="160" text-anchor="middle">?</text>
|
|
36
36
|
<path class="ink green" marker-end="url(#arr)" d="M732 155H797"/>
|
|
37
|
-
<rect x="797" y="137" width="45" height="36" rx="6" fill="#
|
|
37
|
+
<rect x="797" y="137" width="45" height="36" rx="6" fill="#EAF8FA" stroke="#008EAA" stroke-width="2"/>
|
|
38
38
|
<text class="code" x="819" y="160" text-anchor="middle">X</text>
|
|
39
39
|
<text class="code" x="682" y="207">witness</text>
|
|
40
40
|
<text class="code" x="682" y="235">proof</text>
|
|
41
41
|
<text class="code" x="682" y="260">or counterexample</text>
|
|
42
42
|
|
|
43
43
|
<g transform="translate(300 335)">
|
|
44
|
-
<circle cx="0" cy="0" r="27" fill="#
|
|
44
|
+
<circle cx="0" cy="0" r="27" fill="#FFF9E8" stroke="#17324D" stroke-width="2"/>
|
|
45
45
|
<text class="code" x="0" y="5" text-anchor="middle">axiom</text>
|
|
46
46
|
<path class="ink green" d="M27 0H103"/>
|
|
47
|
-
<circle cx="130" cy="0" r="27" fill="#
|
|
47
|
+
<circle cx="130" cy="0" r="27" fill="#FFF9E8" stroke="#17324D" stroke-width="2"/>
|
|
48
48
|
<text class="code" x="130" y="5" text-anchor="middle">rule</text>
|
|
49
49
|
<path class="ink green" d="M157 0H233"/>
|
|
50
|
-
<circle cx="260" cy="0" r="27" fill="#
|
|
50
|
+
<circle cx="260" cy="0" r="27" fill="#EAF8FA" stroke="#008EAA" stroke-width="2"/>
|
|
51
51
|
<text class="code" x="260" y="5" text-anchor="middle">answer</text>
|
|
52
52
|
</g>
|
|
53
53
|
<text class="label" x="450" y="420" text-anchor="middle">certainty whose boundary is visible</text>
|
|
@@ -3,9 +3,9 @@
|
|
|
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:#
|
|
6
|
+
.bg{fill:#FFF0D6}.bench{fill:#F6D978}.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:#E2BA22;stroke-width:2}.red{fill:#
|
|
8
|
+
.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.red{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}
|
|
9
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}
|
|
@@ -3,10 +3,10 @@
|
|
|
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:#
|
|
6
|
+
.wall{fill:#EAF8FA}.floor{fill:#FFF0D6}.bench{fill:#F6D978;stroke:#9D8200;stroke-width:3}
|
|
7
7
|
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.screen{fill:#102A3A;stroke:#17324D;stroke-width:3}
|
|
8
8
|
.green{fill:#DDF7FB;stroke:#008EAA;stroke-width:2}.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}
|
|
9
|
-
.red{fill:#
|
|
9
|
+
.red{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}.blue{fill:#DDF7FB;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}
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
|
|
47
47
|
<g transform="translate(270 325)">
|
|
48
48
|
<circle cx="0" cy="-28" r="18" fill="#FFFDF8" stroke="#17324D" stroke-width="2"/>
|
|
49
|
-
<path d="M-28 0Q0-25 28 0L22 72H-22Z" fill="#
|
|
49
|
+
<path d="M-28 0Q0-25 28 0L22 72H-22Z" fill="#DDF7FB" stroke="#17324D" stroke-width="2"/>
|
|
50
50
|
<path class="line" d="M-12 72L-15 105M12 72L15 105M-22 15L-70-10M22 15L72-8"/>
|
|
51
51
|
</g>
|
|
52
52
|
<rect class="blue" x="350" y="337" width="400" height="66" rx="10"/>
|
|
@@ -2,7 +2,7 @@
|
|
|
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:#E2BA22;stroke-width:2}.rose{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}.blue{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:#DDF7FB;stroke:#537487;stroke-width:2}
|
|
6
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>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<style>
|
|
6
6
|
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.source{fill:#17324D;stroke:#102A3A;stroke-width:3}
|
|
7
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:#
|
|
8
|
+
.rose{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}.blue{fill:#DDF7FB;stroke:#537487;stroke-width:2}
|
|
9
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}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<defs>
|
|
5
5
|
<style>
|
|
6
6
|
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}
|
|
7
|
-
.goal{fill:#
|
|
8
|
-
.fail{fill:#
|
|
7
|
+
.goal{fill:#EAF8FA;stroke:#008EAA;stroke-width:2}
|
|
8
|
+
.fail{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}
|
|
9
9
|
.repeat{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}
|
|
10
10
|
.title{fill:#C8A100;font:bold 23px Georgia,serif}
|
|
11
11
|
.text{fill:#102A3A;font:14px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
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="#E2BA22"/><circle cx="135" cy="75" r="13" fill="#008EAA"/><circle cx="115" cy="145" r="13" fill="#F6D978"/><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,7 +4,7 @@
|
|
|
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:#E2BA22;stroke-width:2}.blue{fill:#
|
|
7
|
+
.gold{fill:#FFF4BF;stroke:#E2BA22;stroke-width:2}.blue{fill:#DDF7FB;stroke:#537487;stroke-width:2}
|
|
8
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
10
|
.line{fill:none;stroke:#537487;stroke-width:2.5}.rung{stroke:#E2BA22;stroke-width:4}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<title id="title">Recursion and tabling on a railway map</title>
|
|
3
3
|
<desc id="desc">A railway network contains a cycle; a route ledger records reached stations so recurring questions reuse known answers.</desc>
|
|
4
4
|
<style>
|
|
5
|
-
.map{fill:#EAF8FA}.land{fill:#
|
|
5
|
+
.map{fill:#EAF8FA}.land{fill:#FFF0D6}.rail{fill:none;stroke:#2C657A;stroke-width:8}.tie{fill:none;stroke:#FFFDF8;stroke-width:2;stroke-dasharray:4 8}
|
|
6
6
|
.station{fill:#FFFDF8;stroke:#17324D;stroke-width:3}.known{fill:#DDF7FB;stroke:#008EAA;stroke-width:4}
|
|
7
7
|
.text{fill:#17324D;font:16px ui-monospace,monospace}.ledger{fill:#FFFDF8;stroke:#17324D;stroke-width:2}.check{fill:#008EAA}
|
|
8
8
|
</style>
|
|
@@ -2,7 +2,7 @@
|
|
|
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:#E2BA22;stroke-width:2}.rose{fill:#FFF0D6;stroke:#C8A100;stroke-width:2}.blue{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:#DDF7FB;stroke:#537487;stroke-width:2}
|
|
6
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>
|