eyeprolog 1.6.21 → 1.6.23
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/arc-in-eyeprolog.md +21 -8
- package/book-assets/aggregation-market.svg +21 -4
- package/book-assets/and-or-binding-trace.svg +22 -3
- package/book-assets/arithmetic-binding-flow.svg +16 -1
- package/book-assets/auditable-decision-service.svg +18 -1
- package/book-assets/bounded-experimental-math.svg +21 -2
- package/book-assets/cli-observation-loop.svg +17 -0
- package/book-assets/context-data-boundary.svg +18 -2
- package/book-assets/correctness-obligations.svg +17 -1
- package/book-assets/debugging-four-lenses.svg +19 -2
- package/book-assets/example-landscape.svg +33 -6
- package/book-assets/finite-search-funnel.svg +31 -6
- package/book-assets/herbrand-world.svg +17 -2
- package/book-assets/integrity-check-control-panel.svg +18 -3
- package/book-assets/iso-control-board.svg +21 -2
- package/book-assets/iso-state-operator-console.svg +21 -2
- package/book-assets/iso-stream-roundtrip.svg +17 -1
- package/book-assets/iso-term-prism.svg +16 -1
- package/book-assets/knowledge-engineering-workflow.svg +19 -3
- package/book-assets/laboratory-progression.svg +18 -0
- package/book-assets/lists-train.svg +16 -2
- package/book-assets/logic-and-control.svg +31 -10
- package/book-assets/negation-guest-registry.svg +17 -2
- package/book-assets/part-1-relations.svg +34 -6
- package/book-assets/part-2-search.svg +25 -4
- package/book-assets/part-3-trustworthy-reasoning.svg +35 -6
- package/book-assets/part-4-craft.svg +37 -10
- package/book-assets/part-5-relational-design.svg +18 -1
- package/book-assets/part-6-mathematics.svg +31 -6
- package/book-assets/part-7-laboratory.svg +19 -2
- package/book-assets/part-8-standard-prolog.svg +35 -5
- package/book-assets/pattern-selection-map.svg +16 -1
- package/book-assets/program-construction-loop.svg +16 -1
- package/book-assets/program-transformation-workbench.svg +21 -2
- package/book-assets/proof-and-search.svg +14 -1
- package/book-assets/proof-as-computation.svg +17 -1
- package/book-assets/recursion-induction-ladder.svg +19 -2
- package/book-assets/recursion-tabling-railway.svg +13 -1
- package/book-assets/reference-navigation.svg +16 -0
- package/book-assets/relational-test-spectrum.svg +16 -1
- package/book-assets/review-lenses.svg +18 -0
- package/book-assets/syntax-relations.svg +18 -2
- package/book-assets/termination-map.svg +15 -1
- package/book-assets/title-page.svg +30 -1
- package/book-assets/unification.svg +16 -2
- package/package.json +1 -1
- package/src/repl.js +29 -20
- package/test/run-proof-checking.mjs +0 -0
- package/test/run-properties.mjs +0 -0
- package/the-art-of-eyeprolog.md +5 -4
- package/why-eyeprolog.md +3 -3
|
@@ -8,8 +8,24 @@
|
|
|
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}.unit{fill:#FFFDF8;stroke:#537487;stroke-width:1.5}
|
|
11
|
+
|
|
12
|
+
.f-537487{fill:#537487}
|
|
13
|
+
@media (prefers-color-scheme: dark) {
|
|
14
|
+
.bg{fill:#242014}
|
|
15
|
+
.term{fill:#152427;stroke:#6EC4D5;stroke-width:2}
|
|
16
|
+
.stream{fill:#152427;stroke:#81A0B1;stroke-width:2}
|
|
17
|
+
.file{fill:#221E12;stroke:#82AEDA;stroke-width:2}
|
|
18
|
+
.eof{fill:#2A2717;stroke:#CEB556;stroke-width:2}
|
|
19
|
+
.title{fill:#E7E0C1;font:bold 23px Georgia,serif}
|
|
20
|
+
.label{fill:#D7E3F0;font:bold 16px Georgia,serif}
|
|
21
|
+
.code{fill:#DCEAF2;font:14px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
22
|
+
.prose{fill:#CDDBE3;font:15px Georgia,serif}
|
|
23
|
+
.line{fill:none;stroke:#81A0B1;stroke-width:2.5}
|
|
24
|
+
.unit{fill:#221E12;stroke:#81A0B1;stroke-width:1.5}
|
|
25
|
+
.f-537487{fill:#2C3D47}
|
|
26
|
+
}
|
|
11
27
|
</style>
|
|
12
|
-
<marker id="a" markerWidth="7" markerHeight="7" refX="6" refY="3.5" orient="auto"><path d="M0 0L7 3.5L0 7Z"
|
|
28
|
+
<marker id="a" markerWidth="7" markerHeight="7" refX="6" refY="3.5" orient="auto"><path d="M0 0L7 3.5L0 7Z" class="f-537487"/></marker>
|
|
13
29
|
</defs>
|
|
14
30
|
<rect width="900" height="420" class="bg"/><text class="title" x="450" y="34" text-anchor="middle">TERM → TEXT STREAM → TERM</text>
|
|
15
31
|
<rect class="term" x="20" y="125" width="190" height="105" rx="12"/><text class="code" x="115" y="156" text-anchor="middle">STRUCTURED TERM</text><text class="code" x="115" y="184" text-anchor="middle">event(sensor_7,</text><text class="code" x="115" y="207" text-anchor="middle">online)</text>
|
|
@@ -8,8 +8,23 @@
|
|
|
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}
|
|
11
|
+
|
|
12
|
+
.f-537487{fill:#537487}
|
|
13
|
+
@media (prefers-color-scheme: dark) {
|
|
14
|
+
.bg{fill:#242014}
|
|
15
|
+
.term{fill:#152427;stroke:#6EC4D5;stroke-width:2}
|
|
16
|
+
.card{fill:#221E12;stroke:#82AEDA;stroke-width:2}
|
|
17
|
+
.blue{fill:#152427;stroke:#81A0B1;stroke-width:2}
|
|
18
|
+
.gold{fill:#2A2717;stroke:#CEB556;stroke-width:2}
|
|
19
|
+
.title{fill:#E7E0C1;font:bold 23px Georgia,serif}
|
|
20
|
+
.label{fill:#D7E3F0;font:bold 16px Georgia,serif}
|
|
21
|
+
.code{fill:#DCEAF2;font:14px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
22
|
+
.prose{fill:#CDDBE3;font:15px Georgia,serif}
|
|
23
|
+
.ray{fill:none;stroke:#81A0B1;stroke-width:2.2}
|
|
24
|
+
.f-537487{fill:#2C3D47}
|
|
25
|
+
}
|
|
11
26
|
</style>
|
|
12
|
-
<marker id="a" markerWidth="7" markerHeight="7" refX="6" refY="3.5" orient="auto"><path d="M0 0L7 3.5L0 7Z"
|
|
27
|
+
<marker id="a" markerWidth="7" markerHeight="7" refX="6" refY="3.5" orient="auto"><path d="M0 0L7 3.5L0 7Z" class="f-537487"/></marker>
|
|
13
28
|
</defs>
|
|
14
29
|
<rect width="900" height="400" class="bg"/><text class="title" x="450" y="34" text-anchor="middle">ONE TERM, SEVERAL STANDARD VIEWS</text>
|
|
15
30
|
<polygon class="term" points="350,95 500,75 555,200 455,285 325,220"/><text class="label" x="440" y="145" text-anchor="middle">TERM</text>
|
|
@@ -1,16 +1,32 @@
|
|
|
1
1
|
<svg xmlns="http://www.w3.org/2000/svg" width="900" height="380" viewBox="0 0 900 380" role="img" aria-labelledby="title desc">
|
|
2
2
|
<title id="title">From observations to an accountable decision</title>
|
|
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
|
-
<defs><marker id="a" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto"><path d="M0 0 L0 6 L9 3Z"
|
|
4
|
+
<defs><marker id="a" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto"><path d="M0 0 L0 6 L9 3Z" class="f-2C657A"/></marker></defs>
|
|
5
5
|
<style>
|
|
6
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
|
+
|
|
10
|
+
.f-2C657A{fill:#2C657A}
|
|
11
|
+
.f-F6D978{fill:#F6D978}
|
|
12
|
+
.s-E2BA22{stroke:#E2BA22}
|
|
13
|
+
@media (prefers-color-scheme: dark) {
|
|
14
|
+
.bg{fill:#272015}
|
|
15
|
+
.box{fill:#221E12;stroke:#82AEDA;stroke-width:2.5}
|
|
16
|
+
.concept{fill:#152427;stroke:#6EC4D5;stroke-width:3}
|
|
17
|
+
.text{fill:#D7E3F0;font:16px ui-monospace,monospace}
|
|
18
|
+
.title{fill:#EBE5CA;font:bold 17px Georgia,serif}
|
|
19
|
+
.arrow{fill:none;stroke:#77B6CE;stroke-width:3;marker-end:url(#a)}
|
|
20
|
+
.proof{fill:#36301D;stroke:#CEB556;stroke-width:2}
|
|
21
|
+
.f-2C657A{fill:#2C4852}
|
|
22
|
+
.f-F6D978{fill:#36301D}
|
|
23
|
+
.s-E2BA22{stroke:#CEB556}
|
|
24
|
+
}
|
|
25
|
+
</style>
|
|
10
26
|
<rect width="900" height="380" class="bg"/>
|
|
11
27
|
<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
28
|
<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
29
|
<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
30
|
<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"
|
|
31
|
+
<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" stroke-width="2" class="f-F6D978 s-E2BA22"/><text class="text" x="780" y="318" text-anchor="middle">why/2</text>
|
|
16
32
|
</svg>
|
|
@@ -5,6 +5,24 @@
|
|
|
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:#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
|
+
|
|
9
|
+
@media (prefers-color-scheme: dark) {
|
|
10
|
+
.bg{fill:#242014}
|
|
11
|
+
.stage{stroke:#81A0B1;stroke-width:2}
|
|
12
|
+
.s1{fill:#152427}
|
|
13
|
+
.s2{fill:#18292C}
|
|
14
|
+
.s3{fill:#2A2717}
|
|
15
|
+
.s4{fill:#272015}
|
|
16
|
+
.s5{fill:#31475C;stroke:#88BCDC;stroke-width:3}
|
|
17
|
+
.line{fill:none;stroke:#81A0B1;stroke-width:4;stroke-linecap:round}
|
|
18
|
+
.arrow{fill:#2C3D47}
|
|
19
|
+
.title{fill:#EBE5CA;font:bold 24px Georgia,serif}
|
|
20
|
+
.number{fill:#EBE5CA;font:bold 20px Georgia,serif}
|
|
21
|
+
.label{fill:#DCEAF2;font:bold 17px Georgia,serif}
|
|
22
|
+
.small{fill:#CDDBE3;font:15px Georgia,serif}
|
|
23
|
+
.white{fill:#F4EFE1}
|
|
24
|
+
.thread{fill:#CDDBE3;font:italic 16px Georgia,serif}
|
|
25
|
+
}
|
|
8
26
|
</style>
|
|
9
27
|
</defs>
|
|
10
28
|
<rect width="900" height="470" class="bg"/>
|
|
@@ -5,7 +5,21 @@
|
|
|
5
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
|
+
|
|
9
|
+
.s-17324D{stroke:#17324D}
|
|
10
|
+
@media (prefers-color-scheme: dark) {
|
|
11
|
+
.sky{fill:#142325}
|
|
12
|
+
.ground{fill:#272015}
|
|
13
|
+
.rail{stroke:#77B6CE;stroke-width:5}
|
|
14
|
+
.tie{stroke:#D6C572;stroke-width:3}
|
|
15
|
+
.car{fill:#221E12;stroke:#82AEDA;stroke-width:3}
|
|
16
|
+
.head{fill:#152427;stroke:#6EC4D5;stroke-width:4}
|
|
17
|
+
.wheel{fill:#2C4852;stroke:#82AEDA;stroke-width:2}
|
|
18
|
+
.text{fill:#D7E3F0;font:18px ui-monospace,monospace}
|
|
19
|
+
.brace{fill:none;stroke:#D3BD66;stroke-width:3}
|
|
20
|
+
.s-17324D{stroke:#82AEDA}
|
|
21
|
+
}
|
|
22
|
+
</style>
|
|
9
23
|
<rect width="900" height="340" class="sky"/><rect y="230" width="900" height="110" class="ground"/>
|
|
10
24
|
<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>
|
|
11
25
|
<g transform="translate(70 135)"><rect class="head" width="160" height="95" rx="8"/><text class="text" x="80" y="55" text-anchor="middle">red</text><circle class="wheel" cx="40" cy="105" r="14"/><circle class="wheel" cx="120" cy="105" r="14"/></g>
|
|
@@ -13,5 +27,5 @@
|
|
|
13
27
|
<g transform="translate(440 135)"><rect class="car" width="160" height="95" rx="8"/><text class="text" x="80" y="55" text-anchor="middle">blue</text><circle class="wheel" cx="40" cy="105" r="14"/><circle class="wheel" cx="120" cy="105" r="14"/></g>
|
|
14
28
|
<path class="brace" d="M70 112 Q150 78 230 112"/><text class="text" x="150" y="73" text-anchor="middle">Head</text>
|
|
15
29
|
<path class="brace" d="M255 112 Q425 45 600 112"/><text class="text" x="425" y="38" text-anchor="middle">Tail</text>
|
|
16
|
-
<path d="M230 185 H255 M415 185 H440" stroke="
|
|
30
|
+
<path d="M230 185 H255 M415 185 H440" stroke-width="5" class="s-17324D"/><text class="text" x="685" y="170">[Head | Tail]</text><text class="text" x="685" y="205">append joins trains</text>
|
|
17
31
|
</svg>
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<desc id="desc">A rule in the center points left to its logical meaning and right to its operational reading.</desc>
|
|
4
4
|
<defs>
|
|
5
5
|
<marker id="arrow" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto">
|
|
6
|
-
<path d="M0,0 L0,6 L9,3 z"
|
|
6
|
+
<path d="M0,0 L0,6 L9,3 z" class="f-405E70"/>
|
|
7
7
|
</marker>
|
|
8
8
|
<style>
|
|
9
9
|
.paper{fill:#FFFDF8;stroke:#17324D;stroke-width:2}
|
|
@@ -12,9 +12,30 @@
|
|
|
12
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
|
+
|
|
16
|
+
.f-2C657A{fill:#2C657A}
|
|
17
|
+
.f-405E70{fill:#405E70}
|
|
18
|
+
.f-C8A100{fill:#C8A100}
|
|
19
|
+
.f-FFF9E8{fill:#FFF9E8}
|
|
20
|
+
.s-2C657A{stroke:#2C657A}
|
|
21
|
+
.s-C8A100{stroke:#C8A100}
|
|
22
|
+
@media (prefers-color-scheme: dark) {
|
|
23
|
+
.paper{fill:#221E12;stroke:#82AEDA;stroke-width:2}
|
|
24
|
+
.ink{fill:#DCEAF2;font:18px Georgia,serif}
|
|
25
|
+
.small{fill:#CDDBE3;font:15px Georgia,serif}
|
|
26
|
+
.label{fill:#E7E0C1;font:bold 18px Georgia,serif}
|
|
27
|
+
.code{fill:#DCEAF2;font:17px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
28
|
+
.line{stroke:#87A7BA;stroke-width:2;fill:none;marker-end:url(#arrow)}
|
|
29
|
+
.f-2C657A{fill:#2C4852}
|
|
30
|
+
.f-405E70{fill:#2D424F}
|
|
31
|
+
.f-C8A100{fill:#4D472A}
|
|
32
|
+
.f-FFF9E8{fill:#242014}
|
|
33
|
+
.s-2C657A{stroke:#77B6CE}
|
|
34
|
+
.s-C8A100{stroke:#D3BD66}
|
|
35
|
+
}
|
|
15
36
|
</style>
|
|
16
37
|
</defs>
|
|
17
|
-
<rect width="900" height="430"
|
|
38
|
+
<rect width="900" height="430" class="f-FFF9E8"/>
|
|
18
39
|
<rect class="paper" x="318" y="120" width="264" height="180" rx="8"/>
|
|
19
40
|
<text class="label" x="450" y="155" text-anchor="middle">PROGRAM</text>
|
|
20
41
|
<text class="code" x="338" y="200">path(X,Y) :-</text>
|
|
@@ -24,10 +45,10 @@
|
|
|
24
45
|
<rect class="paper" x="35" y="55" width="235" height="305" rx="8"/>
|
|
25
46
|
<text class="label" x="152" y="92" text-anchor="middle">LOGIC</text>
|
|
26
47
|
<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"
|
|
29
|
-
<circle cx="155" cy="172" r="7"
|
|
30
|
-
<circle cx="245" cy="172" r="7"
|
|
48
|
+
<path d="M65 172 C95 142,125 202,155 172 S215 202,245 172" fill="none" stroke-width="4" class="s-2C657A"/>
|
|
49
|
+
<circle cx="65" cy="172" r="7" class="f-2C657A"/>
|
|
50
|
+
<circle cx="155" cy="172" r="7" class="f-2C657A"/>
|
|
51
|
+
<circle cx="245" cy="172" r="7" class="f-2C657A"/>
|
|
31
52
|
<text class="small" x="58" y="225">An edge followed by a</text>
|
|
32
53
|
<text class="small" x="58" y="248">path is itself a path.</text>
|
|
33
54
|
<text class="small" x="58" y="292">Ground consequences form</text>
|
|
@@ -36,10 +57,10 @@
|
|
|
36
57
|
<rect class="paper" x="630" y="55" width="235" height="305" rx="8"/>
|
|
37
58
|
<text class="label" x="747" y="92" text-anchor="middle">CONTROL</text>
|
|
38
59
|
<text class="ink" x="653" y="130">How is it found?</text>
|
|
39
|
-
<circle cx="680" cy="170" r="8"
|
|
40
|
-
<circle cx="735" cy="215" r="8"
|
|
41
|
-
<circle cx="790" cy="260" r="8"
|
|
42
|
-
<path d="M686 176 L728 209 M741 221 L783 254" stroke="
|
|
60
|
+
<circle cx="680" cy="170" r="8" class="f-C8A100"/>
|
|
61
|
+
<circle cx="735" cy="215" r="8" class="f-C8A100"/>
|
|
62
|
+
<circle cx="790" cy="260" r="8" class="f-C8A100"/>
|
|
63
|
+
<path d="M686 176 L728 209 M741 221 L783 254" stroke-width="3" class="s-C8A100"/>
|
|
43
64
|
<text class="small" x="653" y="300">Choose an edge first;</text>
|
|
44
65
|
<text class="small" x="653" y="323">then solve a smaller or</text>
|
|
45
66
|
<text class="small" x="653" y="346">reused path question.</text>
|
|
@@ -5,7 +5,22 @@
|
|
|
5
5
|
.wall{fill:#EAF8FA}.desk{fill:#F6D978}.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:#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
|
+
|
|
9
|
+
.s-C8A100{stroke:#C8A100}
|
|
10
|
+
@media (prefers-color-scheme: dark) {
|
|
11
|
+
.wall{fill:#142325}
|
|
12
|
+
.desk{fill:#36301D}
|
|
13
|
+
.book{fill:#221E12;stroke:#82AEDA;stroke-width:3}
|
|
14
|
+
.line{stroke:#77B6CE;stroke-width:2}
|
|
15
|
+
.person{fill:#221E12;stroke:#82AEDA;stroke-width:2}
|
|
16
|
+
.coat{fill:#152427;stroke:#82AEDA;stroke-width:2}
|
|
17
|
+
.text{fill:#D7E3F0;font:15px ui-monospace,monospace}
|
|
18
|
+
.red{fill:#4D472A}
|
|
19
|
+
.green{fill:#2C4C52}
|
|
20
|
+
.stamp{fill:none;stroke:#6EC4D5;stroke-width:4}
|
|
21
|
+
.s-C8A100{stroke:#D3BD66}
|
|
22
|
+
}
|
|
23
|
+
</style>
|
|
9
24
|
<rect width="900" height="380" class="wall"/><rect y="285" width="900" height="95" class="desk"/>
|
|
10
25
|
<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>
|
|
11
26
|
<rect class="book" x="245" y="55" width="545" height="260" rx="8"/><line class="line" x1="515" y1="55" x2="515" y2="315"/>
|
|
@@ -13,5 +28,5 @@
|
|
|
13
28
|
<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
29
|
<text class="text" x="555" y="135">byron</text><circle class="red" cx="750" cy="130" r="8"/>
|
|
15
30
|
<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="
|
|
31
|
+
<path d="M150 165 C195 130 225 125 270 130" fill="none" stroke-width="3" class="s-C8A100"/>
|
|
17
32
|
</svg>
|
|
@@ -11,15 +11,43 @@
|
|
|
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}
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
.f-17324D{fill:#17324D}
|
|
16
|
+
.f-BFEAF1{fill:#BFEAF1}
|
|
17
|
+
.f-E2BA22{fill:#E2BA22}
|
|
18
|
+
.f-FFFDF8{fill:#FFFDF8}
|
|
19
|
+
.s-17324D{stroke:#17324D}
|
|
20
|
+
@media (prefers-color-scheme: dark) {
|
|
21
|
+
.sky{fill:#142325}
|
|
22
|
+
.ground{fill:#272015}
|
|
23
|
+
.road{fill:#2D271C}
|
|
24
|
+
.building{fill:#221E12;stroke:#82AEDA;stroke-width:2}
|
|
25
|
+
.roof{fill:#453E25;stroke:#82AEDA;stroke-width:2}
|
|
26
|
+
.tree{fill:#21373D;stroke:#6EC4D5;stroke-width:2}
|
|
27
|
+
.trunk{stroke:#D6C572;stroke-width:8}
|
|
28
|
+
.person{fill:#221E12;stroke:#82AEDA;stroke-width:2}
|
|
29
|
+
.shirt{fill:#152427;stroke:#82AEDA;stroke-width:2}
|
|
30
|
+
.relation{fill:none;stroke:#D3BD66;stroke-width:2.5;stroke-dasharray:7 5}
|
|
31
|
+
.label{fill:#221E12;stroke:#D3BD66;stroke-width:1.5}
|
|
32
|
+
.text{fill:#EBE5CA;font:14px ui-monospace,monospace}
|
|
33
|
+
.detail{fill:none;stroke:#82AEDA;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
|
|
34
|
+
.bike-frame{fill:none;stroke:#6EC4D5;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
|
|
35
|
+
.bike-part{fill:none;stroke:#82AEDA;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
|
|
36
|
+
.f-17324D{fill:#D7E3F0}
|
|
37
|
+
.f-BFEAF1{fill:#18292C}
|
|
38
|
+
.f-E2BA22{fill:#453E25}
|
|
39
|
+
.f-FFFDF8{fill:#221E12}
|
|
40
|
+
.s-17324D{stroke:#82AEDA}
|
|
41
|
+
}
|
|
42
|
+
</style>
|
|
15
43
|
<rect width="900" height="265" class="sky"/><rect y="265" width="900" height="155" class="ground"/>
|
|
16
44
|
<path class="road" d="M0 355 C220 305 390 385 565 335 S770 300 900 325 L900 420 L0 420Z"/>
|
|
17
45
|
<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"
|
|
19
|
-
<rect x="178" y="195" width="47" height="48"
|
|
46
|
+
<rect x="93" y="202" width="45" height="93" stroke-width="2" class="f-E2BA22 s-17324D"/>
|
|
47
|
+
<rect x="178" y="195" width="47" height="48" stroke-width="2" class="f-BFEAF1 s-17324D"/>
|
|
20
48
|
<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"
|
|
22
|
-
<text x="740" y="163" text-anchor="middle"
|
|
49
|
+
<rect x="716" y="194" width="50" height="81" stroke-width="2" class="f-E2BA22 s-17324D"/>
|
|
50
|
+
<text x="740" y="163" text-anchor="middle" font-family="Georgia,serif" font-size="18" class="f-17324D">SCHOOL</text>
|
|
23
51
|
<line class="trunk" x1="570" y1="165" x2="570" y2="282"/><circle class="tree" cx="570" cy="125" r="55"/>
|
|
24
52
|
<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>
|
|
25
53
|
<g transform="translate(455 245) scale(.82)"><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>
|
|
@@ -28,7 +56,7 @@
|
|
|
28
56
|
<circle class="bike-part" cx="38" cy="24" r="25"/>
|
|
29
57
|
<!-- A recognizable diamond frame: rear hub, crank, seat tube, and head tube. -->
|
|
30
58
|
<path class="bike-frame" d="M-34 24L-9-10L8 24L-34 24L-9-10L27-8L38 24L8 24Z"/>
|
|
31
|
-
<circle cx="8" cy="24" r="5"
|
|
59
|
+
<circle cx="8" cy="24" r="5" stroke-width="2" class="f-FFFDF8 s-17324D"/>
|
|
32
60
|
<path class="bike-part" d="M-15-13H-2M-9-10L-13-25M-20-25H-6M27-8L23-24L34-29M30-29H40"/>
|
|
33
61
|
<path class="bike-part" d="M8 24L18 34M8 24L-1 15"/>
|
|
34
62
|
</g>
|
|
@@ -7,13 +7,34 @@
|
|
|
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
9
|
.ink{fill:none;stroke:#17324D;stroke-width:3;stroke-linecap:round}.coat{fill:#E2BA22;stroke:#17324D;stroke-width:2}
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
.f-E2BA22{fill:#E2BA22}
|
|
12
|
+
.f-E8DFCC{fill:#E8DFCC}
|
|
13
|
+
.f-F6D978{fill:#F6D978}
|
|
14
|
+
.s-17324D{stroke:#17324D}
|
|
15
|
+
@media (prefers-color-scheme: dark) {
|
|
16
|
+
.sky{fill:#142325}
|
|
17
|
+
.hill1{fill:#18292C}
|
|
18
|
+
.hill2{fill:#21373D}
|
|
19
|
+
.snow{fill:#221E12}
|
|
20
|
+
.path{fill:none;stroke:#D6C572;stroke-width:7;stroke-linecap:round;stroke-dasharray:9 7}
|
|
21
|
+
.chosen{fill:none;stroke:#6EC4D5;stroke-width:9;stroke-linecap:round}
|
|
22
|
+
.dead{stroke:#D3BD66;stroke-width:5}
|
|
23
|
+
.sign{fill:#221E12;stroke:#82AEDA;stroke-width:2}
|
|
24
|
+
.ink{fill:none;stroke:#82AEDA;stroke-width:3;stroke-linecap:round}
|
|
25
|
+
.coat{fill:#453E25;stroke:#82AEDA;stroke-width:2}
|
|
26
|
+
.f-E2BA22{fill:#453E25}
|
|
27
|
+
.f-E8DFCC{fill:#2C2518}
|
|
28
|
+
.f-F6D978{fill:#36301D}
|
|
29
|
+
.s-17324D{stroke:#82AEDA}
|
|
30
|
+
}
|
|
31
|
+
</style>
|
|
11
32
|
<rect width="900" height="420" class="sky"/>
|
|
12
|
-
<circle cx="735" cy="85" r="43"
|
|
33
|
+
<circle cx="735" cy="85" r="43" class="f-F6D978"/>
|
|
13
34
|
<polygon class="hill2" points="0,330 165,95 345,330"/><polygon class="snow" points="117,163 165,95 220,172 183,158 160,180 140,155"/>
|
|
14
35
|
<polygon class="hill1" points="160,350 410,70 680,350"/><polygon class="snow" points="345,143 410,70 482,151 438,135 408,165 382,137"/>
|
|
15
36
|
<polygon class="hill2" points="520,345 700,125 900,345"/><polygon class="snow" points="654,181 700,125 750,185 720,176 700,198 680,175"/>
|
|
16
|
-
<path d="M0 320 Q220 275 420 330 T900 305 V420 H0Z"
|
|
37
|
+
<path d="M0 320 Q220 275 420 330 T900 305 V420 H0Z" class="f-E8DFCC"/>
|
|
17
38
|
<path class="path" d="M95 360 C180 290 240 310 290 230 S395 170 480 235"/>
|
|
18
39
|
<path class="path" d="M290 230 C345 265 335 325 395 342"/>
|
|
19
40
|
<path class="path" d="M480 235 C565 175 590 100 660 145"/>
|
|
@@ -22,6 +43,6 @@
|
|
|
22
43
|
<line class="dead" x1="380" y1="327" x2="410" y2="357"/><line class="dead" x1="410" y1="327" x2="380" y2="357"/>
|
|
23
44
|
<line class="dead" x1="647" y1="132" x2="675" y2="158"/><line class="dead" x1="675" y1="132" x2="647" y2="158"/>
|
|
24
45
|
<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"
|
|
46
|
+
<g transform="translate(760 205)"><rect class="sign" x="0" y="28" width="92" height="62"/><polygon points="-12,30 46,-10 104,30" stroke-width="2" class="f-E2BA22 s-17324D"/><rect x="37" y="58" width="22" height="32" stroke-width="2" class="f-E2BA22 s-17324D"/><path d="M72 0 Q65-25 76-43" class="ink"/></g>
|
|
26
47
|
<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
48
|
</svg>
|
|
@@ -6,16 +6,45 @@
|
|
|
6
6
|
.console{fill:#2C657A}.ink{fill:none;stroke:#17324D;stroke-width:3;stroke-linecap:round}
|
|
7
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
|
+
|
|
10
|
+
.f-78AFC0{fill:#78AFC0}
|
|
11
|
+
.f-BFEAF1{fill:#BFEAF1}
|
|
12
|
+
.f-DDF7FB{fill:#DDF7FB}
|
|
13
|
+
.f-EAF8FA{fill:#EAF8FA}
|
|
14
|
+
.f-FFFDF8{fill:#FFFDF8}
|
|
15
|
+
.s-008EAA{stroke:#008EAA}
|
|
16
|
+
.s-17324D{stroke:#17324D}
|
|
17
|
+
.s-FFFDF8{stroke:#FFFDF8}
|
|
18
|
+
@media (prefers-color-scheme: dark) {
|
|
19
|
+
.wall{fill:#142325}
|
|
20
|
+
.panel{fill:#221E12;stroke:#82AEDA;stroke-width:2}
|
|
21
|
+
.screen{fill:#152427;stroke:#6EC4D5;stroke-width:2}
|
|
22
|
+
.console{fill:#2C4852}
|
|
23
|
+
.ink{fill:none;stroke:#82AEDA;stroke-width:3;stroke-linecap:round}
|
|
24
|
+
.wire{fill:none;stroke:#D3BD66;stroke-width:2.5}
|
|
25
|
+
.hot{fill:#453E25}
|
|
26
|
+
.safe{fill:#2C4C52}
|
|
27
|
+
.text{fill:#D7E3F0;font:16px ui-monospace,monospace}
|
|
28
|
+
.small{fill:#CDDBE3;font:15px Georgia,serif}
|
|
29
|
+
.f-78AFC0{fill:#21373D}
|
|
30
|
+
.f-BFEAF1{fill:#18292C}
|
|
31
|
+
.f-DDF7FB{fill:#152427}
|
|
32
|
+
.f-EAF8FA{fill:#142325}
|
|
33
|
+
.f-FFFDF8{fill:#221E12}
|
|
34
|
+
.s-008EAA{stroke:#6EC4D5}
|
|
35
|
+
.s-17324D{stroke:#82AEDA}
|
|
36
|
+
.s-FFFDF8{stroke:#A0802E}
|
|
37
|
+
}
|
|
38
|
+
</style>
|
|
10
39
|
<rect width="900" height="420" class="wall"/>
|
|
11
|
-
<circle cx="90" cy="75" r="38"
|
|
40
|
+
<circle cx="90" cy="75" r="38" class="f-78AFC0"/><path d="M52 75 Q90 42 128 75 Q90 108 52 75" class="f-BFEAF1"/>
|
|
12
41
|
<rect class="console" x="35" y="320" width="830" height="100" rx="8"/>
|
|
13
42
|
<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
43
|
<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
|
-
<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"
|
|
44
|
+
<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" stroke-width="2" class="f-FFFDF8 s-17324D"/><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
45
|
<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
46
|
<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"
|
|
19
|
-
<rect x="635" y="255" width="175" height="63" rx="9"
|
|
20
|
-
<path d="M550 290 L632 287" fill="none" stroke="
|
|
47
|
+
<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" stroke-width="2" class="f-DDF7FB s-17324D"/><path class="ink" d="M-12 50 L-15 82 M12 50 L16 82 M22 2 L65-18"/></g>
|
|
48
|
+
<rect x="635" y="255" width="175" height="63" rx="9" stroke-width="3" class="f-EAF8FA s-008EAA"/><circle class="safe" cx="666" cy="286" r="15"/><path d="M658 286 L664 293 L676 278" fill="none" stroke-width="4" class="s-FFFDF8"/><text class="text" x="730" y="282" text-anchor="middle">ISOLATE</text><text class="text" x="730" y="303" text-anchor="middle">& COOL</text>
|
|
49
|
+
<path d="M550 290 L632 287" fill="none" stroke-width="4" class="s-008EAA"/>
|
|
21
50
|
</svg>
|
|
@@ -6,20 +6,47 @@
|
|
|
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
8
|
.note{fill:#F6D978;stroke:#E2BA22;stroke-width:1.5}.cup{fill:#DDF7FB;stroke:#17324D;stroke-width:2}
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
.f-2C657A{fill:#2C657A}
|
|
11
|
+
.f-405E70{fill:#405E70}
|
|
12
|
+
.f-78AFC0{fill:#78AFC0}
|
|
13
|
+
.f-9D8200{fill:#9D8200}
|
|
14
|
+
.f-FFFDF8{fill:#FFFDF8}
|
|
15
|
+
.s-17324D{stroke:#17324D}
|
|
16
|
+
.s-FFFDF8{stroke:#FFFDF8}
|
|
17
|
+
@media (prefers-color-scheme: dark) {
|
|
18
|
+
.wall{fill:#272015}
|
|
19
|
+
.desk{fill:#36301D}
|
|
20
|
+
.paper{fill:#221E12;stroke:#82AEDA;stroke-width:2}
|
|
21
|
+
.screen{fill:#31475C;stroke:#88BCDC;stroke-width:5}
|
|
22
|
+
.code{fill:#E1F1F4;font:16px ui-monospace,monospace}
|
|
23
|
+
.ink{fill:none;stroke:#82AEDA;stroke-width:2.5;stroke-linecap:round}
|
|
24
|
+
.red{stroke:#D3BD66}
|
|
25
|
+
.green{stroke:#6EC4D5}
|
|
26
|
+
.note{fill:#36301D;stroke:#CEB556;stroke-width:1.5}
|
|
27
|
+
.cup{fill:#152427;stroke:#82AEDA;stroke-width:2}
|
|
28
|
+
.f-2C657A{fill:#2C4852}
|
|
29
|
+
.f-405E70{fill:#CDDBE3}
|
|
30
|
+
.f-78AFC0{fill:#AECFD9}
|
|
31
|
+
.f-9D8200{fill:#EBE5CA}
|
|
32
|
+
.f-FFFDF8{fill:#221E12}
|
|
33
|
+
.s-17324D{stroke:#82AEDA}
|
|
34
|
+
.s-FFFDF8{stroke:#A0802E}
|
|
35
|
+
}
|
|
36
|
+
</style>
|
|
10
37
|
<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"
|
|
12
|
-
<circle cx="90" cy="125" r="17"
|
|
13
|
-
<path class="ink green" d="M107 124 L177 116 M102 139 L135 177 M185 131 L156 177"/><text x="144" y="150"
|
|
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"
|
|
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"
|
|
38
|
+
<rect class="paper" x="45" y="45" width="220" height="190" rx="4"/><text x="155" y="76" text-anchor="middle" font-family="Georgia,serif" font-size="18" class="f-9D8200">DOMAIN SKETCH</text>
|
|
39
|
+
<circle cx="90" cy="125" r="17" stroke-width="2" class="f-FFFDF8 s-17324D"/><circle cx="195" cy="115" r="17" stroke-width="2" class="f-FFFDF8 s-17324D"/><circle cx="145" cy="190" r="17" stroke-width="2" class="f-FFFDF8 s-17324D"/>
|
|
40
|
+
<path class="ink green" d="M107 124 L177 116 M102 139 L135 177 M185 131 L156 177"/><text x="144" y="150" font-family="ui-monospace,monospace" font-size="14" class="f-405E70">relations</text>
|
|
41
|
+
<rect class="note" x="280" y="58" width="130" height="74" transform="rotate(-5 345 95)"/><text x="345" y="91" text-anchor="middle" font-family="ui-monospace,monospace" font-size="15" class="f-9D8200">What does one</text><text x="345" y="111" text-anchor="middle" font-family="ui-monospace,monospace" font-size="15" class="f-9D8200">fact mean?</text>
|
|
42
|
+
<rect class="note" x="285" y="152" width="145" height="78" transform="rotate(4 357 191)"/><text x="357" y="187" text-anchor="middle" font-family="ui-monospace,monospace" font-size="15" class="f-9D8200">Which argument</text><text x="357" y="207" text-anchor="middle" font-family="ui-monospace,monospace" font-size="15" class="f-9D8200">gets smaller?</text>
|
|
16
43
|
<rect class="screen" x="470" y="35" width="360" height="235" rx="10"/>
|
|
17
44
|
<text class="code" x="495" y="75">path(X, Y) :- edge(X, Y).</text>
|
|
18
45
|
<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
46
|
<text class="code" x="495" y="205">eyeprolog --goal 'path(a, X)' program.pl</text>
|
|
20
|
-
<text x="495" y="240"
|
|
21
|
-
<path d="M625 270 L675 305 H580Z"
|
|
22
|
-
<rect x="545" y="304" width="165" height="12" rx="6"
|
|
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
|
|
47
|
+
<text x="495" y="240" font-family="ui-monospace,monospace" font-size="16" class="f-78AFC0">✓ answers and proofs agree</text>
|
|
48
|
+
<path d="M625 270 L675 305 H580Z" class="f-2C657A"/>
|
|
49
|
+
<rect x="545" y="304" width="165" height="12" rx="6" class="f-2C657A"/>
|
|
50
|
+
<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-width="3" opacity=".8" class="s-FFFDF8"/></g>
|
|
24
51
|
<rect class="paper" x="230" y="305" width="230" height="90" transform="rotate(-3 345 350)"/><path class="ink red" d="M250 332 L350 328"/><path class="ink green" d="M250 355 L420 347 M250 376 L385 370"/>
|
|
25
52
|
</svg>
|
|
@@ -8,8 +8,25 @@
|
|
|
8
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
|
+
|
|
12
|
+
.f-537487{fill:#537487}
|
|
13
|
+
@media (prefers-color-scheme: dark) {
|
|
14
|
+
.bg{fill:#272015}
|
|
15
|
+
.panel{fill:#221E12;stroke:#82AEDA;stroke-width:2}
|
|
16
|
+
.hub{fill:#152427;stroke:#6EC4D5;stroke-width:3}
|
|
17
|
+
.ink{fill:none;stroke:#81A0B1;stroke-width:2.5;stroke-linecap:round}
|
|
18
|
+
.green{stroke:#6EC4D5}
|
|
19
|
+
.red{stroke:#D3BD66}
|
|
20
|
+
.gold{stroke:#CEB556}
|
|
21
|
+
.node{fill:#221E12;stroke:#82AEDA;stroke-width:2}
|
|
22
|
+
.ok{fill:#142325;stroke:#6EC4D5;stroke-width:2}
|
|
23
|
+
.title{fill:#EBE5CA;font:bold 24px Georgia,serif}
|
|
24
|
+
.label{fill:#D7E3F0;font:17px Georgia,serif}
|
|
25
|
+
.code{fill:#D7E3F0;font:14px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
26
|
+
.f-537487{fill:#2C3D47}
|
|
27
|
+
}
|
|
11
28
|
</style>
|
|
12
|
-
<marker id="arrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z"
|
|
29
|
+
<marker id="arrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" class="f-537487"/></marker>
|
|
13
30
|
</defs>
|
|
14
31
|
<rect width="900" height="460" class="bg"/>
|
|
15
32
|
<text class="title" x="450" y="35" text-anchor="middle">KEEP THE RELATION VISIBLE</text>
|
|
@@ -7,8 +7,33 @@
|
|
|
7
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
|
+
|
|
11
|
+
.f-008EAA{fill:#008EAA}
|
|
12
|
+
.f-EAF8FA{fill:#EAF8FA}
|
|
13
|
+
.f-FFF9E8{fill:#FFF9E8}
|
|
14
|
+
.s-008EAA{stroke:#008EAA}
|
|
15
|
+
.s-17324D{stroke:#17324D}
|
|
16
|
+
@media (prefers-color-scheme: dark) {
|
|
17
|
+
.sky{fill:#142325}
|
|
18
|
+
.ground{fill:#2A2717}
|
|
19
|
+
.stone{fill:#242014;stroke:#82AEDA;stroke-width:2}
|
|
20
|
+
.arch{fill:#453E25;stroke:#D6C572;stroke-width:3}
|
|
21
|
+
.water{fill:#18292C}
|
|
22
|
+
.ink{fill:none;stroke:#82AEDA;stroke-width:2.5;stroke-linecap:round}
|
|
23
|
+
.green{stroke:#6EC4D5}
|
|
24
|
+
.red{stroke:#D3BD66}
|
|
25
|
+
.gold{stroke:#CEB556}
|
|
26
|
+
.title{fill:#EBE5CA;font:bold 24px Georgia,serif}
|
|
27
|
+
.label{fill:#D7E3F0;font:18px Georgia,serif}
|
|
28
|
+
.code{fill:#DCEAF2;font:15px ui-monospace,SFMono-Regular,Consolas,monospace}
|
|
29
|
+
.f-008EAA{fill:#2C4C52}
|
|
30
|
+
.f-EAF8FA{fill:#142325}
|
|
31
|
+
.f-FFF9E8{fill:#242014}
|
|
32
|
+
.s-008EAA{stroke:#6EC4D5}
|
|
33
|
+
.s-17324D{stroke:#82AEDA}
|
|
34
|
+
}
|
|
10
35
|
</style>
|
|
11
|
-
<marker id="arr" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z"
|
|
36
|
+
<marker id="arr" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0L8 4L0 8Z" class="f-008EAA"/></marker>
|
|
12
37
|
</defs>
|
|
13
38
|
<rect width="900" height="470" class="sky"/><path class="water" d="M0 360Q120 335 240 360T480 360T720 360T960 360V470H0Z"/>
|
|
14
39
|
<path class="ground" d="M0 300H170L230 340H670L730 300H900V470H0Z" opacity=".55"/>
|
|
@@ -31,23 +56,23 @@
|
|
|
31
56
|
|
|
32
57
|
<rect class="stone" x="660" y="80" width="205" height="190" rx="10"/>
|
|
33
58
|
<text class="label" x="762" y="110" text-anchor="middle">COMPUTATION</text>
|
|
34
|
-
<circle cx="710" cy="155" r="20"
|
|
59
|
+
<circle cx="710" cy="155" r="20" stroke-width="2" class="f-EAF8FA s-008EAA"/>
|
|
35
60
|
<text class="code" x="710" y="160" text-anchor="middle">?</text>
|
|
36
61
|
<path class="ink green" marker-end="url(#arr)" d="M732 155H797"/>
|
|
37
|
-
<rect x="797" y="137" width="45" height="36" rx="6"
|
|
62
|
+
<rect x="797" y="137" width="45" height="36" rx="6" stroke-width="2" class="f-EAF8FA s-008EAA"/>
|
|
38
63
|
<text class="code" x="819" y="160" text-anchor="middle">X</text>
|
|
39
64
|
<text class="code" x="682" y="207">witness</text>
|
|
40
65
|
<text class="code" x="682" y="235">proof</text>
|
|
41
66
|
<text class="code" x="682" y="260">or counterexample</text>
|
|
42
67
|
|
|
43
68
|
<g transform="translate(300 335)">
|
|
44
|
-
<circle cx="0" cy="0" r="27"
|
|
69
|
+
<circle cx="0" cy="0" r="27" stroke-width="2" class="f-FFF9E8 s-17324D"/>
|
|
45
70
|
<text class="code" x="0" y="5" text-anchor="middle">axiom</text>
|
|
46
71
|
<path class="ink green" d="M27 0H103"/>
|
|
47
|
-
<circle cx="130" cy="0" r="27"
|
|
72
|
+
<circle cx="130" cy="0" r="27" stroke-width="2" class="f-FFF9E8 s-17324D"/>
|
|
48
73
|
<text class="code" x="130" y="5" text-anchor="middle">rule</text>
|
|
49
74
|
<path class="ink green" d="M157 0H233"/>
|
|
50
|
-
<circle cx="260" cy="0" r="27"
|
|
75
|
+
<circle cx="260" cy="0" r="27" stroke-width="2" class="f-EAF8FA s-008EAA"/>
|
|
51
76
|
<text class="code" x="260" y="5" text-anchor="middle">answer</text>
|
|
52
77
|
</g>
|
|
53
78
|
<text class="label" x="450" y="420" text-anchor="middle">certainty whose boundary is visible</text>
|