eyeling 1.24.6 → 1.24.8

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.
Files changed (175) hide show
  1. package/HANDBOOK.md +35 -35
  2. package/dist/browser/eyeling.browser.js +14 -1
  3. package/examples/act-alarm-bit-interoperability.n3 +2 -0
  4. package/examples/act-barley-seed-lineage.n3 +2 -0
  5. package/examples/act-docking-abort.n3 +2 -0
  6. package/examples/act-gravity-mediator-witness.n3 +2 -0
  7. package/examples/act-isolation-breach.n3 +2 -0
  8. package/examples/act-photosynthetic-exciton-transfer.n3 +2 -0
  9. package/examples/act-sensor-memory-reset.n3 +2 -0
  10. package/examples/act-tunnel-junction-wake-switch.n3 +2 -0
  11. package/examples/act-yeast-self-reproduction.n3 +2 -0
  12. package/examples/annotation.n3 +5 -0
  13. package/examples/auroracare.n3 +8 -8
  14. package/examples/backward-recursion.n3 +5 -0
  15. package/examples/barley-seed-becoming.n3 +2 -0
  16. package/examples/bmi.n3 +2 -0
  17. package/examples/builtin-coverage.n3 +5 -0
  18. package/examples/calidor.n3 +3 -3
  19. package/examples/collection.n3 +5 -0
  20. package/examples/complex-matrix-stability.n3 +2 -0
  21. package/examples/context-association.n3 +0 -8
  22. package/examples/control-system.n3 +2 -0
  23. package/examples/deep-taxonomy-10.n3 +2 -0
  24. package/examples/deep-taxonomy-100.n3 +2 -0
  25. package/examples/deep-taxonomy-1000.n3 +2 -0
  26. package/examples/deep-taxonomy-10000.n3 +2 -0
  27. package/examples/deep-taxonomy-100000.n3 +2 -0
  28. package/examples/delfour.n3 +3 -3
  29. package/examples/digital-product-passport.n3 +2 -0
  30. package/examples/dijkstra-risk-path.n3 +1 -2
  31. package/examples/easter.n3 +3 -1
  32. package/examples/eco-route-insight.n3 +1 -2
  33. package/examples/flandor.n3 +3 -3
  34. package/examples/french-cities.n3 +2 -0
  35. package/examples/fundamental-theorem-arithmetic.n3 +2 -0
  36. package/examples/genetic-algorithm-knapsack.n3 +1 -1
  37. package/examples/genetic-algorithm.n3 +1 -1
  38. package/examples/genetic-knapsack-selection.n3 +1 -2
  39. package/examples/gps.n3 +2 -0
  40. package/examples/harborsmr.n3 +2 -0
  41. package/examples/input/rdf-message-flow.trig +10 -10
  42. package/examples/input/rdf-messages.trig +6 -6
  43. package/examples/interop-demo.n3 +3 -1
  44. package/examples/matrix-mechanics.n3 +3 -3
  45. package/examples/medior.n3 +3 -3
  46. package/examples/n3-speaks-for-itself.n3 +5 -0
  47. package/examples/odrl-dpv-ehds-risk-ranked.n3 +1 -1
  48. package/examples/odrl-dpv-healthcare-risk-ranked.n3 +1 -1
  49. package/examples/odrl-dpv-risk-ranked.n3 +1 -1
  50. package/examples/odrl-risk-mitigation.n3 +1 -1
  51. package/examples/odrl-risk.n3 +1 -1
  52. package/examples/output/{act-alarm-bit-interoperability.txt → act-alarm-bit-interoperability.md} +19 -17
  53. package/examples/output/act-barley-seed-lineage.md +27 -0
  54. package/examples/output/{act-docking-abort.txt → act-docking-abort.md} +21 -19
  55. package/examples/output/{act-gravity-mediator-witness.txt → act-gravity-mediator-witness.md} +23 -21
  56. package/examples/output/{act-isolation-breach.txt → act-isolation-breach.md} +26 -24
  57. package/examples/output/{act-photosynthetic-exciton-transfer.txt → act-photosynthetic-exciton-transfer.md} +19 -17
  58. package/examples/output/{act-sensor-memory-reset.txt → act-sensor-memory-reset.md} +19 -17
  59. package/examples/output/{act-tunnel-junction-wake-switch.txt → act-tunnel-junction-wake-switch.md} +20 -18
  60. package/examples/output/{act-yeast-self-reproduction.txt → act-yeast-self-reproduction.md} +22 -20
  61. package/examples/output/annotation.md +1 -0
  62. package/examples/output/auroracare.md +150 -0
  63. package/examples/output/backward-recursion.md +6 -0
  64. package/examples/output/barley-seed-becoming.md +27 -0
  65. package/examples/output/{bmi.txt → bmi.md} +19 -17
  66. package/examples/output/builtin-coverage.md +1 -0
  67. package/examples/output/calidor.md +31 -0
  68. package/examples/output/collection.md +1 -0
  69. package/examples/output/{complex-matrix-stability.txt → complex-matrix-stability.md} +13 -11
  70. package/examples/output/context-association.md +7 -0
  71. package/examples/output/{control-system.txt → control-system.md} +19 -17
  72. package/examples/output/{deep-taxonomy-10.txt → deep-taxonomy-10.md} +14 -12
  73. package/examples/output/{deep-taxonomy-100.txt → deep-taxonomy-100.md} +14 -12
  74. package/examples/output/{deep-taxonomy-1000.txt → deep-taxonomy-1000.md} +14 -12
  75. package/examples/output/{deep-taxonomy-10000.txt → deep-taxonomy-10000.md} +14 -12
  76. package/examples/output/{deep-taxonomy-100000.txt → deep-taxonomy-100000.md} +14 -12
  77. package/examples/output/delfour.md +32 -0
  78. package/examples/output/digital-product-passport.md +3 -0
  79. package/examples/output/dijkstra-risk-path.md +11 -0
  80. package/examples/output/{easter.txt → easter.md} +152 -150
  81. package/examples/output/eco-route-insight.md +20 -0
  82. package/examples/output/flandor.md +33 -0
  83. package/examples/output/{french-cities.txt → french-cities.md} +13 -11
  84. package/examples/output/{fundamental-theorem-arithmetic.txt → fundamental-theorem-arithmetic.md} +14 -12
  85. package/examples/output/genetic-algorithm-knapsack.md +3 -0
  86. package/examples/output/genetic-algorithm.md +3 -0
  87. package/examples/output/genetic-knapsack-selection.md +13 -0
  88. package/examples/output/{gps.txt → gps.md} +14 -12
  89. package/examples/output/harborsmr.md +22 -0
  90. package/examples/output/{interop-demo.txt → interop-demo.md} +3 -1
  91. package/examples/output/matrix-mechanics.md +16 -0
  92. package/examples/output/medior.md +34 -0
  93. package/examples/output/n3-speaks-for-itself.md +54 -0
  94. package/examples/output/{odrl-dpv-ehds-risk-ranked.txt → odrl-dpv-ehds-risk-ranked.md} +16 -15
  95. package/examples/output/{odrl-dpv-healthcare-risk-ranked.txt → odrl-dpv-healthcare-risk-ranked.md} +13 -12
  96. package/examples/output/{odrl-dpv-risk-ranked.txt → odrl-dpv-risk-ranked.md} +17 -16
  97. package/examples/output/{odrl-risk-mitigation.txt → odrl-risk-mitigation.md} +17 -16
  98. package/examples/output/{odrl-risk.txt → odrl-risk.md} +6 -5
  99. package/examples/output/parcellocker.md +22 -0
  100. package/examples/output/pn-junction-tunneling.md +25 -0
  101. package/examples/output/queens.md +23 -0
  102. package/examples/output/{rc-discharge-envelope.txt → rc-discharge-envelope.md} +10 -8
  103. package/examples/output/rdf-dataset.md +7 -0
  104. package/examples/output/rdf-message-flow.md +7 -0
  105. package/examples/output/rdf-messages.md +7 -0
  106. package/examples/output/{resto.txt → resto.md} +19 -17
  107. package/examples/output/school-placement-audit.md +11 -0
  108. package/examples/output/smoke-arithmetic.md +7 -0
  109. package/examples/output/sqrt2-cauchy.md +15 -0
  110. package/examples/output/sqrt2-dedekind.md +33 -0
  111. package/examples/output/{sudoku.txt → sudoku.md} +45 -43
  112. package/examples/output/transcendental-numbers-stretched.md +262 -0
  113. package/examples/output/transistor-switch.md +26 -0
  114. package/examples/output/triple-terms.md +7 -0
  115. package/examples/output/{tunnel-junction-wake-switch-becoming.txt → tunnel-junction-wake-switch-becoming.md} +20 -18
  116. package/examples/output/{wind-turbine.txt → wind-turbine.md} +17 -15
  117. package/examples/parcellocker.n3 +2 -0
  118. package/examples/pn-junction-tunneling.n3 +3 -3
  119. package/examples/queens.n3 +1 -0
  120. package/examples/rc-discharge-envelope.n3 +1 -1
  121. package/examples/rdf-dataset.n3 +5 -0
  122. package/examples/rdf-message-flow.n3 +1 -2
  123. package/examples/rdf-messages.n3 +1 -2
  124. package/examples/resto.n3 +2 -0
  125. package/examples/school-placement-audit.n3 +1 -2
  126. package/examples/smoke-arithmetic.n3 +1 -1
  127. package/examples/sqrt2-cauchy.n3 +2 -0
  128. package/examples/sqrt2-dedekind.n3 +2 -0
  129. package/examples/sudoku.n3 +14 -14
  130. package/examples/transcendental-numbers-stretched.n3 +5 -0
  131. package/examples/transistor-switch.n3 +3 -3
  132. package/examples/triple-terms.n3 +5 -0
  133. package/examples/tunnel-junction-wake-switch-becoming.n3 +2 -0
  134. package/examples/wind-turbine.n3 +2 -0
  135. package/eyeling.js +14 -1
  136. package/lib/explain.js +14 -1
  137. package/package.json +1 -1
  138. package/test/examples.test.js +44 -13
  139. package/test/package.test.js +43 -7
  140. package/examples/output/act-barley-seed-lineage.txt +0 -25
  141. package/examples/output/annotation.n3 +0 -0
  142. package/examples/output/auroracare.txt +0 -149
  143. package/examples/output/backward-recursion.n3 +0 -4
  144. package/examples/output/barley-seed-becoming.txt +0 -25
  145. package/examples/output/builtin-coverage.n3 +0 -0
  146. package/examples/output/calidor.txt +0 -29
  147. package/examples/output/collection.n3 +0 -0
  148. package/examples/output/context-association.n3 +0 -9
  149. package/examples/output/delfour.txt +0 -30
  150. package/examples/output/digital-product-passport.txt +0 -1
  151. package/examples/output/dijkstra-risk-path.n3 +0 -3
  152. package/examples/output/eco-route-insight.n3 +0 -3
  153. package/examples/output/flandor.txt +0 -31
  154. package/examples/output/genetic-algorithm-knapsack.txt +0 -1
  155. package/examples/output/genetic-algorithm.txt +0 -1
  156. package/examples/output/genetic-knapsack-selection.n3 +0 -3
  157. package/examples/output/harborsmr.txt +0 -20
  158. package/examples/output/matrix-mechanics.txt +0 -14
  159. package/examples/output/medior.txt +0 -32
  160. package/examples/output/n3-speaks-for-itself.txt +0 -52
  161. package/examples/output/parcellocker.txt +0 -20
  162. package/examples/output/pn-junction-tunneling.txt +0 -23
  163. package/examples/output/queens.txt +0 -21
  164. package/examples/output/rc-discharge-envelope.n3 +0 -9
  165. package/examples/output/rdf-dataset.n3 +0 -5
  166. package/examples/output/rdf-message-flow.n3 +0 -7
  167. package/examples/output/rdf-messages.n3 +0 -7
  168. package/examples/output/school-placement-audit.n3 +0 -3
  169. package/examples/output/smoke-arithmetic.n3 +0 -5
  170. package/examples/output/smoke-arithmetic.txt +0 -5
  171. package/examples/output/sqrt2-cauchy.txt +0 -13
  172. package/examples/output/sqrt2-dedekind.txt +0 -31
  173. package/examples/output/transcendental-numbers-stretched.txt +0 -260
  174. package/examples/output/transistor-switch.txt +0 -24
  175. package/examples/output/triple-terms.n3 +0 -5
