eyeling 1.34.5 → 1.34.6
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 +3 -90
- package/bin/eyeling.cjs +4 -56
- package/dist/browser/eyeling.browser.js +0 -1
- package/examples/context-schema-audit.n3 +1 -1
- package/eyeling.js +0 -1
- package/index.d.ts +3 -37
- package/index.js +1 -90
- package/lib/cli.js +0 -1
- package/package.json +3 -12
- package/test/packlist.test.js +0 -2
- package/test/run.js +0 -2
- package/docs/eyelang-guide.md +0 -535
- package/docs/eyelang-language-reference.md +0 -697
- package/examples/eyelang/access-control-policy.pl +0 -52
- package/examples/eyelang/ackermann.pl +0 -46
- package/examples/eyelang/age.pl +0 -28
- package/examples/eyelang/aliases-and-namespaces.pl +0 -22
- package/examples/eyelang/alignment-demo.pl +0 -44
- package/examples/eyelang/allen-interval-calculus.pl +0 -64
- package/examples/eyelang/ancestor.pl +0 -21
- package/examples/eyelang/animal.pl +0 -21
- package/examples/eyelang/annotation.pl +0 -34
- package/examples/eyelang/auroracare.pl +0 -309
- package/examples/eyelang/backward.pl +0 -12
- package/examples/eyelang/basic-monadic.pl +0 -10032
- package/examples/eyelang/bayes-diagnosis.pl +0 -108
- package/examples/eyelang/bayes-therapy.pl +0 -182
- package/examples/eyelang/beam-deflection.pl +0 -50
- package/examples/eyelang/blocks-world-planning.pl +0 -75
- package/examples/eyelang/bmi.pl +0 -232
- package/examples/eyelang/braking-safety-worlds.pl +0 -69
- package/examples/eyelang/buck-converter-design.pl +0 -78
- package/examples/eyelang/cache-performance.pl +0 -54
- package/examples/eyelang/canary-release.pl +0 -49
- package/examples/eyelang/cat-koko.pl +0 -24
- package/examples/eyelang/clinical-trial-screening.pl +0 -92
- package/examples/eyelang/combinatorics-findall-sort.pl +0 -37
- package/examples/eyelang/competitive-enzyme-kinetics.pl +0 -78
- package/examples/eyelang/complex.pl +0 -121
- package/examples/eyelang/composition-of-injective-functions-is-injective.pl +0 -50
- package/examples/eyelang/context-association.pl +0 -53
- package/examples/eyelang/context-schema-audit.pl +0 -46
- package/examples/eyelang/control-system.pl +0 -72
- package/examples/eyelang/cyclic-path.pl +0 -16
- package/examples/eyelang/d3-group.pl +0 -100
- package/examples/eyelang/dairy-energy-balance.pl +0 -65
- package/examples/eyelang/data-negotiation.pl +0 -39
- package/examples/eyelang/deep-taxonomy-10.pl +0 -115
- package/examples/eyelang/deep-taxonomy-100.pl +0 -385
- package/examples/eyelang/deep-taxonomy-1000.pl +0 -3085
- package/examples/eyelang/deep-taxonomy-10000.pl +0 -30094
- package/examples/eyelang/deep-taxonomy-100000.pl +0 -300184
- package/examples/eyelang/delfour.pl +0 -281
- package/examples/eyelang/deontic-logic.pl +0 -52
- package/examples/eyelang/derived-backward-rule.pl +0 -30
- package/examples/eyelang/derived-rule.pl +0 -27
- package/examples/eyelang/diamond-property.pl +0 -38
- package/examples/eyelang/dijkstra-findall-sort.pl +0 -44
- package/examples/eyelang/dijkstra-risk-path.pl +0 -86
- package/examples/eyelang/dijkstra.pl +0 -46
- package/examples/eyelang/dining-philosophers.pl +0 -140
- package/examples/eyelang/dog.pl +0 -25
- package/examples/eyelang/dpv-odrl-purpose-mapping.pl +0 -46
- package/examples/eyelang/drone-corridor-planner.pl +0 -51
- package/examples/eyelang/easter-computus.pl +0 -89
- package/examples/eyelang/electrical-rc-filter.pl +0 -36
- package/examples/eyelang/epidemic-policy.pl +0 -67
- package/examples/eyelang/equivalence-classes-overlap-implies-same-class.pl +0 -27
- package/examples/eyelang/eulerian-path.pl +0 -85
- package/examples/eyelang/ev-range-worlds.pl +0 -82
- package/examples/eyelang/existential-rule.pl +0 -18
- package/examples/eyelang/exoplanet-validation-worlds.pl +0 -88
- package/examples/eyelang/expression-eval.pl +0 -43
- package/examples/eyelang/family-cousins.pl +0 -65
- package/examples/eyelang/fastpow.pl +0 -53
- package/examples/eyelang/fft8-numeric.pl +0 -83
- package/examples/eyelang/fibonacci.pl +0 -53
- package/examples/eyelang/field-nitrogen-balance.pl +0 -70
- package/examples/eyelang/flandor.pl +0 -296
- package/examples/eyelang/floating-point.pl +0 -23
- package/examples/eyelang/four-color-map.pl +0 -127
- package/examples/eyelang/fundamental-theorem-arithmetic.pl +0 -113
- package/examples/eyelang/gd-step-certified.pl +0 -158
- package/examples/eyelang/gdpr-compliance.pl +0 -69
- package/examples/eyelang/good-cobbler.pl +0 -14
- package/examples/eyelang/gps.pl +0 -152
- package/examples/eyelang/graph-reachability.pl +0 -36
- package/examples/eyelang/gray-code-counter.pl +0 -48
- package/examples/eyelang/greatest-lower-bound-uniqueness.pl +0 -28
- package/examples/eyelang/group-inverse-uniqueness.pl +0 -34
- package/examples/eyelang/hamiltonian-path.pl +0 -49
- package/examples/eyelang/hamming-code.pl +0 -105
- package/examples/eyelang/hanoi.pl +0 -20
- package/examples/eyelang/heat-loss.pl +0 -51
- package/examples/eyelang/heron-theorem.pl +0 -36
- package/examples/eyelang/ideal-gas-law.pl +0 -37
- package/examples/eyelang/illegitimate-reasoning.pl +0 -88
- package/examples/eyelang/knowledge-engineering-alignment-flow.pl +0 -40
- package/examples/eyelang/law-of-cosines.pl +0 -31
- package/examples/eyelang/least-squares-regression.pl +0 -81
- package/examples/eyelang/list-collection.pl +0 -33
- package/examples/eyelang/lldm.pl +0 -78
- package/examples/eyelang/manufacturing-quality-control.pl +0 -73
- package/examples/eyelang/microgrid-dispatch.pl +0 -85
- package/examples/eyelang/monkey-bananas.pl +0 -45
- package/examples/eyelang/network-sla.pl +0 -48
- package/examples/eyelang/newton-raphson.pl +0 -49
- package/examples/eyelang/nixon-diamond.pl +0 -37
- package/examples/eyelang/observability-log-correlation.pl +0 -34
- package/examples/eyelang/odrl-dpv-fpv-trust-flow.pl +0 -43
- package/examples/eyelang/odrl-dpv-healthcare-risk-ranked.pl +0 -266
- package/examples/eyelang/odrl-dpv-risk-ranked.pl +0 -320
- package/examples/eyelang/orbital-transfer-design.pl +0 -113
- package/examples/eyelang/output/access-control-policy.pl +0 -2
- package/examples/eyelang/output/ackermann.pl +0 -12
- package/examples/eyelang/output/age.pl +0 -2
- package/examples/eyelang/output/aliases-and-namespaces.pl +0 -5
- package/examples/eyelang/output/alignment-demo.pl +0 -32
- package/examples/eyelang/output/allen-interval-calculus.pl +0 -154
- package/examples/eyelang/output/ancestor.pl +0 -6
- package/examples/eyelang/output/animal.pl +0 -4
- package/examples/eyelang/output/annotation.pl +0 -4
- package/examples/eyelang/output/auroracare.pl +0 -117
- package/examples/eyelang/output/backward.pl +0 -1
- package/examples/eyelang/output/basic-monadic.pl +0 -1518
- package/examples/eyelang/output/bayes-diagnosis.pl +0 -13
- package/examples/eyelang/output/bayes-therapy.pl +0 -23
- package/examples/eyelang/output/beam-deflection.pl +0 -5
- package/examples/eyelang/output/blocks-world-planning.pl +0 -4
- package/examples/eyelang/output/bmi.pl +0 -32
- package/examples/eyelang/output/braking-safety-worlds.pl +0 -18
- package/examples/eyelang/output/buck-converter-design.pl +0 -6
- package/examples/eyelang/output/cache-performance.pl +0 -4
- package/examples/eyelang/output/canary-release.pl +0 -5
- package/examples/eyelang/output/cat-koko.pl +0 -3
- package/examples/eyelang/output/clinical-trial-screening.pl +0 -9
- package/examples/eyelang/output/combinatorics-findall-sort.pl +0 -2
- package/examples/eyelang/output/competitive-enzyme-kinetics.pl +0 -6
- package/examples/eyelang/output/complex.pl +0 -1
- package/examples/eyelang/output/composition-of-injective-functions-is-injective.pl +0 -2
- package/examples/eyelang/output/context-association.pl +0 -3
- package/examples/eyelang/output/context-schema-audit.pl +0 -12
- package/examples/eyelang/output/control-system.pl +0 -6
- package/examples/eyelang/output/cyclic-path.pl +0 -16
- package/examples/eyelang/output/d3-group.pl +0 -2
- package/examples/eyelang/output/dairy-energy-balance.pl +0 -13
- package/examples/eyelang/output/data-negotiation.pl +0 -1
- package/examples/eyelang/output/deep-taxonomy-10.pl +0 -16
- package/examples/eyelang/output/deep-taxonomy-100.pl +0 -16
- package/examples/eyelang/output/deep-taxonomy-1000.pl +0 -16
- package/examples/eyelang/output/deep-taxonomy-10000.pl +0 -16
- package/examples/eyelang/output/deep-taxonomy-100000.pl +0 -16
- package/examples/eyelang/output/delfour.pl +0 -31
- package/examples/eyelang/output/deontic-logic.pl +0 -4
- package/examples/eyelang/output/derived-backward-rule.pl +0 -3
- package/examples/eyelang/output/derived-rule.pl +0 -2
- package/examples/eyelang/output/diamond-property.pl +0 -4
- package/examples/eyelang/output/dijkstra-findall-sort.pl +0 -2
- package/examples/eyelang/output/dijkstra-risk-path.pl +0 -29
- package/examples/eyelang/output/dijkstra.pl +0 -16
- package/examples/eyelang/output/dining-philosophers.pl +0 -350
- package/examples/eyelang/output/dog.pl +0 -1
- package/examples/eyelang/output/dpv-odrl-purpose-mapping.pl +0 -18
- package/examples/eyelang/output/drone-corridor-planner.pl +0 -17
- package/examples/eyelang/output/easter-computus.pl +0 -30
- package/examples/eyelang/output/electrical-rc-filter.pl +0 -3
- package/examples/eyelang/output/epidemic-policy.pl +0 -14
- package/examples/eyelang/output/equivalence-classes-overlap-implies-same-class.pl +0 -18
- package/examples/eyelang/output/eulerian-path.pl +0 -3
- package/examples/eyelang/output/ev-range-worlds.pl +0 -19
- package/examples/eyelang/output/existential-rule.pl +0 -2
- package/examples/eyelang/output/exoplanet-validation-worlds.pl +0 -22
- package/examples/eyelang/output/expression-eval.pl +0 -1
- package/examples/eyelang/output/family-cousins.pl +0 -28
- package/examples/eyelang/output/fastpow.pl +0 -6
- package/examples/eyelang/output/fft8-numeric.pl +0 -4
- package/examples/eyelang/output/fibonacci.pl +0 -6
- package/examples/eyelang/output/field-nitrogen-balance.pl +0 -21
- package/examples/eyelang/output/flandor.pl +0 -43
- package/examples/eyelang/output/floating-point.pl +0 -9
- package/examples/eyelang/output/four-color-map.pl +0 -3
- package/examples/eyelang/output/fundamental-theorem-arithmetic.pl +0 -9
- package/examples/eyelang/output/gd-step-certified.pl +0 -79
- package/examples/eyelang/output/gdpr-compliance.pl +0 -6
- package/examples/eyelang/output/good-cobbler.pl +0 -1
- package/examples/eyelang/output/gps.pl +0 -21
- package/examples/eyelang/output/graph-reachability.pl +0 -3
- package/examples/eyelang/output/gray-code-counter.pl +0 -1
- package/examples/eyelang/output/greatest-lower-bound-uniqueness.pl +0 -2
- package/examples/eyelang/output/group-inverse-uniqueness.pl +0 -2
- package/examples/eyelang/output/hamiltonian-path.pl +0 -121
- package/examples/eyelang/output/hamming-code.pl +0 -6
- package/examples/eyelang/output/hanoi.pl +0 -1
- package/examples/eyelang/output/heat-loss.pl +0 -5
- package/examples/eyelang/output/heron-theorem.pl +0 -4
- package/examples/eyelang/output/ideal-gas-law.pl +0 -3
- package/examples/eyelang/output/illegitimate-reasoning.pl +0 -15
- package/examples/eyelang/output/knowledge-engineering-alignment-flow.pl +0 -17
- package/examples/eyelang/output/law-of-cosines.pl +0 -3
- package/examples/eyelang/output/least-squares-regression.pl +0 -5
- package/examples/eyelang/output/list-collection.pl +0 -3
- package/examples/eyelang/output/lldm.pl +0 -6
- package/examples/eyelang/output/manufacturing-quality-control.pl +0 -6
- package/examples/eyelang/output/microgrid-dispatch.pl +0 -6
- package/examples/eyelang/output/monkey-bananas.pl +0 -5
- package/examples/eyelang/output/network-sla.pl +0 -4
- package/examples/eyelang/output/newton-raphson.pl +0 -3
- package/examples/eyelang/output/nixon-diamond.pl +0 -5
- package/examples/eyelang/output/observability-log-correlation.pl +0 -28
- package/examples/eyelang/output/odrl-dpv-fpv-trust-flow.pl +0 -9
- package/examples/eyelang/output/odrl-dpv-healthcare-risk-ranked.pl +0 -42
- package/examples/eyelang/output/odrl-dpv-risk-ranked.pl +0 -120
- package/examples/eyelang/output/orbital-transfer-design.pl +0 -7
- package/examples/eyelang/output/path-discovery.pl +0 -3
- package/examples/eyelang/output/peano-arithmetic.pl +0 -3
- package/examples/eyelang/output/peasant.pl +0 -10
- package/examples/eyelang/output/pendulum-period.pl +0 -4
- package/examples/eyelang/output/polynomial.pl +0 -14
- package/examples/eyelang/output/proof-contrapositive.pl +0 -3
- package/examples/eyelang/output/quadratic-formula.pl +0 -6
- package/examples/eyelang/output/radioactive-decay.pl +0 -5
- package/examples/eyelang/output/reusable-builtins.pl +0 -5
- package/examples/eyelang/output/riemann-hypothesis.pl +0 -12
- package/examples/eyelang/output/security-incident-correlation.pl +0 -3
- package/examples/eyelang/output/service-impact.pl +0 -11
- package/examples/eyelang/output/sieve.pl +0 -1
- package/examples/eyelang/output/skolem-functions.pl +0 -16
- package/examples/eyelang/output/socket-age.pl +0 -1
- package/examples/eyelang/output/socket-family.pl +0 -3
- package/examples/eyelang/output/socrates.pl +0 -2
- package/examples/eyelang/output/statistics-summary.pl +0 -4
- package/examples/eyelang/output/superdense-coding.pl +0 -6
- package/examples/eyelang/output/term-tools.pl +0 -6
- package/examples/eyelang/output/trust-flow-provenance-threshold.pl +0 -6
- package/examples/eyelang/output/turing.pl +0 -12
- package/examples/eyelang/output/vector-similarity.pl +0 -4
- package/examples/eyelang/output/vulnerability-impact.pl +0 -20
- package/examples/eyelang/output/witch.pl +0 -7
- package/examples/eyelang/output/wolf-goat-cabbage.pl +0 -3
- package/examples/eyelang/output/zebra.pl +0 -3
- package/examples/eyelang/path-discovery.pl +0 -45013
- package/examples/eyelang/peano-arithmetic.pl +0 -31
- package/examples/eyelang/peasant.pl +0 -30
- package/examples/eyelang/pendulum-period.pl +0 -50
- package/examples/eyelang/polynomial.pl +0 -124
- package/examples/eyelang/proof/age.pl +0 -71
- package/examples/eyelang/proof/aliases-and-namespaces.pl +0 -78
- package/examples/eyelang/proof/ancestor.pl +0 -140
- package/examples/eyelang/proof/animal.pl +0 -68
- package/examples/eyelang/proof/annotation.pl +0 -80
- package/examples/eyelang/proof/backward.pl +0 -22
- package/examples/eyelang/proof/cat-koko.pl +0 -86
- package/examples/eyelang/proof/data-negotiation.pl +0 -76
- package/examples/eyelang/proof/derived-rule.pl +0 -43
- package/examples/eyelang/proof/dog.pl +0 -31
- package/examples/eyelang/proof/electrical-rc-filter.pl +0 -105
- package/examples/eyelang/proof/existential-rule.pl +0 -40
- package/examples/eyelang/proof/floating-point.pl +0 -160
- package/examples/eyelang/proof/good-cobbler.pl +0 -16
- package/examples/eyelang/proof/group-inverse-uniqueness.pl +0 -84
- package/examples/eyelang/proof/list-collection.pl +0 -52
- package/examples/eyelang/proof/proof-contrapositive.pl +0 -78
- package/examples/eyelang/proof/socket-age.pl +0 -32
- package/examples/eyelang/proof/socket-family.pl +0 -59
- package/examples/eyelang/proof/socrates.pl +0 -38
- package/examples/eyelang/proof-contrapositive.pl +0 -27
- package/examples/eyelang/quadratic-formula.pl +0 -54
- package/examples/eyelang/radioactive-decay.pl +0 -56
- package/examples/eyelang/reusable-builtins.pl +0 -32
- package/examples/eyelang/riemann-hypothesis.pl +0 -110
- package/examples/eyelang/security-incident-correlation.pl +0 -69
- package/examples/eyelang/service-impact.pl +0 -41
- package/examples/eyelang/sieve.pl +0 -20
- package/examples/eyelang/skolem-functions.pl +0 -52
- package/examples/eyelang/socket-age.pl +0 -39
- package/examples/eyelang/socket-family.pl +0 -28
- package/examples/eyelang/socrates.pl +0 -19
- package/examples/eyelang/statistics-summary.pl +0 -54
- package/examples/eyelang/superdense-coding.pl +0 -84
- package/examples/eyelang/term-tools.pl +0 -23
- package/examples/eyelang/trust-flow-provenance-threshold.pl +0 -40
- package/examples/eyelang/turing.pl +0 -67
- package/examples/eyelang/vector-similarity.pl +0 -56
- package/examples/eyelang/vulnerability-impact.pl +0 -70
- package/examples/eyelang/witch.pl +0 -38
- package/examples/eyelang/wolf-goat-cabbage.pl +0 -56
- package/examples/eyelang/zebra.pl +0 -44
- package/eyelang.d.ts +0 -80
- package/lib/eyelang/bin.js +0 -7
- package/lib/eyelang/builtins/aggregation.js +0 -81
- package/lib/eyelang/builtins/arithmetic.js +0 -208
- package/lib/eyelang/builtins/context.js +0 -42
- package/lib/eyelang/builtins/control.js +0 -34
- package/lib/eyelang/builtins/core.js +0 -78
- package/lib/eyelang/builtins/lists.js +0 -283
- package/lib/eyelang/builtins/registry.js +0 -48
- package/lib/eyelang/builtins/strings.js +0 -234
- package/lib/eyelang/builtins/terms.js +0 -66
- package/lib/eyelang/cli.js +0 -180
- package/lib/eyelang/explain.js +0 -324
- package/lib/eyelang/hash.js +0 -294
- package/lib/eyelang/index.js +0 -47
- package/lib/eyelang/package.json +0 -3
- package/lib/eyelang/parser.js +0 -428
- package/lib/eyelang/program.js +0 -237
- package/lib/eyelang/solver.js +0 -237
- package/lib/eyelang/term.js +0 -328
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
% EYE reasoning-inspired example: braking safety in alternative worlds.
|
|
2
|
-
%
|
|
3
|
-
% Four simplified models classify the same road scenarios. The example is not a
|
|
4
|
-
% real safety calculator; it demonstrates rule-level model comparison.
|
|
5
|
-
|
|
6
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
7
|
-
materialize(safeInWorld, 2).
|
|
8
|
-
materialize(riskyInWorld, 2).
|
|
9
|
-
materialize(status, 2).
|
|
10
|
-
materialize(reason, 2).
|
|
11
|
-
|
|
12
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
13
|
-
scenario(city_dry, 13.9, 0.8, 40.0).
|
|
14
|
-
scenario(highway_dry_short_gap, 27.8, 0.8, 60.0).
|
|
15
|
-
scenario(city_wet, 13.9, 0.4, 40.0).
|
|
16
|
-
scenario(city_ice, 13.9, 0.2, 30.0).
|
|
17
|
-
|
|
18
|
-
world(w0, "physics-based stopping distance with reaction time").
|
|
19
|
-
world(w1, "simplified braking-only rule without reaction time").
|
|
20
|
-
world(w2, "naive dry-road friction assumption").
|
|
21
|
-
world(w3, "cautious factor over the physics model").
|
|
22
|
-
|
|
23
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
24
|
-
stop_distance(Scenario, w0, Distance) :-
|
|
25
|
-
scenario(Scenario, V, Mu, Avail),
|
|
26
|
-
mul(V, 1.0, Reaction),
|
|
27
|
-
pow(V, 2.0, V2),
|
|
28
|
-
mul(Mu, 2.0, M2),
|
|
29
|
-
mul(M2, 9.8, Denom),
|
|
30
|
-
div(V2, Denom, Braking),
|
|
31
|
-
add(Reaction, Braking, Distance).
|
|
32
|
-
|
|
33
|
-
stop_distance(Scenario, w1, Distance) :-
|
|
34
|
-
scenario(Scenario, V, Mu, Avail),
|
|
35
|
-
pow(V, 2.0, V2),
|
|
36
|
-
mul(Mu, 2.0, M2),
|
|
37
|
-
mul(M2, 10.0, Denom),
|
|
38
|
-
div(V2, Denom, Distance).
|
|
39
|
-
|
|
40
|
-
stop_distance(Scenario, w2, Distance) :-
|
|
41
|
-
scenario(Scenario, V, Mu, Avail),
|
|
42
|
-
pow(V, 2.0, V2),
|
|
43
|
-
div(V2, 14.0, Distance).
|
|
44
|
-
|
|
45
|
-
stop_distance(Scenario, w3, Distance) :-
|
|
46
|
-
stop_distance(Scenario, w0, W0Distance),
|
|
47
|
-
mul(W0Distance, 1.5, Distance).
|
|
48
|
-
|
|
49
|
-
safe_in_world(Scenario, World) :-
|
|
50
|
-
scenario(Scenario, V, Mu, Avail),
|
|
51
|
-
stop_distance(Scenario, World, Distance),
|
|
52
|
-
le(Distance, Avail).
|
|
53
|
-
|
|
54
|
-
risky_in_world(Scenario, World) :-
|
|
55
|
-
scenario(Scenario, V, Mu, Avail),
|
|
56
|
-
stop_distance(Scenario, World, Distance),
|
|
57
|
-
gt(Distance, Avail).
|
|
58
|
-
|
|
59
|
-
pattern_matches(report) :-
|
|
60
|
-
safe_in_world(city_dry, w0), safe_in_world(city_dry, w1), safe_in_world(city_dry, w2), safe_in_world(city_dry, w3),
|
|
61
|
-
risky_in_world(highway_dry_short_gap, w0), risky_in_world(highway_dry_short_gap, w3),
|
|
62
|
-
safe_in_world(highway_dry_short_gap, w1), safe_in_world(highway_dry_short_gap, w2),
|
|
63
|
-
safe_in_world(city_wet, w0), safe_in_world(city_wet, w1), safe_in_world(city_wet, w2), risky_in_world(city_wet, w3),
|
|
64
|
-
risky_in_world(city_ice, w0), risky_in_world(city_ice, w1), risky_in_world(city_ice, w3), safe_in_world(city_ice, w2).
|
|
65
|
-
|
|
66
|
-
safeInWorld(Scenario, World) :- safe_in_world(Scenario, World).
|
|
67
|
-
riskyInWorld(Scenario, World) :- risky_in_world(Scenario, World).
|
|
68
|
-
status(braking_safety_worlds, expected_world_pattern) :- pattern_matches(report).
|
|
69
|
-
reason(braking_safety_worlds, "simplified and naive worlds can be optimistic while the cautious world tightens the reference model") :- pattern_matches(report).
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
% Engineering example: buck-converter ripple check.
|
|
2
|
-
%
|
|
3
|
-
% A simplified continuous-conduction buck converter model computes duty cycle,
|
|
4
|
-
% inductor ripple current, capacitor ripple voltage, and checks design limits.
|
|
5
|
-
|
|
6
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
7
|
-
materialize(dutyCycle, 2).
|
|
8
|
-
materialize(inductorRipple_A, 2).
|
|
9
|
-
materialize(rippleRatio, 2).
|
|
10
|
-
materialize(capacitorRipple_V, 2).
|
|
11
|
-
materialize(status, 2).
|
|
12
|
-
materialize(reason, 2).
|
|
13
|
-
|
|
14
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
15
|
-
converter(regulator1, inputVoltage_V, 24.0).
|
|
16
|
-
converter(regulator1, outputVoltage_V, 5.0).
|
|
17
|
-
converter(regulator1, loadCurrent_A, 2.0).
|
|
18
|
-
converter(regulator1, switchingFrequency_Hz, 500000.0).
|
|
19
|
-
converter(regulator1, inductance_H, 0.000022).
|
|
20
|
-
converter(regulator1, capacitance_F, 0.000047).
|
|
21
|
-
limit(regulator1, maxRippleRatio, 0.30).
|
|
22
|
-
limit(regulator1, maxOutputRipple_V, 0.05).
|
|
23
|
-
|
|
24
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
25
|
-
duty_cycle(Converter, Duty) :-
|
|
26
|
-
converter(Converter, outputVoltage_V, OutputVoltage),
|
|
27
|
-
converter(Converter, inputVoltage_V, InputVoltage),
|
|
28
|
-
div(OutputVoltage, InputVoltage, Duty).
|
|
29
|
-
|
|
30
|
-
inductor_ripple_current(Converter, RippleCurrent) :-
|
|
31
|
-
converter(Converter, inputVoltage_V, InputVoltage),
|
|
32
|
-
converter(Converter, outputVoltage_V, OutputVoltage),
|
|
33
|
-
converter(Converter, inductance_H, Inductance),
|
|
34
|
-
converter(Converter, switchingFrequency_Hz, Frequency),
|
|
35
|
-
duty_cycle(Converter, Duty),
|
|
36
|
-
sub(InputVoltage, OutputVoltage, VoltageAcrossInductor),
|
|
37
|
-
mul(VoltageAcrossInductor, Duty, Numerator),
|
|
38
|
-
mul(Inductance, Frequency, Denominator),
|
|
39
|
-
div(Numerator, Denominator, RippleCurrent).
|
|
40
|
-
|
|
41
|
-
ripple_ratio(Converter, Ratio) :-
|
|
42
|
-
inductor_ripple_current(Converter, RippleCurrent),
|
|
43
|
-
converter(Converter, loadCurrent_A, LoadCurrent),
|
|
44
|
-
div(RippleCurrent, LoadCurrent, Ratio).
|
|
45
|
-
|
|
46
|
-
capacitor_ripple_voltage(Converter, RippleVoltage) :-
|
|
47
|
-
inductor_ripple_current(Converter, RippleCurrent),
|
|
48
|
-
converter(Converter, switchingFrequency_Hz, Frequency),
|
|
49
|
-
converter(Converter, capacitance_F, Capacitance),
|
|
50
|
-
mul(8.0, Frequency, EightF),
|
|
51
|
-
mul(EightF, Capacitance, Denominator),
|
|
52
|
-
div(RippleCurrent, Denominator, RippleVoltage).
|
|
53
|
-
|
|
54
|
-
within_ripple_limits(Converter) :-
|
|
55
|
-
ripple_ratio(Converter, Ratio),
|
|
56
|
-
limit(Converter, maxRippleRatio, MaxRatio),
|
|
57
|
-
lt(Ratio, MaxRatio),
|
|
58
|
-
capacitor_ripple_voltage(Converter, RippleVoltage),
|
|
59
|
-
limit(Converter, maxOutputRipple_V, MaxRippleVoltage),
|
|
60
|
-
lt(RippleVoltage, MaxRippleVoltage).
|
|
61
|
-
|
|
62
|
-
dutyCycle(Converter, Duty) :-
|
|
63
|
-
duty_cycle(Converter, Duty).
|
|
64
|
-
|
|
65
|
-
inductorRipple_A(Converter, RippleCurrent) :-
|
|
66
|
-
inductor_ripple_current(Converter, RippleCurrent).
|
|
67
|
-
|
|
68
|
-
rippleRatio(Converter, Ratio) :-
|
|
69
|
-
ripple_ratio(Converter, Ratio).
|
|
70
|
-
|
|
71
|
-
capacitorRipple_V(Converter, RippleVoltage) :-
|
|
72
|
-
capacitor_ripple_voltage(Converter, RippleVoltage).
|
|
73
|
-
|
|
74
|
-
status(Converter, stable_ripple_design) :-
|
|
75
|
-
within_ripple_limits(Converter).
|
|
76
|
-
|
|
77
|
-
reason(Converter, "inductor-current and output-voltage ripple are below design limits") :-
|
|
78
|
-
within_ripple_limits(Converter).
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
% Technology example: cache performance summary.
|
|
2
|
-
%
|
|
3
|
-
% A service has cache hits and misses with different response latencies. The
|
|
4
|
-
% rules compute hit rate and weighted average latency, then classify whether
|
|
5
|
-
% the cache is effective.
|
|
6
|
-
|
|
7
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
8
|
-
materialize(hitRate, 2).
|
|
9
|
-
materialize(averageLatency_ms, 2).
|
|
10
|
-
materialize(status, 2).
|
|
11
|
-
materialize(reason, 2).
|
|
12
|
-
|
|
13
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
14
|
-
cache_sample(api_cache, 8600.0, 1400.0, 5.0, 80.0).
|
|
15
|
-
threshold(api_cache, minimum_hit_rate, 0.80).
|
|
16
|
-
threshold(api_cache, maximum_average_latency_ms, 20.0).
|
|
17
|
-
|
|
18
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
19
|
-
total_requests(Cache, Total) :-
|
|
20
|
-
cache_sample(Cache, Hits, Misses, _HitLatency, _MissLatency),
|
|
21
|
-
add(Hits, Misses, Total).
|
|
22
|
-
|
|
23
|
-
hit_rate(Cache, Rate) :-
|
|
24
|
-
cache_sample(Cache, Hits, _Misses, _HitLatency, _MissLatency),
|
|
25
|
-
total_requests(Cache, Total),
|
|
26
|
-
div(Hits, Total, Rate).
|
|
27
|
-
|
|
28
|
-
average_latency(Cache, Average) :-
|
|
29
|
-
cache_sample(Cache, Hits, Misses, HitLatency, MissLatency),
|
|
30
|
-
mul(Hits, HitLatency, HitCost),
|
|
31
|
-
mul(Misses, MissLatency, MissCost),
|
|
32
|
-
add(HitCost, MissCost, TotalCost),
|
|
33
|
-
total_requests(Cache, Total),
|
|
34
|
-
div(TotalCost, Total, Average).
|
|
35
|
-
|
|
36
|
-
cache_effective(Cache) :-
|
|
37
|
-
hit_rate(Cache, Rate),
|
|
38
|
-
threshold(Cache, minimum_hit_rate, MinimumRate),
|
|
39
|
-
gt(Rate, MinimumRate),
|
|
40
|
-
average_latency(Cache, Average),
|
|
41
|
-
threshold(Cache, maximum_average_latency_ms, MaximumLatency),
|
|
42
|
-
lt(Average, MaximumLatency).
|
|
43
|
-
|
|
44
|
-
hitRate(Cache, Rate) :-
|
|
45
|
-
hit_rate(Cache, Rate).
|
|
46
|
-
|
|
47
|
-
averageLatency_ms(Cache, Average) :-
|
|
48
|
-
average_latency(Cache, Average).
|
|
49
|
-
|
|
50
|
-
status(Cache, cache_effective) :-
|
|
51
|
-
cache_effective(Cache).
|
|
52
|
-
|
|
53
|
-
reason(Cache, "hit rate is above target and average latency is below limit") :-
|
|
54
|
-
cache_effective(Cache).
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
% Technology example: canary release decision.
|
|
2
|
-
%
|
|
3
|
-
% A canary deployment is rolled back when its measured error rate exceeds the
|
|
4
|
-
% allowed budget, even when latency is still acceptable.
|
|
5
|
-
|
|
6
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
7
|
-
materialize(errorRate, 2).
|
|
8
|
-
materialize(p95Latency_ms, 2).
|
|
9
|
-
materialize(latencyCheck, 2).
|
|
10
|
-
materialize(status, 2).
|
|
11
|
-
materialize(reason, 2).
|
|
12
|
-
|
|
13
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
14
|
-
canary(canary42, 5000.0, 75.0, 180.0).
|
|
15
|
-
threshold(canary42, maximum_error_rate, 0.01).
|
|
16
|
-
threshold(canary42, maximum_p95_latency_ms, 200.0).
|
|
17
|
-
|
|
18
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
19
|
-
error_rate(Release, Rate) :-
|
|
20
|
-
canary(Release, Requests, Errors, _P95Latency),
|
|
21
|
-
div(Errors, Requests, Rate).
|
|
22
|
-
|
|
23
|
-
latency_ok(Release) :-
|
|
24
|
-
canary(Release, _Requests, _Errors, P95Latency),
|
|
25
|
-
threshold(Release, maximum_p95_latency_ms, Maximum),
|
|
26
|
-
lt(P95Latency, Maximum).
|
|
27
|
-
|
|
28
|
-
error_budget_exceeded(Release) :-
|
|
29
|
-
error_rate(Release, Rate),
|
|
30
|
-
threshold(Release, maximum_error_rate, Maximum),
|
|
31
|
-
gt(Rate, Maximum).
|
|
32
|
-
|
|
33
|
-
rollback_recommended(Release) :-
|
|
34
|
-
error_budget_exceeded(Release).
|
|
35
|
-
|
|
36
|
-
errorRate(Release, Rate) :-
|
|
37
|
-
error_rate(Release, Rate).
|
|
38
|
-
|
|
39
|
-
p95Latency_ms(Release, P95Latency) :-
|
|
40
|
-
canary(Release, _Requests, _Errors, P95Latency).
|
|
41
|
-
|
|
42
|
-
latencyCheck(Release, ok) :-
|
|
43
|
-
latency_ok(Release).
|
|
44
|
-
|
|
45
|
-
status(Release, rollback_recommended) :-
|
|
46
|
-
rollback_recommended(Release).
|
|
47
|
-
|
|
48
|
-
reason(Release, "canary error rate exceeds the allowed budget") :-
|
|
49
|
-
rollback_recommended(Release).
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
% Cat Koko, adapted from Eyeling's examples/cat-koko.n3.
|
|
2
|
-
%
|
|
3
|
-
% The Eyeling output contains two existential witnesses. eyelang has no blank
|
|
4
|
-
% node constructor in the portable core, so this adaptation names those
|
|
5
|
-
% witnesses sk_0 and sk_1.
|
|
6
|
-
|
|
7
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
8
|
-
materialize(type, 2).
|
|
9
|
-
materialize(is, 2).
|
|
10
|
-
|
|
11
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
12
|
-
animal(koko).
|
|
13
|
-
|
|
14
|
-
witness(cat, sk_0).
|
|
15
|
-
witness(british_short_hair, sk_1).
|
|
16
|
-
|
|
17
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
18
|
-
type(X, cat) :- animal(koko), witness(cat, X).
|
|
19
|
-
type(X, british_short_hair) :- animal(koko), witness(british_short_hair, X).
|
|
20
|
-
|
|
21
|
-
is(test, true) :-
|
|
22
|
-
type(X, cat),
|
|
23
|
-
type(Y, british_short_hair),
|
|
24
|
-
neq(X, Y).
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
% Representative example: clinical-trial screening.
|
|
2
|
-
%
|
|
3
|
-
% The program models a small diabetes trial screening workflow. Helper
|
|
4
|
-
% predicates keep the inclusion/exclusion logic separate from the concise
|
|
5
|
-
% public relation report.
|
|
6
|
-
|
|
7
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
8
|
-
materialize(type, 2).
|
|
9
|
-
materialize(status, 2).
|
|
10
|
-
materialize(reason, 2).
|
|
11
|
-
|
|
12
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
13
|
-
patient(p001).
|
|
14
|
-
patient(p002).
|
|
15
|
-
patient(p003).
|
|
16
|
-
patient(p004).
|
|
17
|
-
|
|
18
|
-
age(p001, 54).
|
|
19
|
-
age(p002, 67).
|
|
20
|
-
age(p003, 31).
|
|
21
|
-
age(p004, 45).
|
|
22
|
-
|
|
23
|
-
diagnosis(p001, type2_diabetes).
|
|
24
|
-
diagnosis(p002, type2_diabetes).
|
|
25
|
-
diagnosis(p003, type2_diabetes).
|
|
26
|
-
diagnosis(p004, type2_diabetes).
|
|
27
|
-
|
|
28
|
-
lab(p001, hba1c_pct, 8.4).
|
|
29
|
-
lab(p002, hba1c_pct, 7.9).
|
|
30
|
-
lab(p003, hba1c_pct, 9.1).
|
|
31
|
-
lab(p004, hba1c_pct, 6.4).
|
|
32
|
-
|
|
33
|
-
lab(p001, egfr_ml_min, 83.0).
|
|
34
|
-
lab(p002, egfr_ml_min, 38.0).
|
|
35
|
-
lab(p003, egfr_ml_min, 91.0).
|
|
36
|
-
lab(p004, egfr_ml_min, 72.0).
|
|
37
|
-
|
|
38
|
-
condition(p003, pregnant).
|
|
39
|
-
|
|
40
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
41
|
-
inclusion_adult(Patient) :-
|
|
42
|
-
patient(Patient),
|
|
43
|
-
age(Patient, Age),
|
|
44
|
-
ge(Age, 18).
|
|
45
|
-
|
|
46
|
-
inclusion_diagnosis(Patient) :-
|
|
47
|
-
diagnosis(Patient, type2_diabetes).
|
|
48
|
-
|
|
49
|
-
inclusion_hba1c(Patient) :-
|
|
50
|
-
lab(Patient, hba1c_pct, Hba1c),
|
|
51
|
-
ge(Hba1c, 7.0),
|
|
52
|
-
le(Hba1c, 10.5).
|
|
53
|
-
|
|
54
|
-
exclusion_renal(Patient) :-
|
|
55
|
-
lab(Patient, egfr_ml_min, Egfr),
|
|
56
|
-
lt(Egfr, 45.0).
|
|
57
|
-
|
|
58
|
-
exclusion_pregnancy(Patient) :-
|
|
59
|
-
condition(Patient, pregnant).
|
|
60
|
-
|
|
61
|
-
screen_eligible(Patient) :-
|
|
62
|
-
inclusion_adult(Patient),
|
|
63
|
-
inclusion_diagnosis(Patient),
|
|
64
|
-
inclusion_hba1c(Patient),
|
|
65
|
-
not(exclusion_renal(Patient)),
|
|
66
|
-
not(exclusion_pregnancy(Patient)).
|
|
67
|
-
|
|
68
|
-
screen_fail(Patient) :- exclusion_renal(Patient).
|
|
69
|
-
screen_fail(Patient) :- exclusion_pregnancy(Patient).
|
|
70
|
-
screen_fail(Patient) :- patient(Patient), not(inclusion_hba1c(Patient)).
|
|
71
|
-
|
|
72
|
-
type(Patient, trial_candidate) :-
|
|
73
|
-
screen_eligible(Patient).
|
|
74
|
-
|
|
75
|
-
status(Patient, eligible) :-
|
|
76
|
-
screen_eligible(Patient).
|
|
77
|
-
|
|
78
|
-
reason(Patient, "meets inclusion criteria and no listed exclusion") :-
|
|
79
|
-
screen_eligible(Patient).
|
|
80
|
-
|
|
81
|
-
status(Patient, screen_fail) :-
|
|
82
|
-
screen_fail(Patient).
|
|
83
|
-
|
|
84
|
-
reason(Patient, "eGFR below renal safety threshold") :-
|
|
85
|
-
exclusion_renal(Patient).
|
|
86
|
-
|
|
87
|
-
reason(Patient, "pregnancy exclusion applies") :-
|
|
88
|
-
exclusion_pregnancy(Patient).
|
|
89
|
-
|
|
90
|
-
reason(Patient, "HbA1c is outside protocol range") :-
|
|
91
|
-
patient(Patient),
|
|
92
|
-
not(inclusion_hba1c(Patient)).
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
% Eyelet-inspired combinations example using findall/3 and sort/2.
|
|
2
|
-
% The source-level select/3 relation remains an ordinary eyelang rule.
|
|
3
|
-
|
|
4
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
5
|
-
materialize(combinations, 2).
|
|
6
|
-
materialize(count, 2).
|
|
7
|
-
materialize(reason, 2).
|
|
8
|
-
|
|
9
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
10
|
-
% select/3 nondeterministically removes one item from a list.
|
|
11
|
-
select(Item, [Item | Rest], Rest).
|
|
12
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
13
|
-
select(Item, [Head | Tail], [Head | Rest]) :-
|
|
14
|
-
select(Item, Tail, Rest).
|
|
15
|
-
|
|
16
|
-
% combination/3 builds an unordered K-combination by repeated selection.
|
|
17
|
-
combination(0, _Items, []).
|
|
18
|
-
combination(I, Items, Combination) :-
|
|
19
|
-
gt(I, 0),
|
|
20
|
-
select(Item, Items, Remaining),
|
|
21
|
-
sub(I, 1, J),
|
|
22
|
-
combination(J, Remaining, Partial),
|
|
23
|
-
sort([Item | Partial], Combination).
|
|
24
|
-
|
|
25
|
-
% findall collects all generation orders; sort canonicalizes and deduplicates.
|
|
26
|
-
unique_combinations(K, Items, Unique) :-
|
|
27
|
-
findall(C, combination(K, Items, C), All),
|
|
28
|
-
sort(All, Unique).
|
|
29
|
-
|
|
30
|
-
combinations(combinations_5_choose_3, Unique) :-
|
|
31
|
-
unique_combinations(3, [1, 2, 3, 4, 5], Unique).
|
|
32
|
-
|
|
33
|
-
count(combinations_5_choose_3, Count) :-
|
|
34
|
-
unique_combinations(3, [1, 2, 3, 4, 5], Unique),
|
|
35
|
-
length(Unique, Count).
|
|
36
|
-
|
|
37
|
-
reason(combinations_5_choose_3, "findall gathers generated combinations and sort removes duplicates").
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
% Science example: competitive enzyme inhibition.
|
|
2
|
-
%
|
|
3
|
-
% Michaelis-Menten kinetics with a competitive inhibitor:
|
|
4
|
-
% Km_effective = Km * (1 + Inhibitor / Ki)
|
|
5
|
-
% rate = Vmax * Substrate / (Km_effective + Substrate)
|
|
6
|
-
|
|
7
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
8
|
-
materialize(effectiveKm_uM, 2).
|
|
9
|
-
materialize(uninhibitedRate_uM_s, 2).
|
|
10
|
-
materialize(inhibitedRate_uM_s, 2).
|
|
11
|
-
materialize(inhibitionFraction, 2).
|
|
12
|
-
materialize(status, 2).
|
|
13
|
-
materialize(reason, 2).
|
|
14
|
-
|
|
15
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
16
|
-
assay(assay1, vmax_uM_s, 120.0).
|
|
17
|
-
assay(assay1, substrate_uM, 50.0).
|
|
18
|
-
assay(assay1, km_uM, 30.0).
|
|
19
|
-
assay(assay1, inhibitor_uM, 10.0).
|
|
20
|
-
assay(assay1, ki_uM, 5.0).
|
|
21
|
-
threshold(assay1, significant_inhibition_fraction, 0.25).
|
|
22
|
-
|
|
23
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
24
|
-
competitive_multiplier(Assay, Multiplier) :-
|
|
25
|
-
assay(Assay, inhibitor_uM, Inhibitor),
|
|
26
|
-
assay(Assay, ki_uM, Ki),
|
|
27
|
-
div(Inhibitor, Ki, Ratio),
|
|
28
|
-
add(1.0, Ratio, Multiplier).
|
|
29
|
-
|
|
30
|
-
effective_km(Assay, EffectiveKm) :-
|
|
31
|
-
assay(Assay, km_uM, Km),
|
|
32
|
-
competitive_multiplier(Assay, Multiplier),
|
|
33
|
-
mul(Km, Multiplier, EffectiveKm).
|
|
34
|
-
|
|
35
|
-
uninhibited_rate(Assay, Rate) :-
|
|
36
|
-
assay(Assay, vmax_uM_s, Vmax),
|
|
37
|
-
assay(Assay, substrate_uM, Substrate),
|
|
38
|
-
assay(Assay, km_uM, Km),
|
|
39
|
-
mul(Vmax, Substrate, Numerator),
|
|
40
|
-
add(Km, Substrate, Denominator),
|
|
41
|
-
div(Numerator, Denominator, Rate).
|
|
42
|
-
|
|
43
|
-
inhibited_rate(Assay, Rate) :-
|
|
44
|
-
assay(Assay, vmax_uM_s, Vmax),
|
|
45
|
-
assay(Assay, substrate_uM, Substrate),
|
|
46
|
-
effective_km(Assay, EffectiveKm),
|
|
47
|
-
mul(Vmax, Substrate, Numerator),
|
|
48
|
-
add(EffectiveKm, Substrate, Denominator),
|
|
49
|
-
div(Numerator, Denominator, Rate).
|
|
50
|
-
|
|
51
|
-
inhibition_fraction(Assay, Fraction) :-
|
|
52
|
-
uninhibited_rate(Assay, Uninhibited),
|
|
53
|
-
inhibited_rate(Assay, Inhibited),
|
|
54
|
-
sub(Uninhibited, Inhibited, Delta),
|
|
55
|
-
div(Delta, Uninhibited, Fraction).
|
|
56
|
-
|
|
57
|
-
significant_inhibition(Assay) :-
|
|
58
|
-
inhibition_fraction(Assay, Fraction),
|
|
59
|
-
threshold(Assay, significant_inhibition_fraction, Limit),
|
|
60
|
-
gt(Fraction, Limit).
|
|
61
|
-
|
|
62
|
-
effectiveKm_uM(Assay, EffectiveKm) :-
|
|
63
|
-
effective_km(Assay, EffectiveKm).
|
|
64
|
-
|
|
65
|
-
uninhibitedRate_uM_s(Assay, Rate) :-
|
|
66
|
-
uninhibited_rate(Assay, Rate).
|
|
67
|
-
|
|
68
|
-
inhibitedRate_uM_s(Assay, Rate) :-
|
|
69
|
-
inhibited_rate(Assay, Rate).
|
|
70
|
-
|
|
71
|
-
inhibitionFraction(Assay, Fraction) :-
|
|
72
|
-
inhibition_fraction(Assay, Fraction).
|
|
73
|
-
|
|
74
|
-
status(Assay, significant_inhibition) :-
|
|
75
|
-
significant_inhibition(Assay).
|
|
76
|
-
|
|
77
|
-
reason(Assay, "competitive inhibitor raises effective Km and lowers reaction rate") :-
|
|
78
|
-
significant_inhibition(Assay).
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
% Complex numbers, adapted from Eyeling complex.n3.
|
|
2
|
-
%
|
|
3
|
-
% Complex values are represented as two-item lists [Real, Imaginary], matching
|
|
4
|
-
% the pair-shaped pair lists used by the Eyeling source.
|
|
5
|
-
|
|
6
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
7
|
-
materialize(is, 2).
|
|
8
|
-
|
|
9
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
10
|
-
pi(3.141592653589793).
|
|
11
|
-
e(2.718281828459045).
|
|
12
|
-
|
|
13
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
14
|
-
complex_exponentiation([A, B], [C, D], [E, F]) :-
|
|
15
|
-
complex_polar([A, B], [R, T]),
|
|
16
|
-
pow(R, C, Z1),
|
|
17
|
-
neg(D, Z2),
|
|
18
|
-
mul(Z2, T, Z3),
|
|
19
|
-
e(Euler),
|
|
20
|
-
pow(Euler, Z3, Z4),
|
|
21
|
-
log(R, Z5),
|
|
22
|
-
mul(D, Z5, Z6),
|
|
23
|
-
mul(C, T, Z7),
|
|
24
|
-
add(Z6, Z7, Z8),
|
|
25
|
-
cos(Z8, Z9),
|
|
26
|
-
mul(Z1, Z4, Z1Z4),
|
|
27
|
-
mul(Z1Z4, Z9, E),
|
|
28
|
-
sin(Z8, Z10),
|
|
29
|
-
mul(Z1Z4, Z10, F).
|
|
30
|
-
|
|
31
|
-
complex_asin([A, B], [C, D]) :-
|
|
32
|
-
add(1, A, Z1),
|
|
33
|
-
pow(Z1, 2, Z2),
|
|
34
|
-
pow(B, 2, Z3),
|
|
35
|
-
add(Z2, Z3, Z4),
|
|
36
|
-
pow(Z4, 0.5, Z5),
|
|
37
|
-
sub(1, A, Z6),
|
|
38
|
-
pow(Z6, 2, Z7),
|
|
39
|
-
add(Z7, Z3, Z8),
|
|
40
|
-
pow(Z8, 0.5, Z9),
|
|
41
|
-
sub(Z5, Z9, Z10),
|
|
42
|
-
div(Z10, 2, E),
|
|
43
|
-
add(Z5, Z9, Z11),
|
|
44
|
-
div(Z11, 2, F),
|
|
45
|
-
asin(E, C),
|
|
46
|
-
pow(F, 2, Z12),
|
|
47
|
-
sub(Z12, 1, Z13),
|
|
48
|
-
pow(Z13, 0.5, Z14),
|
|
49
|
-
add(F, Z14, Z15),
|
|
50
|
-
log(Z15, D).
|
|
51
|
-
|
|
52
|
-
complex_acos([A, B], [C, D]) :-
|
|
53
|
-
add(1, A, Z1),
|
|
54
|
-
pow(Z1, 2, Z2),
|
|
55
|
-
pow(B, 2, Z3),
|
|
56
|
-
add(Z2, Z3, Z4),
|
|
57
|
-
pow(Z4, 0.5, Z5),
|
|
58
|
-
sub(1, A, Z6),
|
|
59
|
-
pow(Z6, 2, Z7),
|
|
60
|
-
add(Z7, Z3, Z8),
|
|
61
|
-
pow(Z8, 0.5, Z9),
|
|
62
|
-
sub(Z5, Z9, Z10),
|
|
63
|
-
div(Z10, 2, E),
|
|
64
|
-
add(Z5, Z9, Z11),
|
|
65
|
-
div(Z11, 2, F),
|
|
66
|
-
acos(E, C),
|
|
67
|
-
pow(F, 2, Z12),
|
|
68
|
-
sub(Z12, 1, Z13),
|
|
69
|
-
pow(Z13, 0.5, Z14),
|
|
70
|
-
add(F, Z14, Z15),
|
|
71
|
-
log(Z15, U),
|
|
72
|
-
neg(U, D).
|
|
73
|
-
|
|
74
|
-
complex_polar([X, Y], [R, Tp]) :-
|
|
75
|
-
pow(X, 2, Z1),
|
|
76
|
-
pow(Y, 2, Z2),
|
|
77
|
-
add(Z1, Z2, Z3),
|
|
78
|
-
pow(Z3, 0.5, R),
|
|
79
|
-
abs(X, Z4),
|
|
80
|
-
div(Z4, R, Z5),
|
|
81
|
-
acos(Z5, T),
|
|
82
|
-
complex_dial(X, Y, T, Tp).
|
|
83
|
-
|
|
84
|
-
complex_dial(X, Y, T, Tp) :-
|
|
85
|
-
ge(X, 0),
|
|
86
|
-
ge(Y, 0),
|
|
87
|
-
add(0, T, Tp).
|
|
88
|
-
|
|
89
|
-
complex_dial(X, Y, T, Tp) :-
|
|
90
|
-
lt(X, 0),
|
|
91
|
-
ge(Y, 0),
|
|
92
|
-
pi(Pi),
|
|
93
|
-
sub(Pi, T, Tp).
|
|
94
|
-
|
|
95
|
-
complex_dial(X, Y, T, Tp) :-
|
|
96
|
-
lt(X, 0),
|
|
97
|
-
lt(Y, 0),
|
|
98
|
-
pi(Pi),
|
|
99
|
-
add(Pi, T, Tp).
|
|
100
|
-
|
|
101
|
-
complex_dial(X, Y, T, Tp) :-
|
|
102
|
-
ge(X, 0),
|
|
103
|
-
lt(Y, 0),
|
|
104
|
-
pi(Pi),
|
|
105
|
-
mul(Pi, 2, Z1),
|
|
106
|
-
sub(Z1, T, Tp).
|
|
107
|
-
|
|
108
|
-
is(test, (
|
|
109
|
-
complex_exponentiation(input(exponentiation, [-1, 0], [0.5, 0]), C1),
|
|
110
|
-
complex_exponentiation(input(exponentiation, [2.718281828459045, 0], [0, 3.141592653589793]), C2),
|
|
111
|
-
complex_exponentiation(input(exponentiation, [0, 1], [0, 1]), C3),
|
|
112
|
-
complex_exponentiation(input(exponentiation, [2.718281828459045, 0], [-1.57079632679, 0]), C4),
|
|
113
|
-
complex_asin(input(asin, [2, 0]), C5),
|
|
114
|
-
complex_acos(input(acos, [2, 0]), C6)
|
|
115
|
-
)) :-
|
|
116
|
-
complex_exponentiation([-1, 0], [0.5, 0], C1),
|
|
117
|
-
complex_exponentiation([2.718281828459045, 0], [0, 3.141592653589793], C2),
|
|
118
|
-
complex_exponentiation([0, 1], [0, 1], C3),
|
|
119
|
-
complex_exponentiation([2.718281828459045, 0], [-1.57079632679, 0], C4),
|
|
120
|
-
complex_asin([2, 0], C5),
|
|
121
|
-
complex_acos([2, 0], C6).
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
% Composition of injective functions is injective, adapted from Eyeling's
|
|
2
|
-
% examples/composition-of-injective-functions-is-injective.n3.
|
|
3
|
-
%
|
|
4
|
-
% The output mirrors the Eyeling golden result shape:
|
|
5
|
-
% sameInputByCompositeInjectivity(h, a, b) and the symmetric counterpart.
|
|
6
|
-
|
|
7
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
8
|
-
materialize(sameInputByCompositeInjectivity, 3).
|
|
9
|
-
|
|
10
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
11
|
-
inX(a).
|
|
12
|
-
inX(b).
|
|
13
|
-
inY(c).
|
|
14
|
-
inY(d).
|
|
15
|
-
inZ(e).
|
|
16
|
-
|
|
17
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
18
|
-
sameTerm(X, X) :- inX(X).
|
|
19
|
-
sameTerm(X, X) :- inY(X).
|
|
20
|
-
sameTerm(X, X) :- inZ(X).
|
|
21
|
-
sameTerm(Y, X) :- sameTerm(X, Y).
|
|
22
|
-
|
|
23
|
-
app(f, a, c).
|
|
24
|
-
app(f, b, d).
|
|
25
|
-
app(g, c, e).
|
|
26
|
-
app(g, d, e).
|
|
27
|
-
|
|
28
|
-
injective(f).
|
|
29
|
-
injective(g).
|
|
30
|
-
compositeOf(h, g, f).
|
|
31
|
-
|
|
32
|
-
app(H, X, Z) :-
|
|
33
|
-
compositeOf(H, G, F),
|
|
34
|
-
app(F, X, Y),
|
|
35
|
-
app(G, Y, Z).
|
|
36
|
-
|
|
37
|
-
sameTerm(X, Y) :-
|
|
38
|
-
injective(F),
|
|
39
|
-
app(F, X, U),
|
|
40
|
-
app(F, Y, V),
|
|
41
|
-
sameTerm(U, V).
|
|
42
|
-
|
|
43
|
-
sameInputByCompositeInjectivity(H, X, Y) :-
|
|
44
|
-
compositeOf(H, G, F),
|
|
45
|
-
injective(G),
|
|
46
|
-
injective(F),
|
|
47
|
-
app(H, X, Z),
|
|
48
|
-
app(H, Y, Z),
|
|
49
|
-
sameTerm(X, Y),
|
|
50
|
-
neq(X, Y).
|