3.30/1.62 YES 3.30/1.63 proof of /export/starexec/sandbox2/benchmark/theBenchmark.pl 3.30/1.63 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 3.30/1.63 3.30/1.63 3.30/1.63 Left Termination of the query pattern 3.30/1.63 3.30/1.63 p(a) 3.30/1.63 3.30/1.63 w.r.t. the given Prolog program could successfully be proven: 3.30/1.63 3.30/1.63 (0) Prolog 3.30/1.63 (1) PrologToIRSwTTransformerProof [SOUND, 0 ms] 3.30/1.63 (2) TRUE 3.30/1.63 3.30/1.63 3.30/1.63 ---------------------------------------- 3.30/1.63 3.30/1.63 (0) 3.30/1.63 Obligation: 3.30/1.63 Clauses: 3.30/1.63 3.30/1.63 p(X) :- ','(q(f(Y)), p(Y)). 3.30/1.63 q(g(Y)). 3.30/1.63 3.30/1.63 3.30/1.63 Query: p(a) 3.30/1.63 ---------------------------------------- 3.30/1.63 3.30/1.63 (1) PrologToIRSwTTransformerProof (SOUND) 3.30/1.63 Transformed Prolog program to IRSwT according to method in Master Thesis of A. Weinert 3.30/1.63 3.30/1.63 { 3.30/1.63 "root": 61, 3.30/1.63 "program": { 3.30/1.63 "directives": [], 3.30/1.63 "clauses": [ 3.30/1.63 [ 3.30/1.63 "(p X)", 3.30/1.63 "(',' (q (f Y)) (p Y))" 3.30/1.63 ], 3.30/1.63 [ 3.30/1.63 "(q (g Y))", 3.30/1.63 null 3.30/1.63 ] 3.30/1.63 ] 3.30/1.63 }, 3.30/1.63 "graph": { 3.30/1.63 "nodes": { 3.30/1.63 "88": { 3.30/1.63 "goal": [{ 3.30/1.63 "clause": 1, 3.30/1.63 "scope": 2, 3.30/1.63 "term": "(',' (q (f X8)) (p X8))" 3.30/1.63 }], 3.30/1.63 "kb": { 3.30/1.63 "nonunifying": [], 3.30/1.63 "intvars": {}, 3.30/1.63 "arithmetic": { 3.30/1.63 "type": "PlainIntegerRelationState", 3.30/1.63 "relations": [] 3.30/1.63 }, 3.30/1.63 "ground": [], 3.30/1.63 "free": ["X8"], 3.30/1.63 "exprvars": [] 3.30/1.63 } 3.30/1.63 }, 3.30/1.63 "90": { 3.30/1.63 "goal": [], 3.30/1.63 "kb": { 3.30/1.63 "nonunifying": [], 3.30/1.63 "intvars": {}, 3.30/1.63 "arithmetic": { 3.30/1.63 "type": "PlainIntegerRelationState", 3.30/1.63 "relations": [] 3.30/1.63 }, 3.30/1.63 "ground": [], 3.30/1.63 "free": [], 3.30/1.63 "exprvars": [] 3.30/1.63 } 3.30/1.63 }, 3.30/1.63 "61": { 3.30/1.63 "goal": [{ 3.30/1.63 "clause": -1, 3.30/1.63 "scope": -1, 3.30/1.63 "term": "(p T1)" 3.30/1.63 }], 3.30/1.63 "kb": { 3.30/1.63 "nonunifying": [], 3.30/1.63 "intvars": {}, 3.30/1.63 "arithmetic": { 3.30/1.63 "type": "PlainIntegerRelationState", 3.30/1.63 "relations": [] 3.30/1.63 }, 3.30/1.63 "ground": [], 3.30/1.63 "free": [], 3.30/1.63 "exprvars": [] 3.30/1.63 } 3.30/1.63 }, 3.30/1.63 "type": "Nodes", 3.30/1.63 "62": { 3.30/1.63 "goal": [{ 3.30/1.63 "clause": 0, 3.30/1.63 "scope": 1, 3.30/1.63 "term": "(p T1)" 3.30/1.63 }], 3.30/1.63 "kb": { 3.30/1.63 "nonunifying": [], 3.30/1.63 "intvars": {}, 3.30/1.63 "arithmetic": { 3.30/1.63 "type": "PlainIntegerRelationState", 3.30/1.63 "relations": [] 3.30/1.63 }, 3.30/1.63 "ground": [], 3.30/1.63 "free": [], 3.30/1.63 "exprvars": [] 3.30/1.63 } 3.30/1.63 }, 3.30/1.63 "84": { 3.30/1.63 "goal": [{ 3.30/1.63 "clause": -1, 3.30/1.63 "scope": -1, 3.30/1.63 "term": "(',' (q (f X8)) (p X8))" 3.30/1.63 }], 3.30/1.63 "kb": { 3.30/1.63 "nonunifying": [], 3.30/1.63 "intvars": {}, 3.30/1.63 "arithmetic": { 3.30/1.63 "type": "PlainIntegerRelationState", 3.30/1.63 "relations": [] 3.30/1.63 }, 3.30/1.63 "ground": [], 3.30/1.63 "free": ["X8"], 3.30/1.63 "exprvars": [] 3.30/1.63 } 3.30/1.63 } 3.30/1.63 }, 3.30/1.63 "edges": [ 3.30/1.63 { 3.30/1.63 "from": 61, 3.30/1.63 "to": 62, 3.30/1.63 "label": "CASE" 3.30/1.63 }, 3.30/1.63 { 3.30/1.63 "from": 62, 3.30/1.63 "to": 84, 3.30/1.63 "label": "ONLY EVAL with clause\np(X7) :- ','(q(f(X8)), p(X8)).\nand substitutionT1 -> T4,\nX7 -> T4" 3.30/1.63 }, 3.30/1.63 { 3.30/1.63 "from": 84, 3.30/1.63 "to": 88, 3.30/1.63 "label": "CASE" 3.30/1.63 }, 3.30/1.63 { 3.30/1.63 "from": 88, 3.30/1.63 "to": 90, 3.30/1.63 "label": "BACKTRACK\nfor clause: q(g(Y))because of non-unification" 3.30/1.63 } 3.30/1.63 ], 3.30/1.63 "type": "Graph" 3.30/1.63 } 3.30/1.63 } 3.30/1.63 3.30/1.63 ---------------------------------------- 3.30/1.63 3.30/1.63 (2) 3.30/1.63 TRUE 3.43/1.67 EOF