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,78 +0,0 @@
|
|
|
1
|
-
refutes(proof1, raining).
|
|
2
|
-
why(
|
|
3
|
-
refutes(proof1, raining),
|
|
4
|
-
proof(
|
|
5
|
-
goal(refutes(proof1, raining)),
|
|
6
|
-
by(rule("proof-contrapositive.pl", clause(7))),
|
|
7
|
-
uses([
|
|
8
|
-
proof(
|
|
9
|
-
goal(false(raining)),
|
|
10
|
-
by(rule("proof-contrapositive.pl", clause(6))),
|
|
11
|
-
bindings([binding("A", raining), binding("B", wet_ground)]),
|
|
12
|
-
uses([
|
|
13
|
-
proof(
|
|
14
|
-
goal(implies(raining, wet_ground)),
|
|
15
|
-
by(fact("proof-contrapositive.pl", clause(4)))
|
|
16
|
-
),
|
|
17
|
-
proof(
|
|
18
|
-
goal(false(wet_ground)),
|
|
19
|
-
by(fact("proof-contrapositive.pl", clause(5)))
|
|
20
|
-
)
|
|
21
|
-
])
|
|
22
|
-
)
|
|
23
|
-
])
|
|
24
|
-
)
|
|
25
|
-
).
|
|
26
|
-
|
|
27
|
-
method(proof1, contrapositive).
|
|
28
|
-
why(
|
|
29
|
-
method(proof1, contrapositive),
|
|
30
|
-
proof(
|
|
31
|
-
goal(method(proof1, contrapositive)),
|
|
32
|
-
by(rule("proof-contrapositive.pl", clause(8))),
|
|
33
|
-
uses([
|
|
34
|
-
proof(
|
|
35
|
-
goal(false(raining)),
|
|
36
|
-
by(rule("proof-contrapositive.pl", clause(6))),
|
|
37
|
-
bindings([binding("A", raining), binding("B", wet_ground)]),
|
|
38
|
-
uses([
|
|
39
|
-
proof(
|
|
40
|
-
goal(implies(raining, wet_ground)),
|
|
41
|
-
by(fact("proof-contrapositive.pl", clause(4)))
|
|
42
|
-
),
|
|
43
|
-
proof(
|
|
44
|
-
goal(false(wet_ground)),
|
|
45
|
-
by(fact("proof-contrapositive.pl", clause(5)))
|
|
46
|
-
)
|
|
47
|
-
])
|
|
48
|
-
)
|
|
49
|
-
])
|
|
50
|
-
)
|
|
51
|
-
).
|
|
52
|
-
|
|
53
|
-
reason(proof1, "if rain implies wet ground and the ground is not wet, then it is not raining").
|
|
54
|
-
why(
|
|
55
|
-
reason(proof1, "if rain implies wet ground and the ground is not wet, then it is not raining"),
|
|
56
|
-
proof(
|
|
57
|
-
goal(reason(proof1, "if rain implies wet ground and the ground is not wet, then it is not raining")),
|
|
58
|
-
by(rule("proof-contrapositive.pl", clause(9))),
|
|
59
|
-
uses([
|
|
60
|
-
proof(
|
|
61
|
-
goal(false(raining)),
|
|
62
|
-
by(rule("proof-contrapositive.pl", clause(6))),
|
|
63
|
-
bindings([binding("A", raining), binding("B", wet_ground)]),
|
|
64
|
-
uses([
|
|
65
|
-
proof(
|
|
66
|
-
goal(implies(raining, wet_ground)),
|
|
67
|
-
by(fact("proof-contrapositive.pl", clause(4)))
|
|
68
|
-
),
|
|
69
|
-
proof(
|
|
70
|
-
goal(false(wet_ground)),
|
|
71
|
-
by(fact("proof-contrapositive.pl", clause(5)))
|
|
72
|
-
)
|
|
73
|
-
])
|
|
74
|
-
)
|
|
75
|
-
])
|
|
76
|
-
)
|
|
77
|
-
).
|
|
78
|
-
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
ageAbove(patH, "P80Y").
|
|
2
|
-
why(
|
|
3
|
-
ageAbove(patH, "P80Y"),
|
|
4
|
-
proof(
|
|
5
|
-
goal(ageAbove(patH, "P80Y")),
|
|
6
|
-
by(rule("socket-age.pl", clause(11))),
|
|
7
|
-
bindings([binding("S", patH), binding("A", "P80Y"), binding("B", "1944-08-21"), binding("D", "2026-05-30"), binding("F", "P81Y9M9D")]),
|
|
8
|
-
uses([
|
|
9
|
-
proof(
|
|
10
|
-
goal(birthDay(patH, "1944-08-21")),
|
|
11
|
-
by(fact("socket-age.pl", clause(8)))
|
|
12
|
-
),
|
|
13
|
-
proof(
|
|
14
|
-
goal(duration(check, "P80Y")),
|
|
15
|
-
by(fact("socket-age.pl", clause(9)))
|
|
16
|
-
),
|
|
17
|
-
proof(
|
|
18
|
-
goal(today("2026-05-30")),
|
|
19
|
-
by(fact("socket-age.pl", clause(10)))
|
|
20
|
-
),
|
|
21
|
-
proof(
|
|
22
|
-
goal(difference("2026-05-30", "1944-08-21", "P81Y9M9D")),
|
|
23
|
-
by(builtin(difference, 3))
|
|
24
|
-
),
|
|
25
|
-
proof(
|
|
26
|
-
goal(gt("P81Y9M9D", "P80Y")),
|
|
27
|
-
by(builtin(gt, 2))
|
|
28
|
-
)
|
|
29
|
-
])
|
|
30
|
-
)
|
|
31
|
-
).
|
|
32
|
-
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
ancestor(pat, jan).
|
|
2
|
-
why(
|
|
3
|
-
ancestor(pat, jan),
|
|
4
|
-
proof(
|
|
5
|
-
goal(ancestor(pat, jan)),
|
|
6
|
-
by(rule("socket-family.pl", clause(6))),
|
|
7
|
-
bindings([binding("X", pat), binding("Y", jan)]),
|
|
8
|
-
uses([
|
|
9
|
-
proof(
|
|
10
|
-
goal(parent(pat, jan)),
|
|
11
|
-
by(fact("socket-family.pl", clause(4)))
|
|
12
|
-
)
|
|
13
|
-
])
|
|
14
|
-
)
|
|
15
|
-
).
|
|
16
|
-
|
|
17
|
-
ancestor(jan, emma).
|
|
18
|
-
why(
|
|
19
|
-
ancestor(jan, emma),
|
|
20
|
-
proof(
|
|
21
|
-
goal(ancestor(jan, emma)),
|
|
22
|
-
by(rule("socket-family.pl", clause(6))),
|
|
23
|
-
bindings([binding("X", jan), binding("Y", emma)]),
|
|
24
|
-
uses([
|
|
25
|
-
proof(
|
|
26
|
-
goal(parent(jan, emma)),
|
|
27
|
-
by(fact("socket-family.pl", clause(5)))
|
|
28
|
-
)
|
|
29
|
-
])
|
|
30
|
-
)
|
|
31
|
-
).
|
|
32
|
-
|
|
33
|
-
ancestor(pat, emma).
|
|
34
|
-
why(
|
|
35
|
-
ancestor(pat, emma),
|
|
36
|
-
proof(
|
|
37
|
-
goal(ancestor(pat, emma)),
|
|
38
|
-
by(rule("socket-family.pl", clause(7))),
|
|
39
|
-
bindings([binding("X", pat), binding("Z", emma), binding("Y", jan)]),
|
|
40
|
-
uses([
|
|
41
|
-
proof(
|
|
42
|
-
goal(parent(pat, jan)),
|
|
43
|
-
by(fact("socket-family.pl", clause(4)))
|
|
44
|
-
),
|
|
45
|
-
proof(
|
|
46
|
-
goal(ancestor(jan, emma)),
|
|
47
|
-
by(rule("socket-family.pl", clause(6))),
|
|
48
|
-
bindings([binding("X", jan), binding("Y", emma)]),
|
|
49
|
-
uses([
|
|
50
|
-
proof(
|
|
51
|
-
goal(parent(jan, emma)),
|
|
52
|
-
by(fact("socket-family.pl", clause(5)))
|
|
53
|
-
)
|
|
54
|
-
])
|
|
55
|
-
)
|
|
56
|
-
])
|
|
57
|
-
)
|
|
58
|
-
).
|
|
59
|
-
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
type(socrates, mortal).
|
|
2
|
-
why(
|
|
3
|
-
type(socrates, mortal),
|
|
4
|
-
proof(
|
|
5
|
-
goal(type(socrates, mortal)),
|
|
6
|
-
by(rule("socrates.pl", clause(4))),
|
|
7
|
-
bindings([binding("X", socrates)]),
|
|
8
|
-
uses([
|
|
9
|
-
proof(
|
|
10
|
-
goal(type(socrates, man)),
|
|
11
|
-
by(fact("socrates.pl", clause(3)))
|
|
12
|
-
)
|
|
13
|
-
])
|
|
14
|
-
)
|
|
15
|
-
).
|
|
16
|
-
|
|
17
|
-
is(test, true).
|
|
18
|
-
why(
|
|
19
|
-
is(test, true),
|
|
20
|
-
proof(
|
|
21
|
-
goal(is(test, true)),
|
|
22
|
-
by(rule("socrates.pl", clause(5))),
|
|
23
|
-
uses([
|
|
24
|
-
proof(
|
|
25
|
-
goal(type(socrates, mortal)),
|
|
26
|
-
by(rule("socrates.pl", clause(4))),
|
|
27
|
-
bindings([binding("X", socrates)]),
|
|
28
|
-
uses([
|
|
29
|
-
proof(
|
|
30
|
-
goal(type(socrates, man)),
|
|
31
|
-
by(fact("socrates.pl", clause(3)))
|
|
32
|
-
)
|
|
33
|
-
])
|
|
34
|
-
)
|
|
35
|
-
])
|
|
36
|
-
)
|
|
37
|
-
).
|
|
38
|
-
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
% Proof by contrapositive example adapted from Eyelet input/proof-by-contrapositive.pl.
|
|
2
|
-
%
|
|
3
|
-
% The implication itself is represented as data with implies/2. The proof
|
|
4
|
-
% rule remains ordinary eyelang: if A implies B and B is false, then A is false.
|
|
5
|
-
|
|
6
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
7
|
-
materialize(refutes, 2).
|
|
8
|
-
materialize(method, 2).
|
|
9
|
-
materialize(reason, 2).
|
|
10
|
-
|
|
11
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
12
|
-
implies(raining, wet_ground).
|
|
13
|
-
false(wet_ground).
|
|
14
|
-
|
|
15
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
16
|
-
false(A) :-
|
|
17
|
-
implies(A, B),
|
|
18
|
-
false(B).
|
|
19
|
-
|
|
20
|
-
refutes(proof1, raining) :-
|
|
21
|
-
false(raining).
|
|
22
|
-
|
|
23
|
-
method(proof1, contrapositive) :-
|
|
24
|
-
false(raining).
|
|
25
|
-
|
|
26
|
-
reason(proof1, "if rain implies wet ground and the ground is not wet, then it is not raining") :-
|
|
27
|
-
false(raining).
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
% Quadratic formula over sample equations.
|
|
2
|
-
%
|
|
3
|
-
% Each equation is represented as a*x^2 + b*x + c = 0. The example uses
|
|
4
|
-
% eyelang arithmetic predicates to derive the discriminant and the two roots.
|
|
5
|
-
|
|
6
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
7
|
-
materialize(discriminant, 2).
|
|
8
|
-
materialize(root, 2).
|
|
9
|
-
|
|
10
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
11
|
-
equation(eq1, 1.0, -5.0, 6.0).
|
|
12
|
-
equation(eq2, 2.0, -4.0, -6.0).
|
|
13
|
-
|
|
14
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
15
|
-
discriminant(Case, D) :-
|
|
16
|
-
equation(Case, A, B, C),
|
|
17
|
-
pow(B, 2.0, B2),
|
|
18
|
-
mul(4.0, A, FourA),
|
|
19
|
-
mul(FourA, C, FourAC),
|
|
20
|
-
sub(B2, FourAC, D).
|
|
21
|
-
|
|
22
|
-
sqrt_discriminant(Case, S) :-
|
|
23
|
-
discriminant(Case, D),
|
|
24
|
-
ge(D, 0.0),
|
|
25
|
-
pow(D, 0.5, S).
|
|
26
|
-
|
|
27
|
-
negative_b(Case, NB) :-
|
|
28
|
-
equation(Case, _A, B, _C),
|
|
29
|
-
neg(B, NB).
|
|
30
|
-
|
|
31
|
-
denominator(Case, Den) :-
|
|
32
|
-
equation(Case, A, _B, _C),
|
|
33
|
-
mul(2.0, A, Den).
|
|
34
|
-
|
|
35
|
-
root_plus(Case, Root) :-
|
|
36
|
-
negative_b(Case, NB),
|
|
37
|
-
sqrt_discriminant(Case, S),
|
|
38
|
-
denominator(Case, Den),
|
|
39
|
-
add(NB, S, Numerator),
|
|
40
|
-
div(Numerator, Den, Root).
|
|
41
|
-
|
|
42
|
-
root_minus(Case, Root) :-
|
|
43
|
-
negative_b(Case, NB),
|
|
44
|
-
sqrt_discriminant(Case, S),
|
|
45
|
-
denominator(Case, Den),
|
|
46
|
-
sub(NB, S, Numerator),
|
|
47
|
-
div(Numerator, Den, Root).
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
root(Case, Root) :-
|
|
51
|
-
root_plus(Case, Root).
|
|
52
|
-
|
|
53
|
-
root(Case, Root) :-
|
|
54
|
-
root_minus(Case, Root).
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
% Science example: radioactive decay.
|
|
2
|
-
%
|
|
3
|
-
% Activity remaining after elapsed time is initial_activity * 0.5^(t/half_life).
|
|
4
|
-
|
|
5
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
6
|
-
materialize(halfLivesElapsed, 2).
|
|
7
|
-
materialize(remainingActivity_Bq, 2).
|
|
8
|
-
materialize(decayedActivity_Bq, 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
|
-
sample(iodine_sample, initial_activity_bq, 80.0).
|
|
14
|
-
sample(iodine_sample, half_life_h, 8.0).
|
|
15
|
-
sample(iodine_sample, elapsed_h, 16.0).
|
|
16
|
-
threshold(iodine_sample, low_activity_bq, 25.0).
|
|
17
|
-
|
|
18
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
19
|
-
half_lives(Sample, Count) :-
|
|
20
|
-
sample(Sample, elapsed_h, Elapsed),
|
|
21
|
-
sample(Sample, half_life_h, HalfLife),
|
|
22
|
-
div(Elapsed, HalfLife, Count).
|
|
23
|
-
|
|
24
|
-
remaining_fraction(Sample, Fraction) :-
|
|
25
|
-
half_lives(Sample, Count),
|
|
26
|
-
pow(0.5, Count, Fraction).
|
|
27
|
-
|
|
28
|
-
remaining_activity(Sample, Remaining) :-
|
|
29
|
-
sample(Sample, initial_activity_bq, Initial),
|
|
30
|
-
remaining_fraction(Sample, Fraction),
|
|
31
|
-
mul(Initial, Fraction, Remaining).
|
|
32
|
-
|
|
33
|
-
decayed_activity(Sample, Decayed) :-
|
|
34
|
-
sample(Sample, initial_activity_bq, Initial),
|
|
35
|
-
remaining_activity(Sample, Remaining),
|
|
36
|
-
sub(Initial, Remaining, Decayed).
|
|
37
|
-
|
|
38
|
-
low_activity(Sample) :-
|
|
39
|
-
remaining_activity(Sample, Remaining),
|
|
40
|
-
threshold(Sample, low_activity_bq, Limit),
|
|
41
|
-
lt(Remaining, Limit).
|
|
42
|
-
|
|
43
|
-
halfLivesElapsed(Sample, Count) :-
|
|
44
|
-
half_lives(Sample, Count).
|
|
45
|
-
|
|
46
|
-
remainingActivity_Bq(Sample, Remaining) :-
|
|
47
|
-
remaining_activity(Sample, Remaining).
|
|
48
|
-
|
|
49
|
-
decayedActivity_Bq(Sample, Decayed) :-
|
|
50
|
-
decayed_activity(Sample, Decayed).
|
|
51
|
-
|
|
52
|
-
status(Sample, low_activity) :-
|
|
53
|
-
low_activity(Sample).
|
|
54
|
-
|
|
55
|
-
reason(Sample, "two half-lives leave one quarter of the initial activity") :-
|
|
56
|
-
low_activity(Sample).
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
% Reusable builtin tour: normalize text, summarize lists, and compute numeric values.
|
|
2
|
-
materialize(report, 2).
|
|
3
|
-
|
|
4
|
-
name_raw(" Ada Lovelace ").
|
|
5
|
-
tag_csv("logic,math,logic,programming").
|
|
6
|
-
scores([8, 13, 21]).
|
|
7
|
-
|
|
8
|
-
report(normalized_name, Name) :-
|
|
9
|
-
name_raw(Raw),
|
|
10
|
-
trim(Raw, Trimmed),
|
|
11
|
-
lowercase(Trimmed, Name).
|
|
12
|
-
|
|
13
|
-
report(unique_tags, Tags) :-
|
|
14
|
-
tag_csv(Csv),
|
|
15
|
-
split(Csv, ",", Parts),
|
|
16
|
-
list_to_set(Parts, Tags).
|
|
17
|
-
|
|
18
|
-
report(tag_label, Label) :-
|
|
19
|
-
tag_csv(Csv),
|
|
20
|
-
split(Csv, ",", Parts),
|
|
21
|
-
list_to_set(Parts, Tags),
|
|
22
|
-
join(Tags, " / ", Label).
|
|
23
|
-
|
|
24
|
-
report(score_summary, summary(Total, Peak, RootTotal)) :-
|
|
25
|
-
scores(Scores),
|
|
26
|
-
sum_list(Scores, Total),
|
|
27
|
-
max_list(Scores, Peak),
|
|
28
|
-
sqrt(Total, RootTotal).
|
|
29
|
-
|
|
30
|
-
report(window, Slice) :-
|
|
31
|
-
scores(Scores),
|
|
32
|
-
slice(1, 2, Scores, Slice).
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
% Riemann hypothesis, as a finite eyelang check.
|
|
2
|
-
%
|
|
3
|
-
% This example does not prove the Riemann hypothesis. It models the
|
|
4
|
-
% finite statement: every non-trivial zero in the local catalogue has
|
|
5
|
-
% real part 0.5. A real proof would have to cover all non-trivial zeros,
|
|
6
|
-
% not only the facts listed here.
|
|
7
|
-
|
|
8
|
-
% Print the finite check summary and the per-zero audit rows.
|
|
9
|
-
materialize(rh, 2).
|
|
10
|
-
materialize(zero_check, 3).
|
|
11
|
-
|
|
12
|
-
% --- Sample zero catalogue -------------------------------------------------
|
|
13
|
-
%
|
|
14
|
-
% The three z* entries stand for catalogued non-trivial zeros of the
|
|
15
|
-
% Riemann zeta function. The t* entry is a trivial zero, included to show
|
|
16
|
-
% that the rules below deliberately exclude it from the RH check.
|
|
17
|
-
|
|
18
|
-
zeta_zero(z1).
|
|
19
|
-
real_part(z1, 0.5).
|
|
20
|
-
imaginary_part(z1, 14.134725).
|
|
21
|
-
source(z1, "first catalogued non-trivial zero in this example").
|
|
22
|
-
|
|
23
|
-
zeta_zero(z2).
|
|
24
|
-
real_part(z2, 0.5).
|
|
25
|
-
imaginary_part(z2, 21.02204).
|
|
26
|
-
source(z2, "second catalogued non-trivial zero in this example").
|
|
27
|
-
|
|
28
|
-
zeta_zero(z3).
|
|
29
|
-
real_part(z3, 0.5).
|
|
30
|
-
imaginary_part(z3, 25.010858).
|
|
31
|
-
source(z3, "third catalogued non-trivial zero in this example").
|
|
32
|
-
|
|
33
|
-
zeta_zero(t1).
|
|
34
|
-
trivial_zero(t1).
|
|
35
|
-
real_part(t1, -2).
|
|
36
|
-
imaginary_part(t1, 0).
|
|
37
|
-
source(t1, "trivial zero, outside the non-trivial RH check").
|
|
38
|
-
|
|
39
|
-
% --- Classification rules --------------------------------------------------
|
|
40
|
-
%
|
|
41
|
-
% A non-trivial zero is one of the catalogued zeta zeros that lies in the
|
|
42
|
-
% critical strip 0 < real part < 1 and is not explicitly marked as trivial.
|
|
43
|
-
|
|
44
|
-
in_critical_strip(Zero) :-
|
|
45
|
-
real_part(Zero, Real),
|
|
46
|
-
gt(Real, 0),
|
|
47
|
-
lt(Real, 1).
|
|
48
|
-
|
|
49
|
-
non_trivial_zero(Zero) :-
|
|
50
|
-
zeta_zero(Zero),
|
|
51
|
-
in_critical_strip(Zero),
|
|
52
|
-
not(trivial_zero(Zero)).
|
|
53
|
-
|
|
54
|
-
% The RH condition for one zero: its real part is exactly one half.
|
|
55
|
-
|
|
56
|
-
on_critical_line(Zero) :-
|
|
57
|
-
non_trivial_zero(Zero),
|
|
58
|
-
real_part(Zero, 0.5).
|
|
59
|
-
|
|
60
|
-
% A finite counterexample would be a catalogued non-trivial zero whose real
|
|
61
|
-
% part is not one half.
|
|
62
|
-
|
|
63
|
-
off_critical_line(Zero) :-
|
|
64
|
-
non_trivial_zero(Zero),
|
|
65
|
-
real_part(Zero, Real),
|
|
66
|
-
neq(Real, 0.5).
|
|
67
|
-
|
|
68
|
-
catalog_has(non_trivial_zero) :-
|
|
69
|
-
non_trivial_zero(_SomeZero).
|
|
70
|
-
|
|
71
|
-
counterexample_found(yes) :-
|
|
72
|
-
off_critical_line(_Zero).
|
|
73
|
-
|
|
74
|
-
% The finite catalogue supports RH exactly when it contains at least one
|
|
75
|
-
% non-trivial zero and no catalogued counterexample.
|
|
76
|
-
|
|
77
|
-
finite_catalog_supports_rh(yes) :-
|
|
78
|
-
catalog_has(non_trivial_zero),
|
|
79
|
-
not(counterexample_found(yes)).
|
|
80
|
-
|
|
81
|
-
% --- Materialized audit output --------------------------------------------
|
|
82
|
-
|
|
83
|
-
% These tiny support facts make the summary rows derived output rather than
|
|
84
|
-
% source facts; eyelang intentionally does not reprint source facts.
|
|
85
|
-
|
|
86
|
-
summary_row(scope, finite_catalog_only).
|
|
87
|
-
summary_row(caveat, "finite catalogue evidence only; this is not a proof of RH").
|
|
88
|
-
|
|
89
|
-
rh(Key, Value) :-
|
|
90
|
-
summary_row(Key, Value).
|
|
91
|
-
|
|
92
|
-
rh(status, no_counterexample_in_catalog) :-
|
|
93
|
-
finite_catalog_supports_rh(yes).
|
|
94
|
-
|
|
95
|
-
rh(status, counterexample_in_catalog) :-
|
|
96
|
-
counterexample_found(yes).
|
|
97
|
-
|
|
98
|
-
zero_check(Zero, real_part, Real) :-
|
|
99
|
-
non_trivial_zero(Zero),
|
|
100
|
-
real_part(Zero, Real).
|
|
101
|
-
|
|
102
|
-
zero_check(Zero, imaginary_part, Imaginary) :-
|
|
103
|
-
non_trivial_zero(Zero),
|
|
104
|
-
imaginary_part(Zero, Imaginary).
|
|
105
|
-
|
|
106
|
-
zero_check(Zero, classification, on_critical_line) :-
|
|
107
|
-
on_critical_line(Zero).
|
|
108
|
-
|
|
109
|
-
zero_check(Zero, classification, off_critical_line) :-
|
|
110
|
-
off_critical_line(Zero).
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
% Representative example: security incident correlation.
|
|
2
|
-
%
|
|
3
|
-
% The rules correlate endpoint, identity, vulnerability, and threat-intelligence
|
|
4
|
-
% signals into an escalation decision with concise reason relations.
|
|
5
|
-
|
|
6
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
7
|
-
materialize(type, 2).
|
|
8
|
-
materialize(status, 2).
|
|
9
|
-
materialize(reason, 2).
|
|
10
|
-
|
|
11
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
12
|
-
incident(inc42).
|
|
13
|
-
incident(inc43).
|
|
14
|
-
|
|
15
|
-
asset(endpoint23, criticality, high).
|
|
16
|
-
asset(endpoint77, criticality, low).
|
|
17
|
-
|
|
18
|
-
assigned_user(endpoint23, user_alice).
|
|
19
|
-
assigned_user(endpoint77, user_bob).
|
|
20
|
-
|
|
21
|
-
privileged_user(user_alice).
|
|
22
|
-
|
|
23
|
-
alert(inc42, endpoint, endpoint23).
|
|
24
|
-
alert(inc42, suspicious_login, user_alice).
|
|
25
|
-
alert(inc42, malware_hash, hash_redline).
|
|
26
|
-
alert(inc42, outbound_ip, ip_203_0_113_17).
|
|
27
|
-
|
|
28
|
-
alert(inc43, endpoint, endpoint77).
|
|
29
|
-
alert(inc43, suspicious_login, user_bob).
|
|
30
|
-
alert(inc43, outbound_ip, ip_198_51_100_42).
|
|
31
|
-
|
|
32
|
-
vulnerability(endpoint23, cve_critical_rce).
|
|
33
|
-
threat_intel(ip_203_0_113_17, command_and_control).
|
|
34
|
-
|
|
35
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
36
|
-
critical_asset(Endpoint) :-
|
|
37
|
-
asset(Endpoint, criticality, high).
|
|
38
|
-
|
|
39
|
-
credential_abuse(Incident) :-
|
|
40
|
-
alert(Incident, suspicious_login, User),
|
|
41
|
-
privileged_user(User).
|
|
42
|
-
|
|
43
|
-
malware_on_critical_asset(Incident) :-
|
|
44
|
-
alert(Incident, endpoint, Endpoint),
|
|
45
|
-
alert(Incident, malware_hash, _Hash),
|
|
46
|
-
critical_asset(Endpoint).
|
|
47
|
-
|
|
48
|
-
c2_contact(Incident) :-
|
|
49
|
-
alert(Incident, outbound_ip, Ip),
|
|
50
|
-
threat_intel(Ip, command_and_control).
|
|
51
|
-
|
|
52
|
-
exploitable_endpoint(Incident) :-
|
|
53
|
-
alert(Incident, endpoint, Endpoint),
|
|
54
|
-
vulnerability(Endpoint, cve_critical_rce).
|
|
55
|
-
|
|
56
|
-
confirmed_compromise(Incident) :-
|
|
57
|
-
credential_abuse(Incident),
|
|
58
|
-
malware_on_critical_asset(Incident),
|
|
59
|
-
c2_contact(Incident),
|
|
60
|
-
exploitable_endpoint(Incident).
|
|
61
|
-
|
|
62
|
-
type(Incident, confirmed_compromise) :-
|
|
63
|
-
confirmed_compromise(Incident).
|
|
64
|
-
|
|
65
|
-
status(Incident, escalate_to_incident_response) :-
|
|
66
|
-
confirmed_compromise(Incident).
|
|
67
|
-
|
|
68
|
-
reason(Incident, "privileged credential abuse, malware on a critical endpoint, C2 contact, and exploitable RCE are correlated") :-
|
|
69
|
-
confirmed_compromise(Incident).
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
% Practical cyclic recursion: incident impact analysis for a service dependency graph.
|
|
2
|
-
% The payment stack has a real-world feedback cycle: payment_service calls
|
|
3
|
-
% fraud_service, fraud_service calls risk_rules, and risk_rules calls payment_service
|
|
4
|
-
% for authorization data. A payment outage should still produce a finite impact set.
|
|
5
|
-
|
|
6
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
7
|
-
materialize(impactedByFailureOf, 2).
|
|
8
|
-
materialize(status, 2).
|
|
9
|
-
materialize(businessFunctionAtRisk, 2).
|
|
10
|
-
|
|
11
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
12
|
-
depends_on(web_store, checkout_api).
|
|
13
|
-
depends_on(mobile_app, checkout_api).
|
|
14
|
-
depends_on(checkout_api, payment_service).
|
|
15
|
-
depends_on(checkout_api, inventory_service).
|
|
16
|
-
depends_on(payment_service, fraud_service).
|
|
17
|
-
depends_on(fraud_service, risk_rules).
|
|
18
|
-
depends_on(risk_rules, payment_service).
|
|
19
|
-
depends_on(inventory_service, stock_db).
|
|
20
|
-
depends_on(stock_db, inventory_service).
|
|
21
|
-
|
|
22
|
-
business_function(place_order, web_store).
|
|
23
|
-
business_function(mobile_checkout, mobile_app).
|
|
24
|
-
business_function(collect_payment, payment_service).
|
|
25
|
-
business_function(screen_fraud, fraud_service).
|
|
26
|
-
business_function(show_stock, inventory_service).
|
|
27
|
-
|
|
28
|
-
failed(payment_service).
|
|
29
|
-
|
|
30
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
31
|
-
impacted(Service, Failed) :- depends_on(Service, Failed).
|
|
32
|
-
impacted(Service, Failed) :- depends_on(Service, Dependency), impacted(Dependency, Failed).
|
|
33
|
-
|
|
34
|
-
affected(Service) :- failed(Failed), impacted(Service, Failed).
|
|
35
|
-
affected(Service) :- failed(Service).
|
|
36
|
-
|
|
37
|
-
affected_function(Function) :- business_function(Function, Service), affected(Service).
|
|
38
|
-
|
|
39
|
-
impactedByFailureOf(Service, Failed) :- failed(Failed), impacted(Service, Failed).
|
|
40
|
-
status(Service, failed) :- failed(Service).
|
|
41
|
-
businessFunctionAtRisk(Function, true) :- affected_function(Function).
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
% Prime enumeration inspired by Eyelet input/sieve.pl.
|
|
2
|
-
% The 1000-limit answer matches Eyelet output-swipl/sieve.pl.
|
|
3
|
-
%
|
|
4
|
-
% eyelang uses the built-in smallest_divisor_from/3 relation to keep the
|
|
5
|
-
% example fast while preserving the same generated prime list.
|
|
6
|
-
|
|
7
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
8
|
-
materialize(primes, 2).
|
|
9
|
-
|
|
10
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
11
|
-
want_primes(1000).
|
|
12
|
-
|
|
13
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
14
|
-
prime_under(Limit, P) :-
|
|
15
|
-
between(2, Limit, P),
|
|
16
|
-
smallest_divisor_from(P, 2, P).
|
|
17
|
-
|
|
18
|
-
primes(Limit, Ps) :-
|
|
19
|
-
want_primes(Limit),
|
|
20
|
-
findall(P, prime_under(Limit, P), Ps).
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
% Skolem functional terms in rule heads.
|
|
2
|
-
%
|
|
3
|
-
% A generated resource should be deterministic and collision-free. Use a
|
|
4
|
-
% function symbol whose arguments contain the values that make the resource
|
|
5
|
-
% unique, such as skolem_observation(Patient, Test).
|
|
6
|
-
|
|
7
|
-
% Output declarations: materialize/2 selects the relations written to this example's golden output.
|
|
8
|
-
materialize(type, 2).
|
|
9
|
-
materialize(patient, 2).
|
|
10
|
-
materialize(test, 2).
|
|
11
|
-
materialize(value, 2).
|
|
12
|
-
materialize(about, 2).
|
|
13
|
-
materialize(sameInputsSameId, 2).
|
|
14
|
-
materialize(noObservationClash, 2).
|
|
15
|
-
|
|
16
|
-
% Program structure: facts set up the scenario, and rules derive the materialized conclusions.
|
|
17
|
-
test_result(alice, glucose, 6.8).
|
|
18
|
-
test_result(alice, cholesterol, 4.2).
|
|
19
|
-
test_result(bob, glucose, 5.1).
|
|
20
|
-
|
|
21
|
-
% Derivation rules: each rule below contributes one logical step toward the displayed results.
|
|
22
|
-
high_glucose(Patient) :-
|
|
23
|
-
test_result(Patient, glucose, Value),
|
|
24
|
-
gt(Value, 6.0).
|
|
25
|
-
|
|
26
|
-
observation_id(Patient, Test, skolem_observation(Patient, Test)) :-
|
|
27
|
-
test_result(Patient, Test, _Value).
|
|
28
|
-
|
|
29
|
-
type(skolem_observation(Patient, Test), observation) :-
|
|
30
|
-
test_result(Patient, Test, _Value).
|
|
31
|
-
|
|
32
|
-
patient(skolem_observation(Patient, Test), Patient) :-
|
|
33
|
-
test_result(Patient, Test, _Value).
|
|
34
|
-
|
|
35
|
-
test(skolem_observation(Patient, Test), Test) :-
|
|
36
|
-
test_result(Patient, Test, _Value).
|
|
37
|
-
|
|
38
|
-
value(skolem_observation(Patient, Test), Value) :-
|
|
39
|
-
test_result(Patient, Test, Value).
|
|
40
|
-
|
|
41
|
-
type(skolem_alert(Patient, glucose), highGlucoseAlert) :-
|
|
42
|
-
high_glucose(Patient).
|
|
43
|
-
|
|
44
|
-
about(skolem_alert(Patient, glucose), skolem_observation(Patient, glucose)) :-
|
|
45
|
-
high_glucose(Patient).
|
|
46
|
-
|
|
47
|
-
sameInputsSameId(skolemDemo, true) :-
|
|
48
|
-
eq(skolem_observation(alice, glucose), skolem_observation(alice, glucose)).
|
|
49
|
-
|
|
50
|
-
noObservationClash(skolemDemo, true) :-
|
|
51
|
-
neq(skolem_observation(alice, glucose), skolem_observation(alice, cholesterol)),
|
|
52
|
-
neq(skolem_observation(alice, glucose), skolem_observation(bob, glucose)).
|