@@ -0,0 +1,262 @@
1
+ # transcendental-numbers-stretched
2
+
3
+ @prefix : <https://example.org/transcendental#> .
4
+
5
+ :report :concerns :prod_e_pi .
6
+ :report :concerns :sum_e_pi .
7
+ :report :headline :quadraticTrick .
8
+ :report :irrational :e .
9
+ :report :irrational :e_div_2 .
10
+ :report :irrational :e_plus_1 .
11
+ :report :irrational :e_plus_2 .
12
+ :report :irrational :exp_minus_pi_over_2 .
13
+ :report :irrational :exp_sqrt2 .
14
+ :report :irrational :half_times_e .
15
+ :report :irrational :half_times_pi .
16
+ :report :irrational :pi .
17
+ :report :irrational :pi_div_2 .
18
+ :report :irrational :pi_plus_1 .
19
+ :report :irrational :pi_plus_sqrt2 .
20
+ :report :irrational :pow_2_sqrt2 .
21
+ :report :irrational :pow_e_pi .
22
+ :report :irrational :pow_i_i .
23
+ :report :irrational :pow_minus1_minusI .
24
+ :report :irrational :pow2sqrt2_div_2 .
25
+ :report :irrational :pow2sqrt2_plus_1 .
26
+ :report :irrational :two_times_e .
27
+ :report :irrational :two_times_pi .
28
+ :report :irrational :two_times_pow2sqrt2 .
29
+ :report :notConstructible :e .
30
+ :report :notConstructible :e_div_2 .
31
+ :report :notConstructible :e_plus_1 .
32
+ :report :notConstructible :e_plus_2 .
33
+ :report :notConstructible :exp_minus_pi_over_2 .
34
+ :report :notConstructible :exp_sqrt2 .
35
+ :report :notConstructible :half_times_e .
36
+ :report :notConstructible :half_times_pi .
37
+ :report :notConstructible :pi .
38
+ :report :notConstructible :pi_div_2 .
39
+ :report :notConstructible :pi_plus_1 .
40
+ :report :notConstructible :pi_plus_sqrt2 .
41
+ :report :notConstructible :pow_2_sqrt2 .
42
+ :report :notConstructible :pow_e_pi .
43
+ :report :notConstructible :pow_i_i .
44
+ :report :notConstructible :pow_minus1_minusI .
45
+ :report :notConstructible :pow2sqrt2_div_2 .
46
+ :report :notConstructible :pow2sqrt2_plus_1 .
47
+ :report :notConstructible :two_times_e .
48
+ :report :notConstructible :two_times_pi .
49
+ :report :notConstructible :two_times_pow2sqrt2 .
50
+ :report :proof {
51
+ :e :provedBy :Hermite1873 .
52
+ } .
53
+ :report :proof {
54
+ :e :provedBy :TransImpliesIrrational .
55
+ } .
56
+ :report :proof {
57
+ :e :provedBy :TransImpliesNotConstructible .
58
+ } .
59
+ :report :proof {
60
+ :e_div_2 :provedBy :TransDivAlg .
61
+ } .
62
+ :report :proof {
63
+ :e_div_2 :provedBy :TransImpliesIrrational .
64
+ } .
65
+ :report :proof {
66
+ :e_div_2 :provedBy :TransImpliesNotConstructible .
67
+ } .
68
+ :report :proof {
69
+ :e_plus_1 :provedBy :TransImpliesIrrational .
70
+ } .
71
+ :report :proof {
72
+ :e_plus_1 :provedBy :TransImpliesNotConstructible .
73
+ } .
74
+ :report :proof {
75
+ :e_plus_1 :provedBy :TransPlusAlg .
76
+ } .
77
+ :report :proof {
78
+ :e_plus_2 :provedBy :TransImpliesIrrational .
79
+ } .
80
+ :report :proof {
81
+ :e_plus_2 :provedBy :TransImpliesNotConstructible .
82
+ } .
83
+ :report :proof {
84
+ :e_plus_2 :provedBy :TransPlusAlg .
85
+ } .
86
+ :report :proof {
87
+ :exp_minus_pi_over_2 :provedBy :GelfondSchneider .
88
+ } .
89
+ :report :proof {
90
+ :exp_minus_pi_over_2 :provedBy :TransImpliesIrrational .
91
+ } .
92
+ :report :proof {
93
+ :exp_minus_pi_over_2 :provedBy :TransImpliesNotConstructible .
94
+ } .
95
+ :report :proof {
96
+ :exp_sqrt2 :provedBy :LindemannWeierstrass .
97
+ } .
98
+ :report :proof {
99
+ :exp_sqrt2 :provedBy :TransImpliesIrrational .
100
+ } .
101
+ :report :proof {
102
+ :exp_sqrt2 :provedBy :TransImpliesNotConstructible .
103
+ } .
104
+ :report :proof {
105
+ :half_times_e :provedBy :TransImpliesIrrational .
106
+ } .
107
+ :report :proof {
108
+ :half_times_e :provedBy :TransImpliesNotConstructible .
109
+ } .
110
+ :report :proof {
111
+ :half_times_e :provedBy :TransTimesAlg .
112
+ } .
113
+ :report :proof {
114
+ :half_times_pi :provedBy :TransImpliesIrrational .
115
+ } .
116
+ :report :proof {
117
+ :half_times_pi :provedBy :TransImpliesNotConstructible .
118
+ } .
119
+ :report :proof {
120
+ :half_times_pi :provedBy :TransTimesAlg .
121
+ } .
122
+ :report :proof {
123
+ :pi :provedBy :Lindemann1882 .
124
+ } .
125
+ :report :proof {
126
+ :pi :provedBy :TransImpliesIrrational .
127
+ } .
128
+ :report :proof {
129
+ :pi :provedBy :TransImpliesNotConstructible .
130
+ } .
131
+ :report :proof {
132
+ :pi_div_2 :provedBy :TransDivAlg .
133
+ } .
134
+ :report :proof {
135
+ :pi_div_2 :provedBy :TransImpliesIrrational .
136
+ } .
137
+ :report :proof {
138
+ :pi_div_2 :provedBy :TransImpliesNotConstructible .
139
+ } .
140
+ :report :proof {
141
+ :pi_plus_1 :provedBy :TransImpliesIrrational .
142
+ } .
143
+ :report :proof {
144
+ :pi_plus_1 :provedBy :TransImpliesNotConstructible .
145
+ } .
146
+ :report :proof {
147
+ :pi_plus_1 :provedBy :TransPlusAlg .
148
+ } .
149
+ :report :proof {
150
+ :pi_plus_sqrt2 :provedBy :TransImpliesIrrational .
151
+ } .
152
+ :report :proof {
153
+ :pi_plus_sqrt2 :provedBy :TransImpliesNotConstructible .
154
+ } .
155
+ :report :proof {
156
+ :pi_plus_sqrt2 :provedBy :TransPlusAlg .
157
+ } .
158
+ :report :proof {
159
+ :pow_2_sqrt2 :provedBy :GelfondSchneider .
160
+ } .
161
+ :report :proof {
162
+ :pow_2_sqrt2 :provedBy :TransImpliesIrrational .
163
+ } .
164
+ :report :proof {
165
+ :pow_2_sqrt2 :provedBy :TransImpliesNotConstructible .
166
+ } .
167
+ :report :proof {
168
+ :pow_e_pi :provedBy :GelfondSchneider .
169
+ } .
170
+ :report :proof {
171
+ :pow_e_pi :provedBy :TransImpliesIrrational .
172
+ } .
173
+ :report :proof {
174
+ :pow_e_pi :provedBy :TransImpliesNotConstructible .
175
+ } .
176
+ :report :proof {
177
+ :pow_i_i :provedBy :GelfondSchneider .
178
+ } .
179
+ :report :proof {
180
+ :pow_i_i :provedBy :TransImpliesIrrational .
181
+ } .
182
+ :report :proof {
183
+ :pow_i_i :provedBy :TransImpliesNotConstructible .
184
+ } .
185
+ :report :proof {
186
+ :pow_minus1_minusI :provedBy :GelfondSchneider .
187
+ } .
188
+ :report :proof {
189
+ :pow_minus1_minusI :provedBy :TransImpliesIrrational .
190
+ } .
191
+ :report :proof {
192
+ :pow_minus1_minusI :provedBy :TransImpliesNotConstructible .
193
+ } .
194
+ :report :proof {
195
+ :pow2sqrt2_div_2 :provedBy :TransDivAlg .
196
+ } .
197
+ :report :proof {
198
+ :pow2sqrt2_div_2 :provedBy :TransImpliesIrrational .
199
+ } .
200
+ :report :proof {
201
+ :pow2sqrt2_div_2 :provedBy :TransImpliesNotConstructible .
202
+ } .
203
+ :report :proof {
204
+ :pow2sqrt2_plus_1 :provedBy :TransImpliesIrrational .
205
+ } .
206
+ :report :proof {
207
+ :pow2sqrt2_plus_1 :provedBy :TransImpliesNotConstructible .
208
+ } .
209
+ :report :proof {
210
+ :pow2sqrt2_plus_1 :provedBy :TransPlusAlg .
211
+ } .
212
+ :report :proof {
213
+ :two_times_e :provedBy :TransImpliesIrrational .
214
+ } .
215
+ :report :proof {
216
+ :two_times_e :provedBy :TransImpliesNotConstructible .
217
+ } .
218
+ :report :proof {
219
+ :two_times_e :provedBy :TransTimesAlg .
220
+ } .
221
+ :report :proof {
222
+ :two_times_pi :provedBy :TransImpliesIrrational .
223
+ } .
224
+ :report :proof {
225
+ :two_times_pi :provedBy :TransImpliesNotConstructible .
226
+ } .
227
+ :report :proof {
228
+ :two_times_pi :provedBy :TransTimesAlg .
229
+ } .
230
+ :report :proof {
231
+ :two_times_pow2sqrt2 :provedBy :TransImpliesIrrational .
232
+ } .
233
+ :report :proof {
234
+ :two_times_pow2sqrt2 :provedBy :TransImpliesNotConstructible .
235
+ } .
236
+ :report :proof {
237
+ :two_times_pow2sqrt2 :provedBy :TransTimesAlg .
238
+ } .
239
+ :report :transcendental :e .
240
+ :report :transcendental :e_div_2 .
241
+ :report :transcendental :e_plus_1 .
242
+ :report :transcendental :e_plus_2 .
243
+ :report :transcendental :exp_minus_pi_over_2 .
244
+ :report :transcendental :exp_sqrt2 .
245
+ :report :transcendental :half_times_e .
246
+ :report :transcendental :half_times_pi .
247
+ :report :transcendental :pi .
248
+ :report :transcendental :pi_div_2 .
249
+ :report :transcendental :pi_plus_1 .
250
+ :report :transcendental :pi_plus_sqrt2 .
251
+ :report :transcendental :pow_2_sqrt2 .
252
+ :report :transcendental :pow_e_pi .
253
+ :report :transcendental :pow_i_i .
254
+ :report :transcendental :pow_minus1_minusI .
255
+ :report :transcendental :pow2sqrt2_div_2 .
256
+ :report :transcendental :pow2sqrt2_plus_1 .
257
+ :report :transcendental :two_times_e .
258
+ :report :transcendental :two_times_pi .
259
+ :report :transcendental :two_times_pow2sqrt2 .
260
+ :report :unknown :pow_pi_e .
261
+ :report :unknown :prod_e_pi .
262
+ :report :unknown :sum_e_pi .
@@ -0,0 +1,26 @@
1
+ # transistor-switch
2
+
3
+ ## Answer
4
+ In this toy transistor-switch model, a low input leaves the transistor in cutoff (OFF) and a high input drives it into saturation (ON), so the load behaves like an on/off branch rather than a linear amplifier.
5
+ case : transistor-switch
6
+ low input state : cutoff / OFF
7
+ high input state : saturation / ON
8
+ on-state load current : 4.80 mA
9
+
10
+ ## Reason Why
11
+ We model an NPN low-side switch with exact millivolt and microamp arithmetic. The base current comes from (Vin - Vbe,on)/Rb when the base-emitter junction is forward biased, and the collector current is the smaller of beta * Ib and the load-limited current (Vcc - Vce,sat)/Rl.
12
+ supply voltage : 5.00 V
13
+ base resistor : 10000 ohms
14
+ load resistor : 1000 ohms
15
+ transistor beta proxy : 100
16
+ low input : Vin=0.00 V -> Ib=0.00 mA, Ic=0.00 mA, Vce=5.00 V, state=cutoff / OFF
17
+ high input : Vin=5.00 V -> Ib=0.43 mA, Ic=4.80 mA, Vce=0.20 V, state=saturation / ON
18
+ high-input gain limit : 43.00 mA
19
+ high-input load limit : 4.80 mA
20
+
21
+ ## Check
22
+ low input stays in cutoff : yes
23
+ high input reaches saturation : yes
24
+ switching states differ : yes
25
+ on-state current is load-limited : yes
26
+ load voltage matches resistor drop : yes
@@ -0,0 +1,7 @@
1
+ # triple-terms
2
+
3
+ VERSION "1.2"
4
+
5
+ @prefix : <https://eyereasoner.github.io/eyeling/examples/triple_terms#> .
6
+
7
+ :observation :entails <<( :sensor :needs :inspection )>> .
@@ -1,21 +1,23 @@
1
- tunnel-junction wake switchbecoming
1
+ # tunnel-junction-wake-switch-becoming
2
2
 
