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,158 +0,0 @@
|
|
|
1
|
-
% Memoize interval computations reused across width, midpoint, gradient, step,
|
|
2
|
-
% objective, and contraction report relations.
|
|
3
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
4
|
-
materialize(eta, 2).
|
|
5
|
-
materialize(etaLeHalf, 2).
|
|
6
|
-
materialize(xBounds, 2).
|
|
7
|
-
materialize(midpoint, 2).
|
|
8
|
-
materialize(width, 2).
|
|
9
|
-
materialize(gradientBounds, 2).
|
|
10
|
-
materialize(stepBounds, 2).
|
|
11
|
-
materialize(objectiveBounds, 2).
|
|
12
|
-
materialize(widthContractsAt, 2).
|
|
13
|
-
|
|
14
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
15
|
-
memoize(x_bounds, 3).
|
|
16
|
-
memoize(width, 2).
|
|
17
|
-
memoize(g_bounds, 3).
|
|
18
|
-
memoize(p_bounds, 3).
|
|
19
|
-
memoize(midpoint, 3).
|
|
20
|
-
memoize(f_lower, 2).
|
|
21
|
-
memoize(f_upper, 2).
|
|
22
|
-
|
|
23
|
-
% Adapted from Eyeling's gd-step-certified.n3.
|
|
24
|
-
% One-dimensional gradient descent over certified interval bounds.
|
|
25
|
-
|
|
26
|
-
max_k(10).
|
|
27
|
-
target(1.0).
|
|
28
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
29
|
-
eta(Eta) :- div(1.0, 5, Eta).
|
|
30
|
-
x_bounds(0, 0.0, 2.0).
|
|
31
|
-
|
|
32
|
-
index(0). index(1). index(2). index(3). index(4). index(5).
|
|
33
|
-
index(6). index(7). index(8). index(9). index(10).
|
|
34
|
-
|
|
35
|
-
previous(1, 0). previous(2, 1). previous(3, 2). previous(4, 3). previous(5, 4).
|
|
36
|
-
previous(6, 5). previous(7, 6). previous(8, 7). previous(9, 8). previous(10, 9).
|
|
37
|
-
|
|
38
|
-
g_bounds(K, GL, GU) :-
|
|
39
|
-
target(A),
|
|
40
|
-
x_bounds(K, L, U),
|
|
41
|
-
sub(L, A, DL),
|
|
42
|
-
sub(U, A, DU),
|
|
43
|
-
mul(2, DL, GL),
|
|
44
|
-
mul(2, DU, GU).
|
|
45
|
-
|
|
46
|
-
p_bounds(K, PL, PU) :-
|
|
47
|
-
eta(Eta),
|
|
48
|
-
g_bounds(K, GL, GU),
|
|
49
|
-
mul(Eta, GL, PL),
|
|
50
|
-
mul(Eta, GU, PU).
|
|
51
|
-
|
|
52
|
-
x_bounds(K1, L1, U1) :-
|
|
53
|
-
previous(K1, K),
|
|
54
|
-
x_bounds(K, L, U),
|
|
55
|
-
target(A),
|
|
56
|
-
eta(Eta),
|
|
57
|
-
sub(L, A, DL),
|
|
58
|
-
sub(U, A, DU),
|
|
59
|
-
mul(2, DL, GL),
|
|
60
|
-
mul(2, DU, GU),
|
|
61
|
-
mul(Eta, GL, PL),
|
|
62
|
-
mul(Eta, GU, PU),
|
|
63
|
-
sub(L, PU, L1),
|
|
64
|
-
sub(U, PL, U1).
|
|
65
|
-
|
|
66
|
-
width(K, W) :-
|
|
67
|
-
x_bounds(K, L, U),
|
|
68
|
-
sub(U, L, W).
|
|
69
|
-
|
|
70
|
-
midpoint(K, M, HalfW) :-
|
|
71
|
-
x_bounds(K, L, U),
|
|
72
|
-
width(K, W),
|
|
73
|
-
div(W, 2, HalfW),
|
|
74
|
-
add(L, U, Sum),
|
|
75
|
-
div(Sum, 2, M).
|
|
76
|
-
|
|
77
|
-
eta_le_half(true) :-
|
|
78
|
-
eta(Eta),
|
|
79
|
-
div(1.0, 2, Half),
|
|
80
|
-
le(Eta, Half).
|
|
81
|
-
|
|
82
|
-
width_contracts_at(K1, true) :-
|
|
83
|
-
eta_le_half(true),
|
|
84
|
-
previous(K1, K),
|
|
85
|
-
width(K, W),
|
|
86
|
-
width(K1, W1),
|
|
87
|
-
le(W1, W).
|
|
88
|
-
|
|
89
|
-
max2(A, B, A) :- ge(A, B).
|
|
90
|
-
max2(A, B, B) :- lt(A, B).
|
|
91
|
-
min2(A, B, A) :- le(A, B).
|
|
92
|
-
min2(A, B, B) :- gt(A, B).
|
|
93
|
-
|
|
94
|
-
end_squares(K, SL, SU) :-
|
|
95
|
-
target(A),
|
|
96
|
-
x_bounds(K, L, U),
|
|
97
|
-
sub(L, A, DL),
|
|
98
|
-
sub(U, A, DU),
|
|
99
|
-
mul(DL, DL, SL),
|
|
100
|
-
mul(DU, DU, SU).
|
|
101
|
-
|
|
102
|
-
f_upper(K, FU) :-
|
|
103
|
-
end_squares(K, SL, SU),
|
|
104
|
-
max2(SL, SU, FU).
|
|
105
|
-
|
|
106
|
-
f_lower(K, 0.0) :-
|
|
107
|
-
target(A),
|
|
108
|
-
x_bounds(K, L, U),
|
|
109
|
-
le(L, A),
|
|
110
|
-
le(A, U).
|
|
111
|
-
|
|
112
|
-
f_lower(K, FL) :-
|
|
113
|
-
target(A),
|
|
114
|
-
x_bounds(K, L, U),
|
|
115
|
-
lt(U, A),
|
|
116
|
-
end_squares(K, SL, SU),
|
|
117
|
-
min2(SL, SU, FL).
|
|
118
|
-
|
|
119
|
-
f_lower(K, FL) :-
|
|
120
|
-
target(A),
|
|
121
|
-
x_bounds(K, L, U),
|
|
122
|
-
lt(A, L),
|
|
123
|
-
end_squares(K, SL, SU),
|
|
124
|
-
min2(SL, SU, FL).
|
|
125
|
-
|
|
126
|
-
eta(result, Eta) :-
|
|
127
|
-
eta(Eta).
|
|
128
|
-
|
|
129
|
-
etaLeHalf(result, true) :-
|
|
130
|
-
eta_le_half(true).
|
|
131
|
-
|
|
132
|
-
xBounds(result, bounds(K, L, U)) :-
|
|
133
|
-
index(K),
|
|
134
|
-
x_bounds(K, L, U).
|
|
135
|
-
|
|
136
|
-
midpoint(result, midpoint(K, M, HalfW)) :-
|
|
137
|
-
index(K),
|
|
138
|
-
midpoint(K, M, HalfW).
|
|
139
|
-
|
|
140
|
-
width(result, width(K, W)) :-
|
|
141
|
-
index(K),
|
|
142
|
-
width(K, W).
|
|
143
|
-
|
|
144
|
-
gradientBounds(result, gradient(K, GL, GU)) :-
|
|
145
|
-
index(K),
|
|
146
|
-
g_bounds(K, GL, GU).
|
|
147
|
-
|
|
148
|
-
stepBounds(result, step(K, PL, PU)) :-
|
|
149
|
-
index(K),
|
|
150
|
-
p_bounds(K, PL, PU).
|
|
151
|
-
|
|
152
|
-
objectiveBounds(result, f(K, FL, FU)) :-
|
|
153
|
-
index(K),
|
|
154
|
-
f_lower(K, FL),
|
|
155
|
-
f_upper(K, FU).
|
|
156
|
-
|
|
157
|
-
widthContractsAt(result, K) :-
|
|
158
|
-
width_contracts_at(K, true).
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
% GDPR-style compliance check: purpose, basis, minimisation, safeguards, and export.
|
|
2
|
-
|
|
3
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
4
|
-
materialize(status, 2).
|
|
5
|
-
materialize(reason, 2).
|
|
6
|
-
|
|
7
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
8
|
-
% case_alpha is intended to pass; case_beta is intentionally incomplete.
|
|
9
|
-
processing(case_alpha).
|
|
10
|
-
processing(case_beta).
|
|
11
|
-
|
|
12
|
-
purpose(case_alpha, care_coordination).
|
|
13
|
-
purpose(case_beta, marketing).
|
|
14
|
-
|
|
15
|
-
legal_basis(case_alpha, explicit_consent).
|
|
16
|
-
% case_beta intentionally has no legal basis.
|
|
17
|
-
|
|
18
|
-
minimized(case_alpha).
|
|
19
|
-
not_minimized(case_beta).
|
|
20
|
-
|
|
21
|
-
special_category(case_alpha, health_data).
|
|
22
|
-
special_category(case_beta, health_data).
|
|
23
|
-
|
|
24
|
-
safeguard(case_alpha, encryption).
|
|
25
|
-
safeguard(case_alpha, access_logging).
|
|
26
|
-
safeguard(case_beta, encryption).
|
|
27
|
-
|
|
28
|
-
third_country_transfer(case_beta).
|
|
29
|
-
adequacy_decision(case_alpha).
|
|
30
|
-
|
|
31
|
-
% Compliance is decomposed into reusable checks so reasons can be reported.
|
|
32
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
33
|
-
has_required_basis(Case) :- legal_basis(Case, explicit_consent).
|
|
34
|
-
has_required_basis(Case) :- legal_basis(Case, medical_care).
|
|
35
|
-
|
|
36
|
-
has_health_safeguards(Case) :-
|
|
37
|
-
special_category(Case, health_data),
|
|
38
|
-
safeguard(Case, encryption),
|
|
39
|
-
safeguard(Case, access_logging).
|
|
40
|
-
|
|
41
|
-
transfer_ok(Case) :- not(third_country_transfer(Case)).
|
|
42
|
-
transfer_ok(Case) :- adequacy_decision(Case).
|
|
43
|
-
|
|
44
|
-
compliant(Case) :-
|
|
45
|
-
processing(Case),
|
|
46
|
-
has_required_basis(Case),
|
|
47
|
-
minimized(Case),
|
|
48
|
-
has_health_safeguards(Case),
|
|
49
|
-
transfer_ok(Case).
|
|
50
|
-
|
|
51
|
-
% Individual failure rules explain why a case is noncompliant.
|
|
52
|
-
noncompliance_reason(Case, missing_legal_basis) :-
|
|
53
|
-
processing(Case),
|
|
54
|
-
not(has_required_basis(Case)).
|
|
55
|
-
|
|
56
|
-
noncompliance_reason(Case, not_minimized) :-
|
|
57
|
-
not_minimized(Case).
|
|
58
|
-
|
|
59
|
-
noncompliance_reason(Case, missing_access_logging) :-
|
|
60
|
-
special_category(Case, health_data),
|
|
61
|
-
not(safeguard(Case, access_logging)).
|
|
62
|
-
|
|
63
|
-
noncompliance_reason(Case, transfer_without_adequacy) :-
|
|
64
|
-
third_country_transfer(Case),
|
|
65
|
-
not(adequacy_decision(Case)).
|
|
66
|
-
|
|
67
|
-
status(Case, gdpr_compliant) :- compliant(Case).
|
|
68
|
-
status(Case, gdpr_noncompliant) :- noncompliance_reason(Case, _Reason).
|
|
69
|
-
reason(Case, Reason) :- noncompliance_reason(Case, Reason).
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
% Good cobbler, adapted from Eyeling's examples/good-cobbler.n3.
|
|
2
|
-
%
|
|
3
|
-
% The Eyeling result is a quoted assertion saying that joe is a good Cobbler.
|
|
4
|
-
% Here the quoted assertion is represented as an eyelang term.
|
|
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
|
-
assertedIs(joe, good(cobbler)).
|
|
11
|
-
|
|
12
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
13
|
-
is(test, is(X, good(Y))) :-
|
|
14
|
-
assertedIs(X, good(Y)).
|
package/examples/eyelang/gps.pl
DELETED
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
% Memoize route paths because the same candidate routes are checked repeatedly
|
|
2
|
-
% for explanation and verification relations.
|
|
3
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
4
|
-
materialize(recommendedRoute, 2).
|
|
5
|
-
materialize(outcome, 2).
|
|
6
|
-
materialize(statement, 3).
|
|
7
|
-
materialize(label, 2).
|
|
8
|
-
materialize(actionSequence, 2).
|
|
9
|
-
materialize(durationSeconds, 2).
|
|
10
|
-
materialize(cost, 2).
|
|
11
|
-
materialize(belief, 2).
|
|
12
|
-
materialize(comfort, 2).
|
|
13
|
-
materialize(selectedRoute, 2).
|
|
14
|
-
materialize(comparison, 2).
|
|
15
|
-
|
|
16
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
17
|
-
memoize(path, 7).
|
|
18
|
-
memoize(traveller_path, 6).
|
|
19
|
-
|
|
20
|
-
% GPS — ARC-style goal-driven route planning, translated from Eyeling's gps.n3.
|
|
21
|
-
%
|
|
22
|
-
% The map is kept as quoted formula data. Rules project gps_description
|
|
23
|
-
% statements from that formula, chain them into paths, compare the two complete
|
|
24
|
-
% routes from Gent to Oostende, and produce a compact explanation report.
|
|
25
|
-
|
|
26
|
-
case_graph(caseGraph, (
|
|
27
|
-
location(i1, gent),
|
|
28
|
-
text(question, "Which route should we take from Gent to Oostende?"),
|
|
29
|
-
label(routeDirect, "Gent -> Brugge -> Oostende"),
|
|
30
|
-
label(routeViaKortrijk, "Gent -> Kortrijk -> Brugge -> Oostende")
|
|
31
|
-
)).
|
|
32
|
-
|
|
33
|
-
map_graph(mapBE, (
|
|
34
|
-
gps_description(mapBE, description(location(S, gent), true, location(S, brugge), drive_gent_brugge, 1500.0, 0.006, 0.96, 0.99)),
|
|
35
|
-
gps_description(mapBE, description(location(S, gent), true, location(S, kortrijk), drive_gent_kortrijk, 1600.0, 0.007, 0.96, 0.99)),
|
|
36
|
-
gps_description(mapBE, description(location(S, kortrijk), true, location(S, brugge), drive_kortrijk_brugge, 1600.0, 0.007, 0.96, 0.99)),
|
|
37
|
-
gps_description(mapBE, description(location(S, brugge), true, location(S, oostende), drive_brugge_oostende, 900.0, 0.004, 0.98, 1.0))
|
|
38
|
-
)).
|
|
39
|
-
|
|
40
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
41
|
-
case_statement(S, P, O) :-
|
|
42
|
-
case_graph(caseGraph, Context),
|
|
43
|
-
holds(Context, P, [S, O]).
|
|
44
|
-
|
|
45
|
-
map_description(From, To, Action, Duration, Cost, Belief, Comfort) :-
|
|
46
|
-
map_graph(mapBE, Context),
|
|
47
|
-
holds(Context, gps_description(mapBE, description(From, true, To, Action, Duration, Cost, Belief, Comfort))).
|
|
48
|
-
|
|
49
|
-
path(From, To, [Action], Duration, Cost, Belief, Comfort) :-
|
|
50
|
-
map_description(From, To, Action, Duration, Cost, Belief, Comfort).
|
|
51
|
-
|
|
52
|
-
path(From, To, Actions, Duration, Cost, Belief, Comfort) :-
|
|
53
|
-
map_description(From, Mid, Action, D1, C1, B1, F1),
|
|
54
|
-
path(Mid, To, RestActions, D2, C2, B2, F2),
|
|
55
|
-
append([Action], RestActions, Actions),
|
|
56
|
-
add(D1, D2, Duration),
|
|
57
|
-
add(C1, C2, Cost),
|
|
58
|
-
mul(B1, B2, Belief),
|
|
59
|
-
mul(F1, F2, Comfort).
|
|
60
|
-
|
|
61
|
-
traveller_start(i1, location(i1, gent)).
|
|
62
|
-
traveller_goal(i1, location(i1, oostende)).
|
|
63
|
-
|
|
64
|
-
traveller_path(Traveller, Actions, Duration, Cost, Belief, Comfort) :-
|
|
65
|
-
traveller_start(Traveller, From),
|
|
66
|
-
traveller_goal(Traveller, To),
|
|
67
|
-
path(From, To, Actions, Duration, Cost, Belief, Comfort).
|
|
68
|
-
|
|
69
|
-
route_metrics(routeDirect, Duration, Cost, Belief, Comfort) :-
|
|
70
|
-
traveller_path(i1, [drive_gent_brugge, drive_brugge_oostende], Duration, Cost, Belief, Comfort).
|
|
71
|
-
|
|
72
|
-
route_metrics(routeViaKortrijk, Duration, Cost, Belief, Comfort) :-
|
|
73
|
-
traveller_path(i1, [drive_gent_kortrijk, drive_kortrijk_brugge, drive_brugge_oostende], Duration, Cost, Belief, Comfort).
|
|
74
|
-
|
|
75
|
-
recommended_route(routeDirect) :-
|
|
76
|
-
route_metrics(routeDirect, DirectDuration, DirectCost, DirectBelief, DirectComfort),
|
|
77
|
-
route_metrics(routeViaKortrijk, ViaDuration, ViaCost, ViaBelief, ViaComfort),
|
|
78
|
-
lt(DirectDuration, ViaDuration),
|
|
79
|
-
lt(DirectCost, ViaCost),
|
|
80
|
-
gt(DirectBelief, ViaBelief),
|
|
81
|
-
gt(DirectComfort, ViaComfort).
|
|
82
|
-
|
|
83
|
-
outcome(routeDirect, "Take the direct route via Brugge.").
|
|
84
|
-
|
|
85
|
-
% Verification checks, analogous to the false-producing guards in gps.n3.
|
|
86
|
-
check(c1, true) :-
|
|
87
|
-
traveller_path(i1, [drive_gent_brugge, drive_brugge_oostende], _, _, _, _).
|
|
88
|
-
|
|
89
|
-
check(c2, true) :-
|
|
90
|
-
traveller_path(i1, [drive_gent_kortrijk, drive_kortrijk_brugge, drive_brugge_oostende], _, _, _, _).
|
|
91
|
-
|
|
92
|
-
check(c3, true) :-
|
|
93
|
-
route_metrics(routeDirect, D1, _, _, _),
|
|
94
|
-
route_metrics(routeViaKortrijk, D2, _, _, _),
|
|
95
|
-
lt(D1, D2).
|
|
96
|
-
|
|
97
|
-
check(c4, true) :-
|
|
98
|
-
route_metrics(routeDirect, _, C1, _, _),
|
|
99
|
-
route_metrics(routeViaKortrijk, _, C2, _, _),
|
|
100
|
-
lt(C1, C2).
|
|
101
|
-
|
|
102
|
-
check(c5, true) :-
|
|
103
|
-
route_metrics(routeDirect, _, _, B1, F1),
|
|
104
|
-
route_metrics(routeViaKortrijk, _, _, B2, F2),
|
|
105
|
-
gt(B1, B2),
|
|
106
|
-
gt(F1, F2).
|
|
107
|
-
|
|
108
|
-
recommendedRoute(decision, Route) :-
|
|
109
|
-
recommended_route(Route).
|
|
110
|
-
|
|
111
|
-
outcome(decision, Outcome) :-
|
|
112
|
-
recommended_route(Route),
|
|
113
|
-
outcome(Route, Outcome).
|
|
114
|
-
|
|
115
|
-
statement(check, Check, true) :-
|
|
116
|
-
check(Check, true).
|
|
117
|
-
|
|
118
|
-
route_actions(routeDirect, [drive_gent_brugge, drive_brugge_oostende]).
|
|
119
|
-
route_actions(routeViaKortrijk, [drive_gent_kortrijk, drive_kortrijk_brugge, drive_brugge_oostende]).
|
|
120
|
-
|
|
121
|
-
% Derived route and report relations. These are consequences of the route search
|
|
122
|
-
% and comparison, not pre-written markdown output.
|
|
123
|
-
label(Route, Label) :-
|
|
124
|
-
case_statement(Route, label, Label),
|
|
125
|
-
route_metrics(Route, _Duration, _Cost, _Belief, _Comfort).
|
|
126
|
-
|
|
127
|
-
actionSequence(Route, Actions) :-
|
|
128
|
-
route_actions(Route, Actions),
|
|
129
|
-
route_metrics(Route, _Duration, _Cost, _Belief, _Comfort).
|
|
130
|
-
|
|
131
|
-
durationSeconds(Route, Duration) :-
|
|
132
|
-
route_metrics(Route, Duration, _Cost, _Belief, _Comfort).
|
|
133
|
-
|
|
134
|
-
cost(Route, Cost) :-
|
|
135
|
-
route_metrics(Route, _Duration, Cost, _Belief, _Comfort).
|
|
136
|
-
|
|
137
|
-
belief(Route, Belief) :-
|
|
138
|
-
route_metrics(Route, _Duration, _Cost, Belief, _Comfort).
|
|
139
|
-
|
|
140
|
-
comfort(Route, Comfort) :-
|
|
141
|
-
route_metrics(Route, _Duration, _Cost, _Belief, Comfort).
|
|
142
|
-
|
|
143
|
-
selectedRoute(report, route(Route, Actions, Duration, Cost, Belief, Comfort)) :-
|
|
144
|
-
recommended_route(Route),
|
|
145
|
-
route_actions(Route, Actions),
|
|
146
|
-
route_metrics(Route, Duration, Cost, Belief, Comfort).
|
|
147
|
-
|
|
148
|
-
comparison(report, dominates(routeDirect, routeViaKortrijk)) :-
|
|
149
|
-
recommended_route(routeDirect),
|
|
150
|
-
check(c3, true),
|
|
151
|
-
check(c4, true),
|
|
152
|
-
check(c5, true).
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
% Graph reachability example adapted from Eyelet input/graph-reachability.pl.
|
|
2
|
-
%
|
|
3
|
-
% The original uses Prolog negation and member/2 to avoid revisiting nodes.
|
|
4
|
-
% eyelang expresses the same finite search with not(member(...)).
|
|
5
|
-
|
|
6
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
7
|
-
materialize(reachable, 2).
|
|
8
|
-
materialize(not_reachable, 2).
|
|
9
|
-
|
|
10
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
11
|
-
edge(a, b).
|
|
12
|
-
edge(a, c).
|
|
13
|
-
edge(b, d).
|
|
14
|
-
edge(c, e).
|
|
15
|
-
edge(d, f).
|
|
16
|
-
edge(e, f).
|
|
17
|
-
edge(f, g).
|
|
18
|
-
|
|
19
|
-
reachable(Node, Node, _Visited).
|
|
20
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
21
|
-
reachable(Start, Goal, Visited) :-
|
|
22
|
-
edge(Start, Next),
|
|
23
|
-
not(member(Next, Visited)),
|
|
24
|
-
reachable(Next, Goal, [Next|Visited]).
|
|
25
|
-
|
|
26
|
-
is_reachable(Start, Goal) :-
|
|
27
|
-
reachable(Start, Goal, [Start]).
|
|
28
|
-
|
|
29
|
-
reachable(reachability_case, path(a, f)) :-
|
|
30
|
-
is_reachable(a, f).
|
|
31
|
-
|
|
32
|
-
reachable(reachability_case, path(c, g)) :-
|
|
33
|
-
is_reachable(c, g).
|
|
34
|
-
|
|
35
|
-
not_reachable(reachability_case, path(b, e)) :-
|
|
36
|
-
not(is_reachable(b, e)).
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
% Gray-code counter adapted from Eyeling gray-code-counter.n3 and the
|
|
2
|
-
% Clause and Effect example referenced there.
|
|
3
|
-
|
|
4
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
5
|
-
materialize(isgcc, 2).
|
|
6
|
-
|
|
7
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
8
|
-
% Boolean gates are truth tables; the circuit rules compose them.
|
|
9
|
-
and(0, 0, 0). and(0, 1, 0). and(1, 0, 0). and(1, 1, 1).
|
|
10
|
-
or(0, 0, 0). or(0, 1, 1). or(1, 0, 1). or(1, 1, 1).
|
|
11
|
-
inv(0, 1). inv(1, 0).
|
|
12
|
-
|
|
13
|
-
dff(D, 0, Q, Q).
|
|
14
|
-
dff(D, 1, _Q, D).
|
|
15
|
-
|
|
16
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
17
|
-
neta(A, B, Q) :-
|
|
18
|
-
and(A, B, T1),
|
|
19
|
-
inv(A, NA),
|
|
20
|
-
inv(B, NB),
|
|
21
|
-
and(NA, NB, T2),
|
|
22
|
-
or(T1, T2, Q).
|
|
23
|
-
|
|
24
|
-
netb(A, B, C, Q1, Q2) :-
|
|
25
|
-
and(A, C, T1),
|
|
26
|
-
inv(C, NC),
|
|
27
|
-
and(B, NC, T2),
|
|
28
|
-
inv(A, NA),
|
|
29
|
-
and(NA, C, T3),
|
|
30
|
-
or(T1, T2, Q1),
|
|
31
|
-
or(T2, T3, Q2).
|
|
32
|
-
|
|
33
|
-
% One clock step computes D inputs, then updates the three flip-flops.
|
|
34
|
-
gcc(C, [Qa, Qb, Qc], [Za, Zb, Zc]) :-
|
|
35
|
-
netb(Qa, Qb, Qc, D1, D2),
|
|
36
|
-
neta(Qa, Qb, D3),
|
|
37
|
-
dff(D1, C, Qa, Za),
|
|
38
|
-
dff(D2, C, Qb, Zb),
|
|
39
|
-
dff(D3, C, Qc, Zc).
|
|
40
|
-
|
|
41
|
-
% testgcc/3 runs the circuit over a list of clock inputs.
|
|
42
|
-
testgcc([], _State, []).
|
|
43
|
-
testgcc([C|Cs], State, [Next|Rest]) :-
|
|
44
|
-
gcc(C, State, Next),
|
|
45
|
-
testgcc(Cs, Next, Rest).
|
|
46
|
-
|
|
47
|
-
isgcc([[1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0]], States) :-
|
|
48
|
-
testgcc([1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0], States).
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
2
|
-
materialize(sameGreatestLowerBound, 4).
|
|
3
|
-
|
|
4
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
5
|
-
% Greatest-lower-bound uniqueness example adapted from Eyeling
|
|
6
|
-
% greatest-lower-bound-uniqueness.n3.
|
|
7
|
-
% If M and N are both greatest lower bounds of A and B, each is below the other;
|
|
8
|
-
% antisymmetry is represented by the ordinary derived relation sameTerm/2.
|
|
9
|
-
|
|
10
|
-
glbOf(g1, a, b).
|
|
11
|
-
glbOf(g2, a, b).
|
|
12
|
-
|
|
13
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
14
|
-
lowerBoundOf(M, A, B) :- glbOf(M, A, B).
|
|
15
|
-
|
|
16
|
-
leq(L, M) :-
|
|
17
|
-
glbOf(M, A, B),
|
|
18
|
-
lowerBoundOf(L, A, B).
|
|
19
|
-
|
|
20
|
-
sameTerm(M, N) :-
|
|
21
|
-
leq(M, N),
|
|
22
|
-
leq(N, M).
|
|
23
|
-
|
|
24
|
-
sameGreatestLowerBound(A, B, M, N) :-
|
|
25
|
-
glbOf(M, A, B),
|
|
26
|
-
glbOf(N, A, B),
|
|
27
|
-
sameTerm(M, N),
|
|
28
|
-
neq(M, N).
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
% Group inverse uniqueness, adapted from Eyeling's examples/group-inverse-uniqueness.n3.
|
|
2
|
-
%
|
|
3
|
-
% The output mirrors the Eyeling golden result shape:
|
|
4
|
-
% sameInverse(x, i, j) and sameInverse(x, j, i).
|
|
5
|
-
|
|
6
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
7
|
-
materialize(sameInverse, 3).
|
|
8
|
-
|
|
9
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
10
|
-
element(e).
|
|
11
|
-
element(x).
|
|
12
|
-
element(i).
|
|
13
|
-
element(j).
|
|
14
|
-
|
|
15
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
16
|
-
op(e, X, X) :- element(X).
|
|
17
|
-
op(X, e, X) :- element(X).
|
|
18
|
-
op(i, x, e).
|
|
19
|
-
op(x, j, e).
|
|
20
|
-
op(j, x, e).
|
|
21
|
-
op(x, i, e).
|
|
22
|
-
|
|
23
|
-
sameTerm(X, X) :- element(X).
|
|
24
|
-
sameTerm(i, j).
|
|
25
|
-
sameTerm(j, i).
|
|
26
|
-
|
|
27
|
-
leftInverse(A, B) :- op(B, A, e).
|
|
28
|
-
rightInverse(A, B) :- op(A, B, e).
|
|
29
|
-
|
|
30
|
-
sameInverse(A, B, C) :-
|
|
31
|
-
leftInverse(A, B),
|
|
32
|
-
rightInverse(A, C),
|
|
33
|
-
sameTerm(B, C),
|
|
34
|
-
neq(B, C).
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
% Hamiltonian path, adapted from Eyelet's input/hamiltonian-path.pl.
|
|
2
|
-
%
|
|
3
|
-
% The graph is the same six-vertex undirected graph. eyelang spells the finite
|
|
4
|
-
% vertex set directly and derives every path that visits each vertex exactly
|
|
5
|
-
% once.
|
|
6
|
-
|
|
7
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
8
|
-
materialize(hasHamiltonianPath, 2).
|
|
9
|
-
materialize(hamiltonianPath, 2).
|
|
10
|
-
|
|
11
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
12
|
-
memoize(adjacent, 2).
|
|
13
|
-
|
|
14
|
-
edge(v1, v2).
|
|
15
|
-
edge(v1, v3).
|
|
16
|
-
edge(v1, v5).
|
|
17
|
-
edge(v1, v6).
|
|
18
|
-
edge(v2, v3).
|
|
19
|
-
edge(v2, v4).
|
|
20
|
-
edge(v2, v6).
|
|
21
|
-
edge(v3, v4).
|
|
22
|
-
edge(v3, v6).
|
|
23
|
-
edge(v4, v5).
|
|
24
|
-
edge(v4, v6).
|
|
25
|
-
|
|
26
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
27
|
-
adjacent(V, U) :- edge(V, U).
|
|
28
|
-
adjacent(V, U) :- edge(U, V).
|
|
29
|
-
|
|
30
|
-
vertex(v1).
|
|
31
|
-
vertex(v2).
|
|
32
|
-
vertex(v3).
|
|
33
|
-
vertex(v4).
|
|
34
|
-
vertex(v5).
|
|
35
|
-
vertex(v6).
|
|
36
|
-
|
|
37
|
-
hamiltonian_path([A, B, C, D, E, F]) :-
|
|
38
|
-
vertex(A),
|
|
39
|
-
vertex(B), adjacent(A, B), not_member(B, [A]),
|
|
40
|
-
vertex(C), adjacent(B, C), not_member(C, [A, B]),
|
|
41
|
-
vertex(D), adjacent(C, D), not_member(D, [A, B, C]),
|
|
42
|
-
vertex(E), adjacent(D, E), not_member(E, [A, B, C, D]),
|
|
43
|
-
vertex(F), adjacent(E, F), not_member(F, [A, B, C, D, E]).
|
|
44
|
-
|
|
45
|
-
hasHamiltonianPath(graph, true) :-
|
|
46
|
-
hamiltonian_path(_Path).
|
|
47
|
-
|
|
48
|
-
hamiltonianPath(graph, Path) :-
|
|
49
|
-
hamiltonian_path(Path).
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
% Technology example: Hamming(7,4) single-bit error correction.
|
|
2
|
-
%
|
|
3
|
-
% The received word has one corrupted bit. Syndrome bits identify the bad
|
|
4
|
-
% position, then the corrected codeword and decoded payload are derived.
|
|
5
|
-
|
|
6
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
7
|
-
materialize(syndrome, 2).
|
|
8
|
-
materialize(errorBit, 2).
|
|
9
|
-
materialize(correctedCodeword, 2).
|
|
10
|
-
materialize(decodedPayload, 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
|
-
received_bit(packet1, 1, 1).
|
|
16
|
-
received_bit(packet1, 2, 0).
|
|
17
|
-
received_bit(packet1, 3, 1).
|
|
18
|
-
received_bit(packet1, 4, 1).
|
|
19
|
-
received_bit(packet1, 5, 1).
|
|
20
|
-
received_bit(packet1, 6, 1).
|
|
21
|
-
received_bit(packet1, 7, 0).
|
|
22
|
-
|
|
23
|
-
flip(0, 1).
|
|
24
|
-
flip(1, 0).
|
|
25
|
-
|
|
26
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
27
|
-
parity4(A, B, C, D, Parity) :-
|
|
28
|
-
add(A, B, AB),
|
|
29
|
-
add(AB, C, ABC),
|
|
30
|
-
add(ABC, D, Sum),
|
|
31
|
-
mod(Sum, 2, Parity).
|
|
32
|
-
|
|
33
|
-
syndrome_bit1(Code, S1) :-
|
|
34
|
-
received_bit(Code, 1, B1),
|
|
35
|
-
received_bit(Code, 3, B3),
|
|
36
|
-
received_bit(Code, 5, B5),
|
|
37
|
-
received_bit(Code, 7, B7),
|
|
38
|
-
parity4(B1, B3, B5, B7, S1).
|
|
39
|
-
|
|
40
|
-
syndrome_bit2(Code, S2) :-
|
|
41
|
-
received_bit(Code, 2, B2),
|
|
42
|
-
received_bit(Code, 3, B3),
|
|
43
|
-
received_bit(Code, 6, B6),
|
|
44
|
-
received_bit(Code, 7, B7),
|
|
45
|
-
parity4(B2, B3, B6, B7, S2).
|
|
46
|
-
|
|
47
|
-
syndrome_bit4(Code, S4) :-
|
|
48
|
-
received_bit(Code, 4, B4),
|
|
49
|
-
received_bit(Code, 5, B5),
|
|
50
|
-
received_bit(Code, 6, B6),
|
|
51
|
-
received_bit(Code, 7, B7),
|
|
52
|
-
parity4(B4, B5, B6, B7, S4).
|
|
53
|
-
|
|
54
|
-
syndrome(Code, Syndrome) :-
|
|
55
|
-
syndrome_bit1(Code, S1),
|
|
56
|
-
syndrome_bit2(Code, S2),
|
|
57
|
-
syndrome_bit4(Code, S4),
|
|
58
|
-
mul(S2, 2, WeightedS2),
|
|
59
|
-
mul(S4, 4, WeightedS4),
|
|
60
|
-
add(S1, WeightedS2, Partial),
|
|
61
|
-
add(Partial, WeightedS4, Syndrome).
|
|
62
|
-
|
|
63
|
-
corrected_bit(Code, Position, Corrected) :-
|
|
64
|
-
syndrome(Code, Position),
|
|
65
|
-
received_bit(Code, Position, Bit),
|
|
66
|
-
flip(Bit, Corrected).
|
|
67
|
-
|
|
68
|
-
corrected_bit(Code, Position, Bit) :-
|
|
69
|
-
syndrome(Code, ErrorPosition),
|
|
70
|
-
neq(Position, ErrorPosition),
|
|
71
|
-
received_bit(Code, Position, Bit).
|
|
72
|
-
|
|
73
|
-
corrected_codeword(Code, [B1, B2, B3, B4, B5, B6, B7]) :-
|
|
74
|
-
corrected_bit(Code, 1, B1),
|
|
75
|
-
corrected_bit(Code, 2, B2),
|
|
76
|
-
corrected_bit(Code, 3, B3),
|
|
77
|
-
corrected_bit(Code, 4, B4),
|
|
78
|
-
corrected_bit(Code, 5, B5),
|
|
79
|
-
corrected_bit(Code, 6, B6),
|
|
80
|
-
corrected_bit(Code, 7, B7).
|
|
81
|
-
|
|
82
|
-
decoded_payload(Code, [D1, D2, D3, D4]) :-
|
|
83
|
-
corrected_bit(Code, 3, D1),
|
|
84
|
-
corrected_bit(Code, 5, D2),
|
|
85
|
-
corrected_bit(Code, 6, D3),
|
|
86
|
-
corrected_bit(Code, 7, D4).
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
errorBit(Code, Position) :-
|
|
90
|
-
syndrome(Code, Position),
|
|
91
|
-
gt(Position, 0).
|
|
92
|
-
|
|
93
|
-
correctedCodeword(Code, Codeword) :-
|
|
94
|
-
corrected_codeword(Code, Codeword).
|
|
95
|
-
|
|
96
|
-
decodedPayload(Code, Payload) :-
|
|
97
|
-
decoded_payload(Code, Payload).
|
|
98
|
-
|
|
99
|
-
status(Code, single_bit_corrected) :-
|
|
100
|
-
syndrome(Code, Position),
|
|
101
|
-
gt(Position, 0).
|
|
102
|
-
|
|
103
|
-
reason(Code, "Hamming syndrome identifies the flipped bit position") :-
|
|
104
|
-
syndrome(Code, Position),
|
|
105
|
-
gt(Position, 0).
|