/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) PrologToIRSwTTransformerProof [SOUND, 0 ms] (2) TRUE ---------------------------------------- (0) Obligation: Clauses: p(X, X, a) :- !. p(X, Y, Z) :- ','(eq(Z, a), ','(eq(X, Y), p(X, Y, Z))). eq(X, X). Query: p(a,a,a) ---------------------------------------- (1) PrologToIRSwTTransformerProof (SOUND) Transformed Prolog program to IRSwT according to method in Master Thesis of A. Weinert { "root": 4, "program": { "directives": [], "clauses": [ [ "(p X X (a))", "(!)" ], [ "(p X Y Z)", "(',' (eq Z (a)) (',' (eq X Y) (p X Y Z)))" ], [ "(eq X X)", null ] ] }, "graph": { "nodes": { "22": { "goal": [{ "clause": 2, "scope": 2, "term": "(',' (eq T20 (a)) (',' (eq T21 T22) (p T21 T22 T20)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "55": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "23": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (eq T27 T28) (p T27 T28 (a)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "56": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "24": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "25": { "goal": [{ "clause": 2, "scope": 3, "term": "(',' (eq T27 T28) (p T27 T28 (a)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "26": { "goal": [{ "clause": -1, "scope": -1, "term": "(p T33 T33 (a))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "27": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "17": { "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": [] } }, "18": { "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": [] } }, "19": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "4": { "goal": [{ "clause": -1, "scope": -1, "term": "(p T1 T2 T3)" }], "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": [] } }, "20": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "53": { "goal": [ { "clause": 0, "scope": 4, "term": "(p T33 T33 (a))" }, { "clause": 1, "scope": 4, "term": "(p T33 T33 (a))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "21": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (eq T20 (a)) (',' (eq T21 T22) (p T21 T22 T20)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "54": { "goal": [ { "clause": -1, "scope": -1, "term": "(!_4)" }, { "clause": 1, "scope": 4, "term": "(p T33 T33 (a))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } } }, "edges": [ { "from": 4, "to": 6, "label": "CASE" }, { "from": 6, "to": 17, "label": "EVAL with clause\np(X3, X3, a) :- !_1.\nand substitutionT1 -> T6,\nX3 -> T6,\nT2 -> T6,\nT3 -> a" }, { "from": 6, "to": 18, "label": "EVAL-BACKTRACK" }, { "from": 17, "to": 19, "label": "CUT" }, { "from": 18, "to": 21, "label": "ONLY EVAL with clause\np(X11, X12, X13) :- ','(eq(X13, a), ','(eq(X11, X12), p(X11, X12, X13))).\nand substitutionT1 -> T21,\nX11 -> T21,\nT2 -> T22,\nX12 -> T22,\nT3 -> T20,\nX13 -> T20,\nT19 -> T20,\nT17 -> T21,\nT18 -> T22" }, { "from": 19, "to": 20, "label": "SUCCESS" }, { "from": 21, "to": 22, "label": "CASE" }, { "from": 22, "to": 23, "label": "EVAL with clause\neq(X17, X17).\nand substitutionT20 -> a,\nX17 -> a,\nT26 -> a,\nT21 -> T27,\nT22 -> T28" }, { "from": 22, "to": 24, "label": "EVAL-BACKTRACK" }, { "from": 23, "to": 25, "label": "CASE" }, { "from": 25, "to": 26, "label": "EVAL with clause\neq(X21, X21).\nand substitutionT27 -> T33,\nX21 -> T33,\nT28 -> T33,\nT32 -> T33" }, { "from": 25, "to": 27, "label": "EVAL-BACKTRACK" }, { "from": 26, "to": 53, "label": "CASE" }, { "from": 53, "to": 54, "label": "ONLY EVAL with clause\np(X25, X25, a) :- !_4.\nand substitutionT33 -> T37,\nX25 -> T37" }, { "from": 54, "to": 55, "label": "CUT" }, { "from": 55, "to": 56, "label": "SUCCESS" } ], "type": "Graph" } } ---------------------------------------- (2) TRUE