3
- Answer
4
- YES for the tunnel junction.
5
- NO for the conventional low-bias PN junction in the same wake-switch regime.
3
+ tunnel-junction wake switch — becoming
6
4
 
7
- Reason Why
8
- The tunnel junction can be read as a becoming under low forward bias. Because it is modeled as a heavily doped narrow PN junction with overlapping states, it can become a quantum-transfer state. In that regime it can become a sub-threshold current state, and under peak-to-valley scanning it can also become a negative differential response state. As a wake-switch device, that lets it become an ultra-low-bias switching state and finally a leak-alarm wake-serving state. By contrast, the conventional junction lacks the structural conditions needed for the same transition into quantum transfer, so the later wake-serving becoming is blocked as well.
5
+ Answer
6
+ YES for the tunnel junction.
7
+ NO for the conventional low-bias PN junction in the same wake-switch regime.
9
8
 
10
- Check
11
- B1 OK - the tunnel junction can become a quantum-transfer state
12
- B2 OK - the tunnel junction is classified as tunneling-dominant
13
- B3 OK - the tunnel junction can become a sub-threshold current state
14
- B4 OK - the tunnel junction can become a negative differential response state
15
- B5 OK - the tunnel junction can become an ultra-low-bias switching state
16
- B6 OK - the tunnel junction can become a leak-alarm wake-serving state
17
- B7 OK - the conventional junction cannot become a quantum-transfer state
18
- B8 OK - the conventional junction cannot become a sub-threshold current state
19
- B9 OK - the conventional junction cannot become the tunnel-style negative differential state
20
- B10 OK - the conventional junction cannot become an ultra-low-bias switching state here
21
- B11 OK - the conventional junction cannot become a leak-alarm wake-serving state in this case
9
+ Reason Why
10
+ The tunnel junction can be read as a becoming under low forward bias. Because it is modeled as a heavily doped narrow PN junction with overlapping states, it can become a quantum-transfer state. In that regime it can become a sub-threshold current state, and under peak-to-valley scanning it can also become a negative differential response state. As a wake-switch device, that lets it become an ultra-low-bias switching state and finally a leak-alarm wake-serving state. By contrast, the conventional junction lacks the structural conditions needed for the same transition into quantum transfer, so the later wake-serving becoming is blocked as well.
11
+
12
+ Check
13
+ B1 OK - the tunnel junction can become a quantum-transfer state
14
+ B2 OK - the tunnel junction is classified as tunneling-dominant
15
+ B3 OK - the tunnel junction can become a sub-threshold current state
16
+ B4 OK - the tunnel junction can become a negative differential response state
17
+ B5 OK - the tunnel junction can become an ultra-low-bias switching state
18
+ B6 OK - the tunnel junction can become a leak-alarm wake-serving state
19
+ B7 OK - the conventional junction cannot become a quantum-transfer state
20
+ B8 OK - the conventional junction cannot become a sub-threshold current state
21
+ B9 OK - the conventional junction cannot become the tunnel-style negative differential state
22
+ B10 OK - the conventional junction cannot become an ultra-low-bias switching state here
23
+ B11 OK - the conventional junction cannot become a leak-alarm wake-serving state in this case
@@ -1,18 +1,20 @@
1
- Wind turbine — Predictive maintenance
1
+ # wind-turbine
2
2
 
