eyeprolog 1.5.42 → 1.5.44

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 (43) hide show
  1. package/README.md +4 -7
  2. package/examples/book/chapter-40/03-program-2.pl +1 -1
  3. package/examples/output/bayes-therapy.pl +7 -7
  4. package/examples/output/bmi.pl +3 -3
  5. package/examples/output/cache-performance.pl +1 -1
  6. package/examples/output/canary-release.pl +1 -1
  7. package/examples/output/control-system.pl +4 -4
  8. package/examples/output/dairy-energy-balance.pl +3 -3
  9. package/examples/output/dijkstra-risk-path.pl +2 -2
  10. package/examples/output/drone-corridor-planner.pl +17 -17
  11. package/examples/output/epidemic-policy.pl +4 -4
  12. package/examples/output/exoplanet-validation-worlds.pl +4 -4
  13. package/examples/output/fft8-numeric.pl +1 -1
  14. package/examples/output/field-nitrogen-balance.pl +1 -1
  15. package/examples/output/gd-step-certified.pl +39 -39
  16. package/examples/output/gps.pl +6 -6
  17. package/examples/output/law-of-cosines.pl +1 -1
  18. package/examples/output/least-squares-regression.pl +2 -2
  19. package/examples/output/newton-raphson.pl +2 -2
  20. package/examples/output/orbital-transfer-design.pl +2 -2
  21. package/examples/output/pi.pl +1 -1
  22. package/examples/output/reusable-builtins.pl +1 -1
  23. package/examples/output/trust-flow-provenance-threshold.pl +1 -1
  24. package/examples/output/vector-similarity.pl +2 -2
  25. package/examples/proof/cache-performance.pl +19 -19
  26. package/examples/proof/canary-release.pl +17 -17
  27. package/examples/proof/electrical-rc-filter.pl +4 -4
  28. package/examples/proof/epidemic-policy.pl +136 -136
  29. package/examples/proof/heat-loss.pl +9 -9
  30. package/examples/proof/reusable-builtins.pl +5 -5
  31. package/examples/proof/trust-flow-provenance-threshold.pl +33 -33
  32. package/package.json +1 -1
  33. package/src/parser.js +14 -17
  34. package/src/quads.js +123 -19
  35. package/src/repl.js +25 -1
  36. package/src/term.js +12 -13
  37. package/test/conformance/expected/arithmetic/062_reusable_numeric_builtins.pl +1 -1
  38. package/test/conformance/expected/arithmetic/079_big_integer_arithmetic.pl +2 -2
  39. package/test/conformance/expected/iso/atomic_term_processing.pl +1 -1
  40. package/test/conformance/expected/iso/corrigenda_arithmetic.pl +1 -1
  41. package/test/conformance/wg17-syntax-cases.json +3 -3
  42. package/test/run-regression.mjs +107 -29
  43. package/the-art-of-eyeprolog.md +41 -18
