/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.pl /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/benchmark/theBenchmark.pl # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Left Termination of the query pattern goal() w.r.t. the given Prolog program could successfully be proven: (0) Prolog (1) PrologToDTProblemTransformerProof [SOUND, 0 ms] (2) TRIPLES (3) TPisEmptyProof [EQUIVALENT, 0 ms] (4) YES ---------------------------------------- (0) Obligation: Clauses: goal :- ','(lte(X, s(s(s(s(0))))), even(X)). lte(0, Y) :- !. lte(X, s(Y)) :- ','(p(X, P), lte(P, Y)). even(0). even(s(s(X))) :- even(X). p(0, 0). p(s(X), X). Query: goal() ---------------------------------------- (1) PrologToDTProblemTransformerProof (SOUND) Built DT problem from termination graph DT10. { "root": 2, "program": { "directives": [], "clauses": [ [ "(goal)", "(',' (lte X (s (s (s (s (0)))))) (even X))" ], [ "(lte (0) Y)", "(!)" ], [ "(lte X (s Y))", "(',' (p X P) (lte P Y))" ], [ "(even (0))", null ], [ "(even (s (s X)))", "(even X)" ], [ "(p (0) (0))", null ], [ "(p (s X) X)", null ] ] }, "graph": { "nodes": { "33": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "12": { "goal": [{ "clause": -1, "scope": -1, "term": "(even (0))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "13": { "goal": [ { "clause": 3, "scope": 3, "term": "(even (0))" }, { "clause": 4, "scope": 3, "term": "(even (0))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "14": { "goal": [{ "clause": 3, "scope": 3, "term": "(even (0))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "15": { "goal": [{ "clause": 4, "scope": 3, "term": "(even (0))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "27": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "2": { "goal": [{ "clause": -1, "scope": -1, "term": "(goal)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "5": { "goal": [{ "clause": 0, "scope": 1, "term": "(goal)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "7": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (lte X1 (s (s (s (s (0)))))) (even X1))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X1"], "exprvars": [] } }, "8": { "goal": [ { "clause": 1, "scope": 2, "term": "(',' (lte X1 (s (s (s (s (0)))))) (even X1))" }, { "clause": 2, "scope": 2, "term": "(',' (lte X1 (s (s (s (s (0)))))) (even X1))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X1"], "exprvars": [] } }, "10": { "goal": [ { "clause": -1, "scope": -1, "term": "(',' (!_2) (even (0)))" }, { "clause": 2, "scope": 2, "term": "(',' (lte X1 (s (s (s (s (0)))))) (even X1))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X1"], "exprvars": [] } }, "32": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } } }, "edges": [ { "from": 2, "to": 5, "label": "CASE" }, { "from": 5, "to": 7, "label": "ONLY EVAL with clause\ngoal :- ','(lte(X1, s(s(s(s(0))))), even(X1)).\nand substitution" }, { "from": 7, "to": 8, "label": "CASE" }, { "from": 8, "to": 10, "label": "ONLY EVAL with clause\nlte(0, X4) :- !_2.\nand substitutionX1 -> 0,\nX4 -> s(s(s(s(0))))" }, { "from": 10, "to": 12, "label": "CUT" }, { "from": 12, "to": 13, "label": "CASE" }, { "from": 13, "to": 14, "label": "PARALLEL" }, { "from": 13, "to": 15, "label": "PARALLEL" }, { "from": 14, "to": 27, "label": "ONLY EVAL with clause\neven(0).\nand substitution" }, { "from": 15, "to": 33, "label": "BACKTRACK\nfor clause: even(s(s(X))) :- even(X)because of non-unification" }, { "from": 27, "to": 32, "label": "SUCCESS" } ], "type": "Graph" } } ---------------------------------------- (2) Obligation: Triples: Clauses: Afs: ---------------------------------------- (3) TPisEmptyProof (EQUIVALENT) There are no more dependency triples. Hence, the dependency triple problem trivially terminates. ---------------------------------------- (4) YES