3
- Answer
4
- Act now: schedule an urgent inspection and gearbox maintenance.
3
+ Wind turbine — Predictive maintenance
5
4
 
6
- Reason Why
7
- North field turbine reports vibration 0.42 against a threshold of 0.35, temperature 78 against a threshold of 75, and rotor speed 1650 against a critical limit of 1800. Both vibration and temperature are above their safety thresholds, so the turbine shows a combined warning pattern. The gearbox is also degraded, so maintenance is needed even though the rotor speed is still below the critical RPM limit.
5
+ Answer
6
+ Act now: schedule an urgent inspection and gearbox maintenance.
8
7
 
9
- Check
10
- C1 OK - measured vibration is above the vibration threshold.
11
- C2 OK - measured temperature is above the temperature threshold.
12
- C3 OK - a high-vibration anomaly was inferred from the readings.
13
- C4 OK - a high-temperature anomaly was inferred from the readings.
14
- C5 OK - urgent inspection follows from the combination of both anomalies.
15
- C6 OK - the gearbox is marked as degraded.
16
- C7 OK - degraded gearbox status triggered gearbox maintenance.
17
- C8 OK - rotor speed is below the critical RPM threshold, so the urgent action is not based on overspeed.
18
- C9 OK - two separate actions were derived: inspection and maintenance.
8
+ Reason Why
9
+ North field turbine reports vibration 0.42 against a threshold of 0.35, temperature 78 against a threshold of 75, and rotor speed 1650 against a critical limit of 1800. Both vibration and temperature are above their safety thresholds, so the turbine shows a combined warning pattern. The gearbox is also degraded, so maintenance is needed even though the rotor speed is still below the critical RPM limit.
10
+
11
+ Check
12
+ C1 OK - measured vibration is above the vibration threshold.
13
+ C2 OK - measured temperature is above the temperature threshold.
14
+ C3 OK - a high-vibration anomaly was inferred from the readings.
15
+ C4 OK - a high-temperature anomaly was inferred from the readings.
16
+ C5 OK - urgent inspection follows from the combination of both anomalies.
17
+ C6 OK - the gearbox is marked as degraded.
18
+ C7 OK - degraded gearbox status triggered gearbox maintenance.
19
+ C8 OK - rotor speed is below the critical RPM threshold, so the urgent action is not based on overspeed.
20
+ C9 OK - two separate actions were derived: inspection and maintenance.
@@ -11,6 +11,8 @@
11
11
  @prefix : <https://example.org/parcellocker#> .