package/README.md CHANGED
@@ -16,6 +16,10 @@ The single implementation reference is [*The Art of EyeProlog*](the-art-of-eyepr
16
16
  It documents the language, built-ins, libraries, command line, JavaScript API,
17
17
  examples, proofs, conformance profile, and implementation.
18
18
 
19
+ ## Twenty years of EYE, and the next twenty years
20
+
21
+ The Euler project began in 2001 and became EYE, a Prolog-based reasoner, in 2006; it is still alive in 2026. In a symbolic way, EYE remembers Leonhard Euler, who lost sight in one eye. The Retina project began in 2021 and became EyeProlog in 2026; we hope to keep it growing for the next twenty years. That continuation offers a second quiet remembrance of Euler, who later lost sight in his other eye—while the project keeps trying to see farther through logic, proof, and reasoning.
22
+
19
23
  ## Quick start
20
24
 
21
25
  EyeProlog requires Node.js 18 or newer:
@@ -56,13 +60,6 @@ printf 'human(socrates).\nmortal(X) :- human(X).\n' |
56
60
  npx --yes eyeprolog --proof --goal 'mortal(socrates)' -
57
61
  ```
58
62
 
59
- ## Eyelet forward rules (`:+`)
60
- Normal mode executes top-level `Conclusion :+ Premise` rules through the bundled Prolog `library(eyelet)` driver when no explicit `-g/--goal` is supplied. `true :+ Goal` prints answers and `false :+ Goal` emits a `fuse/1`; JavaScript `run()` follows the same rule. The module exports `:+`, `stable/1`, and `becomes/2`, and implements rule selection, fixed-point rounds, skolemization, state replacement, and duplicate suppression in Prolog. JavaScript retains only syntax recognition, static dependency/autoload planning, driver bootstrap, and private mutability/output adapters; it does not implement the fixed-point semantics. Strict ISO mode disables this extension.
61
- Bundled `src/lib/` predicates autoload in files, CLI/API goals, and the REPL; use `--no-autoload` to require explicit imports, and explicitly import libraries that introduce operators before using their syntax. See [*The Art of EyeProlog*](the-art-of-eyeprolog.md) for the full semantics.
62
- All 34 bundled modules that overlap Scryer's current library surface cover Scryer's exported predicates, and all 28 bundled modules with public-module counterparts in Trealla's current `library/` surface cover those Trealla exports as well. The stricter Trealla/Scryer intersection remains a separate portability profile. Runtime-dependent library primitives follow one ownership rule: `src/lib/<module>.pl` calls private adapters from `src/<module>-host.js`; pure Prolog libraries need no host file. This includes the full Scryer `library(files)` surface, Scryer character-list paths in `library(pio)` with atom-path compatibility, chars/UTF-8/term/Base64 helpers, the completed arithmetic/time/`iso_ext` surfaces, the full Scryer `library(crypto)`, Scryer-compatible TCP `library(sockets)`, the shared Scryer/Trealla `library(json)` DCG, and a merged Scryer/Trealla `library(http)` client/server facade. Filesystem, OS, TCP socket, and HTTP/HTTPS client side effects require Node; crypto uses Node's backend where needed, with Web Crypto also used for secure random bytes when available. Non-integral rational conversions remain structural `rdiv(Numerator,Denominator)` terms until rational numbers become processor numeric values.
63
- ## HTTP and JSON
64
- `library(http)` merges Scryer-style `http_open/3` options with Trealla's request helpers (`http_get/3`, `http_post/4`, `http_patch/4`, `http_put/4`, `http_delete/3`, `http_server/2`, `http_request/5`). HTTP/HTTPS clients use the Node-owned `src/http-host.js` bridge, follow up to five redirects, preserve repeated request-header values, accept Trealla `header(Name,Value)` and `host/path` address-list forms, and expose response bodies as UTF-8 character lists or streams. `http_open/3` reads response bodies lazily in bounded chunks rather than buffering the whole response through the host RPC bridge; request metadata and `data/1` still pass through that bounded bridge.
65
- `library(json)` provides the shared bidirectional `json_chars//1` DCG with `pairs/1`, `list/1`, `string/1`, `number/1`, `boolean/1`, and `null`. JSON `\u` escapes combine and generate UTF-16 surrogate pairs for supplementary Unicode scalar values, while unpaired surrogates are rejected. See `examples/json.pl`, `examples/http-client.pl`, `test/run-http-json.mjs`, and the full contracts in [*The Art of EyeProlog*](the-art-of-eyeprolog.md).
66
63
  ## Links
67
64
 
68
65
  - [The Art of EyeProlog](https://eyereasoner.github.io/eyeprolog/the-art-of-eyeprolog) — complete reference
@@ -1,3 +1,3 @@
1
1
  % From The Art of EyeProlog, Chapter 40.
2
2
  ?- V is 0+(3.2+11).
3
- V ~ '14.2000'.
3
+ V ~~ '14.2000'.
@@ -1,15 +1,15 @@
1
- scores(case, [0.0092820000000000021, 0.008208, 0.00012824999999999997, 0.00156408]).
1
+ scores(case, [0.009282000000000002, 0.008208, 0.00012824999999999997, 0.00156408]).
2
2
  evidenceTotal(case, 0.019182330000000004).
3
- posteriors(case, [0.48388282341092037, 0.42789379600913957, 0.0066858405626428041, 0.081537540017297155]).
3
+ posteriors(case, [0.48388282341092037, 0.42789379600913957, 0.006685840562642804, 0.08153754001729716]).
4
4
  posterior(covid19, 0.48388282341092037).
5
5
  posterior(influenza, 0.42789379600913957).
6
- posterior(allergicRhinitis, 0.0066858405626428041).
7
- posterior(bacterialPneumonia, 0.081537540017297155).
6
+ posterior(allergicRhinitis, 0.006685840562642804).
7
+ posterior(bacterialPneumonia, 0.08153754001729716).
8
8
  expectedSuccess(paxlovid, 0.388517401170765).
9
9
  expectedSuccess(oseltamivir, 0.28514101258814745).
10
10
  expectedSuccess(antihistamine, 0.10026891936485297).
11
11
  expectedSuccess(antibiotic, 0.1109525797960936).
12
- expectedSuccess(supportiveCare, 0.29151195397013813).
12
+ expectedSuccess(supportiveCare, 0.2915119539701381).
13
13
  expectedAdverse(paxlovid, 0.10).
14
14
  expectedAdverse(oseltamivir, 0.08).
15
15
  expectedAdverse(antihistamine, 0.03).
@@ -17,7 +17,7 @@ expectedAdverse(antibiotic, 0.07).
17
17
  expectedAdverse(supportiveCare, 0.01).
18
18
  utility(paxlovid, 3.5851740117076503).
19
19
  utility(oseltamivir, 2.6114101258814744).
20
- utility(antihistamine, 0.91268919364852963).
21
- utility(antibiotic, 0.89952579796093612).
20
+ utility(antihistamine, 0.9126891936485296).
21
+ utility(antibiotic, 0.8995257979609361).
22
22
  utility(supportiveCare, 2.8851195397013814).
23
23
  recommendedTherapy(case, paxlovid).
@@ -1,13 +1,13 @@
1
1
  weightKg(case, 72.0).
2
2
  heightM(case, 1.78).
3
3
  units(reason, "Inputs were already metric, so kilograms stay kilograms and centimeters are divided by 100 to obtain meters.").
4
- heightSquared(case, 3.1684000000000001).
4
+ heightSquared(case, 3.1684).
5
5
  bmi(case, 22.724403484408533).
6
6
  bmi(answer, 22.72).
7
7
  bmiRoundedInt(case, 2272).
8
- healthyMinKg(case, 58.615400000000001).
8
+ healthyMinKg(case, 58.6154).
9
9
  healthyMinKg(answer, 58.6).
10
- healthyMaxKg(case, 78.893159999999995).
10
+ healthyMaxKg(case, 78.89316).
11
11
  healthyMaxKg(answer, 78.9).
12
12
  healthyMinKgRoundedInt(case, 586).
13
13
  healthyMaxKgRoundedInt(case, 789).
@@ -1,4 +1,4 @@
1
- hitRate(api_cache, 0.85999999999999999).
1
+ hitRate(api_cache, 0.86).
2
2
  averageLatency_ms(api_cache, 15.5).
3
3
  status(api_cache, cache_effective).
4
4
  reason(api_cache, "hit rate is above target and average latency is below limit").
@@ -1,4 +1,4 @@
1
- errorRate(canary42, 0.014999999999999999).
1
+ errorRate(canary42, 0.015).
2
2
  p95Latency_ms(canary42, 180.0).
3
3
  latencyCheck(canary42, ok).
4
4
  status(canary42, rollback_recommended).
@@ -1,6 +1,6 @@
1
- controlSignal(actuator1, 39.273461986782763).
2
- controlSignal(actuator2, 26.079999999999998).
1
+ controlSignal(actuator1, 39.27346198678276).
2
+ controlSignal(actuator2, 26.08).
3
3
  status(actuator1, active).
4
4
  status(actuator2, active).
5
- normalizedMeasurement(input1, 2.2360679774997898).
6
- log10(disturbance1, 4.5534703722131207).
5
+ normalizedMeasurement(input1, 2.23606797749979).
6
+ log10(disturbance1, 4.553470372213121).
@@ -6,8 +6,8 @@ energyBalance_Mcal(early_lactation, -101.19999999999999).
6
6
  energyBalance_Mcal(mid_lactation, 0.19999999999998863).
7
7
  energyBalance_Mcal(late_lactation, 41.099999999999994).
8
8
  energyBalance_Mcal(grazing, -11.399999999999991).
9
- rationSupportedMilk_kg(early_lactation, 17.760000000000002).
10
- rationSupportedMilk_kg(mid_lactation, 24.039999999999999).
11
- rationSupportedMilk_kg(late_lactation, 24.219999999999999).
9
+ rationSupportedMilk_kg(early_lactation, 17.76).
10
+ rationSupportedMilk_kg(mid_lactation, 24.04).
11
+ rationSupportedMilk_kg(late_lactation, 24.22).
12
12
  rationSupportedMilk_kg(grazing, 15.719999999999999).
13
13
  strongestDeficit(dairy_energy_balance, early_lactation).
@@ -10,8 +10,8 @@ rawCost(pathDirectC, 14.0).
10
10
  rawCost(pathViaC, 7.5).
11
11
  riskSum(pathB, 0.5).
12
12
  riskSum(pathC, 1.2).
13
- riskSum(pathRelay, 0.40000000000000002).
14
- riskSum(pathDirectC, 0.050000000000000003).
13
+ riskSum(pathRelay, 0.4).
14
+ riskSum(pathDirectC, 0.05).
15
15
  riskSum(pathViaC, 1.7000000000000002).
16
16
  score(pathB, 13.0).
17
17
  score(pathC, 21.0).
@@ -1,17 +1,17 @@
1
- gps_plan(d1, plan([fly_gent_brugge, public_coastline_brugge_oostende], 2800.0, 0.012, 0.96029999999999993, 0.95039999999999991, low, none, "ttttt")).
2
- gps_plan(d1, plan([fly_gent_brugge, buy_permit_brugge, public_coastline_brugge_oostende], 3250.0, 0.014, 0.94109399999999999, 0.95039999999999991, low, yes, "tttt")).
3
- gps_plan(d1, plan([fly_gent_brugge, buy_permit_brugge, topup_brugge, cross_corridor_brugge_oostende], 3250.0, 0.015000000000000001, 0.94984520399999994, 0.97019999999999995, mid, yes, "ttt")).
4
- gps_plan(d1, plan([fly_gent_brugge, buy_permit_brugge, topup_brugge, public_coastline_brugge_oostende], 3550.0, 0.017000000000000001, 0.94499905500000003, 0.931392, mid, yes, "ttt")).
5
- gps_plan(d1, plan([fly_gent_brugge, topup_brugge, public_coastline_brugge_oostende], 3100.0, 0.015000000000000001, 0.96428475000000002, 0.931392, mid, none, "tttt")).
6
- gps_plan(d1, plan([fly_gent_brugge, topup_brugge, buy_permit_brugge, cross_corridor_brugge_oostende], 3250.0, 0.015000000000000001, 0.94984520399999994, 0.97019999999999995, mid, yes, "ttt")).
7
- gps_plan(d1, plan([fly_gent_brugge, topup_brugge, buy_permit_brugge, public_coastline_brugge_oostende], 3550.0, 0.017000000000000001, 0.94499905500000003, 0.931392, mid, yes, "ttt")).
8
- gps_plan(d1, plan([train_gent_brugge, public_coastline_brugge_oostende], 2900.0, 0.018000000000000002, 0.97402500000000003, 0.95519999999999994, mid, none, "ttttt")).
9
- gps_plan(d1, plan([train_gent_brugge, buy_permit_brugge, cross_corridor_brugge_oostende], 3050.0, 0.018000000000000002, 0.95943959999999995, 0.995, mid, yes, "tttt")).
10
- gps_plan(d1, plan([train_gent_brugge, buy_permit_brugge, public_coastline_brugge_oostende], 3350.0, 0.02, 0.95454450000000002, 0.95519999999999994, mid, yes, "tttt")).
11
- gps_plan(d1, plan([fly_gent_kortrijk, fly_kortrijk_brugge, buy_permit_brugge, quick_charge_brugge, cross_corridor_brugge_oostende], 5150.0, 0.024, 0.94034675195999995, 0.9506969999999999, mid, yes, "tt")).
12
- gps_plan(d1, plan([fly_gent_kortrijk, fly_kortrijk_brugge, quick_charge_brugge, public_coastline_brugge_oostende], 5000.0, 0.024, 0.95464190250000003, 0.91266911999999989, mid, none, "ttt")).
13
- gps_plan(d1, plan([fly_gent_kortrijk, fly_kortrijk_brugge, quick_charge_brugge, buy_permit_brugge, cross_corridor_brugge_oostende], 5150.0, 0.024, 0.94034675195999995, 0.9506969999999999, mid, yes, "tt")).
14
- gps_plan(d1, plan([fly_gent_kortrijk, get_zone_permit_kortrijk, fly_kortrijk_brugge, quick_charge_brugge, cross_corridor_brugge_oostende], 5000.0, 0.023, 0.95857796449800003, 0.9506969999999999, mid, yes, "tt")).
15
- gps_plan(d1, plan([fly_gent_kortrijk, get_zone_permit_kortrijk, fly_kortrijk_brugge, quick_charge_brugge, public_coastline_brugge_oostende], 5300.0, 0.025000000000000001, 0.95368726059749998, 0.91266911999999989, mid, yes, "tt")).
16
- gps_plan(d1, plan([fly_gent_kortrijk, get_zone_permit_kortrijk, emergency_charge_kortrijk, direct_corridor_kortrijk_oostende], 3500.0, 0.02, 0.94356004544999994, 0.86526000000000003, mid, yes, "ttt")).
17
- gps_plan(d1, plan([fly_gent_kortrijk, emergency_charge_kortrijk, get_zone_permit_kortrijk, direct_corridor_kortrijk_oostende], 3500.0, 0.019999999999999997, 0.94356004544999994, 0.86526000000000003, mid, yes, "ttt")).
1
+ gps_plan(d1, plan([fly_gent_brugge, public_coastline_brugge_oostende], 2800.0, 0.012, 0.9602999999999999, 0.9503999999999999, low, none, "ttttt")).
2
+ gps_plan(d1, plan([fly_gent_brugge, buy_permit_brugge, public_coastline_brugge_oostende], 3250.0, 0.014, 0.941094, 0.9503999999999999, low, yes, "tttt")).
3
+ gps_plan(d1, plan([fly_gent_brugge, buy_permit_brugge, topup_brugge, cross_corridor_brugge_oostende], 3250.0, 0.015000000000000001, 0.9498452039999999, 0.9702, mid, yes, "ttt")).
4
+ gps_plan(d1, plan([fly_gent_brugge, buy_permit_brugge, topup_brugge, public_coastline_brugge_oostende], 3550.0, 0.017, 0.944999055, 0.931392, mid, yes, "ttt")).
5
+ gps_plan(d1, plan([fly_gent_brugge, topup_brugge, public_coastline_brugge_oostende], 3100.0, 0.015000000000000001, 0.96428475, 0.931392, mid, none, "tttt")).
6
+ gps_plan(d1, plan([fly_gent_brugge, topup_brugge, buy_permit_brugge, cross_corridor_brugge_oostende], 3250.0, 0.015000000000000001, 0.9498452039999999, 0.9702, mid, yes, "ttt")).
7
+ gps_plan(d1, plan([fly_gent_brugge, topup_brugge, buy_permit_brugge, public_coastline_brugge_oostende], 3550.0, 0.017, 0.944999055, 0.931392, mid, yes, "ttt")).
8
+ gps_plan(d1, plan([train_gent_brugge, public_coastline_brugge_oostende], 2900.0, 0.018000000000000002, 0.974025, 0.9551999999999999, mid, none, "ttttt")).
9
+ gps_plan(d1, plan([train_gent_brugge, buy_permit_brugge, cross_corridor_brugge_oostende], 3050.0, 0.018000000000000002, 0.9594396, 0.995, mid, yes, "tttt")).
10
+ gps_plan(d1, plan([train_gent_brugge, buy_permit_brugge, public_coastline_brugge_oostende], 3350.0, 0.02, 0.9545445, 0.9551999999999999, mid, yes, "tttt")).
11
+ gps_plan(d1, plan([fly_gent_kortrijk, fly_kortrijk_brugge, buy_permit_brugge, quick_charge_brugge, cross_corridor_brugge_oostende], 5150.0, 0.024, 0.94034675196, 0.9506969999999999, mid, yes, "tt")).
12
+ gps_plan(d1, plan([fly_gent_kortrijk, fly_kortrijk_brugge, quick_charge_brugge, public_coastline_brugge_oostende], 5000.0, 0.024, 0.9546419025, 0.9126691199999999, mid, none, "ttt")).
13
+ gps_plan(d1, plan([fly_gent_kortrijk, fly_kortrijk_brugge, quick_charge_brugge, buy_permit_brugge, cross_corridor_brugge_oostende], 5150.0, 0.024, 0.94034675196, 0.9506969999999999, mid, yes, "tt")).
14
+ gps_plan(d1, plan([fly_gent_kortrijk, get_zone_permit_kortrijk, fly_kortrijk_brugge, quick_charge_brugge, cross_corridor_brugge_oostende], 5000.0, 0.023, 0.958577964498, 0.9506969999999999, mid, yes, "tt")).
15
+ gps_plan(d1, plan([fly_gent_kortrijk, get_zone_permit_kortrijk, fly_kortrijk_brugge, quick_charge_brugge, public_coastline_brugge_oostende], 5300.0, 0.025, 0.9536872605975, 0.9126691199999999, mid, yes, "tt")).
16
+ gps_plan(d1, plan([fly_gent_kortrijk, get_zone_permit_kortrijk, emergency_charge_kortrijk, direct_corridor_kortrijk_oostende], 3500.0, 0.02, 0.9435600454499999, 0.86526, mid, yes, "ttt")).
17
+ gps_plan(d1, plan([fly_gent_kortrijk, emergency_charge_kortrijk, get_zone_permit_kortrijk, direct_corridor_kortrijk_oostende], 3500.0, 0.019999999999999997, 0.9435600454499999, 0.86526, mid, yes, "ttt")).
@@ -2,10 +2,10 @@ status(no_mandate, insufficient_control).
2
2
  status(vaccination_campaign, insufficient_control).
3
3
  status(indoor_masks, insufficient_control).
4
4
  status(vaccination_and_masks, acceptable_control).
5
- riskScore(no_mandate, 1.3999999999999999).
6
- riskScore(vaccination_campaign, 0.77000000000000002).
7
- riskScore(indoor_masks, 0.90999999999999992).
8
- riskScore(vaccination_and_masks, 0.50050000000000006).
5
+ riskScore(no_mandate, 1.4).
6
+ riskScore(vaccination_campaign, 0.77).
7
+ riskScore(indoor_masks, 0.9099999999999999).
8
+ riskScore(vaccination_and_masks, 0.5005000000000001).
9
9
  cost(no_mandate, 0).
10
10
  cost(vaccination_campaign, 3).
11
11
  cost(indoor_masks, 2).
@@ -1,7 +1,7 @@
1
- ppvPlanetGivenDetection(rare_wide_orbit, 0.090163934426229442).
2
- ppvPlanetGivenDetection(mstar_short_period, 0.96116504854368934).
3
- ppvPlanetGivenDetection(common_hot_neptune_good, 0.91346153846153844).
4
- ppvPlanetGivenDetection(common_hot_neptune_low_spec, 0.76000000000000001).
1
+ ppvPlanetGivenDetection(rare_wide_orbit, 0.09016393442622944).
2
+ ppvPlanetGivenDetection(mstar_short_period, 0.9611650485436893).
3
+ ppvPlanetGivenDetection(common_hot_neptune_good, 0.9134615384615384).
4
+ ppvPlanetGivenDetection(common_hot_neptune_low_spec, 0.76).
5
5
  confirmsInWorld(mstar_short_period, w0).
6
6
  confirmsInWorld(common_hot_neptune_good, w0).
7
7
  confirmsInWorld(rare_wide_orbit, w1).
@@ -1,4 +1,4 @@
1
- fft(ramp8, [c(28, 0.0), c(-4.0, 9.6568542494923797), c(-4.0, 4.0), c(-4.0, 1.6568542494923806), c(-4, 0.0), c(-4.0, -1.6568542494923806), c(-4.0, -4.0), c(-4.0, -9.6568542494923797)]).
1
+ fft(ramp8, [c(28, 0.0), c(-4.0, 9.65685424949238), c(-4.0, 4.0), c(-4.0, 1.6568542494923806), c(-4, 0.0), c(-4.0, -1.6568542494923806), c(-4.0, -4.0), c(-4.0, -9.65685424949238)]).
2
2
  fft(alternating8, [c(0, 0.0), c(0.0, 0.0), c(0.0, 0.0), c(0.0, 0.0), c(8, 0.0), c(0.0, 0.0), c(0.0, 0.0), c(0.0, 0.0)]).
3
3
  dcComponent(ramp8, c(28, 0.0)).
4
4
  dcComponent(alternating8, c(0, 0.0)).
@@ -14,7 +14,7 @@ surplusN_kg_ha(sandy_high, 12.0).
14
14
  surplusN_kg_ha(clay_surplus, 27.200000000000017).
15
15
  surplusN_kg_ha(low_input, 0.0).
16
16
  surplusN_kg_ha(balanced_loam, 0.0).
17
- leachingIndex(sandy_high, 4.1999999999999993).
17
+ leachingIndex(sandy_high, 4.199999999999999).
18
18
  leachingIndex(clay_surplus, 2.1760000000000015).
19
19
  leachingIndex(low_input, 0.0).
20
20
  leachingIndex(balanced_loam, 0.0).
@@ -1,70 +1,70 @@
1
1
  width(0, 2.0).
2
- width(1, 2.7999999999999998).
3
- width(2, 3.9199999999999999).
2
+ width(1, 2.8).
3
+ width(2, 3.92).
4
4
  width(3, 5.4879999999999995).
5
- width(4, 7.6831999999999994).
5
+ width(4, 7.683199999999999).
6
6
  width(5, 10.75648).
7
7
  width(6, 15.059072).
8
- width(7, 21.082700800000001).
8
+ width(7, 21.0827008).
9
9
  width(8, 29.51578112).
10
10
  width(9, 41.322093568).
11
- width(10, 57.850930995200002).
11
+ width(10, 57.8509309952).
12
12
  width(result, width(0, 2.0)).
13
- width(result, width(1, 2.7999999999999998)).
14
- width(result, width(2, 3.9199999999999999)).
13
+ width(result, width(1, 2.8)).
14
+ width(result, width(2, 3.92)).
15
15
  width(result, width(3, 5.4879999999999995)).
16
- width(result, width(4, 7.6831999999999994)).
16
+ width(result, width(4, 7.683199999999999)).
17
17
  width(result, width(5, 10.75648)).
18
18
  width(result, width(6, 15.059072)).
19
- width(result, width(7, 21.082700800000001)).
19
+ width(result, width(7, 21.0827008)).
20
20
  width(result, width(8, 29.51578112)).
21
21
  width(result, width(9, 41.322093568)).
22
- width(result, width(10, 57.850930995200002)).
23
- eta(result, 0.20000000000000001).
22
+ width(result, width(10, 57.8509309952)).
23
+ eta(result, 0.2).
24
24
  etaLeHalf(result, true).
25
25
  xBounds(result, bounds(0, 0.0, 2.0)).
26
- xBounds(result, bounds(1, -0.40000000000000002, 2.3999999999999999)).
27
- xBounds(result, bounds(2, -0.95999999999999996, 2.96)).
26
+ xBounds(result, bounds(1, -0.4, 2.4)).
27
+ xBounds(result, bounds(2, -0.96, 2.96)).
28
28
  xBounds(result, bounds(3, -1.744, 3.7439999999999998)).
29
- xBounds(result, bounds(4, -2.8415999999999997, 4.8415999999999997)).
30
- xBounds(result, bounds(5, -4.3782399999999999, 6.3782399999999999)).
31
- xBounds(result, bounds(6, -6.5295360000000002, 8.5295360000000002)).
32
- xBounds(result, bounds(7, -9.5413504000000007, 11.541350400000001)).
29
+ xBounds(result, bounds(4, -2.8415999999999997, 4.8416)).
30
+ xBounds(result, bounds(5, -4.37824, 6.37824)).
31
+ xBounds(result, bounds(6, -6.529536, 8.529536)).
32
+ xBounds(result, bounds(7, -9.5413504, 11.5413504)).
33
33
  xBounds(result, bounds(8, -13.75789056, 15.75789056)).
34
34
  xBounds(result, bounds(9, -19.661046784, 21.661046784)).
35
- xBounds(result, bounds(10, -27.925465497600001, 29.925465497600001)).
35
+ xBounds(result, bounds(10, -27.9254654976, 29.9254654976)).
36
36
  midpoint(result, midpoint(0, 1.0, 1.0)).
37
- midpoint(result, midpoint(1, 1.0, 1.3999999999999999)).
37
+ midpoint(result, midpoint(1, 1.0, 1.4)).
38
38
  midpoint(result, midpoint(2, 1.0, 1.96)).
39
- midpoint(result, midpoint(3, 0.99999999999999989, 2.7439999999999998)).
39
+ midpoint(result, midpoint(3, 0.9999999999999999, 2.7439999999999998)).
40
40
  midpoint(result, midpoint(4, 1.0, 3.8415999999999997)).
41
- midpoint(result, midpoint(5, 1.0, 5.3782399999999999)).
42
- midpoint(result, midpoint(6, 1.0, 7.5295360000000002)).
43
- midpoint(result, midpoint(7, 1.0, 10.541350400000001)).
41
+ midpoint(result, midpoint(5, 1.0, 5.37824)).
42
+ midpoint(result, midpoint(6, 1.0, 7.529536)).
43
+ midpoint(result, midpoint(7, 1.0, 10.5413504)).
44
44
  midpoint(result, midpoint(8, 1.0, 14.75789056)).
45
45
  midpoint(result, midpoint(9, 1.0, 20.661046784)).
46
- midpoint(result, midpoint(10, 1.0, 28.925465497600001)).
46
+ midpoint(result, midpoint(10, 1.0, 28.9254654976)).
47
47
  gradientBounds(result, gradient(0, -2.0, 2.0)).
48
- gradientBounds(result, gradient(1, -2.7999999999999998, 2.7999999999999998)).
49
- gradientBounds(result, gradient(2, -3.9199999999999999, 3.9199999999999999)).
48
+ gradientBounds(result, gradient(1, -2.8, 2.8)).
49
+ gradientBounds(result, gradient(2, -3.92, 3.92)).
50
50
  gradientBounds(result, gradient(3, -5.4879999999999995, 5.4879999999999995)).
51
- gradientBounds(result, gradient(4, -7.6831999999999994, 7.6831999999999994)).
51
+ gradientBounds(result, gradient(4, -7.683199999999999, 7.683199999999999)).
52
52
  gradientBounds(result, gradient(5, -10.75648, 10.75648)).
53
53
  gradientBounds(result, gradient(6, -15.059072, 15.059072)).
54
- gradientBounds(result, gradient(7, -21.082700800000001, 21.082700800000001)).
54
+ gradientBounds(result, gradient(7, -21.0827008, 21.0827008)).
55
55
  gradientBounds(result, gradient(8, -29.51578112, 29.51578112)).
56
56
  gradientBounds(result, gradient(9, -41.322093568, 41.322093568)).
57
- gradientBounds(result, gradient(10, -57.850930995200002, 57.850930995200002)).
58
- stepBounds(result, step(0, -0.40000000000000002, 0.40000000000000002)).
59
- stepBounds(result, step(1, -0.55999999999999994, 0.55999999999999994)).
60
- stepBounds(result, step(2, -0.78400000000000003, 0.78400000000000003)).
61
- stepBounds(result, step(3, -1.0975999999999999, 1.0975999999999999)).
57
+ gradientBounds(result, gradient(10, -57.8509309952, 57.8509309952)).
58
+ stepBounds(result, step(0, -0.4, 0.4)).
59
+ stepBounds(result, step(1, -0.5599999999999999, 0.5599999999999999)).
60
+ stepBounds(result, step(2, -0.784, 0.784)).
61
+ stepBounds(result, step(3, -1.0976, 1.0976)).
62
62
  stepBounds(result, step(4, -1.53664, 1.53664)).
63
- stepBounds(result, step(5, -2.1512959999999999, 2.1512959999999999)).
63
+ stepBounds(result, step(5, -2.151296, 2.151296)).
64
64
  stepBounds(result, step(6, -3.0118144000000004, 3.0118144000000004)).
65
- stepBounds(result, step(7, -4.2165401600000001, 4.2165401600000001)).
65
+ stepBounds(result, step(7, -4.21654016, 4.21654016)).
66
66
  stepBounds(result, step(8, -5.903156224, 5.903156224)).
67
- stepBounds(result, step(9, -8.2644187135999996, 8.2644187135999996)).
67
+ stepBounds(result, step(9, -8.2644187136, 8.2644187136)).
68
68
  stepBounds(result, step(10, -11.570186199040002, 11.570186199040002)).
69
69
  objectiveBounds(result, f(0, 0.0, 1.0)).
70
70
  objectiveBounds(result, f(1, 0.0, 1.9599999999999997)).
@@ -72,8 +72,8 @@ objectiveBounds(result, f(2, 0.0, 3.8415999999999997)).
72
72
  objectiveBounds(result, f(3, 0.0, 7.5295359999999985)).
73
73
  objectiveBounds(result, f(4, 0.0, 14.757890559999998)).
74
74
  objectiveBounds(result, f(5, 0.0, 28.925465497599998)).
75
- objectiveBounds(result, f(6, 0.0, 56.693912375296001)).
75
+ objectiveBounds(result, f(6, 0.0, 56.693912375296)).
76
76
  objectiveBounds(result, f(7, 0.0, 111.12006825558018)).
77
- objectiveBounds(result, f(8, 0.0, 217.79533378093711)).
77
+ objectiveBounds(result, f(8, 0.0, 217.7953337809371)).
78
78
  objectiveBounds(result, f(9, 0.0, 426.87885421063675)).
79
- objectiveBounds(result, f(10, 0.0, 836.68255425284804)).
79
+ objectiveBounds(result, f(10, 0.0, 836.682554252848)).
@@ -12,10 +12,10 @@ actionSequence(routeViaKortrijk, [drive_gent_kortrijk, drive_kortrijk_brugge, dr
12
12
  durationSeconds(routeDirect, 2400.0).
13
13
  durationSeconds(routeViaKortrijk, 4100.0).
14
14
  cost(routeDirect, 0.01).
15
- cost(routeViaKortrijk, 0.017999999999999999).
16
- belief(routeDirect, 0.94079999999999997).
17
- belief(routeViaKortrijk, 0.90316799999999997).
18
- comfort(routeDirect, 0.98999999999999999).
19
- comfort(routeViaKortrijk, 0.98009999999999997).
20
- selectedRoute(report, route(routeDirect, [drive_gent_brugge, drive_brugge_oostende], 2400.0, 0.01, 0.94079999999999997, 0.98999999999999999)).
15
+ cost(routeViaKortrijk, 0.018).
16
+ belief(routeDirect, 0.9408).
17
+ belief(routeViaKortrijk, 0.903168).
18
+ comfort(routeDirect, 0.99).
19
+ comfort(routeViaKortrijk, 0.9801).
20
+ selectedRoute(report, route(routeDirect, [drive_gent_brugge, drive_brugge_oostende], 2400.0, 0.01, 0.9408, 0.99)).
21
21
  comparison(report, dominates(routeDirect, routeViaKortrijk)).
@@ -1,3 +1,3 @@
1
1
  sideCSquared(tri60, 67.0).
2
- sideC(tri60, 8.1853527718724504).
2
+ sideC(tri60, 8.18535277187245).
3
3
  status(tri60, acute_triangle).
@@ -1,5 +1,5 @@
1
- slope(regression1, 0.80000000000000004).
1
+ slope(regression1, 0.8).
2
2
  intercept(regression1, 1.5).
3
- rSquared(regression1, 0.64000000000000001).
3
+ rSquared(regression1, 0.64).
4
4
  status(regression1, accepted_linear_fit).
5
5
  reason(regression1, "R squared meets the minimum explanatory-power threshold").
@@ -1,3 +1,3 @@
1
1
  findRoot([1, 1.0, 1.0e-15], 1.4142135623730951).
2
- findRoot([2, 2.0, 1.0e-15], 2.7182818284590451).
3
- findRoot([3, 3.0, 1.0e-15], 3.1415926535897931).
2
+ findRoot([2, 2.0, 1.0e-15], 2.718281828459045).
3
+ findRoot([3, 3.0, 1.0e-15], 3.141592653589793).
@@ -1,7 +1,7 @@
1
- transferSemiMajorAxis_km(mars_hohmann, 188768535.34999999).
1
+ transferSemiMajorAxis_km(mars_hohmann, 188768535.35).
2
2
  departureDeltaV_km_s(mars_hohmann, 2.9446911328430403).
3
3
  arrivalDeltaV_km_s(mars_hohmann, 2.6488967223855973).
4
4
  totalDeltaV_km_s(mars_hohmann, 5.5935878552286376).
5
- transferTime_days(mars_hohmann, 258.86582676796297).
5
+ transferTime_days(mars_hohmann, 258.865826767963).
6
6
  status(mars_hohmann, feasible_reference_transfer).
7
7
  reason(mars_hohmann, "total Hohmann transfer delta-v is within the mission budget").
@@ -1 +1 @@
1
- pi(100000, 3.1415926535897918).
1
+ pi(100000, 3.141592653589792).
@@ -1,5 +1,5 @@
1
1
  report(normalized_name, 'ada lovelace').
2
2
  report(unique_tags, [logic, math, programming]).
3
3
  report(tag_label, 'logic / math / programming').
4
- report(score_summary, summary(42, 21, 6.4807406984078604)).
4
+ report(score_summary, summary(42, 21, 6.48074069840786)).
5
5
  report(window, [13, 21]).
@@ -1,4 +1,4 @@
1
- confidence(message_a, 0.89375999999999989).
1
+ confidence(message_a, 0.8937599999999999).
2
2
  confidence(message_b, 0.41999999999999993).
3
3
  trust_flow_state(message_a, fpv_accepted).
4
4
  trust_flow_state(message_b, fpv_quarantine).
@@ -1,4 +1,4 @@
1
1
  dotProduct(pair1, 12.0).
2
2
  normA(pair1, 3.7416573867739413).
3
- normB(pair1, 8.7749643873921226).
4
- cosineSimilarity(pair1, 0.36548694232390361).
3
+ normB(pair1, 8.774964387392123).
4
+ cosineSimilarity(pair1, 0.3654869423239036).
@@ -1,15 +1,15 @@
1
- hitRate(api_cache, 0.85999999999999999).
1
+ hitRate(api_cache, 0.86).
2
2
  why(
3
- hitRate(api_cache, 0.85999999999999999),
3
+ hitRate(api_cache, 0.86),
4
4
  proof(
5
- goal(hitRate(api_cache, 0.85999999999999999)),
5
+ goal(hitRate(api_cache, 0.86)),
6
6
  by(rule("cache-performance.pl", clause(8))),
7
- bindings([binding("Cache", api_cache), binding("Rate", 0.85999999999999999)]),
7
+ bindings([binding("Cache", api_cache), binding("Rate", 0.86)]),
8
8
  uses([
9
9
  proof(
10
- goal(hit_rate(api_cache, 0.85999999999999999)),
10
+ goal(hit_rate(api_cache, 0.86)),
11
11
  by(rule("cache-performance.pl", clause(5))),
12
- bindings([binding("Cache", api_cache), binding("Rate", 0.85999999999999999), binding("Hits", 8600.0), binding("_misses", 1400.0), binding("_hitlatency", 5.0), binding("_misslatency", 80.0), binding("Total", 10000.0)]),
12
+ bindings([binding("Cache", api_cache), binding("Rate", 0.86), binding("Hits", 8600.0), binding("_misses", 1400.0), binding("_hitlatency", 5.0), binding("_misslatency", 80.0), binding("Total", 10000.0)]),
13
13
  uses([
14
14
  proof(
15
15
  goal(cache_sample(api_cache, 8600.0, 1400.0, 5.0, 80.0)),
@@ -31,7 +31,7 @@ why(
31
31
  ])
32
32
  ),
33
33
  proof(
34
- goal(is(0.85999999999999999, /(8600.0, 10000.0))),
34
+ goal(is(0.86, /(8600.0, 10000.0))),
35
35
  by(builtin(is, 2))
36
36
  )
37
37
  ])
@@ -105,12 +105,12 @@ why(
105
105
  proof(
106
106
  goal(cache_effective(api_cache)),
107
107
  by(rule("cache-performance.pl", clause(7))),
108
- bindings([binding("Cache", api_cache), binding("Rate", 0.85999999999999999), binding("Minimumrate", 0.80), binding("Average", 15.5), binding("Maximumlatency", 20.0)]),
108
+ bindings([binding("Cache", api_cache), binding("Rate", 0.86), binding("Minimumrate", 0.8), binding("Average", 15.5), binding("Maximumlatency", 20.0)]),
109
109
  uses([
110
110
  proof(
111
- goal(hit_rate(api_cache, 0.85999999999999999)),
111
+ goal(hit_rate(api_cache, 0.86)),
112
112
  by(rule("cache-performance.pl", clause(5))),
113
- bindings([binding("Cache", api_cache), binding("Rate", 0.85999999999999999), binding("Hits", 8600.0), binding("_misses", 1400.0), binding("_hitlatency", 5.0), binding("_misslatency", 80.0), binding("Total", 10000.0)]),
113
+ bindings([binding("Cache", api_cache), binding("Rate", 0.86), binding("Hits", 8600.0), binding("_misses", 1400.0), binding("_hitlatency", 5.0), binding("_misslatency", 80.0), binding("Total", 10000.0)]),
114
114
  uses([
115
115
  proof(
116
116
  goal(cache_sample(api_cache, 8600.0, 1400.0, 5.0, 80.0)),
@@ -132,17 +132,17 @@ why(
132
132
  ])
133
133
  ),
134
134
  proof(
135
- goal(is(0.85999999999999999, /(8600.0, 10000.0))),
135
+ goal(is(0.86, /(8600.0, 10000.0))),
136
136
  by(builtin(is, 2))
137
137
  )
138
138
  ])
139
139
  ),
140
140
  proof(
141
- goal(threshold(api_cache, minimum_hit_rate, 0.80)),
141
+ goal(threshold(api_cache, minimum_hit_rate, 0.8)),
142
142
  by(fact("cache-performance.pl", clause(2)))
143
143
  ),
144
144
  proof(
145
- goal(>(0.85999999999999999, 0.80)),
145
+ goal(>(0.86, 0.8)),
146
146
  by(builtin(>, 2))
147
147
  ),
148
148
  proof(
@@ -212,12 +212,12 @@ why(
212
212
  proof(
213
213
  goal(cache_effective(api_cache)),
214
214
  by(rule("cache-performance.pl", clause(7))),
215
- bindings([binding("Cache", api_cache), binding("Rate", 0.85999999999999999), binding("Minimumrate", 0.80), binding("Average", 15.5), binding("Maximumlatency", 20.0)]),
215
+ bindings([binding("Cache", api_cache), binding("Rate", 0.86), binding("Minimumrate", 0.8), binding("Average", 15.5), binding("Maximumlatency", 20.0)]),
216
216
  uses([
217
217
  proof(
218
- goal(hit_rate(api_cache, 0.85999999999999999)),
218
+ goal(hit_rate(api_cache, 0.86)),
219
219
  by(rule("cache-performance.pl", clause(5))),
220
- bindings([binding("Cache", api_cache), binding("Rate", 0.85999999999999999), binding("Hits", 8600.0), binding("_misses", 1400.0), binding("_hitlatency", 5.0), binding("_misslatency", 80.0), binding("Total", 10000.0)]),
220
+ bindings([binding("Cache", api_cache), binding("Rate", 0.86), binding("Hits", 8600.0), binding("_misses", 1400.0), binding("_hitlatency", 5.0), binding("_misslatency", 80.0), binding("Total", 10000.0)]),
221
221
  uses([
222
222
  proof(
223
223
  goal(cache_sample(api_cache, 8600.0, 1400.0, 5.0, 80.0)),
@@ -239,17 +239,17 @@ why(
239
239
  ])
240
240
  ),
241
241
  proof(
242
- goal(is(0.85999999999999999, /(8600.0, 10000.0))),
242
+ goal(is(0.86, /(8600.0, 10000.0))),
243
243
  by(builtin(is, 2))
244
244
  )
245
245
  ])
246
246
  ),
247
247
  proof(
248
- goal(threshold(api_cache, minimum_hit_rate, 0.80)),
248
+ goal(threshold(api_cache, minimum_hit_rate, 0.8)),
249
249
  by(fact("cache-performance.pl", clause(2)))
250
250
  ),
251
251
  proof(
252
- goal(>(0.85999999999999999, 0.80)),
252
+ goal(>(0.86, 0.8)),
253
253
  by(builtin(>, 2))
254
254
  ),
255
255
  proof(
@@ -1,22 +1,22 @@
1
- errorRate(canary42, 0.014999999999999999).
1
+ errorRate(canary42, 0.015).
2
2
  why(
3
- errorRate(canary42, 0.014999999999999999),
3
+ errorRate(canary42, 0.015),
4
4
  proof(
5
- goal(errorRate(canary42, 0.014999999999999999)),
5
+ goal(errorRate(canary42, 0.015)),
6
6
  by(rule("canary-release.pl", clause(8))),
7
- bindings([binding("Release", canary42), binding("Rate", 0.014999999999999999)]),
7
+ bindings([binding("Release", canary42), binding("Rate", 0.015)]),
8
8
  uses([
9
9
  proof(
10
- goal(error_rate(canary42, 0.014999999999999999)),
10
+ goal(error_rate(canary42, 0.015)),
11
11
  by(rule("canary-release.pl", clause(4))),
12
- bindings([binding("Release", canary42), binding("Rate", 0.014999999999999999), binding("Requests", 5000.0), binding("Errors", 75.0), binding("_p95latency", 180.0)]),
12
+ bindings([binding("Release", canary42), binding("Rate", 0.015), binding("Requests", 5000.0), binding("Errors", 75.0), binding("_p95latency", 180.0)]),
13
13
  uses([
14
14
  proof(
15
15
  goal(canary(canary42, 5000.0, 75.0, 180.0)),
16
16
  by(fact("canary-release.pl", clause(1)))
17
17
  ),
18
18
  proof(
19
- goal(is(0.014999999999999999, /(75.0, 5000.0))),
19
+ goal(is(0.015, /(75.0, 5000.0))),
20
20
  by(builtin(is, 2))
21
21
  )
22
22
  ])
@@ -88,19 +88,19 @@ why(
88
88
  proof(
89
89
  goal(error_budget_exceeded(canary42)),
90
90
  by(rule("canary-release.pl", clause(6))),
91
- bindings([binding("Release", canary42), binding("Rate", 0.014999999999999999), binding("Maximum", 0.01)]),
91
+ bindings([binding("Release", canary42), binding("Rate", 0.015), binding("Maximum", 0.01)]),
92
92
  uses([
93
93
  proof(
94
- goal(error_rate(canary42, 0.014999999999999999)),
94
+ goal(error_rate(canary42, 0.015)),
95
95
  by(rule("canary-release.pl", clause(4))),
96
- bindings([binding("Release", canary42), binding("Rate", 0.014999999999999999), binding("Requests", 5000.0), binding("Errors", 75.0), binding("_p95latency", 180.0)]),
96
+ bindings([binding("Release", canary42), binding("Rate", 0.015), binding("Requests", 5000.0), binding("Errors", 75.0), binding("_p95latency", 180.0)]),
97
97
  uses([
98
98
  proof(
99
99
  goal(canary(canary42, 5000.0, 75.0, 180.0)),
100
100
  by(fact("canary-release.pl", clause(1)))
101
101
  ),
102
102
  proof(
103
- goal(is(0.014999999999999999, /(75.0, 5000.0))),
103
+ goal(is(0.015, /(75.0, 5000.0))),
104
104
  by(builtin(is, 2))
105
105
  )
106
106
  ])
@@ -110,7 +110,7 @@ why(
110
110
  by(fact("canary-release.pl", clause(2)))
111
111
  ),
112
112
  proof(
113
- goal(>(0.014999999999999999, 0.01)),
113
+ goal(>(0.015, 0.01)),
114
114
  by(builtin(>, 2))
115
115
  )
116
116
  ])
@@ -137,19 +137,19 @@ why(
137
137
  proof(
138
138
  goal(error_budget_exceeded(canary42)),
139
139
  by(rule("canary-release.pl", clause(6))),
140
- bindings([binding("Release", canary42), binding("Rate", 0.014999999999999999), binding("Maximum", 0.01)]),
140
+ bindings([binding("Release", canary42), binding("Rate", 0.015), binding("Maximum", 0.01)]),
141
141
  uses([
142
142
  proof(
143
- goal(error_rate(canary42, 0.014999999999999999)),
143
+ goal(error_rate(canary42, 0.015)),
144
144
  by(rule("canary-release.pl", clause(4))),
145
- bindings([binding("Release", canary42), binding("Rate", 0.014999999999999999), binding("Requests", 5000.0), binding("Errors", 75.0), binding("_p95latency", 180.0)]),
145
+ bindings([binding("Release", canary42), binding("Rate", 0.015), binding("Requests", 5000.0), binding("Errors", 75.0), binding("_p95latency", 180.0)]),
146
146
  uses([
147
147
  proof(
148
148
  goal(canary(canary42, 5000.0, 75.0, 180.0)),
149
149
  by(fact("canary-release.pl", clause(1)))
150
150
  ),
151
151
  proof(
152
- goal(is(0.014999999999999999, /(75.0, 5000.0))),
152
+ goal(is(0.015, /(75.0, 5000.0))),
153
153
  by(builtin(is, 2))
154
154
  )
155
155
  ])
@@ -159,7 +159,7 @@ why(
159
159
  by(fact("canary-release.pl", clause(2)))
160
160
  ),
161
161
  proof(
162
- goal(>(0.014999999999999999, 0.01)),
162
+ goal(>(0.015, 0.01)),
163
163
  by(builtin(>, 2))
164
164
  )
165
165
  ])