/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 p(a,a,a) w.r.t. the given Prolog program could successfully be proven: (0) Prolog (1) BuiltinConflictTransformerProof [EQUIVALENT, 0 ms] (2) Prolog (3) PrologToIRSwTTransformerProof [SOUND, 0 ms] (4) TRUE ---------------------------------------- (0) Obligation: Clauses: p(X, X, 1) :- !. p(X, Y, Z) :- ','(=(Z, 1), ','(=(Y, X), p(X, Y, Z))). =(X, X). Query: p(a,a,a) ---------------------------------------- (1) BuiltinConflictTransformerProof (EQUIVALENT) Renamed defined predicates conflicting with built-in predicates [PROLOG]. ---------------------------------------- (2) Obligation: Clauses: p(X, X, 1) :- !. p(X, Y, Z) :- ','(user_defined_=(Z, 1), ','(user_defined_=(Y, X), p(X, Y, Z))). user_defined_=(X, X). Query: p(a,a,a) ---------------------------------------- (3) PrologToIRSwTTransformerProof (SOUND) Transformed Prolog program to IRSwT according to method in Master Thesis of A. Weinert { "root": 2, "program": { "directives": [], "clauses": [ [ "(p X X (1))", "(!)" ], [ "(p X Y Z)", "(',' (user_defined_= Z (1)) (',' (user_defined_= Y X) (p X Y Z)))" ], [ "(user_defined_= X X)", null ] ] }, "graph": { "nodes": { "type": "Nodes", "130": { "goal": [ { "clause": -1, "scope": -1, "term": "(!_4)" }, { "clause": 1, "scope": 4, "term": "(p T33 T33 (1))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "131": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "110": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "132": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "122": { "goal": [{ "clause": 2, "scope": 3, "term": "(',' (user_defined_= T27 T28) (p T28 T27 (1)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "2": { "goal": [{ "clause": -1, "scope": -1, "term": "(p T1 T2 T3)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "123": { "goal": [{ "clause": -1, "scope": -1, "term": "(p T33 T33 (1))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "113": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (user_defined_= T20 (1)) (',' (user_defined_= T21 T22) (p T22 T21 T20)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "124": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "103": { "goal": [{ "clause": 1, "scope": 1, "term": "(p T1 T2 T3)" }], "kb": { "nonunifying": [[ "(p T1 T2 T3)", "(p X3 X3 (1))" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X3"], "exprvars": [] } }, "125": { "goal": [ { "clause": 0, "scope": 4, "term": "(p T33 T33 (1))" }, { "clause": 1, "scope": 4, "term": "(p T33 T33 (1))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "6": { "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": [] } }, "116": { "goal": [{ "clause": 2, "scope": 2, "term": "(',' (user_defined_= T20 (1)) (',' (user_defined_= T21 T22) (p T22 T21 T20)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "107": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "118": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (user_defined_= T27 T28) (p T28 T27 (1)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "119": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "87": { "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": [] } } }, "edges": [ { "from": 2, "to": 6, "label": "CASE" }, { "from": 6, "to": 87, "label": "EVAL with clause\np(X3, X3, 1) :- !_1.\nand substitutionT1 -> T6,\nX3 -> T6,\nT2 -> T6,\nT3 -> 1" }, { "from": 6, "to": 103, "label": "EVAL-BACKTRACK" }, { "from": 87, "to": 107, "label": "CUT" }, { "from": 103, "to": 113, "label": "ONLY EVAL with clause\np(X11, X12, X13) :- ','(user_defined_=(X13, 1), ','(user_defined_=(X12, X11), p(X11, X12, X13))).\nand substitutionT1 -> T22,\nX11 -> T22,\nT2 -> T21,\nX12 -> T21,\nT3 -> T20,\nX13 -> T20,\nT19 -> T20,\nT18 -> T21,\nT17 -> T22" }, { "from": 107, "to": 110, "label": "SUCCESS" }, { "from": 113, "to": 116, "label": "CASE" }, { "from": 116, "to": 118, "label": "EVAL with clause\nuser_defined_=(X17, X17).\nand substitutionT20 -> 1,\nX17 -> 1,\nT26 -> 1,\nT21 -> T27,\nT22 -> T28" }, { "from": 116, "to": 119, "label": "EVAL-BACKTRACK" }, { "from": 118, "to": 122, "label": "CASE" }, { "from": 122, "to": 123, "label": "EVAL with clause\nuser_defined_=(X21, X21).\nand substitutionT27 -> T33,\nX21 -> T33,\nT28 -> T33,\nT32 -> T33" }, { "from": 122, "to": 124, "label": "EVAL-BACKTRACK" }, { "from": 123, "to": 125, "label": "CASE" }, { "from": 125, "to": 130, "label": "ONLY EVAL with clause\np(X25, X25, 1) :- !_4.\nand substitutionT33 -> T37,\nX25 -> T37" }, { "from": 130, "to": 131, "label": "CUT" }, { "from": 131, "to": 132, "label": "SUCCESS" } ], "type": "Graph" } } ---------------------------------------- (4) TRUE