/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 p(a,a,a) w.r.t. the given Prolog program could successfully be proven: (0) Prolog (1) PrologToIRSwTTransformerProof [SOUND, 0 ms] (2) TRUE ---------------------------------------- (0) Obligation: Clauses: p(X, X, a) :- !. p(X, Y, Z) :- ','(=(Z, a), ','(=(X, Y), p(X, Y, Z))). Query: p(a,a,a) ---------------------------------------- (1) PrologToIRSwTTransformerProof (SOUND) Transformed Prolog program to IRSwT according to method in Master Thesis of A. Weinert { "root": 1, "program": { "directives": [], "clauses": [ [ "(p X X (a))", "(!)" ], [ "(p X Y Z)", "(',' (= Z (a)) (',' (= X Y) (p X Y Z)))" ] ] }, "graph": { "nodes": { "16": { "goal": [ { "clause": -1, "scope": -1, "term": "(!_1)" }, { "clause": 1, "scope": 1, "term": "(p T1 T2 T3)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "17": { "goal": [{ "clause": 1, "scope": 1, "term": "(p T1 T2 T3)" }], "kb": { "nonunifying": [[ "(p T1 T2 T3)", "(p X3 X3 (a))" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X3"], "exprvars": [] } }, "18": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "180": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "131": { "goal": [{ "clause": -1, "scope": -1, "term": "(p T26 T26 (a))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "132": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "1": { "goal": [{ "clause": -1, "scope": -1, "term": "(p T1 T2 T3)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "178": { "goal": [ { "clause": -1, "scope": -1, "term": "(!_2)" }, { "clause": 1, "scope": 2, "term": "(p T26 T26 (a))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "3": { "goal": [ { "clause": 0, "scope": 1, "term": "(p T1 T2 T3)" }, { "clause": 1, "scope": 1, "term": "(p T1 T2 T3)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "179": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "126": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T19 (a)) (',' (= T20 T21) (p T20 T21 T19)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "127": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T22 T23) (p T22 T23 (a)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "138": { "goal": [ { "clause": 0, "scope": 2, "term": "(p T26 T26 (a))" }, { "clause": 1, "scope": 2, "term": "(p T26 T26 (a))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "128": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "118": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } } }, "edges": [ { "from": 1, "to": 3, "label": "CASE" }, { "from": 3, "to": 16, "label": "EVAL with clause\np(X3, X3, a) :- !_1.\nand substitutionT1 -> T6,\nX3 -> T6,\nT2 -> T6,\nT3 -> a" }, { "from": 3, "to": 17, "label": "EVAL-BACKTRACK" }, { "from": 16, "to": 18, "label": "CUT" }, { "from": 17, "to": 126, "label": "ONLY EVAL with clause\np(X10, X11, X12) :- ','(=(X12, a), ','(=(X10, X11), p(X10, X11, X12))).\nand substitutionT1 -> T20,\nX10 -> T20,\nT2 -> T21,\nX11 -> T21,\nT3 -> T19,\nX12 -> T19,\nT18 -> T19,\nT16 -> T20,\nT17 -> T21" }, { "from": 18, "to": 118, "label": "SUCCESS" }, { "from": 126, "to": 127, "label": "UNIFY CASE with substitutionT19 -> a,\nT20 -> T22,\nT21 -> T23" }, { "from": 126, "to": 128, "label": "UNIFY-BACKTRACK" }, { "from": 127, "to": 131, "label": "UNIFY CASE with substitutionT22 -> T26,\nT23 -> T26,\nT25 -> T26" }, { "from": 127, "to": 132, "label": "UNIFY-BACKTRACK" }, { "from": 131, "to": 138, "label": "CASE" }, { "from": 138, "to": 178, "label": "ONLY EVAL with clause\np(X16, X16, a) :- !_2.\nand substitutionT26 -> T30,\nX16 -> T30" }, { "from": 178, "to": 179, "label": "CUT" }, { "from": 179, "to": 180, "label": "SUCCESS" } ], "type": "Graph" } } ---------------------------------------- (2) TRUE