83 lines
1.9 KiB
Plaintext
83 lines
1.9 KiB
Plaintext
|
|
[differential] programs evaluated: 600 (unstratified: 61, predicate-relations compared: 3234)
|
|
== 1. full unittest suite (the CHECK command runs this same suite)
|
|
........................................
|
|
----------------------------------------------------------------------
|
|
Ran 40 tests in 1.022s
|
|
|
|
OK
|
|
testsRun=40 failures=0 errors=0
|
|
|
|
== 2. semi-naive vs naive work on a chain transitive closure
|
|
n |path| semi-naive naive speedup rounds
|
|
6 15 105 300 2.9x 5
|
|
12 66 858 5687 6.6x 11
|
|
16 120 2040 18825 9.2x 15
|
|
20 190 3990 47291 11.9x 19
|
|
|
|
== 3. fresh-seed differential run: 400 programs, engine vs oracle
|
|
programs=400 unstratified=43 predicate-relations compared=2142 mismatches=0
|
|
|
|
== 4. strata assignment + refusal of a non-stratified program
|
|
strata: [['edge'], ['node'], ['source'], ['reach'], ['unreach']]
|
|
reach: [('a',), ('b',)] unreach: [('c',)]
|
|
refused: negation is not stratified: p negates q but they are mutually recursive (SCC: p, q)
|
|
|
|
ALL SECTIONS CLEAN
|
|
|
|
== 5. CLI on examples/reach.dl (appended by hand, not by evidence_run.py)
|
|
$ python3 datalog.py examples/reach.dl --text --stats
|
|
edge: 2 tuple(s)
|
|
edge(a, b).
|
|
edge(b, c).
|
|
node: 4 tuple(s)
|
|
node(a).
|
|
node(b).
|
|
node(c).
|
|
node(d).
|
|
reach: 3 tuple(s)
|
|
reach(a).
|
|
reach(b).
|
|
reach(c).
|
|
sink: 2 tuple(s)
|
|
sink(c).
|
|
sink(d).
|
|
source: 1 tuple(s)
|
|
source(a).
|
|
unreachable: 1 tuple(s)
|
|
unreachable(d).
|
|
{"bindings": 20, "derived": 6, "rounds": 5, "rule_runs": 6}
|
|
exit=0
|
|
|
|
$ python3 datalog.py examples/reach.dl -q unreachable
|
|
{
|
|
"predicates": {
|
|
"unreachable": [
|
|
[
|
|
"d"
|
|
]
|
|
]
|
|
},
|
|
"strata": [
|
|
[
|
|
"edge"
|
|
],
|
|
[
|
|
"node"
|
|
],
|
|
[
|
|
"sink"
|
|
],
|
|
[
|
|
"source"
|
|
],
|
|
[
|
|
"reach"
|
|
],
|
|
[
|
|
"unreachable"
|
|
]
|
|
]
|
|
}
|
|
exit=0
|