12
12
  @prefix log: <http://www.w3.org/2000/10/swap/log#> .
13
13
 
14
+ :000_md_title log:outputString "# parcellocker\n\n" .
15
+
14
16
  # -----
15
17
  # Facts
16
18
  # -----
@@ -136,7 +136,7 @@
136
136
  ( "peak current proxy : %s\n" ?peakCurrent ) string:format ?peakCurrentLine .
137
137
  }
138
138
  => {
139
- :01-answer-1 log:outputString "=== Answer ===\n" .
139
+ :01-answer-1 log:outputString "# pn-junction-tunneling\n\n## Answer\n" .
140
140
  :01-answer-2 log:outputString "In this toy PN-junction tunneling model, heavy doping narrows the depletion region enough for a tunneling window that rises to a peak and then falls, producing a negative-differential region.\n" .
141
141
  :01-answer-3 log:outputString "case : pn-junction-tunneling\n" .
142
142
  :01-answer-4 log:outputString ?peakBiasLine .
@@ -167,7 +167,7 @@
167
167
  ( "high-bias point : %s -> %s\n" ?valleyBias ?valleyCurrent ) string:format ?valleyLine .
168
168
  }
169
169
  => {
170
- :02-why-1 log:outputString "=== Reason Why ===\n" .
170
+ :02-why-1 log:outputString "## Reason Why\n" .
171
171
  :02-why-2 log:outputString "We model tunneling current as an exact overlap count between filled N-side states and empty P-side states while forward bias shifts the bands. Heavy doping is represented by a much narrower depletion region.\n" .
172
172
  :02-why-3 log:outputString ?ordinaryLine .
173
173
  :02-why-4 log:outputString ?tunnelLine .
@@ -187,7 +187,7 @@
187
187
  :case :peakMatchesFullOverlap true .
188
188
  }
