3.80/1.78 YES 3.80/1.80 proof of /export/starexec/sandbox/benchmark/theBenchmark.pl 3.80/1.80 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 3.80/1.80 3.80/1.80 3.80/1.80 Left Termination of the query pattern 3.80/1.80 3.80/1.80 app3_b(g,g,g,a) 3.80/1.80 3.80/1.80 w.r.t. the given Prolog program could successfully be proven: 3.80/1.80 3.80/1.80 (0) Prolog 3.80/1.80 (1) PrologToDTProblemTransformerProof [SOUND, 0 ms] 3.80/1.80 (2) TRIPLES 3.80/1.80 (3) TriplesToPiDPProof [SOUND, 0 ms] 3.80/1.80 (4) PiDP 3.80/1.80 (5) DependencyGraphProof [EQUIVALENT, 0 ms] 3.80/1.80 (6) PiDP 3.80/1.80 (7) UsableRulesProof [EQUIVALENT, 0 ms] 3.80/1.80 (8) PiDP 3.80/1.80 (9) PiDPToQDPProof [SOUND, 0 ms] 3.80/1.80 (10) QDP 3.80/1.80 (11) QDPSizeChangeProof [EQUIVALENT, 0 ms] 3.80/1.80 (12) YES 3.80/1.80 3.80/1.80 3.80/1.80 ---------------------------------------- 3.80/1.80 3.80/1.80 (0) 3.80/1.80 Obligation: 3.80/1.80 Clauses: 3.80/1.80 3.80/1.80 app3_a(Xs, Ys, Zs, Us) :- ','(app(Xs, Ys, Vs), app(Vs, Zs, Us)). 3.80/1.80 app3_b(Xs, Ys, Zs, Us) :- ','(app(Ys, Zs, Vs), app(Xs, Vs, Us)). 3.80/1.80 app([], Ys, Ys). 3.80/1.80 app(.(X, Xs), Ys, .(X, Zs)) :- app(Xs, Ys, Zs). 3.80/1.80 3.80/1.80 3.80/1.80 Query: app3_b(g,g,g,a) 3.80/1.80 ---------------------------------------- 3.80/1.80 3.80/1.80 (1) PrologToDTProblemTransformerProof (SOUND) 3.80/1.80 Built DT problem from termination graph DT10. 3.80/1.80 3.80/1.80 { 3.80/1.80 "root": 1, 3.80/1.80 "program": { 3.80/1.80 "directives": [], 3.80/1.80 "clauses": [ 3.80/1.80 [ 3.80/1.80 "(app3_a Xs Ys Zs Us)", 3.80/1.80 "(',' (app Xs Ys Vs) (app Vs Zs Us))" 3.80/1.80 ], 3.80/1.80 [ 3.80/1.80 "(app3_b Xs Ys Zs Us)", 3.80/1.80 "(',' (app Ys Zs Vs) (app Xs Vs Us))" 3.80/1.80 ], 3.80/1.80 [ 3.80/1.80 "(app ([]) Ys Ys)", 3.80/1.80 null 3.80/1.80 ], 3.80/1.80 [ 3.80/1.80 "(app (. X Xs) Ys (. X Zs))", 3.80/1.80 "(app Xs Ys Zs)" 3.80/1.80 ] 3.80/1.80 ] 3.80/1.80 }, 3.80/1.80 "graph": { 3.80/1.80 "nodes": { 3.80/1.80 "160": { 3.80/1.80 "goal": [{ 3.80/1.80 "clause": 2, 3.80/1.80 "scope": 2, 3.80/1.80 "term": "(',' (app T10 T11 X9) (app T9 X9 T13))" 3.80/1.80 }], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [ 3.80/1.80 "T9", 3.80/1.80 "T10", 3.80/1.80 "T11" 3.80/1.80 ], 3.80/1.80 "free": ["X9"], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "type": "Nodes", 3.80/1.80 "162": { 3.80/1.80 "goal": [{ 3.80/1.80 "clause": 3, 3.80/1.80 "scope": 2, 3.80/1.80 "term": "(',' (app T10 T11 X9) (app T9 X9 T13))" 3.80/1.80 }], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [ 3.80/1.80 "T9", 3.80/1.80 "T10", 3.80/1.80 "T11" 3.80/1.80 ], 3.80/1.80 "free": ["X9"], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "261": { 3.80/1.80 "goal": [{ 3.80/1.80 "clause": -1, 3.80/1.80 "scope": -1, 3.80/1.80 "term": "(',' (app T48 T49 X50) (app T9 (. T47 X50) T13))" 3.80/1.80 }], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [ 3.80/1.80 "T9", 3.80/1.80 "T47", 3.80/1.80 "T48", 3.80/1.80 "T49" 3.80/1.80 ], 3.80/1.80 "free": ["X50"], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "263": { 3.80/1.80 "goal": [], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [], 3.80/1.80 "free": [], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "220": { 3.80/1.80 "goal": [], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [], 3.80/1.80 "free": [], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "1": { 3.80/1.80 "goal": [{ 3.80/1.80 "clause": -1, 3.80/1.80 "scope": -1, 3.80/1.80 "term": "(app3_b T1 T2 T3 T4)" 3.80/1.80 }], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [ 3.80/1.80 "T1", 3.80/1.80 "T2", 3.80/1.80 "T3" 3.80/1.80 ], 3.80/1.80 "free": [], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "133": { 3.80/1.80 "goal": [{ 3.80/1.80 "clause": 1, 3.80/1.80 "scope": 1, 3.80/1.80 "term": "(app3_b T1 T2 T3 T4)" 3.80/1.80 }], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [ 3.80/1.80 "T1", 3.80/1.80 "T2", 3.80/1.80 "T3" 3.80/1.80 ], 3.80/1.80 "free": [], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "134": { 3.80/1.80 "goal": [{ 3.80/1.80 "clause": -1, 3.80/1.80 "scope": -1, 3.80/1.80 "term": "(',' (app T10 T11 X9) (app T9 X9 T13))" 3.80/1.80 }], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [ 3.80/1.80 "T9", 3.80/1.80 "T10", 3.80/1.80 "T11" 3.80/1.80 ], 3.80/1.80 "free": ["X9"], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "233": { 3.80/1.80 "goal": [{ 3.80/1.80 "clause": -1, 3.80/1.80 "scope": -1, 3.80/1.80 "term": "(app T35 T36 T38)" 3.80/1.80 }], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [ 3.80/1.80 "T35", 3.80/1.80 "T36" 3.80/1.80 ], 3.80/1.80 "free": [], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "135": { 3.80/1.80 "goal": [ 3.80/1.80 { 3.80/1.80 "clause": 2, 3.80/1.80 "scope": 2, 3.80/1.80 "term": "(',' (app T10 T11 X9) (app T9 X9 T13))" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "clause": 3, 3.80/1.80 "scope": 2, 3.80/1.80 "term": "(',' (app T10 T11 X9) (app T9 X9 T13))" 3.80/1.80 } 3.80/1.80 ], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [ 3.80/1.80 "T9", 3.80/1.80 "T10", 3.80/1.80 "T11" 3.80/1.80 ], 3.80/1.80 "free": ["X9"], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "223": { 3.80/1.80 "goal": [ 3.80/1.80 { 3.80/1.80 "clause": 2, 3.80/1.80 "scope": 3, 3.80/1.80 "term": "(app T9 T18 T13)" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "clause": 3, 3.80/1.80 "scope": 3, 3.80/1.80 "term": "(app T9 T18 T13)" 3.80/1.80 } 3.80/1.80 ], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [ 3.80/1.80 "T9", 3.80/1.80 "T18" 3.80/1.80 ], 3.80/1.80 "free": [], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "267": { 3.80/1.80 "goal": [{ 3.80/1.80 "clause": -1, 3.80/1.80 "scope": -1, 3.80/1.80 "term": "(app T48 T49 X50)" 3.80/1.80 }], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [ 3.80/1.80 "T48", 3.80/1.80 "T49" 3.80/1.80 ], 3.80/1.80 "free": ["X50"], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "224": { 3.80/1.80 "goal": [{ 3.80/1.80 "clause": 2, 3.80/1.80 "scope": 3, 3.80/1.80 "term": "(app T9 T18 T13)" 3.80/1.80 }], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [ 3.80/1.80 "T9", 3.80/1.80 "T18" 3.80/1.80 ], 3.80/1.80 "free": [], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "268": { 3.80/1.80 "goal": [{ 3.80/1.80 "clause": -1, 3.80/1.80 "scope": -1, 3.80/1.80 "term": "(app T9 (. T47 T52) T13)" 3.80/1.80 }], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [ 3.80/1.80 "T9", 3.80/1.80 "T47", 3.80/1.80 "T52" 3.80/1.80 ], 3.80/1.80 "free": [], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "225": { 3.80/1.80 "goal": [{ 3.80/1.80 "clause": 3, 3.80/1.80 "scope": 3, 3.80/1.80 "term": "(app T9 T18 T13)" 3.80/1.80 }], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [ 3.80/1.80 "T9", 3.80/1.80 "T18" 3.80/1.80 ], 3.80/1.80 "free": [], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "236": { 3.80/1.80 "goal": [], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [], 3.80/1.80 "free": [], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "226": { 3.80/1.80 "goal": [{ 3.80/1.80 "clause": -1, 3.80/1.80 "scope": -1, 3.80/1.80 "term": "(true)" 3.80/1.80 }], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [], 3.80/1.80 "free": [], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "227": { 3.80/1.80 "goal": [], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [], 3.80/1.80 "free": [], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "228": { 3.80/1.80 "goal": [], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [], 3.80/1.80 "free": [], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "219": { 3.80/1.80 "goal": [{ 3.80/1.80 "clause": -1, 3.80/1.80 "scope": -1, 3.80/1.80 "term": "(app T9 T18 T13)" 3.80/1.80 }], 3.80/1.80 "kb": { 3.80/1.80 "nonunifying": [], 3.80/1.80 "intvars": {}, 3.80/1.80 "arithmetic": { 3.80/1.80 "type": "PlainIntegerRelationState", 3.80/1.80 "relations": [] 3.80/1.80 }, 3.80/1.80 "ground": [ 3.80/1.80 "T9", 3.80/1.80 "T18" 3.80/1.80 ], 3.80/1.80 "free": [], 3.80/1.80 "exprvars": [] 3.80/1.80 } 3.80/1.80 } 3.80/1.80 }, 3.80/1.80 "edges": [ 3.80/1.80 { 3.80/1.80 "from": 1, 3.80/1.80 "to": 133, 3.80/1.80 "label": "CASE" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 133, 3.80/1.80 "to": 134, 3.80/1.80 "label": "ONLY EVAL with clause\napp3_b(X5, X6, X7, X8) :- ','(app(X6, X7, X9), app(X5, X9, X8)).\nand substitutionT1 -> T9,\nX5 -> T9,\nT2 -> T10,\nX6 -> T10,\nT3 -> T11,\nX7 -> T11,\nT4 -> T13,\nX8 -> T13,\nT12 -> T13" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 134, 3.80/1.80 "to": 135, 3.80/1.80 "label": "CASE" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 135, 3.80/1.80 "to": 160, 3.80/1.80 "label": "PARALLEL" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 135, 3.80/1.80 "to": 162, 3.80/1.80 "label": "PARALLEL" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 160, 3.80/1.80 "to": 219, 3.80/1.80 "label": "EVAL with clause\napp([], X14, X14).\nand substitutionT10 -> [],\nT11 -> T18,\nX14 -> T18,\nX9 -> T18" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 160, 3.80/1.80 "to": 220, 3.80/1.80 "label": "EVAL-BACKTRACK" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 162, 3.80/1.80 "to": 261, 3.80/1.80 "label": "EVAL with clause\napp(.(X46, X47), X48, .(X46, X49)) :- app(X47, X48, X49).\nand substitutionX46 -> T47,\nX47 -> T48,\nT10 -> .(T47, T48),\nT11 -> T49,\nX48 -> T49,\nX49 -> X50,\nX9 -> .(T47, X50)" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 162, 3.80/1.80 "to": 263, 3.80/1.80 "label": "EVAL-BACKTRACK" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 219, 3.80/1.80 "to": 223, 3.80/1.80 "label": "CASE" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 223, 3.80/1.80 "to": 224, 3.80/1.80 "label": "PARALLEL" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 223, 3.80/1.80 "to": 225, 3.80/1.80 "label": "PARALLEL" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 224, 3.80/1.80 "to": 226, 3.80/1.80 "label": "EVAL with clause\napp([], X21, X21).\nand substitutionT9 -> [],\nT18 -> T25,\nX21 -> T25,\nT13 -> T25" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 224, 3.80/1.80 "to": 227, 3.80/1.80 "label": "EVAL-BACKTRACK" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 225, 3.80/1.80 "to": 233, 3.80/1.80 "label": "EVAL with clause\napp(.(X30, X31), X32, .(X30, X33)) :- app(X31, X32, X33).\nand substitutionX30 -> T34,\nX31 -> T35,\nT9 -> .(T34, T35),\nT18 -> T36,\nX32 -> T36,\nX33 -> T38,\nT13 -> .(T34, T38),\nT37 -> T38" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 225, 3.80/1.80 "to": 236, 3.80/1.80 "label": "EVAL-BACKTRACK" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 226, 3.80/1.80 "to": 228, 3.80/1.80 "label": "SUCCESS" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 233, 3.80/1.80 "to": 219, 3.80/1.80 "label": "INSTANCE with matching:\nT9 -> T35\nT18 -> T36\nT13 -> T38" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 261, 3.80/1.80 "to": 267, 3.80/1.80 "label": "SPLIT 1" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 261, 3.80/1.80 "to": 268, 3.80/1.80 "label": "SPLIT 2\nnew knowledge:\nT48 is ground\nT49 is ground\nT52 is ground\nreplacements:X50 -> T52" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 267, 3.80/1.80 "to": 219, 3.80/1.80 "label": "INSTANCE with matching:\nT9 -> T48\nT18 -> T49\nT13 -> X50" 3.80/1.80 }, 3.80/1.80 { 3.80/1.80 "from": 268, 3.80/1.80 "to": 219, 3.80/1.80 "label": "INSTANCE with matching:\nT18 -> .(T47, T52)" 3.80/1.80 } 3.80/1.80 ], 3.80/1.80 "type": "Graph" 3.80/1.80 } 3.80/1.80 } 3.80/1.80 3.80/1.80 ---------------------------------------- 3.80/1.80 3.80/1.80 (2) 3.80/1.80 Obligation: 3.80/1.80 Triples: 3.80/1.80 3.80/1.80 appA(.(X1, X2), X3, .(X1, X4)) :- appA(X2, X3, X4). 3.80/1.80 app3_bB(X1, [], X2, X3) :- appA(X1, X2, X3). 3.80/1.80 app3_bB(X1, .(X2, X3), X4, X5) :- appA(X3, X4, X6). 3.80/1.80 app3_bB(X1, .(X2, X3), X4, X5) :- ','(appcA(X3, X4, X6), appA(X1, .(X2, X6), X5)). 3.80/1.80 3.80/1.80 Clauses: 3.80/1.80 3.80/1.80 appcA([], X1, X1). 3.80/1.80 appcA(.(X1, X2), X3, .(X1, X4)) :- appcA(X2, X3, X4). 3.80/1.80 3.80/1.80 Afs: 3.80/1.80 3.80/1.80 app3_bB(x1, x2, x3, x4) = app3_bB(x1, x2, x3) 3.80/1.80 3.80/1.80 3.80/1.80 ---------------------------------------- 3.80/1.80 3.80/1.80 (3) TriplesToPiDPProof (SOUND) 3.80/1.80 We use the technique of [DT09]. With regard to the inferred argument filtering the predicates were used in the following modes: 3.80/1.80 3.80/1.80 app3_bB_in_4: (b,b,b,f) 3.80/1.80 3.80/1.80 appA_in_3: (b,b,f) 3.80/1.80 3.80/1.80 appcA_in_3: (b,b,f) 3.80/1.80 3.80/1.80 Transforming TRIPLES into the following Term Rewriting System: 3.80/1.80 3.80/1.80 Pi DP problem: 3.80/1.80 The TRS P consists of the following rules: 3.80/1.80 3.80/1.80 APP3_BB_IN_GGGA(X1, [], X2, X3) -> U2_GGGA(X1, X2, X3, appA_in_gga(X1, X2, X3)) 3.80/1.80 APP3_BB_IN_GGGA(X1, [], X2, X3) -> APPA_IN_GGA(X1, X2, X3) 3.80/1.80 APPA_IN_GGA(.(X1, X2), X3, .(X1, X4)) -> U1_GGA(X1, X2, X3, X4, appA_in_gga(X2, X3, X4)) 3.80/1.80 APPA_IN_GGA(.(X1, X2), X3, .(X1, X4)) -> APPA_IN_GGA(X2, X3, X4) 3.80/1.80 APP3_BB_IN_GGGA(X1, .(X2, X3), X4, X5) -> U3_GGGA(X1, X2, X3, X4, X5, appA_in_gga(X3, X4, X6)) 3.80/1.80 APP3_BB_IN_GGGA(X1, .(X2, X3), X4, X5) -> APPA_IN_GGA(X3, X4, X6) 3.80/1.80 APP3_BB_IN_GGGA(X1, .(X2, X3), X4, X5) -> U4_GGGA(X1, X2, X3, X4, X5, appcA_in_gga(X3, X4, X6)) 3.80/1.80 U4_GGGA(X1, X2, X3, X4, X5, appcA_out_gga(X3, X4, X6)) -> U5_GGGA(X1, X2, X3, X4, X5, appA_in_gga(X1, .(X2, X6), X5)) 3.80/1.80 U4_GGGA(X1, X2, X3, X4, X5, appcA_out_gga(X3, X4, X6)) -> APPA_IN_GGA(X1, .(X2, X6), X5) 3.80/1.80 3.80/1.80 The TRS R consists of the following rules: 3.80/1.80 3.80/1.80 appcA_in_gga([], X1, X1) -> appcA_out_gga([], X1, X1) 3.80/1.80 appcA_in_gga(.(X1, X2), X3, .(X1, X4)) -> U7_gga(X1, X2, X3, X4, appcA_in_gga(X2, X3, X4)) 3.80/1.80 U7_gga(X1, X2, X3, X4, appcA_out_gga(X2, X3, X4)) -> appcA_out_gga(.(X1, X2), X3, .(X1, X4)) 3.80/1.80 3.80/1.80 The argument filtering Pi contains the following mapping: 3.80/1.80 [] = [] 3.80/1.80 3.80/1.80 appA_in_gga(x1, x2, x3) = appA_in_gga(x1, x2) 3.80/1.80 3.80/1.80 .(x1, x2) = .(x1, x2) 3.80/1.80 3.80/1.80 appcA_in_gga(x1, x2, x3) = appcA_in_gga(x1, x2) 3.80/1.80 3.80/1.80 appcA_out_gga(x1, x2, x3) = appcA_out_gga(x1, x2, x3) 3.80/1.80 3.80/1.80 U7_gga(x1, x2, x3, x4, x5) = U7_gga(x1, x2, x3, x5) 3.80/1.80 3.80/1.80 APP3_BB_IN_GGGA(x1, x2, x3, x4) = APP3_BB_IN_GGGA(x1, x2, x3) 3.80/1.80 3.80/1.80 U2_GGGA(x1, x2, x3, x4) = U2_GGGA(x1, x2, x4) 3.80/1.80 3.80/1.80 APPA_IN_GGA(x1, x2, x3) = APPA_IN_GGA(x1, x2) 3.80/1.80 3.80/1.80 U1_GGA(x1, x2, x3, x4, x5) = U1_GGA(x1, x2, x3, x5) 3.80/1.80 3.80/1.80 U3_GGGA(x1, x2, x3, x4, x5, x6) = U3_GGGA(x1, x2, x3, x4, x6) 3.80/1.80 3.80/1.80 U4_GGGA(x1, x2, x3, x4, x5, x6) = U4_GGGA(x1, x2, x3, x4, x6) 3.80/1.80 3.80/1.80 U5_GGGA(x1, x2, x3, x4, x5, x6) = U5_GGGA(x1, x2, x3, x4, x6) 3.80/1.80 3.80/1.80 3.80/1.80 We have to consider all (P,R,Pi)-chains 3.80/1.80 3.80/1.80 3.80/1.80 Infinitary Constructor Rewriting Termination of PiDP implies Termination of TRIPLES 3.80/1.80 3.80/1.80 3.80/1.80 3.80/1.80 ---------------------------------------- 3.80/1.80 3.80/1.80 (4) 3.80/1.80 Obligation: 3.80/1.80 Pi DP problem: 3.80/1.80 The TRS P consists of the following rules: 3.80/1.80 3.80/1.80 APP3_BB_IN_GGGA(X1, [], X2, X3) -> U2_GGGA(X1, X2, X3, appA_in_gga(X1, X2, X3)) 3.80/1.80 APP3_BB_IN_GGGA(X1, [], X2, X3) -> APPA_IN_GGA(X1, X2, X3) 3.80/1.80 APPA_IN_GGA(.(X1, X2), X3, .(X1, X4)) -> U1_GGA(X1, X2, X3, X4, appA_in_gga(X2, X3, X4)) 3.80/1.80 APPA_IN_GGA(.(X1, X2), X3, .(X1, X4)) -> APPA_IN_GGA(X2, X3, X4) 3.80/1.80 APP3_BB_IN_GGGA(X1, .(X2, X3), X4, X5) -> U3_GGGA(X1, X2, X3, X4, X5, appA_in_gga(X3, X4, X6)) 3.80/1.80 APP3_BB_IN_GGGA(X1, .(X2, X3), X4, X5) -> APPA_IN_GGA(X3, X4, X6) 3.80/1.80 APP3_BB_IN_GGGA(X1, .(X2, X3), X4, X5) -> U4_GGGA(X1, X2, X3, X4, X5, appcA_in_gga(X3, X4, X6)) 3.80/1.80 U4_GGGA(X1, X2, X3, X4, X5, appcA_out_gga(X3, X4, X6)) -> U5_GGGA(X1, X2, X3, X4, X5, appA_in_gga(X1, .(X2, X6), X5)) 3.80/1.80 U4_GGGA(X1, X2, X3, X4, X5, appcA_out_gga(X3, X4, X6)) -> APPA_IN_GGA(X1, .(X2, X6), X5) 3.80/1.80 3.80/1.80 The TRS R consists of the following rules: 3.80/1.80 3.80/1.80 appcA_in_gga([], X1, X1) -> appcA_out_gga([], X1, X1) 3.80/1.80 appcA_in_gga(.(X1, X2), X3, .(X1, X4)) -> U7_gga(X1, X2, X3, X4, appcA_in_gga(X2, X3, X4)) 3.80/1.80 U7_gga(X1, X2, X3, X4, appcA_out_gga(X2, X3, X4)) -> appcA_out_gga(.(X1, X2), X3, .(X1, X4)) 3.80/1.80 3.80/1.80 The argument filtering Pi contains the following mapping: 3.80/1.80 [] = [] 3.80/1.80 3.80/1.80 appA_in_gga(x1, x2, x3) = appA_in_gga(x1, x2) 3.80/1.80 3.80/1.80 .(x1, x2) = .(x1, x2) 3.80/1.80 3.80/1.80 appcA_in_gga(x1, x2, x3) = appcA_in_gga(x1, x2) 3.80/1.80 3.80/1.80 appcA_out_gga(x1, x2, x3) = appcA_out_gga(x1, x2, x3) 3.80/1.80 3.80/1.80 U7_gga(x1, x2, x3, x4, x5) = U7_gga(x1, x2, x3, x5) 3.80/1.80 3.80/1.80 APP3_BB_IN_GGGA(x1, x2, x3, x4) = APP3_BB_IN_GGGA(x1, x2, x3) 3.80/1.80 3.80/1.80 U2_GGGA(x1, x2, x3, x4) = U2_GGGA(x1, x2, x4) 3.80/1.80 3.80/1.80 APPA_IN_GGA(x1, x2, x3) = APPA_IN_GGA(x1, x2) 3.80/1.80 3.80/1.80 U1_GGA(x1, x2, x3, x4, x5) = U1_GGA(x1, x2, x3, x5) 3.80/1.80 3.80/1.80 U3_GGGA(x1, x2, x3, x4, x5, x6) = U3_GGGA(x1, x2, x3, x4, x6) 3.80/1.80 3.80/1.80 U4_GGGA(x1, x2, x3, x4, x5, x6) = U4_GGGA(x1, x2, x3, x4, x6) 3.80/1.80 3.80/1.80 U5_GGGA(x1, x2, x3, x4, x5, x6) = U5_GGGA(x1, x2, x3, x4, x6) 3.80/1.80 3.80/1.80 3.80/1.80 We have to consider all (P,R,Pi)-chains 3.80/1.80 ---------------------------------------- 3.80/1.80 3.80/1.80 (5) DependencyGraphProof (EQUIVALENT) 3.80/1.80 The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 8 less nodes. 3.80/1.80 ---------------------------------------- 3.80/1.80 3.80/1.80 (6) 3.80/1.80 Obligation: 3.80/1.80 Pi DP problem: 3.80/1.80 The TRS P consists of the following rules: 3.80/1.80 3.80/1.80 APPA_IN_GGA(.(X1, X2), X3, .(X1, X4)) -> APPA_IN_GGA(X2, X3, X4) 3.80/1.80 3.80/1.80 The TRS R consists of the following rules: 3.80/1.80 3.80/1.80 appcA_in_gga([], X1, X1) -> appcA_out_gga([], X1, X1) 3.80/1.80 appcA_in_gga(.(X1, X2), X3, .(X1, X4)) -> U7_gga(X1, X2, X3, X4, appcA_in_gga(X2, X3, X4)) 3.80/1.80 U7_gga(X1, X2, X3, X4, appcA_out_gga(X2, X3, X4)) -> appcA_out_gga(.(X1, X2), X3, .(X1, X4)) 3.80/1.80 3.80/1.80 The argument filtering Pi contains the following mapping: 3.80/1.80 [] = [] 3.80/1.80 3.80/1.80 .(x1, x2) = .(x1, x2) 3.80/1.80 3.80/1.80 appcA_in_gga(x1, x2, x3) = appcA_in_gga(x1, x2) 3.80/1.80 3.80/1.80 appcA_out_gga(x1, x2, x3) = appcA_out_gga(x1, x2, x3) 3.80/1.80 3.80/1.80 U7_gga(x1, x2, x3, x4, x5) = U7_gga(x1, x2, x3, x5) 3.80/1.80 3.80/1.80 APPA_IN_GGA(x1, x2, x3) = APPA_IN_GGA(x1, x2) 3.80/1.80 3.80/1.80 3.80/1.80 We have to consider all (P,R,Pi)-chains 3.80/1.80 ---------------------------------------- 3.80/1.80 3.80/1.80 (7) UsableRulesProof (EQUIVALENT) 3.80/1.80 For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. 3.80/1.80 ---------------------------------------- 3.80/1.80 3.80/1.80 (8) 3.80/1.80 Obligation: 3.80/1.80 Pi DP problem: 3.80/1.80 The TRS P consists of the following rules: 3.80/1.80 3.80/1.80 APPA_IN_GGA(.(X1, X2), X3, .(X1, X4)) -> APPA_IN_GGA(X2, X3, X4) 3.80/1.80 3.80/1.80 R is empty. 3.80/1.80 The argument filtering Pi contains the following mapping: 3.80/1.80 .(x1, x2) = .(x1, x2) 3.80/1.80 3.80/1.80 APPA_IN_GGA(x1, x2, x3) = APPA_IN_GGA(x1, x2) 3.80/1.80 3.80/1.80 3.80/1.80 We have to consider all (P,R,Pi)-chains 3.80/1.80 ---------------------------------------- 3.80/1.80 3.80/1.80 (9) PiDPToQDPProof (SOUND) 3.80/1.80 Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. 3.80/1.80 ---------------------------------------- 3.80/1.80 3.80/1.80 (10) 3.80/1.80 Obligation: 3.80/1.80 Q DP problem: 3.80/1.80 The TRS P consists of the following rules: 3.80/1.80 3.80/1.80 APPA_IN_GGA(.(X1, X2), X3) -> APPA_IN_GGA(X2, X3) 3.80/1.80 3.80/1.80 R is empty. 3.80/1.80 Q is empty. 3.80/1.80 We have to consider all (P,Q,R)-chains. 3.80/1.80 ---------------------------------------- 3.80/1.80 3.80/1.80 (11) QDPSizeChangeProof (EQUIVALENT) 3.80/1.80 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 3.80/1.80 3.80/1.80 From the DPs we obtained the following set of size-change graphs: 3.80/1.80 *APPA_IN_GGA(.(X1, X2), X3) -> APPA_IN_GGA(X2, X3) 3.80/1.80 The graph contains the following edges 1 > 1, 2 >= 2 3.80/1.80 3.80/1.80 3.80/1.80 ---------------------------------------- 3.80/1.80 3.80/1.80 (12) 3.80/1.80 YES 3.80/1.81 EOF