/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.pl /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.pl # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Left Termination of the query pattern f(a) 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: f(X) :- ','(p(X), q(X)). p(a) :- !. p(X) :- p(Y). q(b). Query: f(a) ---------------------------------------- (1) PrologToDTProblemTransformerProof (SOUND) Built DT problem from termination graph DT10. { "root": 3, "program": { "directives": [], "clauses": [ [ "(f X)", "(',' (p X) (q X))" ], [ "(p (a))", "(!)" ], [ "(p X)", "(p Y)" ], [ "(q (b))", null ] ] }, "graph": { "nodes": { "11": { "goal": [{ "clause": 2, "scope": 2, "term": "(',' (p T4) (q T4))" }], "kb": { "nonunifying": [[ "(p T4)", "(p (a))" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "12": { "goal": [{ "clause": -1, "scope": -1, "term": "(q (a))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "34": { "goal": [ { "clause": 1, "scope": 4, "term": "(p X7)" }, { "clause": 2, "scope": 4, "term": "(p X7)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X7"], "exprvars": [] } }, "13": { "goal": [{ "clause": 3, "scope": 3, "term": "(q (a))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "35": { "goal": [ { "clause": -1, "scope": -1, "term": "(!_4)" }, { "clause": 2, "scope": 4, "term": "(p X7)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X7"], "exprvars": [] } }, "14": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "36": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "37": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "38": { "goal": [{ "clause": 3, "scope": 5, "term": "(q T9)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "17": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (p X7) (q T9))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X7"], "exprvars": [] } }, "39": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "18": { "goal": [{ "clause": -1, "scope": -1, "term": "(p X7)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X7"], "exprvars": [] } }, "19": { "goal": [{ "clause": -1, "scope": -1, "term": "(q T9)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "3": { "goal": [{ "clause": -1, "scope": -1, "term": "(f T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "6": { "goal": [{ "clause": 0, "scope": 1, "term": "(f T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "7": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (p T4) (q T4))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "9": { "goal": [ { "clause": 1, "scope": 2, "term": "(',' (p T4) (q T4))" }, { "clause": 2, "scope": 2, "term": "(',' (p T4) (q T4))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "40": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "41": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "10": { "goal": [ { "clause": -1, "scope": -1, "term": "(',' (!_2) (q (a)))" }, { "clause": 2, "scope": 2, "term": "(',' (p T4) (q T4))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } } }, "edges": [ { "from": 3, "to": 6, "label": "CASE" }, { "from": 6, "to": 7, "label": "ONLY EVAL with clause\nf(X2) :- ','(p(X2), q(X2)).\nand substitutionT1 -> T4,\nX2 -> T4,\nT3 -> T4" }, { "from": 7, "to": 9, "label": "CASE" }, { "from": 9, "to": 10, "label": "EVAL with clause\np(a) :- !_2.\nand substitutionT4 -> a" }, { "from": 9, "to": 11, "label": "EVAL-BACKTRACK" }, { "from": 10, "to": 12, "label": "CUT" }, { "from": 11, "to": 17, "label": "ONLY EVAL with clause\np(X6) :- p(X7).\nand substitutionT4 -> T9,\nX6 -> T9,\nT8 -> T9" }, { "from": 12, "to": 13, "label": "CASE" }, { "from": 13, "to": 14, "label": "BACKTRACK\nfor clause: q(b)because of non-unification" }, { "from": 17, "to": 18, "label": "SPLIT 1" }, { "from": 17, "to": 19, "label": "SPLIT 2\nreplacements:X7 -> T10" }, { "from": 18, "to": 34, "label": "CASE" }, { "from": 19, "to": 38, "label": "CASE" }, { "from": 34, "to": 35, "label": "ONLY EVAL with clause\np(a) :- !_4.\nand substitutionX7 -> a" }, { "from": 35, "to": 36, "label": "CUT" }, { "from": 36, "to": 37, "label": "SUCCESS" }, { "from": 38, "to": 39, "label": "EVAL with clause\nq(b).\nand substitutionT9 -> b" }, { "from": 38, "to": 40, "label": "EVAL-BACKTRACK" }, { "from": 39, "to": 41, "label": "SUCCESS" } ], "type": "Graph" } } ---------------------------------------- (2) Obligation: Triples: Clauses: pcA(a). Afs: ---------------------------------------- (3) TPisEmptyProof (EQUIVALENT) There are no more dependency triples. Hence, the dependency triple problem trivially terminates. ---------------------------------------- (4) YES