189
189
  => {
190
- :03-check-1 log:outputString "=== Check ===\n" .
190
+ :03-check-1 log:outputString "## Check\n" .
191
191
  :03-check-2 log:outputString "heavily doped barrier is narrower : yes\n" .
192
192
  :03-check-3 log:outputString "peak occurs before overlap closes : yes\n" .
193
193
  :03-check-4 log:outputString "negative differential region present : yes\n" .
@@ -16,5 +16,6 @@
16
16
  :run :n ?N; :maxPrint ?MaxPrint.
17
17
  (?N ?MaxPrint) :render ?Report.
18
18
  } log:query {
19
+ :000_md_title log:outputString "# queens\n\n" .
19
20
  :answer log:outputString ?Report.
20
21
  }.
@@ -44,5 +44,5 @@
44
44
  {
45
45
  :case :exactDecaySymbol ?Symbol; :decayLower ?Lower; :decayUpper ?Upper; :firstBelowToleranceStep ?Step.
46
46
  ?Step :index ?Index; :timeSeconds ?Time; :upperVoltage ?Voltage.
47
- ("=== Answer ===\nexact decay symbol : %s\ncertified decay interval : [%.10f, %.10f]\nfirst below tolerance step : %d\nfirst below tolerance time : %.3f s\nupper voltage at step %d : %.6f V\n\n=== Explanation ===\nThe physical decay factor is exp(-1/4), but the example uses a finite double interval as the certificate. Because the interval lies strictly between 0 and 1, the capacitor voltage envelope contracts each sample. The upper envelope is the safety-relevant bound: once it falls below 1.0 V, every compatible exact trajectory is below tolerance." ?Symbol ?Lower ?Upper ?Index ?Time ?Index ?Voltage) string:format ?Block.
47
+ ("# rc-discharge-envelope\n\n## Answer\nexact decay symbol : %s\ncertified decay interval : [%.10f, %.10f]\nfirst below tolerance step : %d\nfirst below tolerance time : %.3f s\nupper voltage at step %d : %.6f V\n\n## Explanation\nThe physical decay factor is exp(-1/4), but the example uses a finite double interval as the certificate. Because the interval lies strictly between 0 and 1, the capacitor voltage envelope contracts each sample. The upper envelope is the safety-relevant bound: once it falls below 1.0 V, every compatible exact trajectory is below tolerance." ?Symbol ?Lower ?Upper ?Index ?Time ?Index ?Voltage) string:format ?Block.
48
48
  } => { :report log:outputString ?Block. }.
@@ -23,3 +23,8 @@ VERSION "1.2"
23
23
  } log:query {
24
24
  :workOrder :entails <<( ?device :needs ?action )>> .
25
25
  } .
26
+
27
+
28
+ # Markdown rendering via log:outputString.
29
+ :__md_output :text "# rdf-dataset\n\nVERSION \"1.2\"\n\n@prefix : <https://eyereasoner.github.io/eyeling/examples/rdf-dataset#> .\n\n:workOrder :entails <<( :sensor :needs :inspection )>> .\n" .
30
+ { :__md_output :text ?text } log:query { :__md_output log:outputString ?text } .
@@ -134,10 +134,9 @@
134
134
  :m005 :atStage :sink;
135
135
  msg:payloadResult ?FifthResult;
136
136
  :route :alertSink.
137
- ("=== Answer ===\nContinuous RDF Message flow accepted: %d ordered messages moved through the ingest → validate → interpret → route → sink pipeline. The threshold was %d, so results %s and %s were archived, the heartbeat kept the stream alive, and results %s and %s were emitted as alerts.\n\n=== Explanation ===\nThe N3 source starts only :m001 at ingress. Each message must reach :sink before the continuous-flow rule releases its msg:nextMessage. Observation payloads are inspected with log:includes inside each message formula, while the empty heartbeat uses the same envelope and routing stages without a payload. This models messages flowing through a live stream while preserving message boundaries." ?Count ?Threshold ?FirstResult ?SecondResult ?FourthResult ?FifthResult) string:format ?Block.
137
+ ("# rdf-message-flow\n\n## Answer\nContinuous RDF Message flow accepted: %d ordered messages moved through the ingest → validate → interpret → route → sink pipeline. The threshold was %d, so results %s and %s were archived, the heartbeat kept the stream alive, and results %s and %s were emitted as alerts.\n\n## Explanation\nThe N3 source starts only :m001 at ingress. Each message must reach :sink before the continuous-flow rule releases its msg:nextMessage. Observation payloads are inspected with log:includes inside each message formula, while the empty heartbeat uses the same envelope and routing stages without a payload. This models messages flowing through a live stream while preserving message boundaries." ?Count ?Threshold ?FirstResult ?SecondResult ?FourthResult ?FifthResult) string:format ?Block.
138
138
  } => {
139
139
  :rdfMessageFlowExample log:outputString ?Block.
140
140
  :rdfMessageFlowExample :demonstrates :ContinuousFlow, :BackPressureRelease, :AtomicMessageContext, :HeartbeatInFlow, :ThresholdRouting.
141
141
  }.
