/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 minimum(a,g) w.r.t. the given Prolog program could not be shown: (0) Prolog (1) PrologToTRSTransformerProof [SOUND, 0 ms] (2) QTRS (3) DependencyPairsProof [EQUIVALENT, 0 ms] (4) QDP (5) DependencyGraphProof [EQUIVALENT, 0 ms] (6) QDP (7) MNOCProof [EQUIVALENT, 0 ms] (8) QDP (9) UsableRulesProof [EQUIVALENT, 0 ms] (10) QDP (11) QReductionProof [EQUIVALENT, 0 ms] (12) QDP (13) PrologToPiTRSProof [SOUND, 0 ms] (14) PiTRS (15) DependencyPairsProof [EQUIVALENT, 0 ms] (16) PiDP (17) DependencyGraphProof [EQUIVALENT, 0 ms] (18) PiDP (19) UsableRulesProof [EQUIVALENT, 0 ms] (20) PiDP (21) PiDPToQDPProof [SOUND, 0 ms] (22) QDP (23) PrologToPiTRSProof [SOUND, 0 ms] (24) PiTRS (25) DependencyPairsProof [EQUIVALENT, 0 ms] (26) PiDP (27) DependencyGraphProof [EQUIVALENT, 0 ms] (28) PiDP (29) UsableRulesProof [EQUIVALENT, 0 ms] (30) PiDP (31) PiDPToQDPProof [SOUND, 0 ms] (32) QDP (33) PrologToDTProblemTransformerProof [SOUND, 0 ms] (34) TRIPLES (35) TriplesToPiDPProof [SOUND, 0 ms] (36) PiDP (37) DependencyGraphProof [EQUIVALENT, 0 ms] (38) PiDP (39) PiDPToQDPProof [SOUND, 0 ms] (40) QDP (41) PrologToIRSwTTransformerProof [SOUND, 0 ms] (42) IRSwT (43) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (44) IRSwT (45) IntTRSCompressionProof [EQUIVALENT, 23 ms] (46) IRSwT (47) IRSFormatTransformerProof [EQUIVALENT, 1 ms] (48) IRSwT (49) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (50) IRSwT (51) FilterProof [EQUIVALENT, 3 ms] (52) IntTRS (53) IntTRSPeriodicNontermProof [COMPLETE, 0 ms] (54) NO ---------------------------------------- (0) Obligation: Clauses: minimum(tree(X, void, X1), X). minimum(tree(X2, Left, X3), X) :- minimum(Left, X). Query: minimum(a,g) ---------------------------------------- (1) PrologToTRSTransformerProof (SOUND) Transformed Prolog program to TRS. { "root": 4, "program": { "directives": [], "clauses": [ [ "(minimum (tree X (void) X1) X)", null ], [ "(minimum (tree X2 Left X3) X)", "(minimum Left X)" ] ] }, "graph": { "nodes": { "11": { "goal": [{ "clause": 1, "scope": 1, "term": "(minimum T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "45": { "goal": [{ "clause": -1, "scope": -1, "term": "(minimum T25 T24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T24"], "free": [], "exprvars": [] } }, "47": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "4": { "goal": [{ "clause": -1, "scope": -1, "term": "(minimum T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "37": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "5": { "goal": [ { "clause": 0, "scope": 1, "term": "(minimum T1 T2)" }, { "clause": 1, "scope": 1, "term": "(minimum T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "39": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "40": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "10": { "goal": [{ "clause": 0, "scope": 1, "term": "(minimum T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } } }, "edges": [ { "from": 4, "to": 5, "label": "CASE" }, { "from": 5, "to": 10, "label": "PARALLEL" }, { "from": 5, "to": 11, "label": "PARALLEL" }, { "from": 10, "to": 37, "label": "EVAL with clause\nminimum(tree(X12, void, X13), X12).\nand substitutionX12 -> T11,\nX13 -> T12,\nT1 -> tree(T11, void, T12),\nT2 -> T11" }, { "from": 10, "to": 39, "label": "EVAL-BACKTRACK" }, { "from": 11, "to": 45, "label": "EVAL with clause\nminimum(tree(X22, X23, X24), X25) :- minimum(X23, X25).\nand substitutionX22 -> T21,\nX23 -> T25,\nX24 -> T23,\nT1 -> tree(T21, T25, T23),\nT2 -> T24,\nX25 -> T24,\nT22 -> T25" }, { "from": 11, "to": 47, "label": "EVAL-BACKTRACK" }, { "from": 37, "to": 40, "label": "SUCCESS" }, { "from": 45, "to": 4, "label": "INSTANCE with matching:\nT1 -> T25\nT2 -> T24" } ], "type": "Graph" } } ---------------------------------------- (2) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: f4_in(T11) -> f4_out1 f4_in(T24) -> U1(f4_in(T24), T24) U1(f4_out1, T24) -> f4_out1 Q is empty. ---------------------------------------- (3) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. ---------------------------------------- (4) Obligation: Q DP problem: The TRS P consists of the following rules: F4_IN(T24) -> U1^1(f4_in(T24), T24) F4_IN(T24) -> F4_IN(T24) The TRS R consists of the following rules: f4_in(T11) -> f4_out1 f4_in(T24) -> U1(f4_in(T24), T24) U1(f4_out1, T24) -> f4_out1 Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (5) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (6) Obligation: Q DP problem: The TRS P consists of the following rules: F4_IN(T24) -> F4_IN(T24) The TRS R consists of the following rules: f4_in(T11) -> f4_out1 f4_in(T24) -> U1(f4_in(T24), T24) U1(f4_out1, T24) -> f4_out1 Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (7) MNOCProof (EQUIVALENT) We use the modular non-overlap check [LPAR04] to enlarge Q to all left-hand sides of R. ---------------------------------------- (8) Obligation: Q DP problem: The TRS P consists of the following rules: F4_IN(T24) -> F4_IN(T24) The TRS R consists of the following rules: f4_in(T11) -> f4_out1 f4_in(T24) -> U1(f4_in(T24), T24) U1(f4_out1, T24) -> f4_out1 The set Q consists of the following terms: f4_in(x0) U1(f4_out1, x0) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (9) 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. ---------------------------------------- (10) Obligation: Q DP problem: The TRS P consists of the following rules: F4_IN(T24) -> F4_IN(T24) R is empty. The set Q consists of the following terms: f4_in(x0) U1(f4_out1, x0) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (11) 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]. f4_in(x0) U1(f4_out1, x0) ---------------------------------------- (12) Obligation: Q DP problem: The TRS P consists of the following rules: F4_IN(T24) -> F4_IN(T24) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (13) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: minimum_in_2: (f,b) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: minimum_in_ag(tree(X, void, X1), X) -> minimum_out_ag(tree(X, void, X1), X) minimum_in_ag(tree(X2, Left, X3), X) -> U1_ag(X2, Left, X3, X, minimum_in_ag(Left, X)) U1_ag(X2, Left, X3, X, minimum_out_ag(Left, X)) -> minimum_out_ag(tree(X2, Left, X3), X) The argument filtering Pi contains the following mapping: minimum_in_ag(x1, x2) = minimum_in_ag(x2) minimum_out_ag(x1, x2) = minimum_out_ag(x1) tree(x1, x2, x3) = tree(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x5) Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (14) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: minimum_in_ag(tree(X, void, X1), X) -> minimum_out_ag(tree(X, void, X1), X) minimum_in_ag(tree(X2, Left, X3), X) -> U1_ag(X2, Left, X3, X, minimum_in_ag(Left, X)) U1_ag(X2, Left, X3, X, minimum_out_ag(Left, X)) -> minimum_out_ag(tree(X2, Left, X3), X) The argument filtering Pi contains the following mapping: minimum_in_ag(x1, x2) = minimum_in_ag(x2) minimum_out_ag(x1, x2) = minimum_out_ag(x1) tree(x1, x2, x3) = tree(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x5) ---------------------------------------- (15) 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: MINIMUM_IN_AG(tree(X2, Left, X3), X) -> U1_AG(X2, Left, X3, X, minimum_in_ag(Left, X)) MINIMUM_IN_AG(tree(X2, Left, X3), X) -> MINIMUM_IN_AG(Left, X) The TRS R consists of the following rules: minimum_in_ag(tree(X, void, X1), X) -> minimum_out_ag(tree(X, void, X1), X) minimum_in_ag(tree(X2, Left, X3), X) -> U1_ag(X2, Left, X3, X, minimum_in_ag(Left, X)) U1_ag(X2, Left, X3, X, minimum_out_ag(Left, X)) -> minimum_out_ag(tree(X2, Left, X3), X) The argument filtering Pi contains the following mapping: minimum_in_ag(x1, x2) = minimum_in_ag(x2) minimum_out_ag(x1, x2) = minimum_out_ag(x1) tree(x1, x2, x3) = tree(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x5) MINIMUM_IN_AG(x1, x2) = MINIMUM_IN_AG(x2) U1_AG(x1, x2, x3, x4, x5) = U1_AG(x5) We have to consider all (P,R,Pi)-chains ---------------------------------------- (16) Obligation: Pi DP problem: The TRS P consists of the following rules: MINIMUM_IN_AG(tree(X2, Left, X3), X) -> U1_AG(X2, Left, X3, X, minimum_in_ag(Left, X)) MINIMUM_IN_AG(tree(X2, Left, X3), X) -> MINIMUM_IN_AG(Left, X) The TRS R consists of the following rules: minimum_in_ag(tree(X, void, X1), X) -> minimum_out_ag(tree(X, void, X1), X) minimum_in_ag(tree(X2, Left, X3), X) -> U1_ag(X2, Left, X3, X, minimum_in_ag(Left, X)) U1_ag(X2, Left, X3, X, minimum_out_ag(Left, X)) -> minimum_out_ag(tree(X2, Left, X3), X) The argument filtering Pi contains the following mapping: minimum_in_ag(x1, x2) = minimum_in_ag(x2) minimum_out_ag(x1, x2) = minimum_out_ag(x1) tree(x1, x2, x3) = tree(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x5) MINIMUM_IN_AG(x1, x2) = MINIMUM_IN_AG(x2) U1_AG(x1, x2, x3, x4, x5) = U1_AG(x5) We have to consider all (P,R,Pi)-chains ---------------------------------------- (17) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 1 less node. ---------------------------------------- (18) Obligation: Pi DP problem: The TRS P consists of the following rules: MINIMUM_IN_AG(tree(X2, Left, X3), X) -> MINIMUM_IN_AG(Left, X) The TRS R consists of the following rules: minimum_in_ag(tree(X, void, X1), X) -> minimum_out_ag(tree(X, void, X1), X) minimum_in_ag(tree(X2, Left, X3), X) -> U1_ag(X2, Left, X3, X, minimum_in_ag(Left, X)) U1_ag(X2, Left, X3, X, minimum_out_ag(Left, X)) -> minimum_out_ag(tree(X2, Left, X3), X) The argument filtering Pi contains the following mapping: minimum_in_ag(x1, x2) = minimum_in_ag(x2) minimum_out_ag(x1, x2) = minimum_out_ag(x1) tree(x1, x2, x3) = tree(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x5) MINIMUM_IN_AG(x1, x2) = MINIMUM_IN_AG(x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (19) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (20) Obligation: Pi DP problem: The TRS P consists of the following rules: MINIMUM_IN_AG(tree(X2, Left, X3), X) -> MINIMUM_IN_AG(Left, X) R is empty. The argument filtering Pi contains the following mapping: tree(x1, x2, x3) = tree(x2) MINIMUM_IN_AG(x1, x2) = MINIMUM_IN_AG(x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (21) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (22) Obligation: Q DP problem: The TRS P consists of the following rules: MINIMUM_IN_AG(X) -> MINIMUM_IN_AG(X) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (23) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: minimum_in_2: (f,b) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: minimum_in_ag(tree(X, void, X1), X) -> minimum_out_ag(tree(X, void, X1), X) minimum_in_ag(tree(X2, Left, X3), X) -> U1_ag(X2, Left, X3, X, minimum_in_ag(Left, X)) U1_ag(X2, Left, X3, X, minimum_out_ag(Left, X)) -> minimum_out_ag(tree(X2, Left, X3), X) The argument filtering Pi contains the following mapping: minimum_in_ag(x1, x2) = minimum_in_ag(x2) minimum_out_ag(x1, x2) = minimum_out_ag(x1, x2) tree(x1, x2, x3) = tree(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (24) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: minimum_in_ag(tree(X, void, X1), X) -> minimum_out_ag(tree(X, void, X1), X) minimum_in_ag(tree(X2, Left, X3), X) -> U1_ag(X2, Left, X3, X, minimum_in_ag(Left, X)) U1_ag(X2, Left, X3, X, minimum_out_ag(Left, X)) -> minimum_out_ag(tree(X2, Left, X3), X) The argument filtering Pi contains the following mapping: minimum_in_ag(x1, x2) = minimum_in_ag(x2) minimum_out_ag(x1, x2) = minimum_out_ag(x1, x2) tree(x1, x2, x3) = tree(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) ---------------------------------------- (25) 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: MINIMUM_IN_AG(tree(X2, Left, X3), X) -> U1_AG(X2, Left, X3, X, minimum_in_ag(Left, X)) MINIMUM_IN_AG(tree(X2, Left, X3), X) -> MINIMUM_IN_AG(Left, X) The TRS R consists of the following rules: minimum_in_ag(tree(X, void, X1), X) -> minimum_out_ag(tree(X, void, X1), X) minimum_in_ag(tree(X2, Left, X3), X) -> U1_ag(X2, Left, X3, X, minimum_in_ag(Left, X)) U1_ag(X2, Left, X3, X, minimum_out_ag(Left, X)) -> minimum_out_ag(tree(X2, Left, X3), X) The argument filtering Pi contains the following mapping: minimum_in_ag(x1, x2) = minimum_in_ag(x2) minimum_out_ag(x1, x2) = minimum_out_ag(x1, x2) tree(x1, x2, x3) = tree(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) MINIMUM_IN_AG(x1, x2) = MINIMUM_IN_AG(x2) U1_AG(x1, x2, x3, x4, x5) = U1_AG(x4, x5) We have to consider all (P,R,Pi)-chains ---------------------------------------- (26) Obligation: Pi DP problem: The TRS P consists of the following rules: MINIMUM_IN_AG(tree(X2, Left, X3), X) -> U1_AG(X2, Left, X3, X, minimum_in_ag(Left, X)) MINIMUM_IN_AG(tree(X2, Left, X3), X) -> MINIMUM_IN_AG(Left, X) The TRS R consists of the following rules: minimum_in_ag(tree(X, void, X1), X) -> minimum_out_ag(tree(X, void, X1), X) minimum_in_ag(tree(X2, Left, X3), X) -> U1_ag(X2, Left, X3, X, minimum_in_ag(Left, X)) U1_ag(X2, Left, X3, X, minimum_out_ag(Left, X)) -> minimum_out_ag(tree(X2, Left, X3), X) The argument filtering Pi contains the following mapping: minimum_in_ag(x1, x2) = minimum_in_ag(x2) minimum_out_ag(x1, x2) = minimum_out_ag(x1, x2) tree(x1, x2, x3) = tree(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) MINIMUM_IN_AG(x1, x2) = MINIMUM_IN_AG(x2) U1_AG(x1, x2, x3, x4, x5) = U1_AG(x4, x5) We have to consider all (P,R,Pi)-chains ---------------------------------------- (27) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 1 less node. ---------------------------------------- (28) Obligation: Pi DP problem: The TRS P consists of the following rules: MINIMUM_IN_AG(tree(X2, Left, X3), X) -> MINIMUM_IN_AG(Left, X) The TRS R consists of the following rules: minimum_in_ag(tree(X, void, X1), X) -> minimum_out_ag(tree(X, void, X1), X) minimum_in_ag(tree(X2, Left, X3), X) -> U1_ag(X2, Left, X3, X, minimum_in_ag(Left, X)) U1_ag(X2, Left, X3, X, minimum_out_ag(Left, X)) -> minimum_out_ag(tree(X2, Left, X3), X) The argument filtering Pi contains the following mapping: minimum_in_ag(x1, x2) = minimum_in_ag(x2) minimum_out_ag(x1, x2) = minimum_out_ag(x1, x2) tree(x1, x2, x3) = tree(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) MINIMUM_IN_AG(x1, x2) = MINIMUM_IN_AG(x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (29) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (30) Obligation: Pi DP problem: The TRS P consists of the following rules: MINIMUM_IN_AG(tree(X2, Left, X3), X) -> MINIMUM_IN_AG(Left, X) R is empty. The argument filtering Pi contains the following mapping: tree(x1, x2, x3) = tree(x2) MINIMUM_IN_AG(x1, x2) = MINIMUM_IN_AG(x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (31) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (32) Obligation: Q DP problem: The TRS P consists of the following rules: MINIMUM_IN_AG(X) -> MINIMUM_IN_AG(X) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (33) PrologToDTProblemTransformerProof (SOUND) Built DT problem from termination graph DT10. { "root": 2, "program": { "directives": [], "clauses": [ [ "(minimum (tree X (void) X1) X)", null ], [ "(minimum (tree X2 Left X3) X)", "(minimum Left X)" ] ] }, "graph": { "nodes": { "44": { "goal": [{ "clause": -1, "scope": -1, "term": "(minimum T15 T14)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T14"], "free": [], "exprvars": [] } }, "46": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "48": { "goal": [ { "clause": 0, "scope": 2, "term": "(minimum T15 T14)" }, { "clause": 1, "scope": 2, "term": "(minimum T15 T14)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T14"], "free": [], "exprvars": [] } }, "49": { "goal": [{ "clause": 0, "scope": 2, "term": "(minimum T15 T14)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T14"], "free": [], "exprvars": [] } }, "type": "Nodes", "117": { "goal": [{ "clause": -1, "scope": -1, "term": "(minimum T74 T73)" }], "kb": { "nonunifying": [[ "(minimum T1 T73)", "(minimum (tree X6 (void) X7) X6)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T73"], "free": [ "X6", "X7" ], "exprvars": [] } }, "118": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "50": { "goal": [{ "clause": 1, "scope": 2, "term": "(minimum T15 T14)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T14"], "free": [], "exprvars": [] } }, "51": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "52": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "53": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "54": { "goal": [{ "clause": -1, "scope": -1, "term": "(minimum T38 T37)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T37"], "free": [], "exprvars": [] } }, "55": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "99": { "goal": [{ "clause": -1, "scope": -1, "term": "(minimum T51 T50)" }], "kb": { "nonunifying": [[ "(minimum T1 T50)", "(minimum (tree X6 (void) X7) X6)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T50"], "free": [ "X6", "X7" ], "exprvars": [] } }, "38": { "goal": [ { "clause": 0, "scope": 1, "term": "(minimum T1 T2)" }, { "clause": 1, "scope": 1, "term": "(minimum T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "100": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "2": { "goal": [{ "clause": -1, "scope": -1, "term": "(minimum T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "101": { "goal": [ { "clause": 0, "scope": 3, "term": "(minimum T51 T50)" }, { "clause": 1, "scope": 3, "term": "(minimum T51 T50)" } ], "kb": { "nonunifying": [[ "(minimum T1 T50)", "(minimum (tree X6 (void) X7) X6)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T50"], "free": [ "X6", "X7" ], "exprvars": [] } }, "102": { "goal": [{ "clause": 0, "scope": 3, "term": "(minimum T51 T50)" }], "kb": { "nonunifying": [[ "(minimum T1 T50)", "(minimum (tree X6 (void) X7) X6)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T50"], "free": [ "X6", "X7" ], "exprvars": [] } }, "103": { "goal": [{ "clause": 1, "scope": 3, "term": "(minimum T51 T50)" }], "kb": { "nonunifying": [[ "(minimum T1 T50)", "(minimum (tree X6 (void) X7) X6)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T50"], "free": [ "X6", "X7" ], "exprvars": [] } }, "104": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "105": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "106": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "41": { "goal": [ { "clause": -1, "scope": -1, "term": "(true)" }, { "clause": 1, "scope": 1, "term": "(minimum T1 T5)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": [], "exprvars": [] } }, "42": { "goal": [{ "clause": 1, "scope": 1, "term": "(minimum T1 T2)" }], "kb": { "nonunifying": [[ "(minimum T1 T2)", "(minimum (tree X6 (void) X7) X6)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [ "X6", "X7" ], "exprvars": [] } }, "43": { "goal": [{ "clause": 1, "scope": 1, "term": "(minimum T1 T5)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": [], "exprvars": [] } } }, "edges": [ { "from": 2, "to": 38, "label": "CASE" }, { "from": 38, "to": 41, "label": "EVAL with clause\nminimum(tree(X6, void, X7), X6).\nand substitutionX6 -> T5,\nX7 -> T6,\nT1 -> tree(T5, void, T6),\nT2 -> T5" }, { "from": 38, "to": 42, "label": "EVAL-BACKTRACK" }, { "from": 41, "to": 43, "label": "SUCCESS" }, { "from": 42, "to": 99, "label": "EVAL with clause\nminimum(tree(X46, X47, X48), X49) :- minimum(X47, X49).\nand substitutionX46 -> T47,\nX47 -> T51,\nX48 -> T49,\nT1 -> tree(T47, T51, T49),\nT2 -> T50,\nX49 -> T50,\nT48 -> T51" }, { "from": 42, "to": 100, "label": "EVAL-BACKTRACK" }, { "from": 43, "to": 44, "label": "EVAL with clause\nminimum(tree(X12, X13, X14), X15) :- minimum(X13, X15).\nand substitutionX12 -> T11,\nX13 -> T15,\nX14 -> T13,\nT1 -> tree(T11, T15, T13),\nT5 -> T14,\nX15 -> T14,\nT12 -> T15" }, { "from": 43, "to": 46, "label": "EVAL-BACKTRACK" }, { "from": 44, "to": 48, "label": "CASE" }, { "from": 48, "to": 49, "label": "PARALLEL" }, { "from": 48, "to": 50, "label": "PARALLEL" }, { "from": 49, "to": 51, "label": "EVAL with clause\nminimum(tree(X24, void, X25), X24).\nand substitutionX24 -> T24,\nX25 -> T25,\nT15 -> tree(T24, void, T25),\nT14 -> T24" }, { "from": 49, "to": 52, "label": "EVAL-BACKTRACK" }, { "from": 50, "to": 54, "label": "EVAL with clause\nminimum(tree(X34, X35, X36), X37) :- minimum(X35, X37).\nand substitutionX34 -> T34,\nX35 -> T38,\nX36 -> T36,\nT15 -> tree(T34, T38, T36),\nT14 -> T37,\nX37 -> T37,\nT35 -> T38" }, { "from": 50, "to": 55, "label": "EVAL-BACKTRACK" }, { "from": 51, "to": 53, "label": "SUCCESS" }, { "from": 54, "to": 2, "label": "INSTANCE with matching:\nT1 -> T38\nT2 -> T37" }, { "from": 99, "to": 101, "label": "CASE" }, { "from": 101, "to": 102, "label": "PARALLEL" }, { "from": 101, "to": 103, "label": "PARALLEL" }, { "from": 102, "to": 104, "label": "EVAL with clause\nminimum(tree(X58, void, X59), X58).\nand substitutionX58 -> T60,\nX59 -> T61,\nT51 -> tree(T60, void, T61),\nT50 -> T60" }, { "from": 102, "to": 105, "label": "EVAL-BACKTRACK" }, { "from": 103, "to": 117, "label": "EVAL with clause\nminimum(tree(X68, X69, X70), X71) :- minimum(X69, X71).\nand substitutionX68 -> T70,\nX69 -> T74,\nX70 -> T72,\nT51 -> tree(T70, T74, T72),\nT50 -> T73,\nX71 -> T73,\nT71 -> T74" }, { "from": 103, "to": 118, "label": "EVAL-BACKTRACK" }, { "from": 104, "to": 106, "label": "SUCCESS" }, { "from": 117, "to": 2, "label": "INSTANCE with matching:\nT1 -> T74\nT2 -> T73" } ], "type": "Graph" } } ---------------------------------------- (34) Obligation: Triples: minimumA(tree(X1, tree(X2, X3, X4), X5), X6) :- minimumA(X3, X6). minimumA(tree(X1, tree(X2, X3, X4), X5), X6) :- minimumA(X3, X6). Clauses: minimumcA(tree(X1, void, X2), X1). minimumcA(tree(X1, tree(X2, void, X3), X4), X2). minimumcA(tree(X1, tree(X2, X3, X4), X5), X6) :- minimumcA(X3, X6). minimumcA(tree(X1, tree(X2, void, X3), X4), X2). minimumcA(tree(X1, tree(X2, X3, X4), X5), X6) :- minimumcA(X3, X6). Afs: minimumA(x1, x2) = minimumA(x2) ---------------------------------------- (35) TriplesToPiDPProof (SOUND) We use the technique of [DT09]. With regard to the inferred argument filtering the predicates were used in the following modes: minimumA_in_2: (f,b) Transforming TRIPLES into the following Term Rewriting System: Pi DP problem: The TRS P consists of the following rules: MINIMUMA_IN_AG(tree(X1, tree(X2, X3, X4), X5), X6) -> U1_AG(X1, X2, X3, X4, X5, X6, minimumA_in_ag(X3, X6)) MINIMUMA_IN_AG(tree(X1, tree(X2, X3, X4), X5), X6) -> MINIMUMA_IN_AG(X3, X6) R is empty. The argument filtering Pi contains the following mapping: minimumA_in_ag(x1, x2) = minimumA_in_ag(x2) tree(x1, x2, x3) = tree(x2) MINIMUMA_IN_AG(x1, x2) = MINIMUMA_IN_AG(x2) U1_AG(x1, x2, x3, x4, x5, x6, x7) = U1_AG(x6, x7) We have to consider all (P,R,Pi)-chains Infinitary Constructor Rewriting Termination of PiDP implies Termination of TRIPLES ---------------------------------------- (36) Obligation: Pi DP problem: The TRS P consists of the following rules: MINIMUMA_IN_AG(tree(X1, tree(X2, X3, X4), X5), X6) -> U1_AG(X1, X2, X3, X4, X5, X6, minimumA_in_ag(X3, X6)) MINIMUMA_IN_AG(tree(X1, tree(X2, X3, X4), X5), X6) -> MINIMUMA_IN_AG(X3, X6) R is empty. The argument filtering Pi contains the following mapping: minimumA_in_ag(x1, x2) = minimumA_in_ag(x2) tree(x1, x2, x3) = tree(x2) MINIMUMA_IN_AG(x1, x2) = MINIMUMA_IN_AG(x2) U1_AG(x1, x2, x3, x4, x5, x6, x7) = U1_AG(x6, x7) We have to consider all (P,R,Pi)-chains ---------------------------------------- (37) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 1 less node. ---------------------------------------- (38) Obligation: Pi DP problem: The TRS P consists of the following rules: MINIMUMA_IN_AG(tree(X1, tree(X2, X3, X4), X5), X6) -> MINIMUMA_IN_AG(X3, X6) R is empty. The argument filtering Pi contains the following mapping: tree(x1, x2, x3) = tree(x2) MINIMUMA_IN_AG(x1, x2) = MINIMUMA_IN_AG(x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (39) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (40) Obligation: Q DP problem: The TRS P consists of the following rules: MINIMUMA_IN_AG(X6) -> MINIMUMA_IN_AG(X6) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (41) PrologToIRSwTTransformerProof (SOUND) Transformed Prolog program to IRSwT according to method in Master Thesis of A. Weinert { "root": 1, "program": { "directives": [], "clauses": [ [ "(minimum (tree X (void) X1) X)", null ], [ "(minimum (tree X2 Left X3) X)", "(minimum Left X)" ] ] }, "graph": { "nodes": { "1": { "goal": [{ "clause": -1, "scope": -1, "term": "(minimum T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "56": { "goal": [{ "clause": 0, "scope": 1, "term": "(minimum T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "57": { "goal": [{ "clause": 1, "scope": 1, "term": "(minimum T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "3": { "goal": [ { "clause": 0, "scope": 1, "term": "(minimum T1 T2)" }, { "clause": 1, "scope": 1, "term": "(minimum T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "58": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "59": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "91": { "goal": [{ "clause": -1, "scope": -1, "term": "(minimum T25 T24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T24"], "free": [], "exprvars": [] } }, "92": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "60": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes" }, "edges": [ { "from": 1, "to": 3, "label": "CASE" }, { "from": 3, "to": 56, "label": "PARALLEL" }, { "from": 3, "to": 57, "label": "PARALLEL" }, { "from": 56, "to": 58, "label": "EVAL with clause\nminimum(tree(X12, void, X13), X12).\nand substitutionX12 -> T11,\nX13 -> T12,\nT1 -> tree(T11, void, T12),\nT2 -> T11" }, { "from": 56, "to": 59, "label": "EVAL-BACKTRACK" }, { "from": 57, "to": 91, "label": "EVAL with clause\nminimum(tree(X22, X23, X24), X25) :- minimum(X23, X25).\nand substitutionX22 -> T21,\nX23 -> T25,\nX24 -> T23,\nT1 -> tree(T21, T25, T23),\nT2 -> T24,\nX25 -> T24,\nT22 -> T25" }, { "from": 57, "to": 92, "label": "EVAL-BACKTRACK" }, { "from": 58, "to": 60, "label": "SUCCESS" }, { "from": 91, "to": 1, "label": "INSTANCE with matching:\nT1 -> T25\nT2 -> T24" } ], "type": "Graph" } } ---------------------------------------- (42) Obligation: Rules: f1_in(T2) -> f3_in(T2) :|: TRUE f3_out(x) -> f1_out(x) :|: TRUE f91_in(T24) -> f1_in(T24) :|: TRUE f1_out(x1) -> f91_out(x1) :|: TRUE f91_out(x2) -> f57_out(x2) :|: TRUE f57_in(x3) -> f92_in :|: TRUE f92_out -> f57_out(x4) :|: TRUE f57_in(x5) -> f91_in(x5) :|: TRUE f3_in(x6) -> f57_in(x6) :|: TRUE f3_in(x7) -> f56_in(x7) :|: TRUE f56_out(x8) -> f3_out(x8) :|: TRUE f57_out(x9) -> f3_out(x9) :|: TRUE Start term: f1_in(T2) ---------------------------------------- (43) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f1_in(T2) -> f3_in(T2) :|: TRUE f91_in(T24) -> f1_in(T24) :|: TRUE f57_in(x5) -> f91_in(x5) :|: TRUE f3_in(x6) -> f57_in(x6) :|: TRUE ---------------------------------------- (44) Obligation: Rules: f1_in(T2) -> f3_in(T2) :|: TRUE f91_in(T24) -> f1_in(T24) :|: TRUE f57_in(x5) -> f91_in(x5) :|: TRUE f3_in(x6) -> f57_in(x6) :|: TRUE ---------------------------------------- (45) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (46) Obligation: Rules: f57_in(x5:0) -> f57_in(x5:0) :|: TRUE ---------------------------------------- (47) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (48) Obligation: Rules: f57_in(x5:0) -> f57_in(x5:0) :|: TRUE ---------------------------------------- (49) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f57_in(x5:0) -> f57_in(x5:0) :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (50) Obligation: Termination digraph: Nodes: (1) f57_in(x5:0) -> f57_in(x5:0) :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (51) FilterProof (EQUIVALENT) Used the following sort dictionary for filtering: f57_in(VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (52) Obligation: Rules: f57_in(x5:0) -> f57_in(x5:0) :|: TRUE ---------------------------------------- (53) IntTRSPeriodicNontermProof (COMPLETE) Normalized system to the following form: f(pc, x5:0) -> f(1, x5:0) :|: pc = 1 && TRUE Witness term starting non-terminating reduction: f(1, -8) ---------------------------------------- (54) NO