3.71/1.79 YES 3.85/1.87 proof of /export/starexec/sandbox/benchmark/theBenchmark.pl 3.85/1.87 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 3.85/1.87 3.85/1.87 3.85/1.87 Left Termination of the query pattern 3.85/1.87 3.85/1.87 p(g,a) 3.85/1.87 3.85/1.87 w.r.t. the given Prolog program could successfully be proven: 3.85/1.87 3.85/1.87 (0) Prolog 3.85/1.87 (1) PrologToDTProblemTransformerProof [SOUND, 0 ms] 3.85/1.87 (2) TRIPLES 3.85/1.87 (3) TriplesToPiDPProof [SOUND, 0 ms] 3.85/1.87 (4) PiDP 3.85/1.87 (5) DependencyGraphProof [EQUIVALENT, 0 ms] 3.85/1.87 (6) PiDP 3.85/1.87 (7) PiDPToQDPProof [SOUND, 0 ms] 3.85/1.87 (8) QDP 3.85/1.87 (9) QDPSizeChangeProof [EQUIVALENT, 0 ms] 3.85/1.87 (10) YES 3.85/1.87 3.85/1.87 3.85/1.87 ---------------------------------------- 3.85/1.87 3.85/1.87 (0) 3.85/1.87 Obligation: 3.85/1.87 Clauses: 3.85/1.87 3.85/1.87 p(X, X). 3.85/1.87 p(f(X), g(Y)) :- ','(p(f(X), f(Z)), p(Z, g(Y))). 3.85/1.87 3.85/1.87 3.85/1.87 Query: p(g,a) 3.85/1.87 ---------------------------------------- 3.85/1.87 3.85/1.87 (1) PrologToDTProblemTransformerProof (SOUND) 3.85/1.87 Built DT problem from termination graph DT10. 3.85/1.87 3.85/1.87 { 3.85/1.87 "root": 2, 3.85/1.87 "program": { 3.85/1.87 "directives": [], 3.85/1.87 "clauses": [ 3.85/1.87 [ 3.85/1.87 "(p X X)", 3.85/1.87 null 3.85/1.87 ], 3.85/1.87 [ 3.85/1.87 "(p (f X) (g Y))", 3.85/1.87 "(',' (p (f X) (f Z)) (p Z (g Y)))" 3.85/1.87 ] 3.85/1.87 ] 3.85/1.87 }, 3.85/1.87 "graph": { 3.85/1.87 "nodes": { 3.85/1.87 "type": "Nodes", 3.85/1.87 "120": { 3.85/1.87 "goal": [{ 3.85/1.87 "clause": 1, 3.85/1.87 "scope": 2, 3.85/1.87 "term": "(',' (p (f T7) (f X7)) (p X7 (g T9)))" 3.85/1.87 }], 3.85/1.87 "kb": { 3.85/1.87 "nonunifying": [], 3.85/1.87 "intvars": {}, 3.85/1.87 "arithmetic": { 3.85/1.87 "type": "PlainIntegerRelationState", 3.85/1.87 "relations": [] 3.85/1.87 }, 3.85/1.87 "ground": ["T7"], 3.85/1.87 "free": ["X7"], 3.85/1.87 "exprvars": [] 3.85/1.87 } 3.85/1.87 }, 3.85/1.87 "121": { 3.85/1.87 "goal": [{ 3.85/1.87 "clause": -1, 3.85/1.87 "scope": -1, 3.85/1.87 "term": "(p T22 (g T9))" 3.85/1.87 }], 3.85/1.87 "kb": { 3.85/1.87 "nonunifying": [], 3.85/1.87 "intvars": {}, 3.85/1.87 "arithmetic": { 3.85/1.87 "type": "PlainIntegerRelationState", 3.85/1.87 "relations": [] 3.85/1.87 }, 3.85/1.87 "ground": ["T22"], 3.85/1.87 "free": [], 3.85/1.87 "exprvars": [] 3.85/1.87 } 3.85/1.87 }, 3.85/1.87 "122": { 3.85/1.87 "goal": [], 3.85/1.87 "kb": { 3.85/1.87 "nonunifying": [], 3.85/1.87 "intvars": {}, 3.85/1.87 "arithmetic": { 3.85/1.87 "type": "PlainIntegerRelationState", 3.85/1.87 "relations": [] 3.85/1.87 }, 3.85/1.87 "ground": [], 3.85/1.87 "free": [], 3.85/1.87 "exprvars": [] 3.85/1.87 } 3.85/1.87 }, 3.85/1.87 "2": { 3.85/1.87 "goal": [{ 3.85/1.87 "clause": -1, 3.85/1.87 "scope": -1, 3.85/1.87 "term": "(p T1 T2)" 3.85/1.87 }], 3.85/1.87 "kb": { 3.85/1.87 "nonunifying": [], 3.85/1.87 "intvars": {}, 3.85/1.87 "arithmetic": { 3.85/1.87 "type": "PlainIntegerRelationState", 3.85/1.87 "relations": [] 3.85/1.87 }, 3.85/1.87 "ground": ["T1"], 3.85/1.87 "free": [], 3.85/1.87 "exprvars": [] 3.85/1.87 } 3.85/1.87 }, 3.85/1.87 "123": { 3.85/1.87 "goal": [{ 3.85/1.87 "clause": -1, 3.85/1.87 "scope": -1, 3.85/1.87 "term": "(',' (p (f T30) (f X25)) (p X25 (g T32)))" 3.85/1.87 }], 3.85/1.87 "kb": { 3.85/1.87 "nonunifying": [[ 3.85/1.87 "(p (f T30) T2)", 3.85/1.87 "(p X2 X2)" 3.85/1.87 ]], 3.85/1.87 "intvars": {}, 3.85/1.87 "arithmetic": { 3.85/1.87 "type": "PlainIntegerRelationState", 3.85/1.87 "relations": [] 3.85/1.87 }, 3.85/1.87 "ground": ["T30"], 3.85/1.87 "free": [ 3.85/1.87 "X2", 3.85/1.87 "X25" 3.85/1.87 ], 3.85/1.87 "exprvars": [] 3.85/1.87 } 3.85/1.87 }, 3.85/1.87 "124": { 3.85/1.87 "goal": [], 3.85/1.87 "kb": { 3.85/1.87 "nonunifying": [], 3.85/1.87 "intvars": {}, 3.85/1.87 "arithmetic": { 3.85/1.87 "type": "PlainIntegerRelationState", 3.85/1.87 "relations": [] 3.85/1.87 }, 3.85/1.87 "ground": [], 3.85/1.87 "free": [], 3.85/1.87 "exprvars": [] 3.85/1.87 } 3.85/1.87 }, 3.85/1.87 "125": { 3.85/1.87 "goal": [ 3.85/1.87 { 3.85/1.87 "clause": 0, 3.85/1.87 "scope": 3, 3.85/1.87 "term": "(',' (p (f T30) (f X25)) (p X25 (g T32)))" 3.85/1.87 }, 3.85/1.87 { 3.85/1.87 "clause": 1, 3.85/1.87 "scope": 3, 3.85/1.87 "term": "(',' (p (f T30) (f X25)) (p X25 (g T32)))" 3.85/1.87 } 3.85/1.87 ], 3.85/1.87 "kb": { 3.85/1.87 "nonunifying": [[ 3.85/1.87 "(p (f T30) T2)", 3.85/1.87 "(p X2 X2)" 3.85/1.87 ]], 3.85/1.87 "intvars": {}, 3.85/1.87 "arithmetic": { 3.85/1.87 "type": "PlainIntegerRelationState", 3.85/1.87 "relations": [] 3.85/1.87 }, 3.85/1.87 "ground": ["T30"], 3.85/1.87 "free": [ 3.85/1.87 "X2", 3.85/1.87 "X25" 3.85/1.87 ], 3.85/1.87 "exprvars": [] 3.85/1.87 } 3.85/1.87 }, 3.85/1.87 "126": { 3.85/1.87 "goal": [{ 3.85/1.87 "clause": 0, 3.85/1.87 "scope": 3, 3.85/1.87 "term": "(',' (p (f T30) (f X25)) (p X25 (g T32)))" 3.85/1.87 }], 3.85/1.87 "kb": { 3.85/1.87 "nonunifying": [[ 3.85/1.87 "(p (f T30) T2)", 3.85/1.87 "(p X2 X2)" 3.85/1.87 ]], 3.85/1.87 "intvars": {}, 3.85/1.87 "arithmetic": { 3.85/1.87 "type": "PlainIntegerRelationState", 3.85/1.87 "relations": [] 3.85/1.87 }, 3.85/1.87 "ground": ["T30"], 3.85/1.87 "free": [ 3.85/1.87 "X2", 3.85/1.87 "X25" 3.85/1.87 ], 3.85/1.87 "exprvars": [] 3.85/1.87 } 3.85/1.87 }, 3.85/1.87 "127": { 3.85/1.87 "goal": [{ 3.85/1.87 "clause": 1, 3.85/1.87 "scope": 3, 3.85/1.87 "term": "(',' (p (f T30) (f X25)) (p X25 (g T32)))" 3.85/1.87 }], 3.85/1.87 "kb": { 3.85/1.87 "nonunifying": [[ 3.85/1.87 "(p (f T30) T2)", 3.85/1.87 "(p X2 X2)" 3.85/1.87 ]], 3.85/1.87 "intvars": {}, 3.85/1.87 "arithmetic": { 3.85/1.87 "type": "PlainIntegerRelationState", 3.85/1.87 "relations": [] 3.85/1.87 }, 3.85/1.87 "ground": ["T30"], 3.85/1.87 "free": [ 3.85/1.87 "X2", 3.85/1.87 "X25" 3.85/1.87 ], 3.85/1.87 "exprvars": [] 3.85/1.87 } 3.85/1.87 }, 3.85/1.88 "90": { 3.85/1.88 "goal": [ 3.85/1.88 { 3.85/1.88 "clause": 0, 3.85/1.88 "scope": 1, 3.85/1.88 "term": "(p T1 T2)" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "clause": 1, 3.85/1.88 "scope": 1, 3.85/1.88 "term": "(p T1 T2)" 3.85/1.88 } 3.85/1.88 ], 3.85/1.88 "kb": { 3.85/1.88 "nonunifying": [], 3.85/1.88 "intvars": {}, 3.85/1.88 "arithmetic": { 3.85/1.88 "type": "PlainIntegerRelationState", 3.85/1.88 "relations": [] 3.85/1.88 }, 3.85/1.88 "ground": ["T1"], 3.85/1.88 "free": [], 3.85/1.88 "exprvars": [] 3.85/1.88 } 3.85/1.88 }, 3.85/1.88 "128": { 3.85/1.88 "goal": [{ 3.85/1.88 "clause": -1, 3.85/1.88 "scope": -1, 3.85/1.88 "term": "(p T45 (g T32))" 3.85/1.88 }], 3.85/1.88 "kb": { 3.85/1.88 "nonunifying": [[ 3.85/1.88 "(p (f T45) T2)", 3.85/1.88 "(p X2 X2)" 3.85/1.88 ]], 3.85/1.88 "intvars": {}, 3.85/1.88 "arithmetic": { 3.85/1.88 "type": "PlainIntegerRelationState", 3.85/1.88 "relations": [] 3.85/1.88 }, 3.85/1.88 "ground": ["T45"], 3.85/1.88 "free": ["X2"], 3.85/1.88 "exprvars": [] 3.85/1.88 } 3.85/1.88 }, 3.85/1.88 "91": { 3.85/1.88 "goal": [ 3.85/1.88 { 3.85/1.88 "clause": -1, 3.85/1.88 "scope": -1, 3.85/1.88 "term": "(true)" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "clause": 1, 3.85/1.88 "scope": 1, 3.85/1.88 "term": "(p T4 T2)" 3.85/1.88 } 3.85/1.88 ], 3.85/1.88 "kb": { 3.85/1.88 "nonunifying": [], 3.85/1.88 "intvars": {}, 3.85/1.88 "arithmetic": { 3.85/1.88 "type": "PlainIntegerRelationState", 3.85/1.88 "relations": [] 3.85/1.88 }, 3.85/1.88 "ground": ["T4"], 3.85/1.88 "free": [], 3.85/1.88 "exprvars": [] 3.85/1.88 } 3.85/1.88 }, 3.85/1.88 "129": { 3.85/1.88 "goal": [], 3.85/1.88 "kb": { 3.85/1.88 "nonunifying": [], 3.85/1.88 "intvars": {}, 3.85/1.88 "arithmetic": { 3.85/1.88 "type": "PlainIntegerRelationState", 3.85/1.88 "relations": [] 3.85/1.88 }, 3.85/1.88 "ground": [], 3.85/1.88 "free": [], 3.85/1.88 "exprvars": [] 3.85/1.88 } 3.85/1.88 }, 3.85/1.88 "92": { 3.85/1.88 "goal": [{ 3.85/1.88 "clause": 1, 3.85/1.88 "scope": 1, 3.85/1.88 "term": "(p T1 T2)" 3.85/1.88 }], 3.85/1.88 "kb": { 3.85/1.88 "nonunifying": [[ 3.85/1.88 "(p T1 T2)", 3.85/1.88 "(p X2 X2)" 3.85/1.88 ]], 3.85/1.88 "intvars": {}, 3.85/1.88 "arithmetic": { 3.85/1.88 "type": "PlainIntegerRelationState", 3.85/1.88 "relations": [] 3.85/1.88 }, 3.85/1.88 "ground": ["T1"], 3.85/1.88 "free": ["X2"], 3.85/1.88 "exprvars": [] 3.85/1.88 } 3.85/1.88 }, 3.85/1.88 "119": { 3.85/1.88 "goal": [{ 3.85/1.88 "clause": 0, 3.85/1.88 "scope": 2, 3.85/1.88 "term": "(',' (p (f T7) (f X7)) (p X7 (g T9)))" 3.85/1.88 }], 3.85/1.88 "kb": { 3.85/1.88 "nonunifying": [], 3.85/1.88 "intvars": {}, 3.85/1.88 "arithmetic": { 3.85/1.88 "type": "PlainIntegerRelationState", 3.85/1.88 "relations": [] 3.85/1.88 }, 3.85/1.88 "ground": ["T7"], 3.85/1.88 "free": ["X7"], 3.85/1.88 "exprvars": [] 3.85/1.88 } 3.85/1.88 }, 3.85/1.88 "93": { 3.85/1.88 "goal": [{ 3.85/1.88 "clause": 1, 3.85/1.88 "scope": 1, 3.85/1.88 "term": "(p T4 T2)" 3.85/1.88 }], 3.85/1.88 "kb": { 3.85/1.88 "nonunifying": [], 3.85/1.88 "intvars": {}, 3.85/1.88 "arithmetic": { 3.85/1.88 "type": "PlainIntegerRelationState", 3.85/1.88 "relations": [] 3.85/1.88 }, 3.85/1.88 "ground": ["T4"], 3.85/1.88 "free": [], 3.85/1.88 "exprvars": [] 3.85/1.88 } 3.85/1.88 }, 3.85/1.88 "94": { 3.85/1.88 "goal": [{ 3.85/1.88 "clause": -1, 3.85/1.88 "scope": -1, 3.85/1.88 "term": "(',' (p (f T7) (f X7)) (p X7 (g T9)))" 3.85/1.88 }], 3.85/1.88 "kb": { 3.85/1.88 "nonunifying": [], 3.85/1.88 "intvars": {}, 3.85/1.88 "arithmetic": { 3.85/1.88 "type": "PlainIntegerRelationState", 3.85/1.88 "relations": [] 3.85/1.88 }, 3.85/1.88 "ground": ["T7"], 3.85/1.88 "free": ["X7"], 3.85/1.88 "exprvars": [] 3.85/1.88 } 3.85/1.88 }, 3.85/1.88 "95": { 3.85/1.88 "goal": [], 3.85/1.88 "kb": { 3.85/1.88 "nonunifying": [], 3.85/1.88 "intvars": {}, 3.85/1.88 "arithmetic": { 3.85/1.88 "type": "PlainIntegerRelationState", 3.85/1.88 "relations": [] 3.85/1.88 }, 3.85/1.88 "ground": [], 3.85/1.88 "free": [], 3.85/1.88 "exprvars": [] 3.85/1.88 } 3.85/1.88 }, 3.85/1.88 "96": { 3.85/1.88 "goal": [ 3.85/1.88 { 3.85/1.88 "clause": 0, 3.85/1.88 "scope": 2, 3.85/1.88 "term": "(',' (p (f T7) (f X7)) (p X7 (g T9)))" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "clause": 1, 3.85/1.88 "scope": 2, 3.85/1.88 "term": "(',' (p (f T7) (f X7)) (p X7 (g T9)))" 3.85/1.88 } 3.85/1.88 ], 3.85/1.88 "kb": { 3.85/1.88 "nonunifying": [], 3.85/1.88 "intvars": {}, 3.85/1.88 "arithmetic": { 3.85/1.88 "type": "PlainIntegerRelationState", 3.85/1.88 "relations": [] 3.85/1.88 }, 3.85/1.88 "ground": ["T7"], 3.85/1.88 "free": ["X7"], 3.85/1.88 "exprvars": [] 3.85/1.88 } 3.85/1.88 } 3.85/1.88 }, 3.85/1.88 "edges": [ 3.85/1.88 { 3.85/1.88 "from": 2, 3.85/1.88 "to": 90, 3.85/1.88 "label": "CASE" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 90, 3.85/1.88 "to": 91, 3.85/1.88 "label": "EVAL with clause\np(X2, X2).\nand substitutionT1 -> T4,\nX2 -> T4,\nT2 -> T4" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 90, 3.85/1.88 "to": 92, 3.85/1.88 "label": "EVAL-BACKTRACK" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 91, 3.85/1.88 "to": 93, 3.85/1.88 "label": "SUCCESS" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 92, 3.85/1.88 "to": 123, 3.85/1.88 "label": "EVAL with clause\np(f(X23), g(X24)) :- ','(p(f(X23), f(X25)), p(X25, g(X24))).\nand substitutionX23 -> T30,\nT1 -> f(T30),\nX24 -> T32,\nT2 -> g(T32),\nT31 -> T32" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 92, 3.85/1.88 "to": 124, 3.85/1.88 "label": "EVAL-BACKTRACK" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 93, 3.85/1.88 "to": 94, 3.85/1.88 "label": "EVAL with clause\np(f(X5), g(X6)) :- ','(p(f(X5), f(X7)), p(X7, g(X6))).\nand substitutionX5 -> T7,\nT4 -> f(T7),\nX6 -> T9,\nT2 -> g(T9),\nT8 -> T9" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 93, 3.85/1.88 "to": 95, 3.85/1.88 "label": "EVAL-BACKTRACK" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 94, 3.85/1.88 "to": 96, 3.85/1.88 "label": "CASE" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 96, 3.85/1.88 "to": 119, 3.85/1.88 "label": "PARALLEL" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 96, 3.85/1.88 "to": 120, 3.85/1.88 "label": "PARALLEL" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 119, 3.85/1.88 "to": 121, 3.85/1.88 "label": "ONLY EVAL with clause\np(X16, X16).\nand substitutionT7 -> T22,\nX16 -> f(T22),\nX7 -> T22" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 120, 3.85/1.88 "to": 122, 3.85/1.88 "label": "BACKTRACK\nfor clause: p(f(X), g(Y)) :- ','(p(f(X), f(Z)), p(Z, g(Y)))because of non-unification" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 121, 3.85/1.88 "to": 2, 3.85/1.88 "label": "INSTANCE with matching:\nT1 -> T22\nT2 -> g(T9)" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 123, 3.85/1.88 "to": 125, 3.85/1.88 "label": "CASE" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 125, 3.85/1.88 "to": 126, 3.85/1.88 "label": "PARALLEL" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 125, 3.85/1.88 "to": 127, 3.85/1.88 "label": "PARALLEL" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 126, 3.85/1.88 "to": 128, 3.85/1.88 "label": "ONLY EVAL with clause\np(X34, X34).\nand substitutionT30 -> T45,\nX34 -> f(T45),\nX25 -> T45" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 127, 3.85/1.88 "to": 129, 3.85/1.88 "label": "BACKTRACK\nfor clause: p(f(X), g(Y)) :- ','(p(f(X), f(Z)), p(Z, g(Y)))because of non-unification" 3.85/1.88 }, 3.85/1.88 { 3.85/1.88 "from": 128, 3.85/1.88 "to": 2, 3.85/1.88 "label": "INSTANCE with matching:\nT1 -> T45\nT2 -> g(T32)" 3.85/1.88 } 3.85/1.88 ], 3.85/1.88 "type": "Graph" 3.85/1.88 } 3.85/1.88 } 3.85/1.88 3.85/1.88 ---------------------------------------- 3.85/1.88 3.85/1.88 (2) 3.85/1.88 Obligation: 3.85/1.88 Triples: 3.85/1.88 3.85/1.88 pA(f(X1), g(X2)) :- pA(X1, g(X2)). 3.85/1.88 pA(f(X1), g(X2)) :- pA(X1, g(X2)). 3.85/1.88 3.85/1.88 Clauses: 3.85/1.88 3.85/1.88 pcA(X1, X1). 3.85/1.88 pcA(f(X1), g(X2)) :- pcA(X1, g(X2)). 3.85/1.88 pcA(f(X1), g(X2)) :- pcA(X1, g(X2)). 3.85/1.88 3.85/1.88 Afs: 3.85/1.88 3.85/1.88 pA(x1, x2) = pA(x1) 3.85/1.88 3.85/1.88 3.85/1.88 ---------------------------------------- 3.85/1.88 3.85/1.88 (3) TriplesToPiDPProof (SOUND) 3.85/1.88 We use the technique of [DT09]. With regard to the inferred argument filtering the predicates were used in the following modes: 3.85/1.88 3.85/1.88 pA_in_2: (b,f) (b,b) 3.85/1.88 3.85/1.88 Transforming TRIPLES into the following Term Rewriting System: 3.85/1.88 3.85/1.88 Pi DP problem: 3.85/1.88 The TRS P consists of the following rules: 3.85/1.88 3.85/1.88 PA_IN_GA(f(X1), g(X2)) -> U1_GA(X1, X2, pA_in_gg(X1, g(X2))) 3.85/1.88 PA_IN_GA(f(X1), g(X2)) -> PA_IN_GG(X1, g(X2)) 3.85/1.88 PA_IN_GG(f(X1), g(X2)) -> U1_GG(X1, X2, pA_in_gg(X1, g(X2))) 3.85/1.88 PA_IN_GG(f(X1), g(X2)) -> PA_IN_GG(X1, g(X2)) 3.85/1.88 3.85/1.88 R is empty. 3.85/1.88 The argument filtering Pi contains the following mapping: 3.85/1.88 f(x1) = f(x1) 3.85/1.88 3.85/1.88 pA_in_gg(x1, x2) = pA_in_gg(x1, x2) 3.85/1.88 3.85/1.88 g(x1) = g 3.85/1.88 3.85/1.88 PA_IN_GA(x1, x2) = PA_IN_GA(x1) 3.85/1.88 3.85/1.88 U1_GA(x1, x2, x3) = U1_GA(x1, x3) 3.85/1.88 3.85/1.88 PA_IN_GG(x1, x2) = PA_IN_GG(x1, x2) 3.85/1.88 3.85/1.88 U1_GG(x1, x2, x3) = U1_GG(x1, x3) 3.85/1.88 3.85/1.88 3.85/1.88 We have to consider all (P,R,Pi)-chains 3.85/1.88 3.85/1.88 3.85/1.88 Infinitary Constructor Rewriting Termination of PiDP implies Termination of TRIPLES 3.85/1.88 3.85/1.88 3.85/1.88 3.85/1.88 ---------------------------------------- 3.85/1.88 3.85/1.88 (4) 3.85/1.88 Obligation: 3.85/1.88 Pi DP problem: 3.85/1.88 The TRS P consists of the following rules: 3.85/1.88 3.85/1.88 PA_IN_GA(f(X1), g(X2)) -> U1_GA(X1, X2, pA_in_gg(X1, g(X2))) 3.85/1.88 PA_IN_GA(f(X1), g(X2)) -> PA_IN_GG(X1, g(X2)) 3.85/1.88 PA_IN_GG(f(X1), g(X2)) -> U1_GG(X1, X2, pA_in_gg(X1, g(X2))) 3.85/1.88 PA_IN_GG(f(X1), g(X2)) -> PA_IN_GG(X1, g(X2)) 3.85/1.88 3.85/1.88 R is empty. 3.85/1.88 The argument filtering Pi contains the following mapping: 3.85/1.88 f(x1) = f(x1) 3.85/1.88 3.85/1.88 pA_in_gg(x1, x2) = pA_in_gg(x1, x2) 3.85/1.88 3.85/1.88 g(x1) = g 3.85/1.88 3.85/1.88 PA_IN_GA(x1, x2) = PA_IN_GA(x1) 3.85/1.88 3.85/1.88 U1_GA(x1, x2, x3) = U1_GA(x1, x3) 3.85/1.88 3.85/1.88 PA_IN_GG(x1, x2) = PA_IN_GG(x1, x2) 3.85/1.88 3.85/1.88 U1_GG(x1, x2, x3) = U1_GG(x1, x3) 3.85/1.88 3.85/1.88 3.85/1.88 We have to consider all (P,R,Pi)-chains 3.85/1.88 ---------------------------------------- 3.85/1.88 3.85/1.88 (5) DependencyGraphProof (EQUIVALENT) 3.85/1.88 The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 3 less nodes. 3.85/1.88 ---------------------------------------- 3.85/1.88 3.85/1.88 (6) 3.85/1.88 Obligation: 3.85/1.88 Pi DP problem: 3.85/1.88 The TRS P consists of the following rules: 3.85/1.88 3.85/1.88 PA_IN_GG(f(X1), g(X2)) -> PA_IN_GG(X1, g(X2)) 3.85/1.88 3.85/1.88 R is empty. 3.85/1.88 The argument filtering Pi contains the following mapping: 3.85/1.88 f(x1) = f(x1) 3.85/1.88 3.85/1.88 g(x1) = g 3.85/1.88 3.85/1.88 PA_IN_GG(x1, x2) = PA_IN_GG(x1, x2) 3.85/1.88 3.85/1.88 3.85/1.88 We have to consider all (P,R,Pi)-chains 3.85/1.88 ---------------------------------------- 3.85/1.88 3.85/1.88 (7) PiDPToQDPProof (SOUND) 3.85/1.88 Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. 3.85/1.88 ---------------------------------------- 3.85/1.88 3.85/1.88 (8) 3.85/1.88 Obligation: 3.85/1.88 Q DP problem: 3.85/1.88 The TRS P consists of the following rules: 3.85/1.88 3.85/1.88 PA_IN_GG(f(X1), g) -> PA_IN_GG(X1, g) 3.85/1.88 3.85/1.88 R is empty. 3.85/1.88 Q is empty. 3.85/1.88 We have to consider all (P,Q,R)-chains. 3.85/1.88 ---------------------------------------- 3.85/1.88 3.85/1.88 (9) QDPSizeChangeProof (EQUIVALENT) 3.85/1.88 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.85/1.88 3.85/1.88 From the DPs we obtained the following set of size-change graphs: 3.85/1.88 *PA_IN_GG(f(X1), g) -> PA_IN_GG(X1, g) 3.85/1.88 The graph contains the following edges 1 > 1, 2 >= 2 3.85/1.88 3.85/1.88 3.85/1.88 ---------------------------------------- 3.85/1.88 3.85/1.88 (10) 3.85/1.88 YES 3.85/1.90 EOF