142
142
 
143
- { :rdfMessageFlowExample :demonstrates ?Feature } log:query { :rdfMessageFlowExample :demonstrates ?Feature }.
@@ -97,10 +97,9 @@
97
97
  :BlankNodeScope :reusedLabel ?Label;
98
98
  :isPerMessage true.
99
99
  :MessageContext :differentObservationsStayContextual true.
100
- ("=== Answer ===\nRDF Message log accepted: %d explicit message boundaries are preserved. Message :m002 is an empty heartbeat, and the local blank-node label %s is safely reused in separate messages.\n\n=== Explanation ===\nThe N3 source models an RDF Message Log as an ordered sequence of RDF Messages. Each non-empty message has a formula-valued payload that is inspected with log:includes, so the observation data stays inside the message boundary instead of being treated as one global graph. The two temperature results, %s and %s, are different observations from the same stream but are contextualized by their message boundaries." ?Count ?Label ?FirstResult ?SecondResult) string:format ?Block.
100
+ ("# rdf-messages\n\n## Answer\nRDF Message log accepted: %d explicit message boundaries are preserved. Message :m002 is an empty heartbeat, and the local blank-node label %s is safely reused in separate messages.\n\n## Explanation\nThe N3 source models an RDF Message Log as an ordered sequence of RDF Messages. Each non-empty message has a formula-valued payload that is inspected with log:includes, so the observation data stays inside the message boundary instead of being treated as one global graph. The two temperature results, %s and %s, are different observations from the same stream but are contextualized by their message boundaries." ?Count ?Label ?FirstResult ?SecondResult) string:format ?Block.
101
101
  } => {
102
102
  :rdfMessagesExample log:outputString ?Block.
103
103
  :rdfMessagesExample :demonstrates :ExplicitBoundaries, :AtomicMessageContext, :EmptyHeartbeat, :MessageScopedBlankNodes, :ReplayableMessageLog.
104
104
  }.
105
105
 
106
- { :rdfMessagesExample :demonstrates ?Feature } log:query { :rdfMessagesExample :demonstrates ?Feature }.
package/examples/resto.n3 CHANGED
@@ -22,6 +22,8 @@
22
22
  @prefix string: <http://www.w3.org/2000/10/swap/string#>.
23
23
  @prefix log: <http://www.w3.org/2000/10/swap/log#>.
24
24
 
25
+ :000_md_title log:outputString "# resto\n\n" .
26
+
25
27
  # ----------------
26
28
  # Initial question
27
29
  # ----------------
@@ -42,10 +42,9 @@
42
42
 
43
43
  {
44
44
  :Audit :result ?Result; :affectedChildren ?Affected; :largestHiddenDetour ?Detour; :recommendedAssignments ?Assignments.
45
- ("=== Answer ===\naudit result : %s\nchildren affected by straight-line rule : %s\nlargest hidden detour : %s\nrecommended assignments : %s\nexplanation requested : yes\n\n=== Explanation ===\nThe support-tool rule chooses the school with the smallest straight-line distance, using preference rank only as a tie-breaker. The independent audit recomputes each candidate with walking-route distance plus 600 m per preference step. Any provisional assignment that is not the audited best, or that requires more than 2500 m of walking, is flagged. Ada and Björn look close to Centrum on a map, but their walking routes cross barriers and exceed the walking limit; Davi is also better served by the first-preference Haga route. This illustrates why a decision-support label is not enough: route geometry, preferences, and audit records must be inspectable." ?Result ?Affected ?Detour ?Assignments) string:format ?Block.
45
+ ("# school-placement-audit\n\n## Answer\naudit result : %s\nchildren affected by straight-line rule : %s\nlargest hidden detour : %s\nrecommended assignments : %s\nexplanation requested : yes\n\n## Explanation\nThe support-tool rule chooses the school with the smallest straight-line distance, using preference rank only as a tie-breaker. The independent audit recomputes each candidate with walking-route distance plus 600 m per preference step. Any provisional assignment that is not the audited best, or that requires more than 2500 m of walking, is flagged. Ada and Björn look close to Centrum on a map, but their walking routes cross barriers and exceed the walking limit; Davi is also better served by the first-preference Haga route. This illustrates why a decision-support label is not enough: route geometry, preferences, and audit records must be inspectable." ?Result ?Affected ?Detour ?Assignments) string:format ?Block.
46
46
  } => {
47
47
  :schoolPlacementAudit log:outputString ?Block.
48
48
  :schoolPlacementAudit :reports :Audit.
49
49
  }.
50
50
 
51
- { :schoolPlacementAudit :reports ?Audit } log:query { :schoolPlacementAudit :reports ?Audit }.
@@ -16,5 +16,5 @@
16
16
  } .
17
17
 
18
18
  { :Case :product ?Product.
19
- ("=== Answer ===\nproduct = %s\n\n=== Explanation ===\nThe compiled rule multiplies :x and :y using math:product." ?Product) string:format ?Block.
19
+ ("# smoke-arithmetic\n\n## Answer\nproduct = %s\n\n## Explanation\nThe compiled rule multiplies :x and :y using math:product." ?Product) string:format ?Block.
20
20
  } => { :out01 log:outputString ?Block. } .
@@ -13,6 +13,8 @@
13
13
  @prefix log: <http://www.w3.org/2000/10/swap/log#>.
14
14
  @prefix string:<http://www.w3.org/2000/10/swap/string#>.
15
15
 
16
+ :000_md_title log:outputString "# sqrt2-cauchy\n\n" .
17
+
16
18
  :sqrt2Real a :Real;
17
19
  :representedBy :sqrt2Seq.
18
20
 
@@ -9,6 +9,8 @@
9
9
  @prefix log: <http://www.w3.org/2000/10/swap/log#>.
10
10
  @prefix string: <http://www.w3.org/2000/10/swap/string#>.
11
11
 
12
+ :000_md_title log:outputString "# sqrt2-dedekind\n\n" .
13
+
12
14
  # -----------------------------------------------------------------
