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.
- package/README.md +4 -7
- package/examples/book/chapter-40/03-program-2.pl +1 -1
- package/examples/output/bayes-therapy.pl +7 -7
- package/examples/output/bmi.pl +3 -3
- package/examples/output/cache-performance.pl +1 -1
- package/examples/output/canary-release.pl +1 -1
- package/examples/output/control-system.pl +4 -4
- package/examples/output/dairy-energy-balance.pl +3 -3
- package/examples/output/dijkstra-risk-path.pl +2 -2
- package/examples/output/drone-corridor-planner.pl +17 -17
- package/examples/output/epidemic-policy.pl +4 -4
- package/examples/output/exoplanet-validation-worlds.pl +4 -4
- package/examples/output/fft8-numeric.pl +1 -1
- package/examples/output/field-nitrogen-balance.pl +1 -1
- package/examples/output/gd-step-certified.pl +39 -39
- package/examples/output/gps.pl +6 -6
- package/examples/output/law-of-cosines.pl +1 -1
- package/examples/output/least-squares-regression.pl +2 -2
- package/examples/output/newton-raphson.pl +2 -2
- package/examples/output/orbital-transfer-design.pl +2 -2
- package/examples/output/pi.pl +1 -1
- package/examples/output/reusable-builtins.pl +1 -1
- package/examples/output/trust-flow-provenance-threshold.pl +1 -1
- package/examples/output/vector-similarity.pl +2 -2
- package/examples/proof/cache-performance.pl +19 -19
- package/examples/proof/canary-release.pl +17 -17
- package/examples/proof/electrical-rc-filter.pl +4 -4
- package/examples/proof/epidemic-policy.pl +136 -136
- package/examples/proof/heat-loss.pl +9 -9
- package/examples/proof/reusable-builtins.pl +5 -5
- package/examples/proof/trust-flow-provenance-threshold.pl +33 -33
- package/package.json +1 -1
- package/src/parser.js +14 -17
- package/src/quads.js +123 -19
- package/src/repl.js +25 -1
- package/src/term.js +12 -13
- package/test/conformance/expected/arithmetic/062_reusable_numeric_builtins.pl +1 -1
- package/test/conformance/expected/arithmetic/079_big_integer_arithmetic.pl +2 -2
- package/test/conformance/expected/iso/atomic_term_processing.pl +1 -1
- package/test/conformance/expected/iso/corrigenda_arithmetic.pl +1 -1
- package/test/conformance/wg17-syntax-cases.json +3 -3
- package/test/run-regression.mjs +107 -29
- 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,15 +1,15 @@
|
|
|
1
|
-
scores(case, [0.
|
|
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.
|
|
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.
|
|
7
|
-
posterior(bacterialPneumonia, 0.
|
|
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.
|
|
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.
|
|
21
|
-
utility(antibiotic, 0.
|
|
20
|
+
utility(antihistamine, 0.9126891936485296).
|
|
21
|
+
utility(antibiotic, 0.8995257979609361).
|
|
22
22
|
utility(supportiveCare, 2.8851195397013814).
|
|
23
23
|
recommendedTherapy(case, paxlovid).
|
package/examples/output/bmi.pl
CHANGED
|
@@ -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.
|
|
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.
|
|
8
|
+
healthyMinKg(case, 58.6154).
|
|
9
9
|
healthyMinKg(answer, 58.6).
|
|
10
|
-
healthyMaxKg(case, 78.
|
|
10
|
+
healthyMaxKg(case, 78.89316).
|
|
11
11
|
healthyMaxKg(answer, 78.9).
|
|
12
12
|
healthyMinKgRoundedInt(case, 586).
|
|
13
13
|
healthyMaxKgRoundedInt(case, 789).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
controlSignal(actuator1, 39.
|
|
2
|
-
controlSignal(actuator2, 26.
|
|
1
|
+
controlSignal(actuator1, 39.27346198678276).
|
|
2
|
+
controlSignal(actuator2, 26.08).
|
|
3
3
|
status(actuator1, active).
|
|
4
4
|
status(actuator2, active).
|
|
5
|
-
normalizedMeasurement(input1, 2.
|
|
6
|
-
log10(disturbance1, 4.
|
|
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.
|
|
10
|
-
rationSupportedMilk_kg(mid_lactation, 24.
|
|
11
|
-
rationSupportedMilk_kg(late_lactation, 24.
|
|
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.
|
|
14
|
-
riskSum(pathDirectC, 0.
|
|
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.
|
|
2
|
-
gps_plan(d1, plan([fly_gent_brugge, buy_permit_brugge, public_coastline_brugge_oostende], 3250.0, 0.014, 0.
|
|
3
|
-
gps_plan(d1, plan([fly_gent_brugge, buy_permit_brugge, topup_brugge, cross_corridor_brugge_oostende], 3250.0, 0.015000000000000001, 0.
|
|
4
|
-
gps_plan(d1, plan([fly_gent_brugge, buy_permit_brugge, topup_brugge, public_coastline_brugge_oostende], 3550.0, 0.
|
|
5
|
-
gps_plan(d1, plan([fly_gent_brugge, topup_brugge, public_coastline_brugge_oostende], 3100.0, 0.015000000000000001, 0.
|
|
6
|
-
gps_plan(d1, plan([fly_gent_brugge, topup_brugge, buy_permit_brugge, cross_corridor_brugge_oostende], 3250.0, 0.015000000000000001, 0.
|
|
7
|
-
gps_plan(d1, plan([fly_gent_brugge, topup_brugge, buy_permit_brugge, public_coastline_brugge_oostende], 3550.0, 0.
|
|
8
|
-
gps_plan(d1, plan([train_gent_brugge, public_coastline_brugge_oostende], 2900.0, 0.018000000000000002, 0.
|
|
9
|
-
gps_plan(d1, plan([train_gent_brugge, buy_permit_brugge, cross_corridor_brugge_oostende], 3050.0, 0.018000000000000002, 0.
|
|
10
|
-
gps_plan(d1, plan([train_gent_brugge, buy_permit_brugge, public_coastline_brugge_oostende], 3350.0, 0.02, 0.
|
|
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.
|
|
12
|
-
gps_plan(d1, plan([fly_gent_kortrijk, fly_kortrijk_brugge, quick_charge_brugge, public_coastline_brugge_oostende], 5000.0, 0.024, 0.
|
|
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.
|
|
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.
|
|
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.
|
|
16
|
-
gps_plan(d1, plan([fly_gent_kortrijk, get_zone_permit_kortrijk, emergency_charge_kortrijk, direct_corridor_kortrijk_oostende], 3500.0, 0.02, 0.
|
|
17
|
-
gps_plan(d1, plan([fly_gent_kortrijk, emergency_charge_kortrijk, get_zone_permit_kortrijk, direct_corridor_kortrijk_oostende], 3500.0, 0.019999999999999997, 0.
|
|
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.
|
|
6
|
-
riskScore(vaccination_campaign, 0.
|
|
7
|
-
riskScore(indoor_masks, 0.
|
|
8
|
-
riskScore(vaccination_and_masks, 0.
|
|
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.
|
|
2
|
-
ppvPlanetGivenDetection(mstar_short_period, 0.
|
|
3
|
-
ppvPlanetGivenDetection(common_hot_neptune_good, 0.
|
|
4
|
-
ppvPlanetGivenDetection(common_hot_neptune_low_spec, 0.
|
|
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.
|
|
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.
|
|
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.
|
|
3
|
-
width(2, 3.
|
|
2
|
+
width(1, 2.8).
|
|
3
|
+
width(2, 3.92).
|
|
4
4
|
width(3, 5.4879999999999995).
|
|
5
|
-
width(4, 7.
|
|
5
|
+
width(4, 7.683199999999999).
|
|
6
6
|
width(5, 10.75648).
|
|
7
7
|
width(6, 15.059072).
|
|
8
|
-
width(7, 21.
|
|
8
|
+
width(7, 21.0827008).
|
|
9
9
|
width(8, 29.51578112).
|
|
10
10
|
width(9, 41.322093568).
|
|
11
|
-
width(10, 57.
|
|
11
|
+
width(10, 57.8509309952).
|
|
12
12
|
width(result, width(0, 2.0)).
|
|
13
|
-
width(result, width(1, 2.
|
|
14
|
-
width(result, width(2, 3.
|
|
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.
|
|
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.
|
|
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.
|
|
23
|
-
eta(result, 0.
|
|
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.
|
|
27
|
-
xBounds(result, bounds(2, -0.
|
|
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.
|
|
30
|
-
xBounds(result, bounds(5, -4.
|
|
31
|
-
xBounds(result, bounds(6, -6.
|
|
32
|
-
xBounds(result, bounds(7, -9.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
42
|
-
midpoint(result, midpoint(6, 1.0, 7.
|
|
43
|
-
midpoint(result, midpoint(7, 1.0, 10.
|
|
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.
|
|
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.
|
|
49
|
-
gradientBounds(result, gradient(2, -3.
|
|
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.
|
|
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.
|
|
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.
|
|
58
|
-
stepBounds(result, step(0, -0.
|
|
59
|
-
stepBounds(result, step(1, -0.
|
|
60
|
-
stepBounds(result, step(2, -0.
|
|
61
|
-
stepBounds(result, step(3, -1.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
79
|
+
objectiveBounds(result, f(10, 0.0, 836.682554252848)).
|
package/examples/output/gps.pl
CHANGED
|
@@ -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.
|
|
16
|
-
belief(routeDirect, 0.
|
|
17
|
-
belief(routeViaKortrijk, 0.
|
|
18
|
-
comfort(routeDirect, 0.
|
|
19
|
-
comfort(routeViaKortrijk, 0.
|
|
20
|
-
selectedRoute(report, route(routeDirect, [drive_gent_brugge, drive_brugge_oostende], 2400.0, 0.01, 0.
|
|
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,5 +1,5 @@
|
|
|
1
|
-
slope(regression1, 0.
|
|
1
|
+
slope(regression1, 0.8).
|
|
2
2
|
intercept(regression1, 1.5).
|
|
3
|
-
rSquared(regression1, 0.
|
|
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.
|
|
3
|
-
findRoot([3, 3.0, 1.0e-15], 3.
|
|
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.
|
|
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.
|
|
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").
|
package/examples/output/pi.pl
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
pi(100000, 3.
|
|
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.
|
|
4
|
+
report(score_summary, summary(42, 21, 6.48074069840786)).
|
|
5
5
|
report(window, [13, 21]).
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
hitRate(api_cache, 0.
|
|
1
|
+
hitRate(api_cache, 0.86).
|
|
2
2
|
why(
|
|
3
|
-
hitRate(api_cache, 0.
|
|
3
|
+
hitRate(api_cache, 0.86),
|
|
4
4
|
proof(
|
|
5
|
-
goal(hitRate(api_cache, 0.
|
|
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.
|
|
7
|
+
bindings([binding("Cache", api_cache), binding("Rate", 0.86)]),
|
|
8
8
|
uses([
|
|
9
9
|
proof(
|
|
10
|
-
goal(hit_rate(api_cache, 0.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
252
|
+
goal(>(0.86, 0.8)),
|
|
253
253
|
by(builtin(>, 2))
|
|
254
254
|
),
|
|
255
255
|
proof(
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
errorRate(canary42, 0.
|
|
1
|
+
errorRate(canary42, 0.015).
|
|
2
2
|
why(
|
|
3
|
-
errorRate(canary42, 0.
|
|
3
|
+
errorRate(canary42, 0.015),
|
|
4
4
|
proof(
|
|
5
|
-
goal(errorRate(canary42, 0.
|
|
5
|
+
goal(errorRate(canary42, 0.015)),
|
|
6
6
|
by(rule("canary-release.pl", clause(8))),
|
|
7
|
-
bindings([binding("Release", canary42), binding("Rate", 0.
|
|
7
|
+
bindings([binding("Release", canary42), binding("Rate", 0.015)]),
|
|
8
8
|
uses([
|
|
9
9
|
proof(
|
|
10
|
-
goal(error_rate(canary42, 0.
|
|
10
|
+
goal(error_rate(canary42, 0.015)),
|
|
11
11
|
by(rule("canary-release.pl", clause(4))),
|
|
12
|
-
bindings([binding("Release", canary42), binding("Rate", 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.
|
|
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.
|
|
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.
|
|
94
|
+
goal(error_rate(canary42, 0.015)),
|
|
95
95
|
by(rule("canary-release.pl", clause(4))),
|
|
96
|
-
bindings([binding("Release", canary42), binding("Rate", 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.
|
|
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.
|
|
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.
|
|
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.
|
|
143
|
+
goal(error_rate(canary42, 0.015)),
|
|
144
144
|
by(rule("canary-release.pl", clause(4))),
|
|
145
|
-
bindings([binding("Release", canary42), binding("Rate", 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.
|
|
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.
|
|
162
|
+
goal(>(0.015, 0.01)),
|
|
163
163
|
by(builtin(>, 2))
|
|
164
164
|
)
|
|
165
165
|
])
|