/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.pl /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox2/benchmark/theBenchmark.pl # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Left Termination of the query pattern p() w.r.t. the given Prolog program could not be shown: (0) Prolog (1) CutEliminatorProof [SOUND, 0 ms] (2) Prolog (3) PrologToPiTRSProof [SOUND, 0 ms] (4) PiTRS (5) DependencyPairsProof [EQUIVALENT, 0 ms] (6) PiDP (7) DependencyGraphProof [EQUIVALENT, 0 ms] (8) PiDP (9) UsableRulesProof [EQUIVALENT, 0 ms] (10) PiDP (11) PiDPToQDPProof [EQUIVALENT, 0 ms] (12) QDP (13) NonTerminationLoopProof [COMPLETE, 0 ms] (14) NO (15) PrologToPiTRSProof [SOUND, 0 ms] (16) PiTRS (17) DependencyPairsProof [EQUIVALENT, 0 ms] (18) PiDP (19) DependencyGraphProof [EQUIVALENT, 0 ms] (20) PiDP (21) UsableRulesProof [EQUIVALENT, 0 ms] (22) PiDP (23) PiDPToQDPProof [EQUIVALENT, 0 ms] (24) QDP (25) NonTerminationLoopProof [COMPLETE, 0 ms] (26) NO (27) PrologToTRSTransformerProof [SOUND, 0 ms] (28) QTRS (29) QTRSRRRProof [EQUIVALENT, 22 ms] (30) QTRS (31) Overlay + Local Confluence [EQUIVALENT, 0 ms] (32) QTRS (33) DependencyPairsProof [EQUIVALENT, 0 ms] (34) QDP (35) UsableRulesProof [EQUIVALENT, 0 ms] (36) QDP (37) QReductionProof [EQUIVALENT, 0 ms] (38) QDP (39) NonTerminationLoopProof [COMPLETE, 0 ms] (40) NO (41) PrologToDTProblemTransformerProof [SOUND, 0 ms] (42) TRIPLES (43) TriplesToPiDPProof [SOUND, 0 ms] (44) PiDP (45) DependencyGraphProof [EQUIVALENT, 0 ms] (46) PiDP (47) PiDPToQDPProof [EQUIVALENT, 0 ms] (48) QDP (49) NonTerminationLoopProof [COMPLETE, 0 ms] (50) NO ---------------------------------------- (0) Obligation: Clauses: p :- ','(q, !). p :- p. q :- ','(!, failure(a)). q. failure(b). Query: p() ---------------------------------------- (1) CutEliminatorProof (SOUND) Eliminated all cuts by simply ignoring them[PROLOG]. ---------------------------------------- (2) Obligation: Clauses: p :- q. p :- p. q :- failure(a). q. failure(b). Query: p() ---------------------------------------- (3) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: p_in_ -> U1_(q_in_) q_in_ -> U3_(failure_in_g(a)) failure_in_g(b) -> failure_out_g(b) U3_(failure_out_g(a)) -> q_out_ q_in_ -> q_out_ U1_(q_out_) -> p_out_ p_in_ -> U2_(p_in_) U2_(p_out_) -> p_out_ The argument filtering Pi contains the following mapping: p_in_ = p_in_ U1_(x1) = U1_(x1) q_in_ = q_in_ U3_(x1) = U3_(x1) failure_in_g(x1) = failure_in_g(x1) b = b failure_out_g(x1) = failure_out_g a = a q_out_ = q_out_ p_out_ = p_out_ U2_(x1) = U2_(x1) Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (4) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: p_in_ -> U1_(q_in_) q_in_ -> U3_(failure_in_g(a)) failure_in_g(b) -> failure_out_g(b) U3_(failure_out_g(a)) -> q_out_ q_in_ -> q_out_ U1_(q_out_) -> p_out_ p_in_ -> U2_(p_in_) U2_(p_out_) -> p_out_ The argument filtering Pi contains the following mapping: p_in_ = p_in_ U1_(x1) = U1_(x1) q_in_ = q_in_ U3_(x1) = U3_(x1) failure_in_g(x1) = failure_in_g(x1) b = b failure_out_g(x1) = failure_out_g a = a q_out_ = q_out_ p_out_ = p_out_ U2_(x1) = U2_(x1) ---------------------------------------- (5) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem: Pi DP problem: The TRS P consists of the following rules: P_IN_ -> U1_^1(q_in_) P_IN_ -> Q_IN_ Q_IN_ -> U3_^1(failure_in_g(a)) Q_IN_ -> FAILURE_IN_G(a) P_IN_ -> U2_^1(p_in_) P_IN_ -> P_IN_ The TRS R consists of the following rules: p_in_ -> U1_(q_in_) q_in_ -> U3_(failure_in_g(a)) failure_in_g(b) -> failure_out_g(b) U3_(failure_out_g(a)) -> q_out_ q_in_ -> q_out_ U1_(q_out_) -> p_out_ p_in_ -> U2_(p_in_) U2_(p_out_) -> p_out_ The argument filtering Pi contains the following mapping: p_in_ = p_in_ U1_(x1) = U1_(x1) q_in_ = q_in_ U3_(x1) = U3_(x1) failure_in_g(x1) = failure_in_g(x1) b = b failure_out_g(x1) = failure_out_g a = a q_out_ = q_out_ p_out_ = p_out_ U2_(x1) = U2_(x1) P_IN_ = P_IN_ U1_^1(x1) = U1_^1(x1) Q_IN_ = Q_IN_ U3_^1(x1) = U3_^1(x1) FAILURE_IN_G(x1) = FAILURE_IN_G(x1) U2_^1(x1) = U2_^1(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (6) Obligation: Pi DP problem: The TRS P consists of the following rules: P_IN_ -> U1_^1(q_in_) P_IN_ -> Q_IN_ Q_IN_ -> U3_^1(failure_in_g(a)) Q_IN_ -> FAILURE_IN_G(a) P_IN_ -> U2_^1(p_in_) P_IN_ -> P_IN_ The TRS R consists of the following rules: p_in_ -> U1_(q_in_) q_in_ -> U3_(failure_in_g(a)) failure_in_g(b) -> failure_out_g(b) U3_(failure_out_g(a)) -> q_out_ q_in_ -> q_out_ U1_(q_out_) -> p_out_ p_in_ -> U2_(p_in_) U2_(p_out_) -> p_out_ The argument filtering Pi contains the following mapping: p_in_ = p_in_ U1_(x1) = U1_(x1) q_in_ = q_in_ U3_(x1) = U3_(x1) failure_in_g(x1) = failure_in_g(x1) b = b failure_out_g(x1) = failure_out_g a = a q_out_ = q_out_ p_out_ = p_out_ U2_(x1) = U2_(x1) P_IN_ = P_IN_ U1_^1(x1) = U1_^1(x1) Q_IN_ = Q_IN_ U3_^1(x1) = U3_^1(x1) FAILURE_IN_G(x1) = FAILURE_IN_G(x1) U2_^1(x1) = U2_^1(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (7) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 5 less nodes. ---------------------------------------- (8) Obligation: Pi DP problem: The TRS P consists of the following rules: P_IN_ -> P_IN_ The TRS R consists of the following rules: p_in_ -> U1_(q_in_) q_in_ -> U3_(failure_in_g(a)) failure_in_g(b) -> failure_out_g(b) U3_(failure_out_g(a)) -> q_out_ q_in_ -> q_out_ U1_(q_out_) -> p_out_ p_in_ -> U2_(p_in_) U2_(p_out_) -> p_out_ The argument filtering Pi contains the following mapping: p_in_ = p_in_ U1_(x1) = U1_(x1) q_in_ = q_in_ U3_(x1) = U3_(x1) failure_in_g(x1) = failure_in_g(x1) b = b failure_out_g(x1) = failure_out_g a = a q_out_ = q_out_ p_out_ = p_out_ U2_(x1) = U2_(x1) P_IN_ = P_IN_ We have to consider all (P,R,Pi)-chains ---------------------------------------- (9) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (10) Obligation: Pi DP problem: The TRS P consists of the following rules: P_IN_ -> P_IN_ R is empty. Pi is empty. We have to consider all (P,R,Pi)-chains ---------------------------------------- (11) PiDPToQDPProof (EQUIVALENT) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (12) Obligation: Q DP problem: The TRS P consists of the following rules: P_IN_ -> P_IN_ R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (13) NonTerminationLoopProof (COMPLETE) We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. Found a loop by semiunifying a rule from P directly. s = P_IN_ evaluates to t =P_IN_ Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [ ] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence The DP semiunifies directly so there is only one rewrite step from P_IN_ to P_IN_. ---------------------------------------- (14) NO ---------------------------------------- (15) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: p_in_ -> U1_(q_in_) q_in_ -> U3_(failure_in_g(a)) failure_in_g(b) -> failure_out_g(b) U3_(failure_out_g(a)) -> q_out_ q_in_ -> q_out_ U1_(q_out_) -> p_out_ p_in_ -> U2_(p_in_) U2_(p_out_) -> p_out_ Pi is empty. Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (16) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: p_in_ -> U1_(q_in_) q_in_ -> U3_(failure_in_g(a)) failure_in_g(b) -> failure_out_g(b) U3_(failure_out_g(a)) -> q_out_ q_in_ -> q_out_ U1_(q_out_) -> p_out_ p_in_ -> U2_(p_in_) U2_(p_out_) -> p_out_ Pi is empty. ---------------------------------------- (17) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem: Pi DP problem: The TRS P consists of the following rules: P_IN_ -> U1_^1(q_in_) P_IN_ -> Q_IN_ Q_IN_ -> U3_^1(failure_in_g(a)) Q_IN_ -> FAILURE_IN_G(a) P_IN_ -> U2_^1(p_in_) P_IN_ -> P_IN_ The TRS R consists of the following rules: p_in_ -> U1_(q_in_) q_in_ -> U3_(failure_in_g(a)) failure_in_g(b) -> failure_out_g(b) U3_(failure_out_g(a)) -> q_out_ q_in_ -> q_out_ U1_(q_out_) -> p_out_ p_in_ -> U2_(p_in_) U2_(p_out_) -> p_out_ Pi is empty. We have to consider all (P,R,Pi)-chains ---------------------------------------- (18) Obligation: Pi DP problem: The TRS P consists of the following rules: P_IN_ -> U1_^1(q_in_) P_IN_ -> Q_IN_ Q_IN_ -> U3_^1(failure_in_g(a)) Q_IN_ -> FAILURE_IN_G(a) P_IN_ -> U2_^1(p_in_) P_IN_ -> P_IN_ The TRS R consists of the following rules: p_in_ -> U1_(q_in_) q_in_ -> U3_(failure_in_g(a)) failure_in_g(b) -> failure_out_g(b) U3_(failure_out_g(a)) -> q_out_ q_in_ -> q_out_ U1_(q_out_) -> p_out_ p_in_ -> U2_(p_in_) U2_(p_out_) -> p_out_ Pi is empty. We have to consider all (P,R,Pi)-chains ---------------------------------------- (19) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 5 less nodes. ---------------------------------------- (20) Obligation: Pi DP problem: The TRS P consists of the following rules: P_IN_ -> P_IN_ The TRS R consists of the following rules: p_in_ -> U1_(q_in_) q_in_ -> U3_(failure_in_g(a)) failure_in_g(b) -> failure_out_g(b) U3_(failure_out_g(a)) -> q_out_ q_in_ -> q_out_ U1_(q_out_) -> p_out_ p_in_ -> U2_(p_in_) U2_(p_out_) -> p_out_ Pi is empty. We have to consider all (P,R,Pi)-chains ---------------------------------------- (21) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (22) Obligation: Pi DP problem: The TRS P consists of the following rules: P_IN_ -> P_IN_ R is empty. Pi is empty. We have to consider all (P,R,Pi)-chains ---------------------------------------- (23) PiDPToQDPProof (EQUIVALENT) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (24) Obligation: Q DP problem: The TRS P consists of the following rules: P_IN_ -> P_IN_ R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (25) NonTerminationLoopProof (COMPLETE) We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. Found a loop by semiunifying a rule from P directly. s = P_IN_ evaluates to t =P_IN_ Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [ ] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence The DP semiunifies directly so there is only one rewrite step from P_IN_ to P_IN_. ---------------------------------------- (26) NO ---------------------------------------- (27) PrologToTRSTransformerProof (SOUND) Transformed Prolog program to TRS. { "root": 2, "program": { "directives": [], "clauses": [ [ "(p)", "(',' (q) (!))" ], [ "(p)", "(p)" ], [ "(q)", "(',' (!) (failure (a)))" ], [ "(q)", null ], [ "(failure (b))", null ] ] }, "graph": { "nodes": { "22": { "goal": [ { "clause": -1, "scope": -1, "term": "(',' (failure (a)) (!_1))" }, { "clause": 1, "scope": 1, "term": "(p)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "23": { "goal": [ { "clause": 4, "scope": 3, "term": "(',' (failure (a)) (!_1))" }, { "clause": -1, "scope": 3, "term": null }, { "clause": 1, "scope": 1, "term": "(p)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "2": { "goal": [{ "clause": -1, "scope": -1, "term": "(p)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "24": { "goal": [ { "clause": -1, "scope": 3, "term": null }, { "clause": 1, "scope": 1, "term": "(p)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "16": { "goal": [ { "clause": 0, "scope": 1, "term": "(p)" }, { "clause": 1, "scope": 1, "term": "(p)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "29": { "goal": [{ "clause": 1, "scope": 1, "term": "(p)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "19": { "goal": [ { "clause": -1, "scope": -1, "term": "(',' (q) (!_1))" }, { "clause": 1, "scope": 1, "term": "(p)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "30": { "goal": [{ "clause": -1, "scope": -1, "term": "(p)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "20": { "goal": [ { "clause": 2, "scope": 2, "term": "(',' (q) (!_1))" }, { "clause": 3, "scope": 2, "term": "(',' (q) (!_1))" }, { "clause": -1, "scope": 2, "term": null }, { "clause": 1, "scope": 1, "term": "(p)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "21": { "goal": [ { "clause": -1, "scope": -1, "term": "(',' (',' (!_2) (failure (a))) (!_1))" }, { "clause": 3, "scope": 2, "term": "(',' (q) (!_1))" }, { "clause": -1, "scope": 2, "term": null }, { "clause": 1, "scope": 1, "term": "(p)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } } }, "edges": [ { "from": 2, "to": 16, "label": "CASE" }, { "from": 16, "to": 19, "label": "ONLY EVAL with clause\np :- ','(q, !_1).\nand substitution" }, { "from": 19, "to": 20, "label": "CASE" }, { "from": 20, "to": 21, "label": "ONLY EVAL with clause\nq :- ','(!_2, failure(a)).\nand substitution" }, { "from": 21, "to": 22, "label": "CUT" }, { "from": 22, "to": 23, "label": "CASE" }, { "from": 23, "to": 24, "label": "BACKTRACK\nfor clause: failure(b)because of non-unification" }, { "from": 24, "to": 29, "label": "FAILURE" }, { "from": 29, "to": 30, "label": "ONLY EVAL with clause\np :- p.\nand substitution" }, { "from": 30, "to": 2, "label": "INSTANCE" } ], "type": "Graph" } } ---------------------------------------- (28) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: f2_in -> U1(f2_in) U1(f2_out1) -> f2_out1 Q is empty. ---------------------------------------- (29) QTRSRRRProof (EQUIVALENT) Used ordering: Polynomial interpretation [POLO]: POL(U1(x_1)) = 2*x_1 POL(f2_in) = 0 POL(f2_out1) = 1 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: U1(f2_out1) -> f2_out1 ---------------------------------------- (30) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: f2_in -> U1(f2_in) Q is empty. ---------------------------------------- (31) Overlay + Local Confluence (EQUIVALENT) The TRS is overlay and locally confluent. By [NOC] we can switch to innermost. ---------------------------------------- (32) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: f2_in -> U1(f2_in) The set Q consists of the following terms: f2_in ---------------------------------------- (33) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. ---------------------------------------- (34) Obligation: Q DP problem: The TRS P consists of the following rules: F2_IN -> F2_IN The TRS R consists of the following rules: f2_in -> U1(f2_in) The set Q consists of the following terms: f2_in We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (35) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (36) Obligation: Q DP problem: The TRS P consists of the following rules: F2_IN -> F2_IN R is empty. The set Q consists of the following terms: f2_in We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (37) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. f2_in ---------------------------------------- (38) Obligation: Q DP problem: The TRS P consists of the following rules: F2_IN -> F2_IN R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (39) NonTerminationLoopProof (COMPLETE) We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. Found a loop by semiunifying a rule from P directly. s = F2_IN evaluates to t =F2_IN Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [ ] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence The DP semiunifies directly so there is only one rewrite step from F2_IN to F2_IN. ---------------------------------------- (40) NO ---------------------------------------- (41) PrologToDTProblemTransformerProof (SOUND) Built DT problem from termination graph DT10. { "root": 3, "program": { "directives": [], "clauses": [ [ "(p)", "(',' (q) (!))" ], [ "(p)", "(p)" ], [ "(q)", "(',' (!) (failure (a)))" ], [ "(q)", null ], [ "(failure (b))", null ] ] }, "graph": { "nodes": { "12": { "goal": [ { "clause": -1, "scope": -1, "term": "(',' (failure (a)) (!_1))" }, { "clause": 1, "scope": 1, "term": "(p)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "3": { "goal": [{ "clause": -1, "scope": -1, "term": "(p)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "14": { "goal": [ { "clause": 4, "scope": 3, "term": "(',' (failure (a)) (!_1))" }, { "clause": -1, "scope": 3, "term": null }, { "clause": 1, "scope": 1, "term": "(p)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "25": { "goal": [{ "clause": 1, "scope": 1, "term": "(p)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "4": { "goal": [ { "clause": 0, "scope": 1, "term": "(p)" }, { "clause": 1, "scope": 1, "term": "(p)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "15": { "goal": [ { "clause": -1, "scope": 3, "term": null }, { "clause": 1, "scope": 1, "term": "(p)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "27": { "goal": [{ "clause": -1, "scope": -1, "term": "(p)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "6": { "goal": [ { "clause": -1, "scope": -1, "term": "(',' (q) (!_1))" }, { "clause": 1, "scope": 1, "term": "(p)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "8": { "goal": [ { "clause": 2, "scope": 2, "term": "(',' (q) (!_1))" }, { "clause": 3, "scope": 2, "term": "(',' (q) (!_1))" }, { "clause": -1, "scope": 2, "term": null }, { "clause": 1, "scope": 1, "term": "(p)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "10": { "goal": [ { "clause": -1, "scope": -1, "term": "(',' (',' (!_2) (failure (a))) (!_1))" }, { "clause": 3, "scope": 2, "term": "(',' (q) (!_1))" }, { "clause": -1, "scope": 2, "term": null }, { "clause": 1, "scope": 1, "term": "(p)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } } }, "edges": [ { "from": 3, "to": 4, "label": "CASE" }, { "from": 4, "to": 6, "label": "ONLY EVAL with clause\np :- ','(q, !_1).\nand substitution" }, { "from": 6, "to": 8, "label": "CASE" }, { "from": 8, "to": 10, "label": "ONLY EVAL with clause\nq :- ','(!_2, failure(a)).\nand substitution" }, { "from": 10, "to": 12, "label": "CUT" }, { "from": 12, "to": 14, "label": "CASE" }, { "from": 14, "to": 15, "label": "BACKTRACK\nfor clause: failure(b)because of non-unification" }, { "from": 15, "to": 25, "label": "FAILURE" }, { "from": 25, "to": 27, "label": "ONLY EVAL with clause\np :- p.\nand substitution" }, { "from": 27, "to": 3, "label": "INSTANCE" } ], "type": "Graph" } } ---------------------------------------- (42) Obligation: Triples: pA :- pA. Clauses: pcA :- pcA. Afs: pA = pA ---------------------------------------- (43) TriplesToPiDPProof (SOUND) We use the technique of [DT09]. With regard to the inferred argument filtering the predicates were used in the following modes: Transforming TRIPLES into the following Term Rewriting System: Pi DP problem: The TRS P consists of the following rules: PA_IN_ -> U1_^1(pA_in_) PA_IN_ -> PA_IN_ R is empty. Pi is empty. We have to consider all (P,R,Pi)-chains Infinitary Constructor Rewriting Termination of PiDP implies Termination of TRIPLES ---------------------------------------- (44) Obligation: Pi DP problem: The TRS P consists of the following rules: PA_IN_ -> U1_^1(pA_in_) PA_IN_ -> PA_IN_ R is empty. Pi is empty. We have to consider all (P,R,Pi)-chains ---------------------------------------- (45) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 1 less node. ---------------------------------------- (46) Obligation: Pi DP problem: The TRS P consists of the following rules: PA_IN_ -> PA_IN_ R is empty. Pi is empty. We have to consider all (P,R,Pi)-chains ---------------------------------------- (47) PiDPToQDPProof (EQUIVALENT) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (48) Obligation: Q DP problem: The TRS P consists of the following rules: PA_IN_ -> PA_IN_ R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (49) NonTerminationLoopProof (COMPLETE) We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. Found a loop by semiunifying a rule from P directly. s = PA_IN_ evaluates to t =PA_IN_ Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [ ] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence The DP semiunifies directly so there is only one rewrite step from PA_IN_ to PA_IN_. ---------------------------------------- (50) NO