3.39/1.66 YES 3.39/1.67 proof of /export/starexec/sandbox/benchmark/theBenchmark.pl 3.39/1.67 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 3.39/1.67 3.39/1.67 3.39/1.67 Left Termination of the query pattern 3.39/1.67 3.39/1.67 p(g,a) 3.39/1.67 3.39/1.67 w.r.t. the given Prolog program could successfully be proven: 3.39/1.67 3.39/1.67 (0) Prolog 3.39/1.67 (1) PrologToDTProblemTransformerProof [SOUND, 0 ms] 3.39/1.67 (2) TRIPLES 3.39/1.67 (3) TPisEmptyProof [EQUIVALENT, 0 ms] 3.39/1.67 (4) YES 3.39/1.67 3.39/1.67 3.39/1.67 ---------------------------------------- 3.39/1.67 3.39/1.67 (0) 3.39/1.67 Obligation: 3.39/1.67 Clauses: 3.39/1.67 3.39/1.67 p(X, g(X)). 3.39/1.67 p(X, f(Y)) :- p(X, g(Y)). 3.39/1.67 3.39/1.67 3.39/1.67 Query: p(g,a) 3.39/1.67 ---------------------------------------- 3.39/1.67 3.39/1.67 (1) PrologToDTProblemTransformerProof (SOUND) 3.39/1.67 Built DT problem from termination graph DT10. 3.39/1.67 3.39/1.67 { 3.39/1.67 "root": 2, 3.39/1.67 "program": { 3.39/1.67 "directives": [], 3.39/1.67 "clauses": [ 3.39/1.67 [ 3.39/1.67 "(p X (g X))", 3.39/1.67 null 3.39/1.67 ], 3.39/1.67 [ 3.39/1.67 "(p X (f Y))", 3.39/1.67 "(p X (g Y))" 3.39/1.67 ] 3.39/1.67 ] 3.39/1.67 }, 3.39/1.67 "graph": { 3.39/1.67 "nodes": { 3.39/1.67 "66": { 3.39/1.67 "goal": [{ 3.39/1.67 "clause": 1, 3.39/1.67 "scope": 1, 3.39/1.67 "term": "(p T4 T2)" 3.39/1.67 }], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": ["T4"], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "67": { 3.39/1.67 "goal": [{ 3.39/1.67 "clause": -1, 3.39/1.67 "scope": -1, 3.39/1.67 "term": "(p T7 (g T9))" 3.39/1.67 }], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": ["T7"], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "68": { 3.39/1.67 "goal": [], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": [], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "69": { 3.39/1.67 "goal": [ 3.39/1.67 { 3.39/1.67 "clause": 0, 3.39/1.67 "scope": 2, 3.39/1.67 "term": "(p T7 (g T9))" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "clause": 1, 3.39/1.67 "scope": 2, 3.39/1.67 "term": "(p T7 (g T9))" 3.39/1.67 } 3.39/1.67 ], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": ["T7"], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "type": "Nodes", 3.39/1.67 "120": { 3.39/1.67 "goal": [{ 3.39/1.67 "clause": -1, 3.39/1.67 "scope": -1, 3.39/1.67 "term": "(true)" 3.39/1.67 }], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": [], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "110": { 3.39/1.67 "goal": [{ 3.39/1.67 "clause": 1, 3.39/1.67 "scope": 2, 3.39/1.67 "term": "(p T7 (g T9))" 3.39/1.67 }], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": ["T7"], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "121": { 3.39/1.67 "goal": [], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": [], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "111": { 3.39/1.67 "goal": [{ 3.39/1.67 "clause": -1, 3.39/1.67 "scope": -1, 3.39/1.67 "term": "(true)" 3.39/1.67 }], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": [], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "122": { 3.39/1.67 "goal": [], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": [], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "2": { 3.39/1.67 "goal": [{ 3.39/1.67 "clause": -1, 3.39/1.67 "scope": -1, 3.39/1.67 "term": "(p T1 T2)" 3.39/1.67 }], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": ["T1"], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "112": { 3.39/1.67 "goal": [], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": [], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "123": { 3.39/1.67 "goal": [], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": [], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "113": { 3.39/1.67 "goal": [], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": [], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "114": { 3.39/1.67 "goal": [], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": [], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "115": { 3.39/1.67 "goal": [{ 3.39/1.67 "clause": -1, 3.39/1.67 "scope": -1, 3.39/1.67 "term": "(p T18 (g T20))" 3.39/1.67 }], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [[ 3.39/1.67 "(p T18 T2)", 3.39/1.67 "(p X2 (g X2))" 3.39/1.67 ]], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": ["T18"], 3.39/1.67 "free": ["X2"], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "116": { 3.39/1.67 "goal": [], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": [], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "117": { 3.39/1.67 "goal": [ 3.39/1.67 { 3.39/1.67 "clause": 0, 3.39/1.67 "scope": 3, 3.39/1.67 "term": "(p T18 (g T20))" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "clause": 1, 3.39/1.67 "scope": 3, 3.39/1.67 "term": "(p T18 (g T20))" 3.39/1.67 } 3.39/1.67 ], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [[ 3.39/1.67 "(p T18 T2)", 3.39/1.67 "(p X2 (g X2))" 3.39/1.67 ]], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": ["T18"], 3.39/1.67 "free": ["X2"], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "118": { 3.39/1.67 "goal": [{ 3.39/1.67 "clause": 0, 3.39/1.67 "scope": 3, 3.39/1.67 "term": "(p T18 (g T20))" 3.39/1.67 }], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [[ 3.39/1.67 "(p T18 T2)", 3.39/1.67 "(p X2 (g X2))" 3.39/1.67 ]], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": ["T18"], 3.39/1.67 "free": ["X2"], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "9": { 3.39/1.67 "goal": [ 3.39/1.67 { 3.39/1.67 "clause": 0, 3.39/1.67 "scope": 1, 3.39/1.67 "term": "(p T1 T2)" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "clause": 1, 3.39/1.67 "scope": 1, 3.39/1.67 "term": "(p T1 T2)" 3.39/1.67 } 3.39/1.67 ], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": ["T1"], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "119": { 3.39/1.67 "goal": [{ 3.39/1.67 "clause": 1, 3.39/1.67 "scope": 3, 3.39/1.67 "term": "(p T18 (g T20))" 3.39/1.67 }], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [[ 3.39/1.67 "(p T18 T2)", 3.39/1.67 "(p X2 (g X2))" 3.39/1.67 ]], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": ["T18"], 3.39/1.67 "free": ["X2"], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "109": { 3.39/1.67 "goal": [{ 3.39/1.67 "clause": 0, 3.39/1.67 "scope": 2, 3.39/1.67 "term": "(p T7 (g T9))" 3.39/1.67 }], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": ["T7"], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "64": { 3.39/1.67 "goal": [ 3.39/1.67 { 3.39/1.67 "clause": -1, 3.39/1.67 "scope": -1, 3.39/1.67 "term": "(true)" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "clause": 1, 3.39/1.67 "scope": 1, 3.39/1.67 "term": "(p T4 T2)" 3.39/1.67 } 3.39/1.67 ], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": ["T4"], 3.39/1.67 "free": [], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "65": { 3.39/1.67 "goal": [{ 3.39/1.67 "clause": 1, 3.39/1.67 "scope": 1, 3.39/1.67 "term": "(p T1 T2)" 3.39/1.67 }], 3.39/1.67 "kb": { 3.39/1.67 "nonunifying": [[ 3.39/1.67 "(p T1 T2)", 3.39/1.67 "(p X2 (g X2))" 3.39/1.67 ]], 3.39/1.67 "intvars": {}, 3.39/1.67 "arithmetic": { 3.39/1.67 "type": "PlainIntegerRelationState", 3.39/1.67 "relations": [] 3.39/1.67 }, 3.39/1.67 "ground": ["T1"], 3.39/1.67 "free": ["X2"], 3.39/1.67 "exprvars": [] 3.39/1.67 } 3.39/1.67 } 3.39/1.67 }, 3.39/1.67 "edges": [ 3.39/1.67 { 3.39/1.67 "from": 2, 3.39/1.67 "to": 9, 3.39/1.67 "label": "CASE" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 9, 3.39/1.67 "to": 64, 3.39/1.67 "label": "EVAL with clause\np(X2, g(X2)).\nand substitutionT1 -> T4,\nX2 -> T4,\nT2 -> g(T4)" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 9, 3.39/1.67 "to": 65, 3.39/1.67 "label": "EVAL-BACKTRACK" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 64, 3.39/1.67 "to": 66, 3.39/1.67 "label": "SUCCESS" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 65, 3.39/1.67 "to": 115, 3.39/1.67 "label": "EVAL with clause\np(X16, f(X17)) :- p(X16, g(X17)).\nand substitutionT1 -> T18,\nX16 -> T18,\nX17 -> T20,\nT2 -> f(T20),\nT19 -> T20" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 65, 3.39/1.67 "to": 116, 3.39/1.67 "label": "EVAL-BACKTRACK" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 66, 3.39/1.67 "to": 67, 3.39/1.67 "label": "EVAL with clause\np(X5, f(X6)) :- p(X5, g(X6)).\nand substitutionT4 -> T7,\nX5 -> T7,\nX6 -> T9,\nT2 -> f(T9),\nT8 -> T9" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 66, 3.39/1.67 "to": 68, 3.39/1.67 "label": "EVAL-BACKTRACK" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 67, 3.39/1.67 "to": 69, 3.39/1.67 "label": "CASE" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 69, 3.39/1.67 "to": 109, 3.39/1.67 "label": "PARALLEL" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 69, 3.39/1.67 "to": 110, 3.39/1.67 "label": "PARALLEL" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 109, 3.39/1.67 "to": 111, 3.39/1.67 "label": "EVAL with clause\np(X11, g(X11)).\nand substitutionT7 -> T14,\nX11 -> T14,\nT9 -> T14" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 109, 3.39/1.67 "to": 112, 3.39/1.67 "label": "EVAL-BACKTRACK" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 110, 3.39/1.67 "to": 114, 3.39/1.67 "label": "BACKTRACK\nfor clause: p(X, f(Y)) :- p(X, g(Y))because of non-unification" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 111, 3.39/1.67 "to": 113, 3.39/1.67 "label": "SUCCESS" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 115, 3.39/1.67 "to": 117, 3.39/1.67 "label": "CASE" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 117, 3.39/1.67 "to": 118, 3.39/1.67 "label": "PARALLEL" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 117, 3.39/1.67 "to": 119, 3.39/1.67 "label": "PARALLEL" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 118, 3.39/1.67 "to": 120, 3.39/1.67 "label": "EVAL with clause\np(X22, g(X22)).\nand substitutionT18 -> T25,\nX22 -> T25,\nT20 -> T25" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 118, 3.39/1.67 "to": 121, 3.39/1.67 "label": "EVAL-BACKTRACK" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 119, 3.39/1.67 "to": 123, 3.39/1.67 "label": "BACKTRACK\nfor clause: p(X, f(Y)) :- p(X, g(Y))because of non-unification" 3.39/1.67 }, 3.39/1.67 { 3.39/1.67 "from": 120, 3.39/1.67 "to": 122, 3.39/1.67 "label": "SUCCESS" 3.39/1.67 } 3.39/1.67 ], 3.39/1.67 "type": "Graph" 3.39/1.67 } 3.39/1.67 } 3.39/1.67 3.39/1.67 ---------------------------------------- 3.39/1.67 3.39/1.67 (2) 3.39/1.67 Obligation: 3.39/1.67 Triples: 3.39/1.67 3.39/1.67 3.39/1.67 Clauses: 3.39/1.67 3.39/1.67 3.39/1.67 Afs: 3.39/1.67 3.39/1.67 3.39/1.67 ---------------------------------------- 3.39/1.67 3.39/1.67 (3) TPisEmptyProof (EQUIVALENT) 3.39/1.67 There are no more dependency triples. Hence, the dependency triple problem trivially terminates. 3.39/1.67 ---------------------------------------- 3.39/1.67 3.39/1.67 (4) 3.39/1.67 YES 3.46/1.70 EOF