YES proof of /export/starexec/sandbox/benchmark/theBenchmark.pl # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Left Termination of the query pattern reverse(g,a) w.r.t. the given Prolog program could successfully be proven: (0) Prolog (1) PrologToDTProblemTransformerProof [SOUND, 56 ms] (2) TRIPLES (3) TriplesToPiDPProof [SOUND, 12 ms] (4) PiDP (5) DependencyGraphProof [EQUIVALENT, 0 ms] (6) PiDP (7) PiDPToQDPProof [SOUND, 0 ms] (8) QDP (9) QDPSizeChangeProof [EQUIVALENT, 0 ms] (10) YES ---------------------------------------- (0) Obligation: Clauses: reverse(L, LR) :- revacc(L, LR, []). revacc([], L, L). revacc(.(EL, T), R, A) :- revacc(T, R, .(EL, A)). Query: reverse(g,a) ---------------------------------------- (1) PrologToDTProblemTransformerProof (SOUND) Built DT problem from termination graph DT10. { "root": 7, "program": { "directives": [], "clauses": [ [ "(reverse L LR)", "(revacc L LR ([]))" ], [ "(revacc ([]) L L)", null ], [ "(revacc (. EL T) R A)", "(revacc T R (. EL A))" ] ] }, "graph": { "nodes": { "88": { "goal": [{ "clause": -1, "scope": -1, "term": "(revacc T82 T86 (. T81 (. T84 (. T85 ([])))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T81", "T82", "T84", "T85" ], "free": [], "exprvars": [] } }, "89": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "273": { "goal": [{ "clause": -1, "scope": -1, "term": "(revacc T326 T334 (. T325 (. T328 (. T329 (. T330 (. T331 (. T332 (. T333 ([])))))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T325", "T326", "T328", "T329", "T330", "T331", "T332", "T333" ], "free": [], "exprvars": [] } }, "274": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "277": { "goal": [ { "clause": 1, "scope": 9, "term": "(revacc T326 T334 (. T325 (. T328 (. T329 (. T330 (. T331 (. T332 (. T333 ([])))))))))" }, { "clause": 2, "scope": 9, "term": "(revacc T326 T334 (. T325 (. T328 (. T329 (. T330 (. T331 (. T332 (. T333 ([])))))))))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T325", "T326", "T328", "T329", "T330", "T331", "T332", "T333" ], "free": [], "exprvars": [] } }, "278": { "goal": [{ "clause": 1, "scope": 9, "term": "(revacc T326 T334 (. T325 (. T328 (. T329 (. T330 (. T331 (. T332 (. T333 ([])))))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T325", "T326", "T328", "T329", "T330", "T331", "T332", "T333" ], "free": [], "exprvars": [] } }, "279": { "goal": [{ "clause": 2, "scope": 9, "term": "(revacc T326 T334 (. T325 (. T328 (. T329 (. T330 (. T331 (. T332 (. T333 ([])))))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T325", "T326", "T328", "T329", "T330", "T331", "T332", "T333" ], "free": [], "exprvars": [] } }, "92": { "goal": [ { "clause": 1, "scope": 5, "term": "(revacc T82 T86 (. T81 (. T84 (. T85 ([])))))" }, { "clause": 2, "scope": 5, "term": "(revacc T82 T86 (. T81 (. T84 (. T85 ([])))))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T81", "T82", "T84", "T85" ], "free": [], "exprvars": [] } }, "94": { "goal": [{ "clause": 1, "scope": 5, "term": "(revacc T82 T86 (. T81 (. T84 (. T85 ([])))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T81", "T82", "T84", "T85" ], "free": [], "exprvars": [] } }, "95": { "goal": [{ "clause": 2, "scope": 5, "term": "(revacc T82 T86 (. T81 (. T84 (. T85 ([])))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T81", "T82", "T84", "T85" ], "free": [], "exprvars": [] } }, "98": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "11": { "goal": [{ "clause": -1, "scope": -1, "term": "(revacc T5 T7 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": [], "exprvars": [] } }, "99": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "12": { "goal": [ { "clause": 1, "scope": 2, "term": "(revacc T5 T7 ([]))" }, { "clause": 2, "scope": 2, "term": "(revacc T5 T7 ([]))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": [], "exprvars": [] } }, "14": { "goal": [{ "clause": 1, "scope": 2, "term": "(revacc T5 T7 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": [], "exprvars": [] } }, "15": { "goal": [{ "clause": 2, "scope": 2, "term": "(revacc T5 T7 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": [], "exprvars": [] } }, "16": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "17": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "19": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "240": { "goal": [{ "clause": -1, "scope": -1, "term": "(revacc T250 T257 (. T249 (. T252 (. T253 (. T254 (. T255 (. T256 ([]))))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T249", "T250", "T252", "T253", "T254", "T255", "T256" ], "free": [], "exprvars": [] } }, "241": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "285": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "286": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "287": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "246": { "goal": [ { "clause": 1, "scope": 8, "term": "(revacc T250 T257 (. T249 (. T252 (. T253 (. T254 (. T255 (. T256 ([]))))))))" }, { "clause": 2, "scope": 8, "term": "(revacc T250 T257 (. T249 (. T252 (. T253 (. T254 (. T255 (. T256 ([]))))))))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T249", "T250", "T252", "T253", "T254", "T255", "T256" ], "free": [], "exprvars": [] } }, "325": { "goal": [{ "clause": -1, "scope": -1, "term": "(revacc T473 T477 (. T472 (. T475 T476)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T472", "T473", "T475", "T476" ], "free": [], "exprvars": [] } }, "7": { "goal": [{ "clause": -1, "scope": -1, "term": "(reverse T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "326": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "8": { "goal": [{ "clause": 0, "scope": 1, "term": "(reverse T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "25": { "goal": [{ "clause": -1, "scope": -1, "term": "(revacc T20 T22 (. T19 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T19", "T20" ], "free": [], "exprvars": [] } }, "26": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "27": { "goal": [ { "clause": 1, "scope": 3, "term": "(revacc T20 T22 (. T19 ([])))" }, { "clause": 2, "scope": 3, "term": "(revacc T20 T22 (. T19 ([])))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T19", "T20" ], "free": [], "exprvars": [] } }, "29": { "goal": [{ "clause": 1, "scope": 3, "term": "(revacc T20 T22 (. T19 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T19", "T20" ], "free": [], "exprvars": [] } }, "294": { "goal": [{ "clause": -1, "scope": -1, "term": "(revacc T412 T421 (. T411 (. T414 (. T415 (. T416 (. T417 (. T418 (. T419 (. T420 ([]))))))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T411", "T412", "T414", "T415", "T416", "T417", "T418", "T419", "T420" ], "free": [], "exprvars": [] } }, "251": { "goal": [{ "clause": 1, "scope": 8, "term": "(revacc T250 T257 (. T249 (. T252 (. T253 (. T254 (. T255 (. T256 ([]))))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T249", "T250", "T252", "T253", "T254", "T255", "T256" ], "free": [], "exprvars": [] } }, "295": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "252": { "goal": [{ "clause": 2, "scope": 8, "term": "(revacc T250 T257 (. T249 (. T252 (. T253 (. T254 (. T255 (. T256 ([]))))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T249", "T250", "T252", "T253", "T254", "T255", "T256" ], "free": [], "exprvars": [] } }, "298": { "goal": [{ "clause": -1, "scope": -1, "term": "(revacc T412 T421 (. T411 T440))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T411", "T412", "T440" ], "free": [], "exprvars": [] } }, "256": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "259": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "217": { "goal": [{ "clause": -1, "scope": -1, "term": "(revacc T184 T190 (. T183 (. T186 (. T187 (. T188 (. T189 ([])))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T183", "T184", "T186", "T187", "T188", "T189" ], "free": [], "exprvars": [] } }, "218": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "72": { "goal": [{ "clause": -1, "scope": -1, "term": "(revacc T46 T49 (. T45 (. T48 ([]))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T45", "T46", "T48" ], "free": [], "exprvars": [] } }, "73": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "30": { "goal": [{ "clause": 2, "scope": 3, "term": "(revacc T20 T22 (. T19 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T19", "T20" ], "free": [], "exprvars": [] } }, "31": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "32": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "76": { "goal": [ { "clause": 1, "scope": 4, "term": "(revacc T46 T49 (. T45 (. T48 ([]))))" }, { "clause": 2, "scope": 4, "term": "(revacc T46 T49 (. T45 (. T48 ([]))))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T45", "T46", "T48" ], "free": [], "exprvars": [] } }, "33": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "78": { "goal": [{ "clause": 1, "scope": 4, "term": "(revacc T46 T49 (. T45 (. T48 ([]))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T45", "T46", "T48" ], "free": [], "exprvars": [] } }, "79": { "goal": [{ "clause": 2, "scope": 4, "term": "(revacc T46 T49 (. T45 (. T48 ([]))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T45", "T46", "T48" ], "free": [], "exprvars": [] } }, "260": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "100": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "221": { "goal": [ { "clause": 1, "scope": 7, "term": "(revacc T184 T190 (. T183 (. T186 (. T187 (. T188 (. T189 ([])))))))" }, { "clause": 2, "scope": 7, "term": "(revacc T184 T190 (. T183 (. T186 (. T187 (. T188 (. T189 ([])))))))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T183", "T184", "T186", "T187", "T188", "T189" ], "free": [], "exprvars": [] } }, "101": { "goal": [{ "clause": -1, "scope": -1, "term": "(revacc T128 T133 (. T127 (. T130 (. T131 (. T132 ([]))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T127", "T128", "T130", "T131", "T132" ], "free": [], "exprvars": [] } }, "102": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "223": { "goal": [{ "clause": 1, "scope": 7, "term": "(revacc T184 T190 (. T183 (. T186 (. T187 (. T188 (. T189 ([])))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T183", "T184", "T186", "T187", "T188", "T189" ], "free": [], "exprvars": [] } }, "300": { "goal": [ { "clause": 1, "scope": 10, "term": "(revacc T412 T421 (. T411 T440))" }, { "clause": 2, "scope": 10, "term": "(revacc T412 T421 (. T411 T440))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T411", "T412", "T440" ], "free": [], "exprvars": [] } }, "103": { "goal": [ { "clause": 1, "scope": 6, "term": "(revacc T128 T133 (. T127 (. T130 (. T131 (. T132 ([]))))))" }, { "clause": 2, "scope": 6, "term": "(revacc T128 T133 (. T127 (. T130 (. T131 (. T132 ([]))))))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T127", "T128", "T130", "T131", "T132" ], "free": [], "exprvars": [] } }, "224": { "goal": [{ "clause": 2, "scope": 7, "term": "(revacc T184 T190 (. T183 (. T186 (. T187 (. T188 (. T189 ([])))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T183", "T184", "T186", "T187", "T188", "T189" ], "free": [], "exprvars": [] } }, "301": { "goal": [{ "clause": 1, "scope": 10, "term": "(revacc T412 T421 (. T411 T440))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T411", "T412", "T440" ], "free": [], "exprvars": [] } }, "104": { "goal": [{ "clause": 1, "scope": 6, "term": "(revacc T128 T133 (. T127 (. T130 (. T131 (. T132 ([]))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T127", "T128", "T130", "T131", "T132" ], "free": [], "exprvars": [] } }, "225": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "302": { "goal": [{ "clause": 2, "scope": 10, "term": "(revacc T412 T421 (. T411 T440))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T411", "T412", "T440" ], "free": [], "exprvars": [] } }, "105": { "goal": [{ "clause": 2, "scope": 6, "term": "(revacc T128 T133 (. T127 (. T130 (. T131 (. T132 ([]))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T127", "T128", "T130", "T131", "T132" ], "free": [], "exprvars": [] } }, "226": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "106": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "227": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "107": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "108": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "82": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "307": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "83": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "308": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "84": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "309": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } } }, "edges": [ { "from": 7, "to": 8, "label": "CASE" }, { "from": 8, "to": 11, "label": "ONLY EVAL with clause\nreverse(X3, X4) :- revacc(X3, X4, []).\nand substitutionT1 -> T5,\nX3 -> T5,\nT2 -> T7,\nX4 -> T7,\nT6 -> T7" }, { "from": 11, "to": 12, "label": "CASE" }, { "from": 12, "to": 14, "label": "PARALLEL" }, { "from": 12, "to": 15, "label": "PARALLEL" }, { "from": 14, "to": 16, "label": "EVAL with clause\nrevacc([], X9, X9).\nand substitutionT5 -> [],\nT7 -> [],\nX9 -> [],\nT12 -> []" }, { "from": 14, "to": 17, "label": "EVAL-BACKTRACK" }, { "from": 15, "to": 25, "label": "EVAL with clause\nrevacc(.(X18, X19), X20, X21) :- revacc(X19, X20, .(X18, X21)).\nand substitutionX18 -> T19,\nX19 -> T20,\nT5 -> .(T19, T20),\nT7 -> T22,\nX20 -> T22,\nX21 -> [],\nT21 -> T22" }, { "from": 15, "to": 26, "label": "EVAL-BACKTRACK" }, { "from": 16, "to": 19, "label": "SUCCESS" }, { "from": 25, "to": 27, "label": "CASE" }, { "from": 27, "to": 29, "label": "PARALLEL" }, { "from": 27, "to": 30, "label": "PARALLEL" }, { "from": 29, "to": 31, "label": "EVAL with clause\nrevacc([], X28, X28).\nand substitutionT20 -> [],\nT22 -> .(T36, []),\nX28 -> .(T36, []),\nT19 -> T36,\nT35 -> .(T36, [])" }, { "from": 29, "to": 32, "label": "EVAL-BACKTRACK" }, { "from": 30, "to": 72, "label": "EVAL with clause\nrevacc(.(X37, X38), X39, X40) :- revacc(X38, X39, .(X37, X40)).\nand substitutionX37 -> T45,\nX38 -> T46,\nT20 -> .(T45, T46),\nT22 -> T49,\nX39 -> T49,\nT19 -> T48,\nX40 -> .(T48, []),\nT47 -> T49" }, { "from": 30, "to": 73, "label": "EVAL-BACKTRACK" }, { "from": 31, "to": 33, "label": "SUCCESS" }, { "from": 72, "to": 76, "label": "CASE" }, { "from": 76, "to": 78, "label": "PARALLEL" }, { "from": 76, "to": 79, "label": "PARALLEL" }, { "from": 78, "to": 82, "label": "EVAL with clause\nrevacc([], X47, X47).\nand substitutionT46 -> [],\nT49 -> .(T69, .(T70, [])),\nX47 -> .(T69, .(T70, [])),\nT45 -> T69,\nT48 -> T70,\nT68 -> .(T69, .(T70, []))" }, { "from": 78, "to": 83, "label": "EVAL-BACKTRACK" }, { "from": 79, "to": 88, "label": "EVAL with clause\nrevacc(.(X56, X57), X58, X59) :- revacc(X57, X58, .(X56, X59)).\nand substitutionX56 -> T81,\nX57 -> T82,\nT46 -> .(T81, T82),\nT49 -> T86,\nX58 -> T86,\nT45 -> T84,\nT48 -> T85,\nX59 -> .(T84, .(T85, [])),\nT83 -> T86" }, { "from": 79, "to": 89, "label": "EVAL-BACKTRACK" }, { "from": 82, "to": 84, "label": "SUCCESS" }, { "from": 88, "to": 92, "label": "CASE" }, { "from": 92, "to": 94, "label": "PARALLEL" }, { "from": 92, "to": 95, "label": "PARALLEL" }, { "from": 94, "to": 98, "label": "EVAL with clause\nrevacc([], X66, X66).\nand substitutionT82 -> [],\nT86 -> .(T112, .(T113, .(T114, []))),\nX66 -> .(T112, .(T113, .(T114, []))),\nT81 -> T112,\nT84 -> T113,\nT85 -> T114,\nT111 -> .(T112, .(T113, .(T114, [])))" }, { "from": 94, "to": 99, "label": "EVAL-BACKTRACK" }, { "from": 95, "to": 101, "label": "EVAL with clause\nrevacc(.(X75, X76), X77, X78) :- revacc(X76, X77, .(X75, X78)).\nand substitutionX75 -> T127,\nX76 -> T128,\nT82 -> .(T127, T128),\nT86 -> T133,\nX77 -> T133,\nT81 -> T130,\nT84 -> T131,\nT85 -> T132,\nX78 -> .(T130, .(T131, .(T132, []))),\nT129 -> T133" }, { "from": 95, "to": 102, "label": "EVAL-BACKTRACK" }, { "from": 98, "to": 100, "label": "SUCCESS" }, { "from": 101, "to": 103, "label": "CASE" }, { "from": 103, "to": 104, "label": "PARALLEL" }, { "from": 103, "to": 105, "label": "PARALLEL" }, { "from": 104, "to": 106, "label": "EVAL with clause\nrevacc([], X85, X85).\nand substitutionT128 -> [],\nT133 -> .(T165, .(T166, .(T167, .(T168, [])))),\nX85 -> .(T165, .(T166, .(T167, .(T168, [])))),\nT127 -> T165,\nT130 -> T166,\nT131 -> T167,\nT132 -> T168,\nT164 -> .(T165, .(T166, .(T167, .(T168, []))))" }, { "from": 104, "to": 107, "label": "EVAL-BACKTRACK" }, { "from": 105, "to": 217, "label": "EVAL with clause\nrevacc(.(X94, X95), X96, X97) :- revacc(X95, X96, .(X94, X97)).\nand substitutionX94 -> T183,\nX95 -> T184,\nT128 -> .(T183, T184),\nT133 -> T190,\nX96 -> T190,\nT127 -> T186,\nT130 -> T187,\nT131 -> T188,\nT132 -> T189,\nX97 -> .(T186, .(T187, .(T188, .(T189, [])))),\nT185 -> T190" }, { "from": 105, "to": 218, "label": "EVAL-BACKTRACK" }, { "from": 106, "to": 108, "label": "SUCCESS" }, { "from": 217, "to": 221, "label": "CASE" }, { "from": 221, "to": 223, "label": "PARALLEL" }, { "from": 221, "to": 224, "label": "PARALLEL" }, { "from": 223, "to": 225, "label": "EVAL with clause\nrevacc([], X104, X104).\nand substitutionT184 -> [],\nT190 -> .(T228, .(T229, .(T230, .(T231, .(T232, []))))),\nX104 -> .(T228, .(T229, .(T230, .(T231, .(T232, []))))),\nT183 -> T228,\nT186 -> T229,\nT187 -> T230,\nT188 -> T231,\nT189 -> T232,\nT227 -> .(T228, .(T229, .(T230, .(T231, .(T232, [])))))" }, { "from": 223, "to": 226, "label": "EVAL-BACKTRACK" }, { "from": 224, "to": 240, "label": "EVAL with clause\nrevacc(.(X113, X114), X115, X116) :- revacc(X114, X115, .(X113, X116)).\nand substitutionX113 -> T249,\nX114 -> T250,\nT184 -> .(T249, T250),\nT190 -> T257,\nX115 -> T257,\nT183 -> T252,\nT186 -> T253,\nT187 -> T254,\nT188 -> T255,\nT189 -> T256,\nX116 -> .(T252, .(T253, .(T254, .(T255, .(T256, []))))),\nT251 -> T257" }, { "from": 224, "to": 241, "label": "EVAL-BACKTRACK" }, { "from": 225, "to": 227, "label": "SUCCESS" }, { "from": 240, "to": 246, "label": "CASE" }, { "from": 246, "to": 251, "label": "PARALLEL" }, { "from": 246, "to": 252, "label": "PARALLEL" }, { "from": 251, "to": 256, "label": "EVAL with clause\nrevacc([], X123, X123).\nand substitutionT250 -> [],\nT257 -> .(T301, .(T302, .(T303, .(T304, .(T305, .(T306, [])))))),\nX123 -> .(T301, .(T302, .(T303, .(T304, .(T305, .(T306, [])))))),\nT249 -> T301,\nT252 -> T302,\nT253 -> T303,\nT254 -> T304,\nT255 -> T305,\nT256 -> T306,\nT300 -> .(T301, .(T302, .(T303, .(T304, .(T305, .(T306, []))))))" }, { "from": 251, "to": 259, "label": "EVAL-BACKTRACK" }, { "from": 252, "to": 273, "label": "EVAL with clause\nrevacc(.(X132, X133), X134, X135) :- revacc(X133, X134, .(X132, X135)).\nand substitutionX132 -> T325,\nX133 -> T326,\nT250 -> .(T325, T326),\nT257 -> T334,\nX134 -> T334,\nT249 -> T328,\nT252 -> T329,\nT253 -> T330,\nT254 -> T331,\nT255 -> T332,\nT256 -> T333,\nX135 -> .(T328, .(T329, .(T330, .(T331, .(T332, .(T333, [])))))),\nT327 -> T334" }, { "from": 252, "to": 274, "label": "EVAL-BACKTRACK" }, { "from": 256, "to": 260, "label": "SUCCESS" }, { "from": 273, "to": 277, "label": "CASE" }, { "from": 277, "to": 278, "label": "PARALLEL" }, { "from": 277, "to": 279, "label": "PARALLEL" }, { "from": 278, "to": 285, "label": "EVAL with clause\nrevacc([], X142, X142).\nand substitutionT326 -> [],\nT334 -> .(T384, .(T385, .(T386, .(T387, .(T388, .(T389, .(T390, []))))))),\nX142 -> .(T384, .(T385, .(T386, .(T387, .(T388, .(T389, .(T390, []))))))),\nT325 -> T384,\nT328 -> T385,\nT329 -> T386,\nT330 -> T387,\nT331 -> T388,\nT332 -> T389,\nT333 -> T390,\nT383 -> .(T384, .(T385, .(T386, .(T387, .(T388, .(T389, .(T390, [])))))))" }, { "from": 278, "to": 286, "label": "EVAL-BACKTRACK" }, { "from": 279, "to": 294, "label": "EVAL with clause\nrevacc(.(X151, X152), X153, X154) :- revacc(X152, X153, .(X151, X154)).\nand substitutionX151 -> T411,\nX152 -> T412,\nT326 -> .(T411, T412),\nT334 -> T421,\nX153 -> T421,\nT325 -> T414,\nT328 -> T415,\nT329 -> T416,\nT330 -> T417,\nT331 -> T418,\nT332 -> T419,\nT333 -> T420,\nX154 -> .(T414, .(T415, .(T416, .(T417, .(T418, .(T419, .(T420, []))))))),\nT413 -> T421" }, { "from": 279, "to": 295, "label": "EVAL-BACKTRACK" }, { "from": 285, "to": 287, "label": "SUCCESS" }, { "from": 294, "to": 298, "label": "GENERALIZATION\nT440 <-- .(T414, .(T415, .(T416, .(T417, .(T418, .(T419, .(T420, [])))))))\n\nNew Knowledge:\nT440 is ground" }, { "from": 298, "to": 300, "label": "CASE" }, { "from": 300, "to": 301, "label": "PARALLEL" }, { "from": 300, "to": 302, "label": "PARALLEL" }, { "from": 301, "to": 307, "label": "EVAL with clause\nrevacc([], X163, X163).\nand substitutionT412 -> [],\nT421 -> .(T460, T461),\nX163 -> .(T460, T461),\nT411 -> T460,\nT440 -> T461,\nT459 -> .(T460, T461)" }, { "from": 301, "to": 308, "label": "EVAL-BACKTRACK" }, { "from": 302, "to": 325, "label": "EVAL with clause\nrevacc(.(X172, X173), X174, X175) :- revacc(X173, X174, .(X172, X175)).\nand substitutionX172 -> T472,\nX173 -> T473,\nT412 -> .(T472, T473),\nT421 -> T477,\nX174 -> T477,\nT411 -> T475,\nT440 -> T476,\nX175 -> .(T475, T476),\nT474 -> T477" }, { "from": 302, "to": 326, "label": "EVAL-BACKTRACK" }, { "from": 307, "to": 309, "label": "SUCCESS" }, { "from": 325, "to": 298, "label": "INSTANCE with matching:\nT412 -> T473\nT421 -> T477\nT411 -> T472\nT440 -> .(T475, T476)" } ], "type": "Graph" } } ---------------------------------------- (2) Obligation: Triples: revaccA(.(X1, X2), X3, X4, X5) :- revaccA(X2, X3, X1, .(X4, X5)). reverseB(.(X1, .(X2, .(X3, .(X4, .(X5, .(X6, .(X7, .(X8, X9)))))))), X10) :- revaccA(X9, X10, X8, .(X7, .(X6, .(X5, .(X4, .(X3, .(X2, .(X1, [])))))))). Clauses: revacccA([], .(X1, X2), X1, X2). revacccA(.(X1, X2), X3, X4, X5) :- revacccA(X2, X3, X1, .(X4, X5)). Afs: reverseB(x1, x2) = reverseB(x1) ---------------------------------------- (3) TriplesToPiDPProof (SOUND) We use the technique of [DT09]. With regard to the inferred argument filtering the predicates were used in the following modes: reverseB_in_2: (b,f) revaccA_in_4: (b,f,b,b) Transforming TRIPLES into the following Term Rewriting System: Pi DP problem: The TRS P consists of the following rules: REVERSEB_IN_GA(.(X1, .(X2, .(X3, .(X4, .(X5, .(X6, .(X7, .(X8, X9)))))))), X10) -> U2_GA(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, revaccA_in_gagg(X9, X10, X8, .(X7, .(X6, .(X5, .(X4, .(X3, .(X2, .(X1, []))))))))) REVERSEB_IN_GA(.(X1, .(X2, .(X3, .(X4, .(X5, .(X6, .(X7, .(X8, X9)))))))), X10) -> REVACCA_IN_GAGG(X9, X10, X8, .(X7, .(X6, .(X5, .(X4, .(X3, .(X2, .(X1, [])))))))) REVACCA_IN_GAGG(.(X1, X2), X3, X4, X5) -> U1_GAGG(X1, X2, X3, X4, X5, revaccA_in_gagg(X2, X3, X1, .(X4, X5))) REVACCA_IN_GAGG(.(X1, X2), X3, X4, X5) -> REVACCA_IN_GAGG(X2, X3, X1, .(X4, X5)) R is empty. The argument filtering Pi contains the following mapping: .(x1, x2) = .'(x1, x2) revaccA_in_gagg(x1, x2, x3, x4) = revaccA_in_gagg(x1, x3, x4) [] = [] REVERSEB_IN_GA(x1, x2) = REVERSEB_IN_GA'(x1) U2_GA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) = U2_GA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x11) REVACCA_IN_GAGG(x1, x2, x3, x4) = REVACCA_IN_GAGG(x1, x3, x4) U1_GAGG(x1, x2, x3, x4, x5, x6) = U1_GAGG(x1, x2, x4, x5, x6) We have to consider all (P,R,Pi)-chains Infinitary Constructor Rewriting Termination of PiDP implies Termination of TRIPLES ---------------------------------------- (4) Obligation: Pi DP problem: The TRS P consists of the following rules: REVERSEB_IN_GA(.(X1, .(X2, .(X3, .(X4, .(X5, .(X6, .(X7, .(X8, X9)))))))), X10) -> U2_GA(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, revaccA_in_gagg(X9, X10, X8, .(X7, .(X6, .(X5, .(X4, .(X3, .(X2, .(X1, []))))))))) REVERSEB_IN_GA(.(X1, .(X2, .(X3, .(X4, .(X5, .(X6, .(X7, .(X8, X9)))))))), X10) -> REVACCA_IN_GAGG(X9, X10, X8, .(X7, .(X6, .(X5, .(X4, .(X3, .(X2, .(X1, [])))))))) REVACCA_IN_GAGG(.(X1, X2), X3, X4, X5) -> U1_GAGG(X1, X2, X3, X4, X5, revaccA_in_gagg(X2, X3, X1, .(X4, X5))) REVACCA_IN_GAGG(.(X1, X2), X3, X4, X5) -> REVACCA_IN_GAGG(X2, X3, X1, .(X4, X5)) R is empty. The argument filtering Pi contains the following mapping: .(x1, x2) = .(x1, x2) revaccA_in_gagg(x1, x2, x3, x4) = revaccA_in_gagg(x1, x3, x4) [] = [] REVERSEB_IN_GA(x1, x2) = REVERSEB_IN_GA(x1) U2_GA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) = U2_GA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x11) REVACCA_IN_GAGG(x1, x2, x3, x4) = REVACCA_IN_GAGG(x1, x3, x4) U1_GAGG(x1, x2, x3, x4, x5, x6) = U1_GAGG(x1, x2, x4, x5, x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (5) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 3 less nodes. ---------------------------------------- (6) Obligation: Pi DP problem: The TRS P consists of the following rules: REVACCA_IN_GAGG(.(X1, X2), X3, X4, X5) -> REVACCA_IN_GAGG(X2, X3, X1, .(X4, X5)) R is empty. The argument filtering Pi contains the following mapping: .(x1, x2) = .(x1, x2) REVACCA_IN_GAGG(x1, x2, x3, x4) = REVACCA_IN_GAGG(x1, x3, x4) We have to consider all (P,R,Pi)-chains ---------------------------------------- (7) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (8) Obligation: Q DP problem: The TRS P consists of the following rules: REVACCA_IN_GAGG(.(X1, X2), X4, X5) -> REVACCA_IN_GAGG(X2, X1, .(X4, X5)) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (9) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *REVACCA_IN_GAGG(.(X1, X2), X4, X5) -> REVACCA_IN_GAGG(X2, X1, .(X4, X5)) The graph contains the following edges 1 > 1, 1 > 2 ---------------------------------------- (10) YES