/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 minus(g,g,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: minus(X, Y, Z) :- ','(f(X, 0), ','(!, =(Z, 0))). f(X, Y) :- ','(!, =(X, Y)). f(X, Y) :- f(X, Y). =(X, X). Query: minus(g,g,a) ---------------------------------------- (1) BuiltinConflictTransformerProof (EQUIVALENT) Renamed defined predicates conflicting with built-in predicates [PROLOG]. ---------------------------------------- (2) Obligation: Clauses: minus(X, Y, Z) :- ','(f(X, 0), ','(!, user_defined_=(Z, 0))). f(X, Y) :- ','(!, user_defined_=(X, Y)). f(X, Y) :- f(X, Y). user_defined_=(X, X). Query: minus(g,g,a) ---------------------------------------- (3) PrologToIRSwTTransformerProof (SOUND) Transformed Prolog program to IRSwT according to method in Master Thesis of A. Weinert { "root": 14, "program": { "directives": [], "clauses": [ [ "(minus X Y Z)", "(',' (f X (0)) (',' (!) (user_defined_= Z (0))))" ], [ "(f X Y)", "(',' (!) (user_defined_= X Y))" ], [ "(f X Y)", "(f X Y)" ], [ "(user_defined_= X X)", null ] ] }, "graph": { "nodes": { "14": { "goal": [{ "clause": -1, "scope": -1, "term": "(minus T1 T2 T3)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T1", "T2" ], "free": [], "exprvars": [] } }, "15": { "goal": [{ "clause": 0, "scope": 1, "term": "(minus T1 T2 T3)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T1", "T2" ], "free": [], "exprvars": [] } }, "191": { "goal": [{ "clause": -1, "scope": -1, "term": "(user_defined_= T15 (0))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "192": { "goal": [{ "clause": 3, "scope": 4, "term": "(user_defined_= T15 (0))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "193": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "194": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "195": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "110": { "goal": [{ "clause": 3, "scope": 3, "term": "(user_defined_= T20 (0))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T20"], "free": [], "exprvars": [] } }, "100": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (f T12 (0)) (',' (!_1) (user_defined_= T15 (0))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": [], "exprvars": [] } }, "111": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "124": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "105": { "goal": [{ "clause": -1, "scope": -1, "term": "(f T12 (0))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": [], "exprvars": [] } }, "106": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (!_1) (user_defined_= T15 (0)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "107": { "goal": [ { "clause": 1, "scope": 2, "term": "(f T12 (0))" }, { "clause": 2, "scope": 2, "term": "(f T12 (0))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": [], "exprvars": [] } }, "118": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "108": { "goal": [ { "clause": -1, "scope": -1, "term": "(',' (!_2) (user_defined_= T20 (0)))" }, { "clause": 2, "scope": 2, "term": "(f T20 (0))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T20"], "free": [], "exprvars": [] } }, "109": { "goal": [{ "clause": -1, "scope": -1, "term": "(user_defined_= T20 (0))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T20"], "free": [], "exprvars": [] } } }, "edges": [ { "from": 14, "to": 15, "label": "CASE" }, { "from": 15, "to": 100, "label": "ONLY EVAL with clause\nminus(X9, X10, X11) :- ','(f(X9, 0), ','(!_1, user_defined_=(X11, 0))).\nand substitutionT1 -> T12,\nX9 -> T12,\nT2 -> T13,\nX10 -> T13,\nT3 -> T15,\nX11 -> T15,\nT14 -> T15" }, { "from": 100, "to": 105, "label": "SPLIT 1" }, { "from": 100, "to": 106, "label": "SPLIT 2\nnew knowledge:\nT12 is ground" }, { "from": 105, "to": 107, "label": "CASE" }, { "from": 106, "to": 191, "label": "CUT" }, { "from": 107, "to": 108, "label": "ONLY EVAL with clause\nf(X20, X21) :- ','(!_2, user_defined_=(X20, X21)).\nand substitutionT12 -> T20,\nX20 -> T20,\nX21 -> 0" }, { "from": 108, "to": 109, "label": "CUT" }, { "from": 109, "to": 110, "label": "CASE" }, { "from": 110, "to": 111, "label": "EVAL with clause\nuser_defined_=(X24, X24).\nand substitutionT20 -> 0,\nX24 -> 0,\nT23 -> 0" }, { "from": 110, "to": 118, "label": "EVAL-BACKTRACK" }, { "from": 111, "to": 124, "label": "SUCCESS" }, { "from": 191, "to": 192, "label": "CASE" }, { "from": 192, "to": 193, "label": "EVAL with clause\nuser_defined_=(X27, X27).\nand substitutionT15 -> 0,\nX27 -> 0,\nT26 -> 0" }, { "from": 192, "to": 194, "label": "EVAL-BACKTRACK" }, { "from": 193, "to": 195, "label": "SUCCESS" } ], "type": "Graph" } } ---------------------------------------- (4) TRUE