/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) w.r.t. the given Prolog program could successfully be proven: (0) Prolog (1) PrologToIRSwTTransformerProof [SOUND, 0 ms] (2) TRUE ---------------------------------------- (0) Obligation: Clauses: p(.(A, [])) :- l(.(A, [])). r(1). l([]). l(.(H, T)) :- ','(r(H), l(T)). Query: p(a) ---------------------------------------- (1) PrologToIRSwTTransformerProof (SOUND) Transformed Prolog program to IRSwT according to method in Master Thesis of A. Weinert { "root": 8, "program": { "directives": [], "clauses": [ [ "(p (. A ([])))", "(l (. A ([])))" ], [ "(r (1))", null ], [ "(l ([]))", null ], [ "(l (. H T))", "(',' (r H) (l T))" ] ] }, "graph": { "nodes": { "22": { "goal": [{ "clause": 0, "scope": 1, "term": "(p T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "99": { "goal": [ { "clause": 2, "scope": 2, "term": "(l (. T5 ([])))" }, { "clause": 3, "scope": 2, "term": "(l (. T5 ([])))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "140": { "goal": [{ "clause": -1, "scope": -1, "term": "(l ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "151": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "152": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "142": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "153": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "145": { "goal": [ { "clause": 2, "scope": 4, "term": "(l ([]))" }, { "clause": 3, "scope": 4, "term": "(l ([]))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "102": { "goal": [{ "clause": 3, "scope": 2, "term": "(l (. T5 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "148": { "goal": [{ "clause": 2, "scope": 4, "term": "(l ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "138": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (r T10) (l ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "149": { "goal": [{ "clause": 3, "scope": 4, "term": "(l ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "139": { "goal": [{ "clause": 1, "scope": 3, "term": "(',' (r T10) (l ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "8": { "goal": [{ "clause": -1, "scope": -1, "term": "(p T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "85": { "goal": [{ "clause": -1, "scope": -1, "term": "(l (. T5 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "86": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } } }, "edges": [ { "from": 8, "to": 22, "label": "CASE" }, { "from": 22, "to": 85, "label": "EVAL with clause\np(.(X3, [])) :- l(.(X3, [])).\nand substitutionX3 -> T5,\nT1 -> .(T5, []),\nT4 -> T5" }, { "from": 22, "to": 86, "label": "EVAL-BACKTRACK" }, { "from": 85, "to": 99, "label": "CASE" }, { "from": 99, "to": 102, "label": "BACKTRACK\nfor clause: l([])because of non-unification" }, { "from": 102, "to": 138, "label": "ONLY EVAL with clause\nl(.(X8, X9)) :- ','(r(X8), l(X9)).\nand substitutionT5 -> T10,\nX8 -> T10,\nX9 -> [],\nT9 -> T10" }, { "from": 138, "to": 139, "label": "CASE" }, { "from": 139, "to": 140, "label": "EVAL with clause\nr(1).\nand substitutionT10 -> 1" }, { "from": 139, "to": 142, "label": "EVAL-BACKTRACK" }, { "from": 140, "to": 145, "label": "CASE" }, { "from": 145, "to": 148, "label": "PARALLEL" }, { "from": 145, "to": 149, "label": "PARALLEL" }, { "from": 148, "to": 151, "label": "ONLY EVAL with clause\nl([]).\nand substitution" }, { "from": 149, "to": 153, "label": "BACKTRACK\nfor clause: l(.(H, T)) :- ','(r(H), l(T))because of non-unification" }, { "from": 151, "to": 152, "label": "SUCCESS" } ], "type": "Graph" } } ---------------------------------------- (2) TRUE