13
15
  # Data: a finite sample of rationals (decimal tokens are rationals)
14
16
  # -----------------------------------------------------------------
@@ -112,7 +112,7 @@
112
112
  ?givens ?blanks ?forced ?guessed ?nodes ?backtracks ?moveSummary ) string:format ?reasonText .
113
113
  }
114
114
  => {
115
- :01-answer log:outputString "=== Answer ===\n" ;
115
+ :01-answer log:outputString "# sudoku\n\n## Answer\n" ;
116
116
  log:outputString ?answerText .
117
117
  :01a-answer log:outputString "case : sudoku\n" ;
118
118
  log:outputString "default puzzle : classic\n\n" ;
@@ -122,7 +122,7 @@
122
122
  log:outputString "Completed grid\n" ;
123
123
  log:outputString ?solutionText .
124
124
  :01b-answer log:outputString "\n" .
125
- :02-reason log:outputString "=== Reason Why ===\n" ;
125
+ :02-reason log:outputString "## Reason Why\n" ;
126
126
  log:outputString ?reasonText ;
127
127
  log:outputString "\n\n" .
128
128
  } .
@@ -144,7 +144,7 @@
144
144
  ?givens ?blanks ?forced ?guessed ?nodes ?backtracks ?moveSummary ) string:format ?reasonText .
145
145
  }
146
146
  => {
147
- :01-answer log:outputString "=== Answer ===\n" ;
147
+ :01-answer log:outputString "# sudoku\n\n## Answer\n" ;
148
148
  log:outputString ?answerText .
149
149
  :01a-answer log:outputString "case : sudoku\n" ;
150
150
  log:outputString "default puzzle : classic\n\n" ;
@@ -154,7 +154,7 @@
154
154
  log:outputString "Completed grid\n" ;
155
155
  log:outputString ?solutionText ;
156
156
  log:outputString "\n" .
157
- :02-reason log:outputString "=== Reason Why ===\n" ;
157
+ :02-reason log:outputString "## Reason Why\n" ;
158
158
  log:outputString ?reasonText ;
159
159
  log:outputString "\n\n" .
160
160
  } .
@@ -164,10 +164,10 @@
164
164
  :case :error ?error .
165
165
  }
166
166
  => {
167
- :01-answer log:outputString "=== Answer ===\n" ;
167
+ :01-answer log:outputString "# sudoku\n\n## Answer\n" ;
168
168
  log:outputString "The supplied puzzle is not well formed and cannot be parsed as a 9×9 Sudoku.\n" ;
169
169
  log:outputString "case : sudoku\n\n" .
170
- :02-reason log:outputString "=== Reason Why ===\n" ;
170
+ :02-reason log:outputString "## Reason Why\n" ;
171
171
  log:outputString ?error ;
172
172
  log:outputString "\n\n" .
173
173
  } .
@@ -178,13 +178,13 @@
178
178
  :error ?error .
179
179
  }
180
180
  => {
181
- :01-answer log:outputString "=== Answer ===\n" ;
181
+ :01-answer log:outputString "# sudoku\n\n## Answer\n" ;
182
182
  log:outputString "The puzzle is invalid and cannot be solved as a standard Sudoku.\n" ;
183
183
  log:outputString "case : sudoku\n\n" ;
184
184
  log:outputString "Puzzle\n" ;
185
185
  log:outputString ?puzzleText ;
186
186
  log:outputString "\n" .
187
- :02-reason log:outputString "=== Reason Why ===\n" ;
187
+ :02-reason log:outputString "## Reason Why\n" ;
188
188
  log:outputString ?error ;
189
189
  log:outputString "\n\n" .
190
190
  } .
@@ -200,14 +200,14 @@
200
200
  ?nodes ?backtracks ) string:format ?reasonText .
201
201
  }
202
202
  => {
203
- :01-answer log:outputString "=== Answer ===\n" ;
203
+ :01-answer log:outputString "# sudoku\n\n## Answer\n" ;
204
204
  log:outputString "No valid Sudoku solution exists for the supplied puzzle.\n" ;
205
205
  log:outputString "case : sudoku\n" ;
206
206
  log:outputString "default puzzle : classic\n" ;
207
207
  log:outputString "\nPuzzle\n" ;
208
208
  log:outputString ?puzzleText ;
209
209
  log:outputString "\n" .
210
- :02-reason log:outputString "=== Reason Why ===\n" ;
210
+ :02-reason log:outputString "## Reason Why\n" ;
211
211
  log:outputString ?reasonText ;
212
212
  log:outputString "\n\n" .
213
213
  } .
@@ -233,7 +233,7 @@
233
233
  ( "C7 %s - the search statistics and the successful proof path are internally consistent.\n" ?c7 ) string:format ?l7 .
234
234
  }
235
235
  => {
236
- :03-check log:outputString "=== Check ===\n" ;
236
+ :03-check log:outputString "## Check\n" ;
237
237
  log:outputString ?l1 ;
238
238
  log:outputString ?l2 ;
239
239
  log:outputString ?l3 ;
@@ -254,10 +254,10 @@
254
254
  => { :03a-check log:outputString "C8 INFO - a second search found another solution, so the puzzle is not unique.\n" . } .
255
255
 
256
256
  { :case :status "illegal-clues" . }
257
- => { :03-check log:outputString "=== Check ===\nC1 failed - the given clues already violate Sudoku rules.\n" . } .
257
+ => { :03-check log:outputString "## Check\nC1 failed - the given clues already violate Sudoku rules.\n" . } .
258
258
 
259
259
  { :case :status "invalid-input" . }
260
- => { :03-check log:outputString "=== Check ===\nC1 failed - the supplied text does not normalize to exactly 81 legal Sudoku cells.\n" . } .
260
+ => { :03-check log:outputString "## Check\nC1 failed - the supplied text does not normalize to exactly 81 legal Sudoku cells.\n" . } .
261
261
 
262
262
  { :case :status "unsatisfiable" . }
263
- => { :03-check log:outputString "=== Check ===\nC1 OK - the given clues are internally consistent.\nC2 OK - every explored assignment respected row, column, and box legality.\nC3 failed - exhaustive search found no complete legal grid.\n" . } .
263
+ => { :03-check log:outputString "## Check\nC1 OK - the given clues are internally consistent.\nC2 OK - every explored assignment respected row, column, and box legality.\nC3 failed - exhaustive search found no complete legal grid.\n" . } .