6.72/2.59 MAYBE 6.72/2.63 proof of /export/starexec/sandbox/benchmark/theBenchmark.pl 6.72/2.63 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 6.72/2.63 6.72/2.63 6.72/2.63 Left Termination of the query pattern 6.72/2.63 6.72/2.63 flat(a,g) 6.72/2.63 6.72/2.63 w.r.t. the given Prolog program could not be shown: 6.72/2.63 6.72/2.63 (0) Prolog 6.72/2.63 (1) PrologToPiTRSProof [SOUND, 0 ms] 6.72/2.63 (2) PiTRS 6.72/2.63 (3) DependencyPairsProof [EQUIVALENT, 0 ms] 6.72/2.63 (4) PiDP 6.72/2.63 (5) DependencyGraphProof [EQUIVALENT, 0 ms] 6.72/2.63 (6) PiDP 6.72/2.63 (7) UsableRulesProof [EQUIVALENT, 0 ms] 6.72/2.63 (8) PiDP 6.72/2.63 (9) PiDPToQDPProof [SOUND, 0 ms] 6.72/2.63 (10) QDP 6.72/2.63 (11) UsableRulesReductionPairsProof [EQUIVALENT, 7 ms] 6.72/2.63 (12) QDP 6.72/2.63 (13) DependencyGraphProof [EQUIVALENT, 0 ms] 6.72/2.63 (14) QDP 6.72/2.63 (15) UsableRulesProof [EQUIVALENT, 0 ms] 6.72/2.63 (16) QDP 6.72/2.63 (17) QReductionProof [EQUIVALENT, 0 ms] 6.72/2.63 (18) QDP 6.72/2.63 (19) NonTerminationLoopProof [COMPLETE, 0 ms] 6.72/2.63 (20) NO 6.72/2.63 (21) PrologToPiTRSProof [SOUND, 0 ms] 6.72/2.63 (22) PiTRS 6.72/2.63 (23) DependencyPairsProof [EQUIVALENT, 0 ms] 6.72/2.63 (24) PiDP 6.72/2.63 (25) DependencyGraphProof [EQUIVALENT, 0 ms] 6.72/2.63 (26) PiDP 6.72/2.63 (27) UsableRulesProof [EQUIVALENT, 0 ms] 6.72/2.63 (28) PiDP 6.72/2.63 (29) PiDPToQDPProof [SOUND, 0 ms] 6.72/2.63 (30) QDP 6.72/2.63 (31) UsableRulesReductionPairsProof [EQUIVALENT, 8 ms] 6.72/2.63 (32) QDP 6.72/2.63 (33) DependencyGraphProof [EQUIVALENT, 0 ms] 6.72/2.63 (34) QDP 6.72/2.63 (35) UsableRulesProof [EQUIVALENT, 0 ms] 6.72/2.63 (36) QDP 6.72/2.63 (37) QReductionProof [EQUIVALENT, 0 ms] 6.72/2.63 (38) QDP 6.72/2.63 (39) NonTerminationLoopProof [COMPLETE, 0 ms] 6.72/2.63 (40) NO 6.72/2.63 (41) PrologToTRSTransformerProof [SOUND, 0 ms] 6.72/2.63 (42) QTRS 6.72/2.63 (43) DependencyPairsProof [EQUIVALENT, 0 ms] 6.72/2.63 (44) QDP 6.72/2.63 (45) DependencyGraphProof [EQUIVALENT, 0 ms] 6.72/2.63 (46) QDP 6.72/2.63 (47) UsableRulesProof [EQUIVALENT, 0 ms] 6.72/2.63 (48) QDP 6.72/2.63 (49) UsableRulesReductionPairsProof [EQUIVALENT, 0 ms] 6.72/2.63 (50) QDP 6.72/2.63 (51) NonTerminationLoopProof [COMPLETE, 0 ms] 6.72/2.63 (52) NO 6.72/2.63 (53) PrologToIRSwTTransformerProof [SOUND, 0 ms] 6.72/2.63 (54) IRSwT 6.72/2.63 (55) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] 6.72/2.63 (56) IRSwT 6.72/2.63 (57) IntTRSCompressionProof [EQUIVALENT, 39 ms] 6.72/2.63 (58) IRSwT 6.72/2.63 (59) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 6.72/2.63 (60) IRSwT 6.72/2.63 (61) IRSwTTerminationDigraphProof [EQUIVALENT, 8 ms] 6.72/2.63 (62) IRSwT 6.72/2.63 (63) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 34 ms] 6.72/2.63 (64) IRSwT 6.72/2.63 (65) PrologToDTProblemTransformerProof [SOUND, 0 ms] 6.72/2.63 (66) TRIPLES 6.72/2.63 (67) TriplesToPiDPProof [SOUND, 0 ms] 6.72/2.63 (68) PiDP 6.72/2.63 (69) DependencyGraphProof [EQUIVALENT, 0 ms] 6.72/2.63 (70) PiDP 6.72/2.63 (71) PiDPToQDPProof [SOUND, 0 ms] 6.72/2.63 (72) QDP 6.72/2.63 (73) MRRProof [EQUIVALENT, 0 ms] 6.72/2.63 (74) QDP 6.72/2.63 (75) NonTerminationLoopProof [COMPLETE, 0 ms] 6.72/2.63 (76) NO 6.72/2.63 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (0) 6.72/2.63 Obligation: 6.72/2.63 Clauses: 6.72/2.63 6.72/2.63 right(tree(X, XS1, XS2), XS2). 6.72/2.63 flat(niltree, nil). 6.72/2.63 flat(tree(X, niltree, XS), cons(X, YS)) :- ','(right(tree(X, niltree, XS), ZS), flat(ZS, YS)). 6.72/2.63 flat(tree(X, tree(Y, YS1, YS2), XS), ZS) :- flat(tree(Y, YS1, tree(X, YS2, XS)), ZS). 6.72/2.63 6.72/2.63 6.72/2.63 Query: flat(a,g) 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (1) PrologToPiTRSProof (SOUND) 6.72/2.63 We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: 6.72/2.63 6.72/2.63 flat_in_2: (f,b) 6.72/2.63 6.72/2.63 Transforming Prolog into the following Term Rewriting System: 6.72/2.63 6.72/2.63 Pi-finite rewrite system: 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 flat_in_ag(niltree, nil) -> flat_out_ag(niltree, nil) 6.72/2.63 flat_in_ag(tree(X, niltree, XS), cons(X, YS)) -> U1_ag(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 right_in_aa(tree(X, XS1, XS2), XS2) -> right_out_aa(tree(X, XS1, XS2), XS2) 6.72/2.63 U1_ag(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> U2_ag(X, XS, YS, flat_in_ag(ZS, YS)) 6.72/2.63 flat_in_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) -> U3_ag(X, Y, YS1, YS2, XS, ZS, flat_in_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) 6.72/2.63 U3_ag(X, Y, YS1, YS2, XS, ZS, flat_out_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) -> flat_out_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) 6.72/2.63 U2_ag(X, XS, YS, flat_out_ag(ZS, YS)) -> flat_out_ag(tree(X, niltree, XS), cons(X, YS)) 6.72/2.63 6.72/2.63 The argument filtering Pi contains the following mapping: 6.72/2.63 flat_in_ag(x1, x2) = flat_in_ag(x2) 6.72/2.63 6.72/2.63 nil = nil 6.72/2.63 6.72/2.63 flat_out_ag(x1, x2) = flat_out_ag 6.72/2.63 6.72/2.63 cons(x1, x2) = cons(x1, x2) 6.72/2.63 6.72/2.63 U1_ag(x1, x2, x3, x4) = U1_ag(x3, x4) 6.72/2.63 6.72/2.63 right_in_aa(x1, x2) = right_in_aa 6.72/2.63 6.72/2.63 right_out_aa(x1, x2) = right_out_aa 6.72/2.63 6.72/2.63 tree(x1, x2, x3) = tree(x2, x3) 6.72/2.63 6.72/2.63 U2_ag(x1, x2, x3, x4) = U2_ag(x4) 6.72/2.63 6.72/2.63 U3_ag(x1, x2, x3, x4, x5, x6, x7) = U3_ag(x7) 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (2) 6.72/2.63 Obligation: 6.72/2.63 Pi-finite rewrite system: 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 flat_in_ag(niltree, nil) -> flat_out_ag(niltree, nil) 6.72/2.63 flat_in_ag(tree(X, niltree, XS), cons(X, YS)) -> U1_ag(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 right_in_aa(tree(X, XS1, XS2), XS2) -> right_out_aa(tree(X, XS1, XS2), XS2) 6.72/2.63 U1_ag(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> U2_ag(X, XS, YS, flat_in_ag(ZS, YS)) 6.72/2.63 flat_in_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) -> U3_ag(X, Y, YS1, YS2, XS, ZS, flat_in_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) 6.72/2.63 U3_ag(X, Y, YS1, YS2, XS, ZS, flat_out_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) -> flat_out_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) 6.72/2.63 U2_ag(X, XS, YS, flat_out_ag(ZS, YS)) -> flat_out_ag(tree(X, niltree, XS), cons(X, YS)) 6.72/2.63 6.72/2.63 The argument filtering Pi contains the following mapping: 6.72/2.63 flat_in_ag(x1, x2) = flat_in_ag(x2) 6.72/2.63 6.72/2.63 nil = nil 6.72/2.63 6.72/2.63 flat_out_ag(x1, x2) = flat_out_ag 6.72/2.63 6.72/2.63 cons(x1, x2) = cons(x1, x2) 6.72/2.63 6.72/2.63 U1_ag(x1, x2, x3, x4) = U1_ag(x3, x4) 6.72/2.63 6.72/2.63 right_in_aa(x1, x2) = right_in_aa 6.72/2.63 6.72/2.63 right_out_aa(x1, x2) = right_out_aa 6.72/2.63 6.72/2.63 tree(x1, x2, x3) = tree(x2, x3) 6.72/2.63 6.72/2.63 U2_ag(x1, x2, x3, x4) = U2_ag(x4) 6.72/2.63 6.72/2.63 U3_ag(x1, x2, x3, x4, x5, x6, x7) = U3_ag(x7) 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (3) DependencyPairsProof (EQUIVALENT) 6.72/2.63 Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem: 6.72/2.63 Pi DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 FLAT_IN_AG(tree(X, niltree, XS), cons(X, YS)) -> U1_AG(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 FLAT_IN_AG(tree(X, niltree, XS), cons(X, YS)) -> RIGHT_IN_AA(tree(X, niltree, XS), ZS) 6.72/2.63 U1_AG(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> U2_AG(X, XS, YS, flat_in_ag(ZS, YS)) 6.72/2.63 U1_AG(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> FLAT_IN_AG(ZS, YS) 6.72/2.63 FLAT_IN_AG(tree(X, tree(Y, YS1, YS2), XS), ZS) -> U3_AG(X, Y, YS1, YS2, XS, ZS, flat_in_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) 6.72/2.63 FLAT_IN_AG(tree(X, tree(Y, YS1, YS2), XS), ZS) -> FLAT_IN_AG(tree(Y, YS1, tree(X, YS2, XS)), ZS) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 flat_in_ag(niltree, nil) -> flat_out_ag(niltree, nil) 6.72/2.63 flat_in_ag(tree(X, niltree, XS), cons(X, YS)) -> U1_ag(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 right_in_aa(tree(X, XS1, XS2), XS2) -> right_out_aa(tree(X, XS1, XS2), XS2) 6.72/2.63 U1_ag(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> U2_ag(X, XS, YS, flat_in_ag(ZS, YS)) 6.72/2.63 flat_in_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) -> U3_ag(X, Y, YS1, YS2, XS, ZS, flat_in_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) 6.72/2.63 U3_ag(X, Y, YS1, YS2, XS, ZS, flat_out_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) -> flat_out_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) 6.72/2.63 U2_ag(X, XS, YS, flat_out_ag(ZS, YS)) -> flat_out_ag(tree(X, niltree, XS), cons(X, YS)) 6.72/2.63 6.72/2.63 The argument filtering Pi contains the following mapping: 6.72/2.63 flat_in_ag(x1, x2) = flat_in_ag(x2) 6.72/2.63 6.72/2.63 nil = nil 6.72/2.63 6.72/2.63 flat_out_ag(x1, x2) = flat_out_ag 6.72/2.63 6.72/2.63 cons(x1, x2) = cons(x1, x2) 6.72/2.63 6.72/2.63 U1_ag(x1, x2, x3, x4) = U1_ag(x3, x4) 6.72/2.63 6.72/2.63 right_in_aa(x1, x2) = right_in_aa 6.72/2.63 6.72/2.63 right_out_aa(x1, x2) = right_out_aa 6.72/2.63 6.72/2.63 tree(x1, x2, x3) = tree(x2, x3) 6.72/2.63 6.72/2.63 U2_ag(x1, x2, x3, x4) = U2_ag(x4) 6.72/2.63 6.72/2.63 U3_ag(x1, x2, x3, x4, x5, x6, x7) = U3_ag(x7) 6.72/2.63 6.72/2.63 FLAT_IN_AG(x1, x2) = FLAT_IN_AG(x2) 6.72/2.63 6.72/2.63 U1_AG(x1, x2, x3, x4) = U1_AG(x3, x4) 6.72/2.63 6.72/2.63 RIGHT_IN_AA(x1, x2) = RIGHT_IN_AA 6.72/2.63 6.72/2.63 U2_AG(x1, x2, x3, x4) = U2_AG(x4) 6.72/2.63 6.72/2.63 U3_AG(x1, x2, x3, x4, x5, x6, x7) = U3_AG(x7) 6.72/2.63 6.72/2.63 6.72/2.63 We have to consider all (P,R,Pi)-chains 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (4) 6.72/2.63 Obligation: 6.72/2.63 Pi DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 FLAT_IN_AG(tree(X, niltree, XS), cons(X, YS)) -> U1_AG(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 FLAT_IN_AG(tree(X, niltree, XS), cons(X, YS)) -> RIGHT_IN_AA(tree(X, niltree, XS), ZS) 6.72/2.63 U1_AG(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> U2_AG(X, XS, YS, flat_in_ag(ZS, YS)) 6.72/2.63 U1_AG(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> FLAT_IN_AG(ZS, YS) 6.72/2.63 FLAT_IN_AG(tree(X, tree(Y, YS1, YS2), XS), ZS) -> U3_AG(X, Y, YS1, YS2, XS, ZS, flat_in_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) 6.72/2.63 FLAT_IN_AG(tree(X, tree(Y, YS1, YS2), XS), ZS) -> FLAT_IN_AG(tree(Y, YS1, tree(X, YS2, XS)), ZS) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 flat_in_ag(niltree, nil) -> flat_out_ag(niltree, nil) 6.72/2.63 flat_in_ag(tree(X, niltree, XS), cons(X, YS)) -> U1_ag(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 right_in_aa(tree(X, XS1, XS2), XS2) -> right_out_aa(tree(X, XS1, XS2), XS2) 6.72/2.63 U1_ag(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> U2_ag(X, XS, YS, flat_in_ag(ZS, YS)) 6.72/2.63 flat_in_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) -> U3_ag(X, Y, YS1, YS2, XS, ZS, flat_in_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) 6.72/2.63 U3_ag(X, Y, YS1, YS2, XS, ZS, flat_out_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) -> flat_out_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) 6.72/2.63 U2_ag(X, XS, YS, flat_out_ag(ZS, YS)) -> flat_out_ag(tree(X, niltree, XS), cons(X, YS)) 6.72/2.63 6.72/2.63 The argument filtering Pi contains the following mapping: 6.72/2.63 flat_in_ag(x1, x2) = flat_in_ag(x2) 6.72/2.63 6.72/2.63 nil = nil 6.72/2.63 6.72/2.63 flat_out_ag(x1, x2) = flat_out_ag 6.72/2.63 6.72/2.63 cons(x1, x2) = cons(x1, x2) 6.72/2.63 6.72/2.63 U1_ag(x1, x2, x3, x4) = U1_ag(x3, x4) 6.72/2.63 6.72/2.63 right_in_aa(x1, x2) = right_in_aa 6.72/2.63 6.72/2.63 right_out_aa(x1, x2) = right_out_aa 6.72/2.63 6.72/2.63 tree(x1, x2, x3) = tree(x2, x3) 6.72/2.63 6.72/2.63 U2_ag(x1, x2, x3, x4) = U2_ag(x4) 6.72/2.63 6.72/2.63 U3_ag(x1, x2, x3, x4, x5, x6, x7) = U3_ag(x7) 6.72/2.63 6.72/2.63 FLAT_IN_AG(x1, x2) = FLAT_IN_AG(x2) 6.72/2.63 6.72/2.63 U1_AG(x1, x2, x3, x4) = U1_AG(x3, x4) 6.72/2.63 6.72/2.63 RIGHT_IN_AA(x1, x2) = RIGHT_IN_AA 6.72/2.63 6.72/2.63 U2_AG(x1, x2, x3, x4) = U2_AG(x4) 6.72/2.63 6.72/2.63 U3_AG(x1, x2, x3, x4, x5, x6, x7) = U3_AG(x7) 6.72/2.63 6.72/2.63 6.72/2.63 We have to consider all (P,R,Pi)-chains 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (5) DependencyGraphProof (EQUIVALENT) 6.72/2.63 The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 3 less nodes. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (6) 6.72/2.63 Obligation: 6.72/2.63 Pi DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 U1_AG(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> FLAT_IN_AG(ZS, YS) 6.72/2.63 FLAT_IN_AG(tree(X, niltree, XS), cons(X, YS)) -> U1_AG(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 FLAT_IN_AG(tree(X, tree(Y, YS1, YS2), XS), ZS) -> FLAT_IN_AG(tree(Y, YS1, tree(X, YS2, XS)), ZS) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 flat_in_ag(niltree, nil) -> flat_out_ag(niltree, nil) 6.72/2.63 flat_in_ag(tree(X, niltree, XS), cons(X, YS)) -> U1_ag(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 right_in_aa(tree(X, XS1, XS2), XS2) -> right_out_aa(tree(X, XS1, XS2), XS2) 6.72/2.63 U1_ag(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> U2_ag(X, XS, YS, flat_in_ag(ZS, YS)) 6.72/2.63 flat_in_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) -> U3_ag(X, Y, YS1, YS2, XS, ZS, flat_in_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) 6.72/2.63 U3_ag(X, Y, YS1, YS2, XS, ZS, flat_out_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) -> flat_out_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) 6.72/2.63 U2_ag(X, XS, YS, flat_out_ag(ZS, YS)) -> flat_out_ag(tree(X, niltree, XS), cons(X, YS)) 6.72/2.63 6.72/2.63 The argument filtering Pi contains the following mapping: 6.72/2.63 flat_in_ag(x1, x2) = flat_in_ag(x2) 6.72/2.63 6.72/2.63 nil = nil 6.72/2.63 6.72/2.63 flat_out_ag(x1, x2) = flat_out_ag 6.72/2.63 6.72/2.63 cons(x1, x2) = cons(x1, x2) 6.72/2.63 6.72/2.63 U1_ag(x1, x2, x3, x4) = U1_ag(x3, x4) 6.72/2.63 6.72/2.63 right_in_aa(x1, x2) = right_in_aa 6.72/2.63 6.72/2.63 right_out_aa(x1, x2) = right_out_aa 6.72/2.63 6.72/2.63 tree(x1, x2, x3) = tree(x2, x3) 6.72/2.63 6.72/2.63 U2_ag(x1, x2, x3, x4) = U2_ag(x4) 6.72/2.63 6.72/2.63 U3_ag(x1, x2, x3, x4, x5, x6, x7) = U3_ag(x7) 6.72/2.63 6.72/2.63 FLAT_IN_AG(x1, x2) = FLAT_IN_AG(x2) 6.72/2.63 6.72/2.63 U1_AG(x1, x2, x3, x4) = U1_AG(x3, x4) 6.72/2.63 6.72/2.63 6.72/2.63 We have to consider all (P,R,Pi)-chains 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (7) UsableRulesProof (EQUIVALENT) 6.72/2.63 For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (8) 6.72/2.63 Obligation: 6.72/2.63 Pi DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 U1_AG(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> FLAT_IN_AG(ZS, YS) 6.72/2.63 FLAT_IN_AG(tree(X, niltree, XS), cons(X, YS)) -> U1_AG(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 FLAT_IN_AG(tree(X, tree(Y, YS1, YS2), XS), ZS) -> FLAT_IN_AG(tree(Y, YS1, tree(X, YS2, XS)), ZS) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 right_in_aa(tree(X, XS1, XS2), XS2) -> right_out_aa(tree(X, XS1, XS2), XS2) 6.72/2.63 6.72/2.63 The argument filtering Pi contains the following mapping: 6.72/2.63 cons(x1, x2) = cons(x1, x2) 6.72/2.63 6.72/2.63 right_in_aa(x1, x2) = right_in_aa 6.72/2.63 6.72/2.63 right_out_aa(x1, x2) = right_out_aa 6.72/2.63 6.72/2.63 tree(x1, x2, x3) = tree(x2, x3) 6.72/2.63 6.72/2.63 FLAT_IN_AG(x1, x2) = FLAT_IN_AG(x2) 6.72/2.63 6.72/2.63 U1_AG(x1, x2, x3, x4) = U1_AG(x3, x4) 6.72/2.63 6.72/2.63 6.72/2.63 We have to consider all (P,R,Pi)-chains 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (9) PiDPToQDPProof (SOUND) 6.72/2.63 Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (10) 6.72/2.63 Obligation: 6.72/2.63 Q DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 U1_AG(YS, right_out_aa) -> FLAT_IN_AG(YS) 6.72/2.63 FLAT_IN_AG(cons(X, YS)) -> U1_AG(YS, right_in_aa) 6.72/2.63 FLAT_IN_AG(ZS) -> FLAT_IN_AG(ZS) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 right_in_aa -> right_out_aa 6.72/2.63 6.72/2.63 The set Q consists of the following terms: 6.72/2.63 6.72/2.63 right_in_aa 6.72/2.63 6.72/2.63 We have to consider all (P,Q,R)-chains. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (11) UsableRulesReductionPairsProof (EQUIVALENT) 6.72/2.63 By using the usable rules with reduction pair processor [LPAR04] with a polynomial ordering [POLO], all dependency pairs and the corresponding usable rules [FROCOS05] can be oriented non-strictly. All non-usable rules are removed, and those dependency pairs and usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. 6.72/2.63 6.72/2.63 The following dependency pairs can be deleted: 6.72/2.63 6.72/2.63 FLAT_IN_AG(cons(X, YS)) -> U1_AG(YS, right_in_aa) 6.72/2.63 No rules are removed from R. 6.72/2.63 6.72/2.63 Used ordering: POLO with Polynomial interpretation [POLO]: 6.72/2.63 6.72/2.63 POL(FLAT_IN_AG(x_1)) = x_1 6.72/2.63 POL(U1_AG(x_1, x_2)) = x_1 + x_2 6.72/2.63 POL(cons(x_1, x_2)) = x_1 + 2*x_2 6.72/2.63 POL(right_in_aa) = 0 6.72/2.63 POL(right_out_aa) = 0 6.72/2.63 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (12) 6.72/2.63 Obligation: 6.72/2.63 Q DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 U1_AG(YS, right_out_aa) -> FLAT_IN_AG(YS) 6.72/2.63 FLAT_IN_AG(ZS) -> FLAT_IN_AG(ZS) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 right_in_aa -> right_out_aa 6.72/2.63 6.72/2.63 The set Q consists of the following terms: 6.72/2.63 6.72/2.63 right_in_aa 6.72/2.63 6.72/2.63 We have to consider all (P,Q,R)-chains. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (13) DependencyGraphProof (EQUIVALENT) 6.72/2.63 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (14) 6.72/2.63 Obligation: 6.72/2.63 Q DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 FLAT_IN_AG(ZS) -> FLAT_IN_AG(ZS) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 right_in_aa -> right_out_aa 6.72/2.63 6.72/2.63 The set Q consists of the following terms: 6.72/2.63 6.72/2.63 right_in_aa 6.72/2.63 6.72/2.63 We have to consider all (P,Q,R)-chains. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (15) UsableRulesProof (EQUIVALENT) 6.72/2.63 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. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (16) 6.72/2.63 Obligation: 6.72/2.63 Q DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 FLAT_IN_AG(ZS) -> FLAT_IN_AG(ZS) 6.72/2.63 6.72/2.63 R is empty. 6.72/2.63 The set Q consists of the following terms: 6.72/2.63 6.72/2.63 right_in_aa 6.72/2.63 6.72/2.63 We have to consider all (P,Q,R)-chains. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (17) QReductionProof (EQUIVALENT) 6.72/2.63 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 6.72/2.63 6.72/2.63 right_in_aa 6.72/2.63 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (18) 6.72/2.63 Obligation: 6.72/2.63 Q DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 FLAT_IN_AG(ZS) -> FLAT_IN_AG(ZS) 6.72/2.63 6.72/2.63 R is empty. 6.72/2.63 Q is empty. 6.72/2.63 We have to consider all (P,Q,R)-chains. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (19) NonTerminationLoopProof (COMPLETE) 6.72/2.63 We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. 6.72/2.63 Found a loop by semiunifying a rule from P directly. 6.72/2.63 6.72/2.63 s = FLAT_IN_AG(ZS) evaluates to t =FLAT_IN_AG(ZS) 6.72/2.63 6.72/2.63 Thus s starts an infinite chain as s semiunifies with t with the following substitutions: 6.72/2.63 * Matcher: [ ] 6.72/2.63 * Semiunifier: [ ] 6.72/2.63 6.72/2.63 -------------------------------------------------------------------------------- 6.72/2.63 Rewriting sequence 6.72/2.63 6.72/2.63 The DP semiunifies directly so there is only one rewrite step from FLAT_IN_AG(ZS) to FLAT_IN_AG(ZS). 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (20) 6.72/2.63 NO 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (21) PrologToPiTRSProof (SOUND) 6.72/2.63 We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: 6.72/2.63 6.72/2.63 flat_in_2: (f,b) 6.72/2.63 6.72/2.63 Transforming Prolog into the following Term Rewriting System: 6.72/2.63 6.72/2.63 Pi-finite rewrite system: 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 flat_in_ag(niltree, nil) -> flat_out_ag(niltree, nil) 6.72/2.63 flat_in_ag(tree(X, niltree, XS), cons(X, YS)) -> U1_ag(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 right_in_aa(tree(X, XS1, XS2), XS2) -> right_out_aa(tree(X, XS1, XS2), XS2) 6.72/2.63 U1_ag(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> U2_ag(X, XS, YS, flat_in_ag(ZS, YS)) 6.72/2.63 flat_in_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) -> U3_ag(X, Y, YS1, YS2, XS, ZS, flat_in_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) 6.72/2.63 U3_ag(X, Y, YS1, YS2, XS, ZS, flat_out_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) -> flat_out_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) 6.72/2.63 U2_ag(X, XS, YS, flat_out_ag(ZS, YS)) -> flat_out_ag(tree(X, niltree, XS), cons(X, YS)) 6.72/2.63 6.72/2.63 The argument filtering Pi contains the following mapping: 6.72/2.63 flat_in_ag(x1, x2) = flat_in_ag(x2) 6.72/2.63 6.72/2.63 nil = nil 6.72/2.63 6.72/2.63 flat_out_ag(x1, x2) = flat_out_ag(x2) 6.72/2.63 6.72/2.63 cons(x1, x2) = cons(x1, x2) 6.72/2.63 6.72/2.63 U1_ag(x1, x2, x3, x4) = U1_ag(x1, x3, x4) 6.72/2.63 6.72/2.63 right_in_aa(x1, x2) = right_in_aa 6.72/2.63 6.72/2.63 right_out_aa(x1, x2) = right_out_aa 6.72/2.63 6.72/2.63 tree(x1, x2, x3) = tree(x2, x3) 6.72/2.63 6.72/2.63 U2_ag(x1, x2, x3, x4) = U2_ag(x1, x3, x4) 6.72/2.63 6.72/2.63 U3_ag(x1, x2, x3, x4, x5, x6, x7) = U3_ag(x6, x7) 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (22) 6.72/2.63 Obligation: 6.72/2.63 Pi-finite rewrite system: 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 flat_in_ag(niltree, nil) -> flat_out_ag(niltree, nil) 6.72/2.63 flat_in_ag(tree(X, niltree, XS), cons(X, YS)) -> U1_ag(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 right_in_aa(tree(X, XS1, XS2), XS2) -> right_out_aa(tree(X, XS1, XS2), XS2) 6.72/2.63 U1_ag(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> U2_ag(X, XS, YS, flat_in_ag(ZS, YS)) 6.72/2.63 flat_in_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) -> U3_ag(X, Y, YS1, YS2, XS, ZS, flat_in_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) 6.72/2.63 U3_ag(X, Y, YS1, YS2, XS, ZS, flat_out_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) -> flat_out_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) 6.72/2.63 U2_ag(X, XS, YS, flat_out_ag(ZS, YS)) -> flat_out_ag(tree(X, niltree, XS), cons(X, YS)) 6.72/2.63 6.72/2.63 The argument filtering Pi contains the following mapping: 6.72/2.63 flat_in_ag(x1, x2) = flat_in_ag(x2) 6.72/2.63 6.72/2.63 nil = nil 6.72/2.63 6.72/2.63 flat_out_ag(x1, x2) = flat_out_ag(x2) 6.72/2.63 6.72/2.63 cons(x1, x2) = cons(x1, x2) 6.72/2.63 6.72/2.63 U1_ag(x1, x2, x3, x4) = U1_ag(x1, x3, x4) 6.72/2.63 6.72/2.63 right_in_aa(x1, x2) = right_in_aa 6.72/2.63 6.72/2.63 right_out_aa(x1, x2) = right_out_aa 6.72/2.63 6.72/2.63 tree(x1, x2, x3) = tree(x2, x3) 6.72/2.63 6.72/2.63 U2_ag(x1, x2, x3, x4) = U2_ag(x1, x3, x4) 6.72/2.63 6.72/2.63 U3_ag(x1, x2, x3, x4, x5, x6, x7) = U3_ag(x6, x7) 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (23) DependencyPairsProof (EQUIVALENT) 6.72/2.63 Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem: 6.72/2.63 Pi DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 FLAT_IN_AG(tree(X, niltree, XS), cons(X, YS)) -> U1_AG(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 FLAT_IN_AG(tree(X, niltree, XS), cons(X, YS)) -> RIGHT_IN_AA(tree(X, niltree, XS), ZS) 6.72/2.63 U1_AG(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> U2_AG(X, XS, YS, flat_in_ag(ZS, YS)) 6.72/2.63 U1_AG(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> FLAT_IN_AG(ZS, YS) 6.72/2.63 FLAT_IN_AG(tree(X, tree(Y, YS1, YS2), XS), ZS) -> U3_AG(X, Y, YS1, YS2, XS, ZS, flat_in_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) 6.72/2.63 FLAT_IN_AG(tree(X, tree(Y, YS1, YS2), XS), ZS) -> FLAT_IN_AG(tree(Y, YS1, tree(X, YS2, XS)), ZS) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 flat_in_ag(niltree, nil) -> flat_out_ag(niltree, nil) 6.72/2.63 flat_in_ag(tree(X, niltree, XS), cons(X, YS)) -> U1_ag(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 right_in_aa(tree(X, XS1, XS2), XS2) -> right_out_aa(tree(X, XS1, XS2), XS2) 6.72/2.63 U1_ag(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> U2_ag(X, XS, YS, flat_in_ag(ZS, YS)) 6.72/2.63 flat_in_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) -> U3_ag(X, Y, YS1, YS2, XS, ZS, flat_in_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) 6.72/2.63 U3_ag(X, Y, YS1, YS2, XS, ZS, flat_out_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) -> flat_out_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) 6.72/2.63 U2_ag(X, XS, YS, flat_out_ag(ZS, YS)) -> flat_out_ag(tree(X, niltree, XS), cons(X, YS)) 6.72/2.63 6.72/2.63 The argument filtering Pi contains the following mapping: 6.72/2.63 flat_in_ag(x1, x2) = flat_in_ag(x2) 6.72/2.63 6.72/2.63 nil = nil 6.72/2.63 6.72/2.63 flat_out_ag(x1, x2) = flat_out_ag(x2) 6.72/2.63 6.72/2.63 cons(x1, x2) = cons(x1, x2) 6.72/2.63 6.72/2.63 U1_ag(x1, x2, x3, x4) = U1_ag(x1, x3, x4) 6.72/2.63 6.72/2.63 right_in_aa(x1, x2) = right_in_aa 6.72/2.63 6.72/2.63 right_out_aa(x1, x2) = right_out_aa 6.72/2.63 6.72/2.63 tree(x1, x2, x3) = tree(x2, x3) 6.72/2.63 6.72/2.63 U2_ag(x1, x2, x3, x4) = U2_ag(x1, x3, x4) 6.72/2.63 6.72/2.63 U3_ag(x1, x2, x3, x4, x5, x6, x7) = U3_ag(x6, x7) 6.72/2.63 6.72/2.63 FLAT_IN_AG(x1, x2) = FLAT_IN_AG(x2) 6.72/2.63 6.72/2.63 U1_AG(x1, x2, x3, x4) = U1_AG(x1, x3, x4) 6.72/2.63 6.72/2.63 RIGHT_IN_AA(x1, x2) = RIGHT_IN_AA 6.72/2.63 6.72/2.63 U2_AG(x1, x2, x3, x4) = U2_AG(x1, x3, x4) 6.72/2.63 6.72/2.63 U3_AG(x1, x2, x3, x4, x5, x6, x7) = U3_AG(x6, x7) 6.72/2.63 6.72/2.63 6.72/2.63 We have to consider all (P,R,Pi)-chains 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (24) 6.72/2.63 Obligation: 6.72/2.63 Pi DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 FLAT_IN_AG(tree(X, niltree, XS), cons(X, YS)) -> U1_AG(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 FLAT_IN_AG(tree(X, niltree, XS), cons(X, YS)) -> RIGHT_IN_AA(tree(X, niltree, XS), ZS) 6.72/2.63 U1_AG(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> U2_AG(X, XS, YS, flat_in_ag(ZS, YS)) 6.72/2.63 U1_AG(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> FLAT_IN_AG(ZS, YS) 6.72/2.63 FLAT_IN_AG(tree(X, tree(Y, YS1, YS2), XS), ZS) -> U3_AG(X, Y, YS1, YS2, XS, ZS, flat_in_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) 6.72/2.63 FLAT_IN_AG(tree(X, tree(Y, YS1, YS2), XS), ZS) -> FLAT_IN_AG(tree(Y, YS1, tree(X, YS2, XS)), ZS) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 flat_in_ag(niltree, nil) -> flat_out_ag(niltree, nil) 6.72/2.63 flat_in_ag(tree(X, niltree, XS), cons(X, YS)) -> U1_ag(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 right_in_aa(tree(X, XS1, XS2), XS2) -> right_out_aa(tree(X, XS1, XS2), XS2) 6.72/2.63 U1_ag(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> U2_ag(X, XS, YS, flat_in_ag(ZS, YS)) 6.72/2.63 flat_in_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) -> U3_ag(X, Y, YS1, YS2, XS, ZS, flat_in_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) 6.72/2.63 U3_ag(X, Y, YS1, YS2, XS, ZS, flat_out_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) -> flat_out_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) 6.72/2.63 U2_ag(X, XS, YS, flat_out_ag(ZS, YS)) -> flat_out_ag(tree(X, niltree, XS), cons(X, YS)) 6.72/2.63 6.72/2.63 The argument filtering Pi contains the following mapping: 6.72/2.63 flat_in_ag(x1, x2) = flat_in_ag(x2) 6.72/2.63 6.72/2.63 nil = nil 6.72/2.63 6.72/2.63 flat_out_ag(x1, x2) = flat_out_ag(x2) 6.72/2.63 6.72/2.63 cons(x1, x2) = cons(x1, x2) 6.72/2.63 6.72/2.63 U1_ag(x1, x2, x3, x4) = U1_ag(x1, x3, x4) 6.72/2.63 6.72/2.63 right_in_aa(x1, x2) = right_in_aa 6.72/2.63 6.72/2.63 right_out_aa(x1, x2) = right_out_aa 6.72/2.63 6.72/2.63 tree(x1, x2, x3) = tree(x2, x3) 6.72/2.63 6.72/2.63 U2_ag(x1, x2, x3, x4) = U2_ag(x1, x3, x4) 6.72/2.63 6.72/2.63 U3_ag(x1, x2, x3, x4, x5, x6, x7) = U3_ag(x6, x7) 6.72/2.63 6.72/2.63 FLAT_IN_AG(x1, x2) = FLAT_IN_AG(x2) 6.72/2.63 6.72/2.63 U1_AG(x1, x2, x3, x4) = U1_AG(x1, x3, x4) 6.72/2.63 6.72/2.63 RIGHT_IN_AA(x1, x2) = RIGHT_IN_AA 6.72/2.63 6.72/2.63 U2_AG(x1, x2, x3, x4) = U2_AG(x1, x3, x4) 6.72/2.63 6.72/2.63 U3_AG(x1, x2, x3, x4, x5, x6, x7) = U3_AG(x6, x7) 6.72/2.63 6.72/2.63 6.72/2.63 We have to consider all (P,R,Pi)-chains 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (25) DependencyGraphProof (EQUIVALENT) 6.72/2.63 The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 3 less nodes. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (26) 6.72/2.63 Obligation: 6.72/2.63 Pi DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 U1_AG(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> FLAT_IN_AG(ZS, YS) 6.72/2.63 FLAT_IN_AG(tree(X, niltree, XS), cons(X, YS)) -> U1_AG(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 FLAT_IN_AG(tree(X, tree(Y, YS1, YS2), XS), ZS) -> FLAT_IN_AG(tree(Y, YS1, tree(X, YS2, XS)), ZS) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 flat_in_ag(niltree, nil) -> flat_out_ag(niltree, nil) 6.72/2.63 flat_in_ag(tree(X, niltree, XS), cons(X, YS)) -> U1_ag(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 right_in_aa(tree(X, XS1, XS2), XS2) -> right_out_aa(tree(X, XS1, XS2), XS2) 6.72/2.63 U1_ag(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> U2_ag(X, XS, YS, flat_in_ag(ZS, YS)) 6.72/2.63 flat_in_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) -> U3_ag(X, Y, YS1, YS2, XS, ZS, flat_in_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) 6.72/2.63 U3_ag(X, Y, YS1, YS2, XS, ZS, flat_out_ag(tree(Y, YS1, tree(X, YS2, XS)), ZS)) -> flat_out_ag(tree(X, tree(Y, YS1, YS2), XS), ZS) 6.72/2.63 U2_ag(X, XS, YS, flat_out_ag(ZS, YS)) -> flat_out_ag(tree(X, niltree, XS), cons(X, YS)) 6.72/2.63 6.72/2.63 The argument filtering Pi contains the following mapping: 6.72/2.63 flat_in_ag(x1, x2) = flat_in_ag(x2) 6.72/2.63 6.72/2.63 nil = nil 6.72/2.63 6.72/2.63 flat_out_ag(x1, x2) = flat_out_ag(x2) 6.72/2.63 6.72/2.63 cons(x1, x2) = cons(x1, x2) 6.72/2.63 6.72/2.63 U1_ag(x1, x2, x3, x4) = U1_ag(x1, x3, x4) 6.72/2.63 6.72/2.63 right_in_aa(x1, x2) = right_in_aa 6.72/2.63 6.72/2.63 right_out_aa(x1, x2) = right_out_aa 6.72/2.63 6.72/2.63 tree(x1, x2, x3) = tree(x2, x3) 6.72/2.63 6.72/2.63 U2_ag(x1, x2, x3, x4) = U2_ag(x1, x3, x4) 6.72/2.63 6.72/2.63 U3_ag(x1, x2, x3, x4, x5, x6, x7) = U3_ag(x6, x7) 6.72/2.63 6.72/2.63 FLAT_IN_AG(x1, x2) = FLAT_IN_AG(x2) 6.72/2.63 6.72/2.63 U1_AG(x1, x2, x3, x4) = U1_AG(x1, x3, x4) 6.72/2.63 6.72/2.63 6.72/2.63 We have to consider all (P,R,Pi)-chains 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (27) UsableRulesProof (EQUIVALENT) 6.72/2.63 For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (28) 6.72/2.63 Obligation: 6.72/2.63 Pi DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 U1_AG(X, XS, YS, right_out_aa(tree(X, niltree, XS), ZS)) -> FLAT_IN_AG(ZS, YS) 6.72/2.63 FLAT_IN_AG(tree(X, niltree, XS), cons(X, YS)) -> U1_AG(X, XS, YS, right_in_aa(tree(X, niltree, XS), ZS)) 6.72/2.63 FLAT_IN_AG(tree(X, tree(Y, YS1, YS2), XS), ZS) -> FLAT_IN_AG(tree(Y, YS1, tree(X, YS2, XS)), ZS) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 right_in_aa(tree(X, XS1, XS2), XS2) -> right_out_aa(tree(X, XS1, XS2), XS2) 6.72/2.63 6.72/2.63 The argument filtering Pi contains the following mapping: 6.72/2.63 cons(x1, x2) = cons(x1, x2) 6.72/2.63 6.72/2.63 right_in_aa(x1, x2) = right_in_aa 6.72/2.63 6.72/2.63 right_out_aa(x1, x2) = right_out_aa 6.72/2.63 6.72/2.63 tree(x1, x2, x3) = tree(x2, x3) 6.72/2.63 6.72/2.63 FLAT_IN_AG(x1, x2) = FLAT_IN_AG(x2) 6.72/2.63 6.72/2.63 U1_AG(x1, x2, x3, x4) = U1_AG(x1, x3, x4) 6.72/2.63 6.72/2.63 6.72/2.63 We have to consider all (P,R,Pi)-chains 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (29) PiDPToQDPProof (SOUND) 6.72/2.63 Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (30) 6.72/2.63 Obligation: 6.72/2.63 Q DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 U1_AG(X, YS, right_out_aa) -> FLAT_IN_AG(YS) 6.72/2.63 FLAT_IN_AG(cons(X, YS)) -> U1_AG(X, YS, right_in_aa) 6.72/2.63 FLAT_IN_AG(ZS) -> FLAT_IN_AG(ZS) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 right_in_aa -> right_out_aa 6.72/2.63 6.72/2.63 The set Q consists of the following terms: 6.72/2.63 6.72/2.63 right_in_aa 6.72/2.63 6.72/2.63 We have to consider all (P,Q,R)-chains. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (31) UsableRulesReductionPairsProof (EQUIVALENT) 6.72/2.63 By using the usable rules with reduction pair processor [LPAR04] with a polynomial ordering [POLO], all dependency pairs and the corresponding usable rules [FROCOS05] can be oriented non-strictly. All non-usable rules are removed, and those dependency pairs and usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. 6.72/2.63 6.72/2.63 The following dependency pairs can be deleted: 6.72/2.63 6.72/2.63 FLAT_IN_AG(cons(X, YS)) -> U1_AG(X, YS, right_in_aa) 6.72/2.63 No rules are removed from R. 6.72/2.63 6.72/2.63 Used ordering: POLO with Polynomial interpretation [POLO]: 6.72/2.63 6.72/2.63 POL(FLAT_IN_AG(x_1)) = x_1 6.72/2.63 POL(U1_AG(x_1, x_2, x_3)) = 2*x_1 + 2*x_2 + x_3 6.72/2.63 POL(cons(x_1, x_2)) = 2*x_1 + 2*x_2 6.72/2.63 POL(right_in_aa) = 0 6.72/2.63 POL(right_out_aa) = 0 6.72/2.63 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (32) 6.72/2.63 Obligation: 6.72/2.63 Q DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 U1_AG(X, YS, right_out_aa) -> FLAT_IN_AG(YS) 6.72/2.63 FLAT_IN_AG(ZS) -> FLAT_IN_AG(ZS) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 right_in_aa -> right_out_aa 6.72/2.63 6.72/2.63 The set Q consists of the following terms: 6.72/2.63 6.72/2.63 right_in_aa 6.72/2.63 6.72/2.63 We have to consider all (P,Q,R)-chains. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (33) DependencyGraphProof (EQUIVALENT) 6.72/2.63 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (34) 6.72/2.63 Obligation: 6.72/2.63 Q DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 FLAT_IN_AG(ZS) -> FLAT_IN_AG(ZS) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 right_in_aa -> right_out_aa 6.72/2.63 6.72/2.63 The set Q consists of the following terms: 6.72/2.63 6.72/2.63 right_in_aa 6.72/2.63 6.72/2.63 We have to consider all (P,Q,R)-chains. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (35) UsableRulesProof (EQUIVALENT) 6.72/2.63 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. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (36) 6.72/2.63 Obligation: 6.72/2.63 Q DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 FLAT_IN_AG(ZS) -> FLAT_IN_AG(ZS) 6.72/2.63 6.72/2.63 R is empty. 6.72/2.63 The set Q consists of the following terms: 6.72/2.63 6.72/2.63 right_in_aa 6.72/2.63 6.72/2.63 We have to consider all (P,Q,R)-chains. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (37) QReductionProof (EQUIVALENT) 6.72/2.63 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 6.72/2.63 6.72/2.63 right_in_aa 6.72/2.63 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (38) 6.72/2.63 Obligation: 6.72/2.63 Q DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 FLAT_IN_AG(ZS) -> FLAT_IN_AG(ZS) 6.72/2.63 6.72/2.63 R is empty. 6.72/2.63 Q is empty. 6.72/2.63 We have to consider all (P,Q,R)-chains. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (39) NonTerminationLoopProof (COMPLETE) 6.72/2.63 We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. 6.72/2.63 Found a loop by semiunifying a rule from P directly. 6.72/2.63 6.72/2.63 s = FLAT_IN_AG(ZS) evaluates to t =FLAT_IN_AG(ZS) 6.72/2.63 6.72/2.63 Thus s starts an infinite chain as s semiunifies with t with the following substitutions: 6.72/2.63 * Matcher: [ ] 6.72/2.63 * Semiunifier: [ ] 6.72/2.63 6.72/2.63 -------------------------------------------------------------------------------- 6.72/2.63 Rewriting sequence 6.72/2.63 6.72/2.63 The DP semiunifies directly so there is only one rewrite step from FLAT_IN_AG(ZS) to FLAT_IN_AG(ZS). 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (40) 6.72/2.63 NO 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (41) PrologToTRSTransformerProof (SOUND) 6.72/2.63 Transformed Prolog program to TRS. 6.72/2.63 6.72/2.63 { 6.72/2.63 "root": 96, 6.72/2.63 "program": { 6.72/2.63 "directives": [], 6.72/2.63 "clauses": [ 6.72/2.63 [ 6.72/2.63 "(right (tree X XS1 XS2) XS2)", 6.72/2.63 null 6.72/2.63 ], 6.72/2.63 [ 6.72/2.63 "(flat (niltree) (nil))", 6.72/2.63 null 6.72/2.63 ], 6.72/2.63 [ 6.72/2.63 "(flat (tree X (niltree) XS) (cons X YS))", 6.72/2.63 "(',' (right (tree X (niltree) XS) ZS) (flat ZS YS))" 6.72/2.63 ], 6.72/2.63 [ 6.72/2.63 "(flat (tree X (tree Y YS1 YS2) XS) ZS)", 6.72/2.63 "(flat (tree Y YS1 (tree X YS2 XS)) ZS)" 6.72/2.63 ] 6.72/2.63 ] 6.72/2.63 }, 6.72/2.63 "graph": { 6.72/2.63 "nodes": { 6.72/2.63 "190": { 6.72/2.63 "goal": [{ 6.72/2.63 "clause": -1, 6.72/2.63 "scope": -1, 6.72/2.63 "term": "(flat (tree T45 T46 (tree T47 T48 T49)) T44)" 6.72/2.63 }], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": ["T44"], 6.72/2.63 "free": [], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "191": { 6.72/2.63 "goal": [], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": [], 6.72/2.63 "free": [], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "type": "Nodes", 6.72/2.63 "161": { 6.72/2.63 "goal": [{ 6.72/2.63 "clause": 2, 6.72/2.63 "scope": 1, 6.72/2.63 "term": "(flat T1 T2)" 6.72/2.63 }], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": ["T2"], 6.72/2.63 "free": [], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "162": { 6.72/2.63 "goal": [{ 6.72/2.63 "clause": 3, 6.72/2.63 "scope": 1, 6.72/2.63 "term": "(flat T1 T2)" 6.72/2.63 }], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": ["T2"], 6.72/2.63 "free": [], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "163": { 6.72/2.63 "goal": [{ 6.72/2.63 "clause": -1, 6.72/2.63 "scope": -1, 6.72/2.63 "term": "(',' (right (tree T15 (niltree) T18) X18) (flat X18 T17))" 6.72/2.63 }], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": [ 6.72/2.63 "T15", 6.72/2.63 "T17" 6.72/2.63 ], 6.72/2.63 "free": ["X18"], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "153": { 6.72/2.63 "goal": [{ 6.72/2.63 "clause": -1, 6.72/2.63 "scope": -1, 6.72/2.63 "term": "(true)" 6.72/2.63 }], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": [], 6.72/2.63 "free": [], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "164": { 6.72/2.63 "goal": [], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": [], 6.72/2.63 "free": [], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "175": { 6.72/2.63 "goal": [{ 6.72/2.63 "clause": -1, 6.72/2.63 "scope": -1, 6.72/2.63 "term": "(flat T26 T17)" 6.72/2.63 }], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": ["T17"], 6.72/2.63 "free": [], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "132": { 6.72/2.63 "goal": [{ 6.72/2.63 "clause": 1, 6.72/2.63 "scope": 1, 6.72/2.63 "term": "(flat T1 T2)" 6.72/2.63 }], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": ["T2"], 6.72/2.63 "free": [], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "154": { 6.72/2.63 "goal": [], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": [], 6.72/2.63 "free": [], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "156": { 6.72/2.63 "goal": [], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": [], 6.72/2.63 "free": [], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "167": { 6.72/2.63 "goal": [{ 6.72/2.63 "clause": 0, 6.72/2.63 "scope": 2, 6.72/2.63 "term": "(',' (right (tree T15 (niltree) T18) X18) (flat X18 T17))" 6.72/2.63 }], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": [ 6.72/2.63 "T15", 6.72/2.63 "T17" 6.72/2.63 ], 6.72/2.63 "free": ["X18"], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "137": { 6.72/2.63 "goal": [ 6.72/2.63 { 6.72/2.63 "clause": 2, 6.72/2.63 "scope": 1, 6.72/2.63 "term": "(flat T1 T2)" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "clause": 3, 6.72/2.63 "scope": 1, 6.72/2.63 "term": "(flat T1 T2)" 6.72/2.63 } 6.72/2.63 ], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": ["T2"], 6.72/2.63 "free": [], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "116": { 6.72/2.63 "goal": [ 6.72/2.63 { 6.72/2.63 "clause": 1, 6.72/2.63 "scope": 1, 6.72/2.63 "term": "(flat T1 T2)" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "clause": 2, 6.72/2.63 "scope": 1, 6.72/2.63 "term": "(flat T1 T2)" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "clause": 3, 6.72/2.63 "scope": 1, 6.72/2.63 "term": "(flat T1 T2)" 6.72/2.63 } 6.72/2.63 ], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": ["T2"], 6.72/2.63 "free": [], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "96": { 6.72/2.63 "goal": [{ 6.72/2.63 "clause": -1, 6.72/2.63 "scope": -1, 6.72/2.63 "term": "(flat T1 T2)" 6.72/2.63 }], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": ["T2"], 6.72/2.63 "free": [], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "edges": [ 6.72/2.63 { 6.72/2.63 "from": 96, 6.72/2.63 "to": 116, 6.72/2.63 "label": "CASE" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "from": 116, 6.72/2.63 "to": 132, 6.72/2.63 "label": "PARALLEL" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "from": 116, 6.72/2.63 "to": 137, 6.72/2.63 "label": "PARALLEL" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "from": 132, 6.72/2.63 "to": 153, 6.72/2.63 "label": "EVAL with clause\nflat(niltree, nil).\nand substitutionT1 -> niltree,\nT2 -> nil" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "from": 132, 6.72/2.63 "to": 154, 6.72/2.63 "label": "EVAL-BACKTRACK" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "from": 137, 6.72/2.63 "to": 161, 6.72/2.63 "label": "PARALLEL" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "from": 137, 6.72/2.63 "to": 162, 6.72/2.63 "label": "PARALLEL" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "from": 153, 6.72/2.63 "to": 156, 6.72/2.63 "label": "SUCCESS" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "from": 161, 6.72/2.63 "to": 163, 6.72/2.63 "label": "EVAL with clause\nflat(tree(X15, niltree, X16), cons(X15, X17)) :- ','(right(tree(X15, niltree, X16), X18), flat(X18, X17)).\nand substitutionX15 -> T15,\nX16 -> T18,\nT1 -> tree(T15, niltree, T18),\nX17 -> T17,\nT2 -> cons(T15, T17),\nT16 -> T18" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "from": 161, 6.72/2.63 "to": 164, 6.72/2.63 "label": "EVAL-BACKTRACK" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "from": 162, 6.72/2.63 "to": 190, 6.72/2.63 "label": "EVAL with clause\nflat(tree(X40, tree(X41, X42, X43), X44), X45) :- flat(tree(X41, X42, tree(X40, X43, X44)), X45).\nand substitutionX40 -> T47,\nX41 -> T45,\nX42 -> T46,\nX43 -> T48,\nX44 -> T49,\nT1 -> tree(T47, tree(T45, T46, T48), T49),\nT2 -> T44,\nX45 -> T44,\nT40 -> T45,\nT41 -> T46,\nT39 -> T47,\nT42 -> T48,\nT43 -> T49" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "from": 162, 6.72/2.63 "to": 191, 6.72/2.63 "label": "EVAL-BACKTRACK" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "from": 163, 6.72/2.63 "to": 167, 6.72/2.63 "label": "CASE" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "from": 167, 6.72/2.63 "to": 175, 6.72/2.63 "label": "ONLY EVAL with clause\nright(tree(X25, X26, X27), X27).\nand substitutionT15 -> T24,\nX25 -> T24,\nX26 -> niltree,\nT18 -> T26,\nX27 -> T26,\nX18 -> T26,\nT25 -> T26" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "from": 175, 6.72/2.63 "to": 96, 6.72/2.63 "label": "INSTANCE with matching:\nT1 -> T26\nT2 -> T17" 6.72/2.63 }, 6.72/2.63 { 6.72/2.63 "from": 190, 6.72/2.63 "to": 96, 6.72/2.63 "label": "INSTANCE with matching:\nT1 -> tree(T45, T46, tree(T47, T48, T49))\nT2 -> T44" 6.72/2.63 } 6.72/2.63 ], 6.72/2.63 "type": "Graph" 6.72/2.63 } 6.72/2.63 } 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (42) 6.72/2.63 Obligation: 6.72/2.63 Q restricted rewrite system: 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 f96_in(nil) -> f96_out1 6.72/2.63 f96_in(cons(T24, T17)) -> U1(f96_in(T17), cons(T24, T17)) 6.72/2.63 U1(f96_out1, cons(T24, T17)) -> f96_out1 6.72/2.63 f96_in(T44) -> U2(f96_in(T44), T44) 6.72/2.63 U2(f96_out1, T44) -> f96_out1 6.72/2.63 6.72/2.63 Q is empty. 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (43) DependencyPairsProof (EQUIVALENT) 6.72/2.63 Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (44) 6.72/2.63 Obligation: 6.72/2.63 Q DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 F96_IN(cons(T24, T17)) -> U1^1(f96_in(T17), cons(T24, T17)) 6.72/2.63 F96_IN(cons(T24, T17)) -> F96_IN(T17) 6.72/2.63 F96_IN(T44) -> U2^1(f96_in(T44), T44) 6.72/2.63 F96_IN(T44) -> F96_IN(T44) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 f96_in(nil) -> f96_out1 6.72/2.63 f96_in(cons(T24, T17)) -> U1(f96_in(T17), cons(T24, T17)) 6.72/2.63 U1(f96_out1, cons(T24, T17)) -> f96_out1 6.72/2.63 f96_in(T44) -> U2(f96_in(T44), T44) 6.72/2.63 U2(f96_out1, T44) -> f96_out1 6.72/2.63 6.72/2.63 Q is empty. 6.72/2.63 We have to consider all minimal (P,Q,R)-chains. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (45) DependencyGraphProof (EQUIVALENT) 6.72/2.63 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (46) 6.72/2.63 Obligation: 6.72/2.63 Q DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 F96_IN(T44) -> F96_IN(T44) 6.72/2.63 F96_IN(cons(T24, T17)) -> F96_IN(T17) 6.72/2.63 6.72/2.63 The TRS R consists of the following rules: 6.72/2.63 6.72/2.63 f96_in(nil) -> f96_out1 6.72/2.63 f96_in(cons(T24, T17)) -> U1(f96_in(T17), cons(T24, T17)) 6.72/2.63 U1(f96_out1, cons(T24, T17)) -> f96_out1 6.72/2.63 f96_in(T44) -> U2(f96_in(T44), T44) 6.72/2.63 U2(f96_out1, T44) -> f96_out1 6.72/2.63 6.72/2.63 Q is empty. 6.72/2.63 We have to consider all minimal (P,Q,R)-chains. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (47) UsableRulesProof (EQUIVALENT) 6.72/2.63 We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (48) 6.72/2.63 Obligation: 6.72/2.63 Q DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 F96_IN(T44) -> F96_IN(T44) 6.72/2.63 F96_IN(cons(T24, T17)) -> F96_IN(T17) 6.72/2.63 6.72/2.63 R is empty. 6.72/2.63 Q is empty. 6.72/2.63 We have to consider all minimal (P,Q,R)-chains. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (49) UsableRulesReductionPairsProof (EQUIVALENT) 6.72/2.63 By using the usable rules with reduction pair processor [LPAR04] with a polynomial ordering [POLO], all dependency pairs and the corresponding usable rules [FROCOS05] can be oriented non-strictly. All non-usable rules are removed, and those dependency pairs and usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. 6.72/2.63 6.72/2.63 The following dependency pairs can be deleted: 6.72/2.63 6.72/2.63 F96_IN(cons(T24, T17)) -> F96_IN(T17) 6.72/2.63 No rules are removed from R. 6.72/2.63 6.72/2.63 Used ordering: POLO with Polynomial interpretation [POLO]: 6.72/2.63 6.72/2.63 POL(F96_IN(x_1)) = 2*x_1 6.72/2.63 POL(cons(x_1, x_2)) = x_1 + x_2 6.72/2.63 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (50) 6.72/2.63 Obligation: 6.72/2.63 Q DP problem: 6.72/2.63 The TRS P consists of the following rules: 6.72/2.63 6.72/2.63 F96_IN(T44) -> F96_IN(T44) 6.72/2.63 6.72/2.63 R is empty. 6.72/2.63 Q is empty. 6.72/2.63 We have to consider all minimal (P,Q,R)-chains. 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (51) NonTerminationLoopProof (COMPLETE) 6.72/2.63 We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. 6.72/2.63 Found a loop by semiunifying a rule from P directly. 6.72/2.63 6.72/2.63 s = F96_IN(T44) evaluates to t =F96_IN(T44) 6.72/2.63 6.72/2.63 Thus s starts an infinite chain as s semiunifies with t with the following substitutions: 6.72/2.63 * Matcher: [ ] 6.72/2.63 * Semiunifier: [ ] 6.72/2.63 6.72/2.63 -------------------------------------------------------------------------------- 6.72/2.63 Rewriting sequence 6.72/2.63 6.72/2.63 The DP semiunifies directly so there is only one rewrite step from F96_IN(T44) to F96_IN(T44). 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (52) 6.72/2.63 NO 6.72/2.63 6.72/2.63 ---------------------------------------- 6.72/2.63 6.72/2.63 (53) PrologToIRSwTTransformerProof (SOUND) 6.72/2.63 Transformed Prolog program to IRSwT according to method in Master Thesis of A. Weinert 6.72/2.63 6.72/2.63 { 6.72/2.63 "root": 2, 6.72/2.63 "program": { 6.72/2.63 "directives": [], 6.72/2.63 "clauses": [ 6.72/2.63 [ 6.72/2.63 "(right (tree X XS1 XS2) XS2)", 6.72/2.63 null 6.72/2.63 ], 6.72/2.63 [ 6.72/2.63 "(flat (niltree) (nil))", 6.72/2.63 null 6.72/2.63 ], 6.72/2.63 [ 6.72/2.63 "(flat (tree X (niltree) XS) (cons X YS))", 6.72/2.63 "(',' (right (tree X (niltree) XS) ZS) (flat ZS YS))" 6.72/2.63 ], 6.72/2.63 [ 6.72/2.63 "(flat (tree X (tree Y YS1 YS2) XS) ZS)", 6.72/2.63 "(flat (tree Y YS1 (tree X YS2 XS)) ZS)" 6.72/2.63 ] 6.72/2.63 ] 6.72/2.63 }, 6.72/2.63 "graph": { 6.72/2.63 "nodes": { 6.72/2.63 "22": { 6.72/2.63 "goal": [{ 6.72/2.63 "clause": -1, 6.72/2.63 "scope": -1, 6.72/2.63 "term": "(true)" 6.72/2.63 }], 6.72/2.63 "kb": { 6.72/2.63 "nonunifying": [], 6.72/2.63 "intvars": {}, 6.72/2.63 "arithmetic": { 6.72/2.63 "type": "PlainIntegerRelationState", 6.72/2.63 "relations": [] 6.72/2.63 }, 6.72/2.63 "ground": [], 6.72/2.63 "free": [], 6.72/2.63 "exprvars": [] 6.72/2.63 } 6.72/2.63 }, 6.72/2.63 "12": { 6.72/2.63 "goal": [{ 6.72/2.63 "clause": 1, 6.72/2.63 "scope": 1, 6.72/2.63 "term": "(flat T1 T2)" 6.94/2.64 }], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": ["T2"], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "13": { 6.94/2.64 "goal": [ 6.94/2.64 { 6.94/2.64 "clause": 2, 6.94/2.64 "scope": 1, 6.94/2.64 "term": "(flat T1 T2)" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "clause": 3, 6.94/2.64 "scope": 1, 6.94/2.64 "term": "(flat T1 T2)" 6.94/2.64 } 6.94/2.64 ], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": ["T2"], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "180": { 6.94/2.64 "goal": [{ 6.94/2.64 "clause": 3, 6.94/2.64 "scope": 1, 6.94/2.64 "term": "(flat T1 T2)" 6.94/2.64 }], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": ["T2"], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "type": "Nodes", 6.94/2.64 "183": { 6.94/2.64 "goal": [{ 6.94/2.64 "clause": -1, 6.94/2.64 "scope": -1, 6.94/2.64 "term": "(',' (right (tree T15 (niltree) T18) X18) (flat X18 T17))" 6.94/2.64 }], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": [ 6.94/2.64 "T15", 6.94/2.64 "T17" 6.94/2.64 ], 6.94/2.64 "free": ["X18"], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "194": { 6.94/2.64 "goal": [{ 6.94/2.64 "clause": -1, 6.94/2.64 "scope": -1, 6.94/2.64 "term": "(flat (tree T45 T46 (tree T47 T48 T49)) T44)" 6.94/2.64 }], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": ["T44"], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "184": { 6.94/2.64 "goal": [], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": [], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "195": { 6.94/2.64 "goal": [], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": [], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "185": { 6.94/2.64 "goal": [{ 6.94/2.64 "clause": 0, 6.94/2.64 "scope": 2, 6.94/2.64 "term": "(',' (right (tree T15 (niltree) T18) X18) (flat X18 T17))" 6.94/2.64 }], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": [ 6.94/2.64 "T15", 6.94/2.64 "T17" 6.94/2.64 ], 6.94/2.64 "free": ["X18"], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "187": { 6.94/2.64 "goal": [{ 6.94/2.64 "clause": -1, 6.94/2.64 "scope": -1, 6.94/2.64 "term": "(flat T26 T17)" 6.94/2.64 }], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": ["T17"], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "177": { 6.94/2.64 "goal": [], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": [], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "2": { 6.94/2.64 "goal": [{ 6.94/2.64 "clause": -1, 6.94/2.64 "scope": -1, 6.94/2.64 "term": "(flat T1 T2)" 6.94/2.64 }], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": ["T2"], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "178": { 6.94/2.64 "goal": [], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": [], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "179": { 6.94/2.64 "goal": [{ 6.94/2.64 "clause": 2, 6.94/2.64 "scope": 1, 6.94/2.64 "term": "(flat T1 T2)" 6.94/2.64 }], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": ["T2"], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "6": { 6.94/2.64 "goal": [ 6.94/2.64 { 6.94/2.64 "clause": 1, 6.94/2.64 "scope": 1, 6.94/2.64 "term": "(flat T1 T2)" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "clause": 2, 6.94/2.64 "scope": 1, 6.94/2.64 "term": "(flat T1 T2)" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "clause": 3, 6.94/2.64 "scope": 1, 6.94/2.64 "term": "(flat T1 T2)" 6.94/2.64 } 6.94/2.64 ], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": ["T2"], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "edges": [ 6.94/2.64 { 6.94/2.64 "from": 2, 6.94/2.64 "to": 6, 6.94/2.64 "label": "CASE" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "from": 6, 6.94/2.64 "to": 12, 6.94/2.64 "label": "PARALLEL" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "from": 6, 6.94/2.64 "to": 13, 6.94/2.64 "label": "PARALLEL" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "from": 12, 6.94/2.64 "to": 22, 6.94/2.64 "label": "EVAL with clause\nflat(niltree, nil).\nand substitutionT1 -> niltree,\nT2 -> nil" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "from": 12, 6.94/2.64 "to": 177, 6.94/2.64 "label": "EVAL-BACKTRACK" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "from": 13, 6.94/2.64 "to": 179, 6.94/2.64 "label": "PARALLEL" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "from": 13, 6.94/2.64 "to": 180, 6.94/2.64 "label": "PARALLEL" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "from": 22, 6.94/2.64 "to": 178, 6.94/2.64 "label": "SUCCESS" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "from": 179, 6.94/2.64 "to": 183, 6.94/2.64 "label": "EVAL with clause\nflat(tree(X15, niltree, X16), cons(X15, X17)) :- ','(right(tree(X15, niltree, X16), X18), flat(X18, X17)).\nand substitutionX15 -> T15,\nX16 -> T18,\nT1 -> tree(T15, niltree, T18),\nX17 -> T17,\nT2 -> cons(T15, T17),\nT16 -> T18" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "from": 179, 6.94/2.64 "to": 184, 6.94/2.64 "label": "EVAL-BACKTRACK" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "from": 180, 6.94/2.64 "to": 194, 6.94/2.64 "label": "EVAL with clause\nflat(tree(X40, tree(X41, X42, X43), X44), X45) :- flat(tree(X41, X42, tree(X40, X43, X44)), X45).\nand substitutionX40 -> T47,\nX41 -> T45,\nX42 -> T46,\nX43 -> T48,\nX44 -> T49,\nT1 -> tree(T47, tree(T45, T46, T48), T49),\nT2 -> T44,\nX45 -> T44,\nT40 -> T45,\nT41 -> T46,\nT39 -> T47,\nT42 -> T48,\nT43 -> T49" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "from": 180, 6.94/2.64 "to": 195, 6.94/2.64 "label": "EVAL-BACKTRACK" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "from": 183, 6.94/2.64 "to": 185, 6.94/2.64 "label": "CASE" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "from": 185, 6.94/2.64 "to": 187, 6.94/2.64 "label": "ONLY EVAL with clause\nright(tree(X25, X26, X27), X27).\nand substitutionT15 -> T24,\nX25 -> T24,\nX26 -> niltree,\nT18 -> T26,\nX27 -> T26,\nX18 -> T26,\nT25 -> T26" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "from": 187, 6.94/2.64 "to": 2, 6.94/2.64 "label": "INSTANCE with matching:\nT1 -> T26\nT2 -> T17" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "from": 194, 6.94/2.64 "to": 2, 6.94/2.64 "label": "INSTANCE with matching:\nT1 -> tree(T45, T46, tree(T47, T48, T49))\nT2 -> T44" 6.94/2.64 } 6.94/2.64 ], 6.94/2.64 "type": "Graph" 6.94/2.64 } 6.94/2.64 } 6.94/2.64 6.94/2.64 ---------------------------------------- 6.94/2.64 6.94/2.64 (54) 6.94/2.64 Obligation: 6.94/2.64 Rules: 6.94/2.64 f180_in(T2) -> f195_in :|: TRUE 6.94/2.64 f180_in(T44) -> f194_in(T44) :|: TRUE 6.94/2.64 f194_out(x) -> f180_out(x) :|: TRUE 6.94/2.64 f195_out -> f180_out(x1) :|: TRUE 6.94/2.64 f2_out(x2) -> f194_out(x2) :|: TRUE 6.94/2.64 f194_in(x3) -> f2_in(x3) :|: TRUE 6.94/2.64 f185_out(T15, T17) -> f183_out(T15, T17) :|: TRUE 6.94/2.64 f183_in(x4, x5) -> f185_in(x4, x5) :|: TRUE 6.94/2.64 f13_out(x6) -> f6_out(x6) :|: TRUE 6.94/2.64 f12_out(x7) -> f6_out(x7) :|: TRUE 6.94/2.64 f6_in(x8) -> f13_in(x8) :|: TRUE 6.94/2.64 f6_in(x9) -> f12_in(x9) :|: TRUE 6.94/2.64 f13_in(x10) -> f179_in(x10) :|: TRUE 6.94/2.64 f179_out(x11) -> f13_out(x11) :|: TRUE 6.94/2.64 f13_in(x12) -> f180_in(x12) :|: TRUE 6.94/2.64 f180_out(x13) -> f13_out(x13) :|: TRUE 6.94/2.64 f179_in(cons(x14, x15)) -> f183_in(x14, x15) :|: TRUE 6.94/2.64 f184_out -> f179_out(x16) :|: TRUE 6.94/2.64 f183_out(x17, x18) -> f179_out(cons(x17, x18)) :|: TRUE 6.94/2.64 f179_in(x19) -> f184_in :|: TRUE 6.94/2.64 f2_in(x20) -> f6_in(x20) :|: TRUE 6.94/2.64 f6_out(x21) -> f2_out(x21) :|: TRUE 6.94/2.64 f185_in(x22, x23) -> f187_in(x23) :|: TRUE 6.94/2.64 f187_out(x24) -> f185_out(x25, x24) :|: TRUE 6.94/2.64 f2_out(x26) -> f187_out(x26) :|: TRUE 6.94/2.64 f187_in(x27) -> f2_in(x27) :|: TRUE 6.94/2.64 Start term: f2_in(T2) 6.94/2.64 6.94/2.64 ---------------------------------------- 6.94/2.64 6.94/2.64 (55) IRSwTSimpleDependencyGraphProof (EQUIVALENT) 6.94/2.64 Constructed simple dependency graph. 6.94/2.64 6.94/2.64 Simplified to the following IRSwTs: 6.94/2.64 6.94/2.64 intTRSProblem: 6.94/2.64 f180_in(T44) -> f194_in(T44) :|: TRUE 6.94/2.64 f194_in(x3) -> f2_in(x3) :|: TRUE 6.94/2.64 f183_in(x4, x5) -> f185_in(x4, x5) :|: TRUE 6.94/2.64 f6_in(x8) -> f13_in(x8) :|: TRUE 6.94/2.64 f13_in(x10) -> f179_in(x10) :|: TRUE 6.94/2.64 f13_in(x12) -> f180_in(x12) :|: TRUE 6.94/2.64 f179_in(cons(x14, x15)) -> f183_in(x14, x15) :|: TRUE 6.94/2.64 f2_in(x20) -> f6_in(x20) :|: TRUE 6.94/2.64 f185_in(x22, x23) -> f187_in(x23) :|: TRUE 6.94/2.64 f187_in(x27) -> f2_in(x27) :|: TRUE 6.94/2.64 6.94/2.64 6.94/2.64 ---------------------------------------- 6.94/2.64 6.94/2.64 (56) 6.94/2.64 Obligation: 6.94/2.64 Rules: 6.94/2.64 f180_in(T44) -> f194_in(T44) :|: TRUE 6.94/2.64 f194_in(x3) -> f2_in(x3) :|: TRUE 6.94/2.64 f183_in(x4, x5) -> f185_in(x4, x5) :|: TRUE 6.94/2.64 f6_in(x8) -> f13_in(x8) :|: TRUE 6.94/2.64 f13_in(x10) -> f179_in(x10) :|: TRUE 6.94/2.64 f13_in(x12) -> f180_in(x12) :|: TRUE 6.94/2.64 f179_in(cons(x14, x15)) -> f183_in(x14, x15) :|: TRUE 6.94/2.64 f2_in(x20) -> f6_in(x20) :|: TRUE 6.94/2.64 f185_in(x22, x23) -> f187_in(x23) :|: TRUE 6.94/2.64 f187_in(x27) -> f2_in(x27) :|: TRUE 6.94/2.64 6.94/2.64 ---------------------------------------- 6.94/2.64 6.94/2.64 (57) IntTRSCompressionProof (EQUIVALENT) 6.94/2.64 Compressed rules. 6.94/2.64 ---------------------------------------- 6.94/2.64 6.94/2.64 (58) 6.94/2.64 Obligation: 6.94/2.64 Rules: 6.94/2.64 f6_in(x8:0) -> f6_in(x8:0) :|: TRUE 6.94/2.64 f6_in(cons(x14:0, x15:0)) -> f6_in(x15:0) :|: TRUE 6.94/2.64 6.94/2.64 ---------------------------------------- 6.94/2.64 6.94/2.64 (59) IRSFormatTransformerProof (EQUIVALENT) 6.94/2.64 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 6.94/2.64 ---------------------------------------- 6.94/2.64 6.94/2.64 (60) 6.94/2.64 Obligation: 6.94/2.64 Rules: 6.94/2.64 f6_in(x8:0) -> f6_in(x8:0) :|: TRUE 6.94/2.64 f6_in(cons(x14:0, x15:0)) -> f6_in(x15:0) :|: TRUE 6.94/2.64 6.94/2.64 ---------------------------------------- 6.94/2.64 6.94/2.64 (61) IRSwTTerminationDigraphProof (EQUIVALENT) 6.94/2.64 Constructed termination digraph! 6.94/2.64 Nodes: 6.94/2.64 (1) f6_in(x8:0) -> f6_in(x8:0) :|: TRUE 6.94/2.64 (2) f6_in(cons(x14:0, x15:0)) -> f6_in(x15:0) :|: TRUE 6.94/2.64 6.94/2.64 Arcs: 6.94/2.64 (1) -> (1), (2) 6.94/2.64 (2) -> (1), (2) 6.94/2.64 6.94/2.64 This digraph is fully evaluated! 6.94/2.64 ---------------------------------------- 6.94/2.64 6.94/2.64 (62) 6.94/2.64 Obligation: 6.94/2.64 6.94/2.64 Termination digraph: 6.94/2.64 Nodes: 6.94/2.64 (1) f6_in(x8:0) -> f6_in(x8:0) :|: TRUE 6.94/2.64 (2) f6_in(cons(x14:0, x15:0)) -> f6_in(x15:0) :|: TRUE 6.94/2.64 6.94/2.64 Arcs: 6.94/2.64 (1) -> (1), (2) 6.94/2.64 (2) -> (1), (2) 6.94/2.64 6.94/2.64 This digraph is fully evaluated! 6.94/2.64 6.94/2.64 ---------------------------------------- 6.94/2.64 6.94/2.64 (63) IntTRSUnneededArgumentFilterProof (EQUIVALENT) 6.94/2.64 Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: 6.94/2.64 6.94/2.64 cons(x1, x2) -> cons(x2) 6.94/2.64 6.94/2.64 ---------------------------------------- 6.94/2.64 6.94/2.64 (64) 6.94/2.64 Obligation: 6.94/2.64 Rules: 6.94/2.64 f6_in(x8:0) -> f6_in(x8:0) :|: TRUE 6.94/2.64 f6_in(cons(x15:0)) -> f6_in(x15:0) :|: TRUE 6.94/2.64 6.94/2.64 ---------------------------------------- 6.94/2.64 6.94/2.64 (65) PrologToDTProblemTransformerProof (SOUND) 6.94/2.64 Built DT problem from termination graph DT10. 6.94/2.64 6.94/2.64 { 6.94/2.64 "root": 1, 6.94/2.64 "program": { 6.94/2.64 "directives": [], 6.94/2.64 "clauses": [ 6.94/2.64 [ 6.94/2.64 "(right (tree X XS1 XS2) XS2)", 6.94/2.64 null 6.94/2.64 ], 6.94/2.64 [ 6.94/2.64 "(flat (niltree) (nil))", 6.94/2.64 null 6.94/2.64 ], 6.94/2.64 [ 6.94/2.64 "(flat (tree X (niltree) XS) (cons X YS))", 6.94/2.64 "(',' (right (tree X (niltree) XS) ZS) (flat ZS YS))" 6.94/2.64 ], 6.94/2.64 [ 6.94/2.64 "(flat (tree X (tree Y YS1 YS2) XS) ZS)", 6.94/2.64 "(flat (tree Y YS1 (tree X YS2 XS)) ZS)" 6.94/2.64 ] 6.94/2.64 ] 6.94/2.64 }, 6.94/2.64 "graph": { 6.94/2.64 "nodes": { 6.94/2.64 "192": { 6.94/2.64 "goal": [{ 6.94/2.64 "clause": 0, 6.94/2.64 "scope": 3, 6.94/2.64 "term": "(',' (right (tree T55 (niltree) T58) X43) (flat X43 T57))" 6.94/2.64 }], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": [ 6.94/2.64 "T55", 6.94/2.64 "T57" 6.94/2.64 ], 6.94/2.64 "free": ["X43"], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "171": { 6.94/2.64 "goal": [{ 6.94/2.64 "clause": -1, 6.94/2.64 "scope": -1, 6.94/2.64 "term": "(flat (tree T15 T16 (tree T17 T18 T19)) (nil))" 6.94/2.64 }], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": [], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "193": { 6.94/2.64 "goal": [ 6.94/2.64 { 6.94/2.64 "clause": -1, 6.94/2.64 "scope": 3, 6.94/2.64 "term": null 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "clause": 3, 6.94/2.64 "scope": 1, 6.94/2.64 "term": "(flat T1 (cons T55 T57))" 6.94/2.64 } 6.94/2.64 ], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": [ 6.94/2.64 "T55", 6.94/2.64 "T57" 6.94/2.64 ], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "type": "Nodes", 6.94/2.64 "172": { 6.94/2.64 "goal": [], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": [], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "173": { 6.94/2.64 "goal": [ 6.94/2.64 { 6.94/2.64 "clause": 1, 6.94/2.64 "scope": 2, 6.94/2.64 "term": "(flat (tree T15 T16 (tree T17 T18 T19)) (nil))" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "clause": 2, 6.94/2.64 "scope": 2, 6.94/2.64 "term": "(flat (tree T15 T16 (tree T17 T18 T19)) (nil))" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "clause": 3, 6.94/2.64 "scope": 2, 6.94/2.64 "term": "(flat (tree T15 T16 (tree T17 T18 T19)) (nil))" 6.94/2.64 } 6.94/2.64 ], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": [], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "174": { 6.94/2.64 "goal": [ 6.94/2.64 { 6.94/2.64 "clause": 2, 6.94/2.64 "scope": 2, 6.94/2.64 "term": "(flat (tree T15 T16 (tree T17 T18 T19)) (nil))" 6.94/2.64 }, 6.94/2.64 { 6.94/2.64 "clause": 3, 6.94/2.64 "scope": 2, 6.94/2.64 "term": "(flat (tree T15 T16 (tree T17 T18 T19)) (nil))" 6.94/2.64 } 6.94/2.64 ], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": [], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "196": { 6.94/2.64 "goal": [{ 6.94/2.64 "clause": -1, 6.94/2.64 "scope": -1, 6.94/2.64 "term": "(flat T71 T57)" 6.94/2.64 }], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": ["T57"], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "197": { 6.94/2.64 "goal": [{ 6.94/2.64 "clause": 3, 6.94/2.64 "scope": 1, 6.94/2.64 "term": "(flat T1 (cons T55 T57))" 6.94/2.64 }], 6.94/2.64 "kb": { 6.94/2.64 "nonunifying": [], 6.94/2.64 "intvars": {}, 6.94/2.64 "arithmetic": { 6.94/2.64 "type": "PlainIntegerRelationState", 6.94/2.64 "relations": [] 6.94/2.64 }, 6.94/2.64 "ground": [ 6.94/2.64 "T55", 6.94/2.64 "T57" 6.94/2.64 ], 6.94/2.64 "free": [], 6.94/2.64 "exprvars": [] 6.94/2.64 } 6.94/2.64 }, 6.94/2.64 "230": { 6.94/2.64 "goal": [{ 6.94/2.64 "clause": -1, 6.94/2.64 "scope": -1, 6.94/2.65 "term": "(flat (tree T110 T111 (tree T112 T113 T114)) T109)" 6.94/2.65 }], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [ 6.94/2.65 [ 6.94/2.65 "(flat T1 T109)", 6.94/2.65 "(flat (niltree) (nil))" 6.94/2.65 ], 6.94/2.65 [ 6.94/2.65 "(flat T1 T109)", 6.94/2.65 "(flat (tree X40 (niltree) X41) (cons X40 X42))" 6.94/2.65 ] 6.94/2.65 ], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": ["T109"], 6.94/2.65 "free": [ 6.94/2.65 "X40", 6.94/2.65 "X41", 6.94/2.65 "X42" 6.94/2.65 ], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "176": { 6.94/2.65 "goal": [{ 6.94/2.65 "clause": 3, 6.94/2.65 "scope": 2, 6.94/2.65 "term": "(flat (tree T15 T16 (tree T17 T18 T19)) (nil))" 6.94/2.65 }], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [], 6.94/2.65 "free": [], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "198": { 6.94/2.65 "goal": [{ 6.94/2.65 "clause": -1, 6.94/2.65 "scope": -1, 6.94/2.65 "term": "(flat (tree T93 T94 (tree T95 T96 T97)) (cons T91 T92))" 6.94/2.65 }], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [ 6.94/2.65 "T91", 6.94/2.65 "T92" 6.94/2.65 ], 6.94/2.65 "free": [], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "231": { 6.94/2.65 "goal": [], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [], 6.94/2.65 "free": [], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "155": { 6.94/2.65 "goal": [ 6.94/2.65 { 6.94/2.65 "clause": 1, 6.94/2.65 "scope": 1, 6.94/2.65 "term": "(flat T1 T2)" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "clause": 2, 6.94/2.65 "scope": 1, 6.94/2.65 "term": "(flat T1 T2)" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "clause": 3, 6.94/2.65 "scope": 1, 6.94/2.65 "term": "(flat T1 T2)" 6.94/2.65 } 6.94/2.65 ], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": ["T2"], 6.94/2.65 "free": [], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "199": { 6.94/2.65 "goal": [], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [], 6.94/2.65 "free": [], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "232": { 6.94/2.65 "goal": [ 6.94/2.65 { 6.94/2.65 "clause": 1, 6.94/2.65 "scope": 4, 6.94/2.65 "term": "(flat (tree T110 T111 (tree T112 T113 T114)) T109)" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "clause": 2, 6.94/2.65 "scope": 4, 6.94/2.65 "term": "(flat (tree T110 T111 (tree T112 T113 T114)) T109)" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "clause": 3, 6.94/2.65 "scope": 4, 6.94/2.65 "term": "(flat (tree T110 T111 (tree T112 T113 T114)) T109)" 6.94/2.65 } 6.94/2.65 ], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [ 6.94/2.65 [ 6.94/2.65 "(flat T1 T109)", 6.94/2.65 "(flat (niltree) (nil))" 6.94/2.65 ], 6.94/2.65 [ 6.94/2.65 "(flat T1 T109)", 6.94/2.65 "(flat (tree X40 (niltree) X41) (cons X40 X42))" 6.94/2.65 ] 6.94/2.65 ], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": ["T109"], 6.94/2.65 "free": [ 6.94/2.65 "X40", 6.94/2.65 "X41", 6.94/2.65 "X42" 6.94/2.65 ], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "233": { 6.94/2.65 "goal": [ 6.94/2.65 { 6.94/2.65 "clause": 2, 6.94/2.65 "scope": 4, 6.94/2.65 "term": "(flat (tree T110 T111 (tree T112 T113 T114)) T109)" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "clause": 3, 6.94/2.65 "scope": 4, 6.94/2.65 "term": "(flat (tree T110 T111 (tree T112 T113 T114)) T109)" 6.94/2.65 } 6.94/2.65 ], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [ 6.94/2.65 [ 6.94/2.65 "(flat T1 T109)", 6.94/2.65 "(flat (niltree) (nil))" 6.94/2.65 ], 6.94/2.65 [ 6.94/2.65 "(flat T1 T109)", 6.94/2.65 "(flat (tree X40 (niltree) X41) (cons X40 X42))" 6.94/2.65 ] 6.94/2.65 ], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": ["T109"], 6.94/2.65 "free": [ 6.94/2.65 "X40", 6.94/2.65 "X41", 6.94/2.65 "X42" 6.94/2.65 ], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "157": { 6.94/2.65 "goal": [ 6.94/2.65 { 6.94/2.65 "clause": -1, 6.94/2.65 "scope": -1, 6.94/2.65 "term": "(true)" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "clause": 2, 6.94/2.65 "scope": 1, 6.94/2.65 "term": "(flat T1 (nil))" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "clause": 3, 6.94/2.65 "scope": 1, 6.94/2.65 "term": "(flat T1 (nil))" 6.94/2.65 } 6.94/2.65 ], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [], 6.94/2.65 "free": [], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "234": { 6.94/2.65 "goal": [{ 6.94/2.65 "clause": 2, 6.94/2.65 "scope": 4, 6.94/2.65 "term": "(flat (tree T110 T111 (tree T112 T113 T114)) T109)" 6.94/2.65 }], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [ 6.94/2.65 [ 6.94/2.65 "(flat T1 T109)", 6.94/2.65 "(flat (niltree) (nil))" 6.94/2.65 ], 6.94/2.65 [ 6.94/2.65 "(flat T1 T109)", 6.94/2.65 "(flat (tree X40 (niltree) X41) (cons X40 X42))" 6.94/2.65 ] 6.94/2.65 ], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": ["T109"], 6.94/2.65 "free": [ 6.94/2.65 "X40", 6.94/2.65 "X41", 6.94/2.65 "X42" 6.94/2.65 ], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "158": { 6.94/2.65 "goal": [ 6.94/2.65 { 6.94/2.65 "clause": 2, 6.94/2.65 "scope": 1, 6.94/2.65 "term": "(flat T1 T2)" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "clause": 3, 6.94/2.65 "scope": 1, 6.94/2.65 "term": "(flat T1 T2)" 6.94/2.65 } 6.94/2.65 ], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [[ 6.94/2.65 "(flat T1 T2)", 6.94/2.65 "(flat (niltree) (nil))" 6.94/2.65 ]], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": ["T2"], 6.94/2.65 "free": [], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "235": { 6.94/2.65 "goal": [{ 6.94/2.65 "clause": 3, 6.94/2.65 "scope": 4, 6.94/2.65 "term": "(flat (tree T110 T111 (tree T112 T113 T114)) T109)" 6.94/2.65 }], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [ 6.94/2.65 [ 6.94/2.65 "(flat T1 T109)", 6.94/2.65 "(flat (niltree) (nil))" 6.94/2.65 ], 6.94/2.65 [ 6.94/2.65 "(flat T1 T109)", 6.94/2.65 "(flat (tree X40 (niltree) X41) (cons X40 X42))" 6.94/2.65 ] 6.94/2.65 ], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": ["T109"], 6.94/2.65 "free": [ 6.94/2.65 "X40", 6.94/2.65 "X41", 6.94/2.65 "X42" 6.94/2.65 ], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "159": { 6.94/2.65 "goal": [ 6.94/2.65 { 6.94/2.65 "clause": 2, 6.94/2.65 "scope": 1, 6.94/2.65 "term": "(flat T1 (nil))" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "clause": 3, 6.94/2.65 "scope": 1, 6.94/2.65 "term": "(flat T1 (nil))" 6.94/2.65 } 6.94/2.65 ], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [], 6.94/2.65 "free": [], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "236": { 6.94/2.65 "goal": [{ 6.94/2.65 "clause": -1, 6.94/2.65 "scope": -1, 6.94/2.65 "term": "(',' (right (tree T135 (niltree) (tree T140 T141 T142)) X106) (flat X106 T139))" 6.94/2.65 }], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [[ 6.94/2.65 "(flat T1 (cons T135 T139))", 6.94/2.65 "(flat (tree X40 (niltree) X41) (cons X40 X42))" 6.94/2.65 ]], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [ 6.94/2.65 "T135", 6.94/2.65 "T139" 6.94/2.65 ], 6.94/2.65 "free": [ 6.94/2.65 "X40", 6.94/2.65 "X41", 6.94/2.65 "X42", 6.94/2.65 "X106" 6.94/2.65 ], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "237": { 6.94/2.65 "goal": [], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [], 6.94/2.65 "free": [], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "238": { 6.94/2.65 "goal": [{ 6.94/2.65 "clause": 0, 6.94/2.65 "scope": 5, 6.94/2.65 "term": "(',' (right (tree T135 (niltree) (tree T140 T141 T142)) X106) (flat X106 T139))" 6.94/2.65 }], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [[ 6.94/2.65 "(flat T1 (cons T135 T139))", 6.94/2.65 "(flat (tree X40 (niltree) X41) (cons X40 X42))" 6.94/2.65 ]], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [ 6.94/2.65 "T135", 6.94/2.65 "T139" 6.94/2.65 ], 6.94/2.65 "free": [ 6.94/2.65 "X40", 6.94/2.65 "X41", 6.94/2.65 "X42", 6.94/2.65 "X106" 6.94/2.65 ], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "239": { 6.94/2.65 "goal": [{ 6.94/2.65 "clause": -1, 6.94/2.65 "scope": -1, 6.94/2.65 "term": "(flat (tree T158 T159 T160) T139)" 6.94/2.65 }], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [[ 6.94/2.65 "(flat T1 (cons T154 T139))", 6.94/2.65 "(flat (tree X40 (niltree) X41) (cons X40 X42))" 6.94/2.65 ]], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [ 6.94/2.65 "T139", 6.94/2.65 "T154" 6.94/2.65 ], 6.94/2.65 "free": [ 6.94/2.65 "X40", 6.94/2.65 "X41", 6.94/2.65 "X42" 6.94/2.65 ], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "181": { 6.94/2.65 "goal": [{ 6.94/2.65 "clause": -1, 6.94/2.65 "scope": -1, 6.94/2.65 "term": "(flat (tree T45 T46 (tree T47 T48 (tree T49 T50 T51))) (nil))" 6.94/2.65 }], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [], 6.94/2.65 "free": [], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "160": { 6.94/2.65 "goal": [{ 6.94/2.65 "clause": 3, 6.94/2.65 "scope": 1, 6.94/2.65 "term": "(flat T1 (nil))" 6.94/2.65 }], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [], 6.94/2.65 "free": [], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "182": { 6.94/2.65 "goal": [], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [], 6.94/2.65 "free": [], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "240": { 6.94/2.65 "goal": [{ 6.94/2.65 "clause": -1, 6.94/2.65 "scope": -1, 6.94/2.65 "term": "(flat (tree T185 T186 (tree T187 T188 (tree T189 T190 T191))) T184)" 6.94/2.65 }], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [ 6.94/2.65 [ 6.94/2.65 "(flat T1 T184)", 6.94/2.65 "(flat (niltree) (nil))" 6.94/2.65 ], 6.94/2.65 [ 6.94/2.65 "(flat T1 T184)", 6.94/2.65 "(flat (tree X40 (niltree) X41) (cons X40 X42))" 6.94/2.65 ] 6.94/2.65 ], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": ["T184"], 6.94/2.65 "free": [ 6.94/2.65 "X40", 6.94/2.65 "X41", 6.94/2.65 "X42" 6.94/2.65 ], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "186": { 6.94/2.65 "goal": [ 6.94/2.65 { 6.94/2.65 "clause": -1, 6.94/2.65 "scope": -1, 6.94/2.65 "term": "(',' (right (tree T55 (niltree) T58) X43) (flat X43 T57))" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "clause": 3, 6.94/2.65 "scope": 1, 6.94/2.65 "term": "(flat T1 (cons T55 T57))" 6.94/2.65 } 6.94/2.65 ], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [ 6.94/2.65 "T55", 6.94/2.65 "T57" 6.94/2.65 ], 6.94/2.65 "free": ["X43"], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "241": { 6.94/2.65 "goal": [], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [], 6.94/2.65 "free": [], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "1": { 6.94/2.65 "goal": [{ 6.94/2.65 "clause": -1, 6.94/2.65 "scope": -1, 6.94/2.65 "term": "(flat T1 T2)" 6.94/2.65 }], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": ["T2"], 6.94/2.65 "free": [], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "188": { 6.94/2.65 "goal": [{ 6.94/2.65 "clause": 3, 6.94/2.65 "scope": 1, 6.94/2.65 "term": "(flat T1 T2)" 6.94/2.65 }], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [ 6.94/2.65 [ 6.94/2.65 "(flat T1 T2)", 6.94/2.65 "(flat (niltree) (nil))" 6.94/2.65 ], 6.94/2.65 [ 6.94/2.65 "(flat T1 T2)", 6.94/2.65 "(flat (tree X40 (niltree) X41) (cons X40 X42))" 6.94/2.65 ] 6.94/2.65 ], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": ["T2"], 6.94/2.65 "free": [ 6.94/2.65 "X40", 6.94/2.65 "X41", 6.94/2.65 "X42" 6.94/2.65 ], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "189": { 6.94/2.65 "goal": [ 6.94/2.65 { 6.94/2.65 "clause": 0, 6.94/2.65 "scope": 3, 6.94/2.65 "term": "(',' (right (tree T55 (niltree) T58) X43) (flat X43 T57))" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "clause": -1, 6.94/2.65 "scope": 3, 6.94/2.65 "term": null 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "clause": 3, 6.94/2.65 "scope": 1, 6.94/2.65 "term": "(flat T1 (cons T55 T57))" 6.94/2.65 } 6.94/2.65 ], 6.94/2.65 "kb": { 6.94/2.65 "nonunifying": [], 6.94/2.65 "intvars": {}, 6.94/2.65 "arithmetic": { 6.94/2.65 "type": "PlainIntegerRelationState", 6.94/2.65 "relations": [] 6.94/2.65 }, 6.94/2.65 "ground": [ 6.94/2.65 "T55", 6.94/2.65 "T57" 6.94/2.65 ], 6.94/2.65 "free": ["X43"], 6.94/2.65 "exprvars": [] 6.94/2.65 } 6.94/2.65 } 6.94/2.65 }, 6.94/2.65 "edges": [ 6.94/2.65 { 6.94/2.65 "from": 1, 6.94/2.65 "to": 155, 6.94/2.65 "label": "CASE" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 155, 6.94/2.65 "to": 157, 6.94/2.65 "label": "EVAL with clause\nflat(niltree, nil).\nand substitutionT1 -> niltree,\nT2 -> nil" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 155, 6.94/2.65 "to": 158, 6.94/2.65 "label": "EVAL-BACKTRACK" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 157, 6.94/2.65 "to": 159, 6.94/2.65 "label": "SUCCESS" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 158, 6.94/2.65 "to": 186, 6.94/2.65 "label": "EVAL with clause\nflat(tree(X40, niltree, X41), cons(X40, X42)) :- ','(right(tree(X40, niltree, X41), X43), flat(X43, X42)).\nand substitutionX40 -> T55,\nX41 -> T58,\nT1 -> tree(T55, niltree, T58),\nX42 -> T57,\nT2 -> cons(T55, T57),\nT56 -> T58" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 158, 6.94/2.65 "to": 188, 6.94/2.65 "label": "EVAL-BACKTRACK" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 159, 6.94/2.65 "to": 160, 6.94/2.65 "label": "BACKTRACK\nfor clause: flat(tree(X, niltree, XS), cons(X, YS)) :- ','(right(tree(X, niltree, XS), ZS), flat(ZS, YS))because of non-unification" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 160, 6.94/2.65 "to": 171, 6.94/2.65 "label": "EVAL with clause\nflat(tree(X10, tree(X11, X12, X13), X14), X15) :- flat(tree(X11, X12, tree(X10, X13, X14)), X15).\nand substitutionX10 -> T17,\nX11 -> T15,\nX12 -> T16,\nX13 -> T18,\nX14 -> T19,\nT1 -> tree(T17, tree(T15, T16, T18), T19),\nX15 -> nil,\nT11 -> T15,\nT12 -> T16,\nT10 -> T17,\nT13 -> T18,\nT14 -> T19" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 160, 6.94/2.65 "to": 172, 6.94/2.65 "label": "EVAL-BACKTRACK" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 171, 6.94/2.65 "to": 173, 6.94/2.65 "label": "CASE" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 173, 6.94/2.65 "to": 174, 6.94/2.65 "label": "BACKTRACK\nfor clause: flat(niltree, nil)because of non-unification" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 174, 6.94/2.65 "to": 176, 6.94/2.65 "label": "BACKTRACK\nfor clause: flat(tree(X, niltree, XS), cons(X, YS)) :- ','(right(tree(X, niltree, XS), ZS), flat(ZS, YS))because of non-unification" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 176, 6.94/2.65 "to": 181, 6.94/2.65 "label": "EVAL with clause\nflat(tree(X31, tree(X32, X33, X34), X35), X36) :- flat(tree(X32, X33, tree(X31, X34, X35)), X36).\nand substitutionT15 -> T47,\nX31 -> T47,\nX32 -> T45,\nX33 -> T46,\nX34 -> T48,\nT16 -> tree(T45, T46, T48),\nT17 -> T49,\nT18 -> T50,\nT19 -> T51,\nX35 -> tree(T49, T50, T51),\nX36 -> nil,\nT39 -> T45,\nT40 -> T46,\nT38 -> T47,\nT41 -> T48,\nT42 -> T49,\nT43 -> T50,\nT44 -> T51" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 176, 6.94/2.65 "to": 182, 6.94/2.65 "label": "EVAL-BACKTRACK" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 181, 6.94/2.65 "to": 1, 6.94/2.65 "label": "INSTANCE with matching:\nT1 -> tree(T45, T46, tree(T47, T48, tree(T49, T50, T51)))\nT2 -> nil" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 186, 6.94/2.65 "to": 189, 6.94/2.65 "label": "CASE" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 188, 6.94/2.65 "to": 230, 6.94/2.65 "label": "EVAL with clause\nflat(tree(X83, tree(X84, X85, X86), X87), X88) :- flat(tree(X84, X85, tree(X83, X86, X87)), X88).\nand substitutionX83 -> T112,\nX84 -> T110,\nX85 -> T111,\nX86 -> T113,\nX87 -> T114,\nT1 -> tree(T112, tree(T110, T111, T113), T114),\nT2 -> T109,\nX88 -> T109,\nT105 -> T110,\nT106 -> T111,\nT104 -> T112,\nT107 -> T113,\nT108 -> T114" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 188, 6.94/2.65 "to": 231, 6.94/2.65 "label": "EVAL-BACKTRACK" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 189, 6.94/2.65 "to": 192, 6.94/2.65 "label": "PARALLEL" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 189, 6.94/2.65 "to": 193, 6.94/2.65 "label": "PARALLEL" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 192, 6.94/2.65 "to": 196, 6.94/2.65 "label": "ONLY EVAL with clause\nright(tree(X56, X57, X58), X58).\nand substitutionT55 -> T69,\nX56 -> T69,\nX57 -> niltree,\nT58 -> T71,\nX58 -> T71,\nX43 -> T71,\nT70 -> T71" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 193, 6.94/2.65 "to": 197, 6.94/2.65 "label": "FAILURE" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 196, 6.94/2.65 "to": 1, 6.94/2.65 "label": "INSTANCE with matching:\nT1 -> T71\nT2 -> T57" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 197, 6.94/2.65 "to": 198, 6.94/2.65 "label": "EVAL with clause\nflat(tree(X71, tree(X72, X73, X74), X75), X76) :- flat(tree(X72, X73, tree(X71, X74, X75)), X76).\nand substitutionX71 -> T95,\nX72 -> T93,\nX73 -> T94,\nX74 -> T96,\nX75 -> T97,\nT1 -> tree(T95, tree(T93, T94, T96), T97),\nT55 -> T91,\nT57 -> T92,\nX76 -> cons(T91, T92),\nT87 -> T93,\nT88 -> T94,\nT86 -> T95,\nT89 -> T96,\nT90 -> T97" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 197, 6.94/2.65 "to": 199, 6.94/2.65 "label": "EVAL-BACKTRACK" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 198, 6.94/2.65 "to": 1, 6.94/2.65 "label": "INSTANCE with matching:\nT1 -> tree(T93, T94, tree(T95, T96, T97))\nT2 -> cons(T91, T92)" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 230, 6.94/2.65 "to": 232, 6.94/2.65 "label": "CASE" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 232, 6.94/2.65 "to": 233, 6.94/2.65 "label": "BACKTRACK\nfor clause: flat(niltree, nil)because of non-unification" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 233, 6.94/2.65 "to": 234, 6.94/2.65 "label": "PARALLEL" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 233, 6.94/2.65 "to": 235, 6.94/2.65 "label": "PARALLEL" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 234, 6.94/2.65 "to": 236, 6.94/2.65 "label": "EVAL with clause\nflat(tree(X103, niltree, X104), cons(X103, X105)) :- ','(right(tree(X103, niltree, X104), X106), flat(X106, X105)).\nand substitutionT110 -> T135,\nX103 -> T135,\nT111 -> niltree,\nT112 -> T140,\nT113 -> T141,\nT114 -> T142,\nX104 -> tree(T140, T141, T142),\nX105 -> T139,\nT109 -> cons(T135, T139),\nT136 -> T140,\nT137 -> T141,\nT138 -> T142" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 234, 6.94/2.65 "to": 237, 6.94/2.65 "label": "EVAL-BACKTRACK" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 235, 6.94/2.65 "to": 240, 6.94/2.65 "label": "EVAL with clause\nflat(tree(X128, tree(X129, X130, X131), X132), X133) :- flat(tree(X129, X130, tree(X128, X131, X132)), X133).\nand substitutionT110 -> T187,\nX128 -> T187,\nX129 -> T185,\nX130 -> T186,\nX131 -> T188,\nT111 -> tree(T185, T186, T188),\nT112 -> T189,\nT113 -> T190,\nT114 -> T191,\nX132 -> tree(T189, T190, T191),\nT109 -> T184,\nX133 -> T184,\nT178 -> T185,\nT179 -> T186,\nT177 -> T187,\nT180 -> T188,\nT181 -> T189,\nT182 -> T190,\nT183 -> T191" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 235, 6.94/2.65 "to": 241, 6.94/2.65 "label": "EVAL-BACKTRACK" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 236, 6.94/2.65 "to": 238, 6.94/2.65 "label": "CASE" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 238, 6.94/2.65 "to": 239, 6.94/2.65 "label": "ONLY EVAL with clause\nright(tree(X113, X114, X115), X115).\nand substitutionT135 -> T154,\nX113 -> T154,\nX114 -> niltree,\nT140 -> T158,\nT141 -> T159,\nT142 -> T160,\nX115 -> tree(T158, T159, T160),\nX106 -> tree(T158, T159, T160),\nT155 -> T158,\nT156 -> T159,\nT157 -> T160" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 239, 6.94/2.65 "to": 1, 6.94/2.65 "label": "INSTANCE with matching:\nT1 -> tree(T158, T159, T160)\nT2 -> T139" 6.94/2.65 }, 6.94/2.65 { 6.94/2.65 "from": 240, 6.94/2.65 "to": 1, 6.94/2.65 "label": "INSTANCE with matching:\nT1 -> tree(T185, T186, tree(T187, T188, tree(T189, T190, T191)))\nT2 -> T184" 6.94/2.65 } 6.94/2.65 ], 6.94/2.65 "type": "Graph" 6.94/2.65 } 6.94/2.65 } 6.94/2.65 6.94/2.65 ---------------------------------------- 6.94/2.65 6.94/2.65 (66) 6.94/2.65 Obligation: 6.94/2.65 Triples: 6.94/2.65 6.94/2.65 flatA(tree(X1, tree(X2, tree(X3, X4, X5), X6), X7), nil) :- flatA(tree(X3, X4, tree(X2, X5, tree(X1, X6, X7))), nil). 6.94/2.65 flatA(tree(X1, niltree, X2), cons(X1, X3)) :- flatA(X2, X3). 6.94/2.65 flatA(tree(X1, tree(X2, X3, X4), X5), cons(X6, X7)) :- flatA(tree(X2, X3, tree(X1, X4, X5)), cons(X6, X7)). 6.94/2.65 flatA(tree(X1, tree(X2, niltree, X3), X4), cons(X2, X5)) :- flatA(tree(X1, X3, X4), X5). 6.94/2.65 flatA(tree(X1, tree(X2, tree(X3, X4, X5), X6), X7), X8) :- flatA(tree(X3, X4, tree(X2, X5, tree(X1, X6, X7))), X8). 6.94/2.65 6.94/2.65 Clauses: 6.94/2.65 6.94/2.65 flatcA(niltree, nil). 6.94/2.65 flatcA(tree(X1, tree(X2, tree(X3, X4, X5), X6), X7), nil) :- flatcA(tree(X3, X4, tree(X2, X5, tree(X1, X6, X7))), nil). 6.94/2.65 flatcA(tree(X1, niltree, X2), cons(X1, X3)) :- flatcA(X2, X3). 6.94/2.65 flatcA(tree(X1, tree(X2, X3, X4), X5), cons(X6, X7)) :- flatcA(tree(X2, X3, tree(X1, X4, X5)), cons(X6, X7)). 6.94/2.65 flatcA(tree(X1, tree(X2, niltree, X3), X4), cons(X2, X5)) :- flatcA(tree(X1, X3, X4), X5). 6.94/2.65 flatcA(tree(X1, tree(X2, tree(X3, X4, X5), X6), X7), X8) :- flatcA(tree(X3, X4, tree(X2, X5, tree(X1, X6, X7))), X8). 6.94/2.65 6.94/2.65 Afs: 6.94/2.65 6.94/2.65 flatA(x1, x2) = flatA(x2) 6.94/2.65 6.94/2.65 6.94/2.65 ---------------------------------------- 6.94/2.65 6.94/2.65 (67) TriplesToPiDPProof (SOUND) 6.94/2.65 We use the technique of [DT09]. With regard to the inferred argument filtering the predicates were used in the following modes: 6.94/2.65 6.94/2.65 flatA_in_2: (f,b) 6.94/2.65 6.94/2.65 Transforming TRIPLES into the following Term Rewriting System: 6.94/2.65 6.94/2.65 Pi DP problem: 6.94/2.65 The TRS P consists of the following rules: 6.94/2.65 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, tree(X3, X4, X5), X6), X7), nil) -> U1_AG(X1, X2, X3, X4, X5, X6, X7, flatA_in_ag(tree(X3, X4, tree(X2, X5, tree(X1, X6, X7))), nil)) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, tree(X3, X4, X5), X6), X7), nil) -> FLATA_IN_AG(tree(X3, X4, tree(X2, X5, tree(X1, X6, X7))), nil) 6.94/2.65 FLATA_IN_AG(tree(X1, niltree, X2), cons(X1, X3)) -> U2_AG(X1, X2, X3, flatA_in_ag(X2, X3)) 6.94/2.65 FLATA_IN_AG(tree(X1, niltree, X2), cons(X1, X3)) -> FLATA_IN_AG(X2, X3) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, X3, X4), X5), cons(X6, X7)) -> U3_AG(X1, X2, X3, X4, X5, X6, X7, flatA_in_ag(tree(X2, X3, tree(X1, X4, X5)), cons(X6, X7))) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, X3, X4), X5), cons(X6, X7)) -> FLATA_IN_AG(tree(X2, X3, tree(X1, X4, X5)), cons(X6, X7)) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, niltree, X3), X4), cons(X2, X5)) -> U4_AG(X1, X2, X3, X4, X5, flatA_in_ag(tree(X1, X3, X4), X5)) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, niltree, X3), X4), cons(X2, X5)) -> FLATA_IN_AG(tree(X1, X3, X4), X5) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, tree(X3, X4, X5), X6), X7), X8) -> U5_AG(X1, X2, X3, X4, X5, X6, X7, X8, flatA_in_ag(tree(X3, X4, tree(X2, X5, tree(X1, X6, X7))), X8)) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, tree(X3, X4, X5), X6), X7), X8) -> FLATA_IN_AG(tree(X3, X4, tree(X2, X5, tree(X1, X6, X7))), X8) 6.94/2.65 6.94/2.65 R is empty. 6.94/2.65 The argument filtering Pi contains the following mapping: 6.94/2.65 flatA_in_ag(x1, x2) = flatA_in_ag(x2) 6.94/2.65 6.94/2.65 nil = nil 6.94/2.65 6.94/2.65 tree(x1, x2, x3) = tree(x2, x3) 6.94/2.65 6.94/2.65 cons(x1, x2) = cons(x1, x2) 6.94/2.65 6.94/2.65 niltree = niltree 6.94/2.65 6.94/2.65 FLATA_IN_AG(x1, x2) = FLATA_IN_AG(x2) 6.94/2.65 6.94/2.65 U1_AG(x1, x2, x3, x4, x5, x6, x7, x8) = U1_AG(x8) 6.94/2.65 6.94/2.65 U2_AG(x1, x2, x3, x4) = U2_AG(x1, x3, x4) 6.94/2.65 6.94/2.65 U3_AG(x1, x2, x3, x4, x5, x6, x7, x8) = U3_AG(x6, x7, x8) 6.94/2.65 6.94/2.65 U4_AG(x1, x2, x3, x4, x5, x6) = U4_AG(x2, x5, x6) 6.94/2.65 6.94/2.65 U5_AG(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U5_AG(x8, x9) 6.94/2.65 6.94/2.65 6.94/2.65 We have to consider all (P,R,Pi)-chains 6.94/2.65 6.94/2.65 6.94/2.65 Infinitary Constructor Rewriting Termination of PiDP implies Termination of TRIPLES 6.94/2.65 6.94/2.65 6.94/2.65 6.94/2.65 ---------------------------------------- 6.94/2.65 6.94/2.65 (68) 6.94/2.65 Obligation: 6.94/2.65 Pi DP problem: 6.94/2.65 The TRS P consists of the following rules: 6.94/2.65 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, tree(X3, X4, X5), X6), X7), nil) -> U1_AG(X1, X2, X3, X4, X5, X6, X7, flatA_in_ag(tree(X3, X4, tree(X2, X5, tree(X1, X6, X7))), nil)) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, tree(X3, X4, X5), X6), X7), nil) -> FLATA_IN_AG(tree(X3, X4, tree(X2, X5, tree(X1, X6, X7))), nil) 6.94/2.65 FLATA_IN_AG(tree(X1, niltree, X2), cons(X1, X3)) -> U2_AG(X1, X2, X3, flatA_in_ag(X2, X3)) 6.94/2.65 FLATA_IN_AG(tree(X1, niltree, X2), cons(X1, X3)) -> FLATA_IN_AG(X2, X3) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, X3, X4), X5), cons(X6, X7)) -> U3_AG(X1, X2, X3, X4, X5, X6, X7, flatA_in_ag(tree(X2, X3, tree(X1, X4, X5)), cons(X6, X7))) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, X3, X4), X5), cons(X6, X7)) -> FLATA_IN_AG(tree(X2, X3, tree(X1, X4, X5)), cons(X6, X7)) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, niltree, X3), X4), cons(X2, X5)) -> U4_AG(X1, X2, X3, X4, X5, flatA_in_ag(tree(X1, X3, X4), X5)) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, niltree, X3), X4), cons(X2, X5)) -> FLATA_IN_AG(tree(X1, X3, X4), X5) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, tree(X3, X4, X5), X6), X7), X8) -> U5_AG(X1, X2, X3, X4, X5, X6, X7, X8, flatA_in_ag(tree(X3, X4, tree(X2, X5, tree(X1, X6, X7))), X8)) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, tree(X3, X4, X5), X6), X7), X8) -> FLATA_IN_AG(tree(X3, X4, tree(X2, X5, tree(X1, X6, X7))), X8) 6.94/2.65 6.94/2.65 R is empty. 6.94/2.65 The argument filtering Pi contains the following mapping: 6.94/2.65 flatA_in_ag(x1, x2) = flatA_in_ag(x2) 6.94/2.65 6.94/2.65 nil = nil 6.94/2.65 6.94/2.65 tree(x1, x2, x3) = tree(x2, x3) 6.94/2.65 6.94/2.65 cons(x1, x2) = cons(x1, x2) 6.94/2.65 6.94/2.65 niltree = niltree 6.94/2.65 6.94/2.65 FLATA_IN_AG(x1, x2) = FLATA_IN_AG(x2) 6.94/2.65 6.94/2.65 U1_AG(x1, x2, x3, x4, x5, x6, x7, x8) = U1_AG(x8) 6.94/2.65 6.94/2.65 U2_AG(x1, x2, x3, x4) = U2_AG(x1, x3, x4) 6.94/2.65 6.94/2.65 U3_AG(x1, x2, x3, x4, x5, x6, x7, x8) = U3_AG(x6, x7, x8) 6.94/2.65 6.94/2.65 U4_AG(x1, x2, x3, x4, x5, x6) = U4_AG(x2, x5, x6) 6.94/2.65 6.94/2.65 U5_AG(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U5_AG(x8, x9) 6.94/2.65 6.94/2.65 6.94/2.65 We have to consider all (P,R,Pi)-chains 6.94/2.65 ---------------------------------------- 6.94/2.65 6.94/2.65 (69) DependencyGraphProof (EQUIVALENT) 6.94/2.65 The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 5 less nodes. 6.94/2.65 ---------------------------------------- 6.94/2.65 6.94/2.65 (70) 6.94/2.65 Obligation: 6.94/2.65 Pi DP problem: 6.94/2.65 The TRS P consists of the following rules: 6.94/2.65 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, tree(X3, X4, X5), X6), X7), X8) -> FLATA_IN_AG(tree(X3, X4, tree(X2, X5, tree(X1, X6, X7))), X8) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, tree(X3, X4, X5), X6), X7), nil) -> FLATA_IN_AG(tree(X3, X4, tree(X2, X5, tree(X1, X6, X7))), nil) 6.94/2.65 FLATA_IN_AG(tree(X1, niltree, X2), cons(X1, X3)) -> FLATA_IN_AG(X2, X3) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, X3, X4), X5), cons(X6, X7)) -> FLATA_IN_AG(tree(X2, X3, tree(X1, X4, X5)), cons(X6, X7)) 6.94/2.65 FLATA_IN_AG(tree(X1, tree(X2, niltree, X3), X4), cons(X2, X5)) -> FLATA_IN_AG(tree(X1, X3, X4), X5) 6.94/2.65 6.94/2.65 R is empty. 6.94/2.65 The argument filtering Pi contains the following mapping: 6.94/2.65 nil = nil 6.94/2.65 6.94/2.65 tree(x1, x2, x3) = tree(x2, x3) 6.94/2.65 6.94/2.65 cons(x1, x2) = cons(x1, x2) 6.94/2.65 6.94/2.65 niltree = niltree 6.94/2.65 6.94/2.65 FLATA_IN_AG(x1, x2) = FLATA_IN_AG(x2) 6.94/2.65 6.94/2.65 6.94/2.65 We have to consider all (P,R,Pi)-chains 6.94/2.65 ---------------------------------------- 6.94/2.65 6.94/2.65 (71) PiDPToQDPProof (SOUND) 6.94/2.65 Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. 6.94/2.65 ---------------------------------------- 6.94/2.65 6.94/2.65 (72) 6.94/2.65 Obligation: 6.94/2.65 Q DP problem: 6.94/2.65 The TRS P consists of the following rules: 6.94/2.65 6.94/2.65 FLATA_IN_AG(X8) -> FLATA_IN_AG(X8) 6.94/2.65 FLATA_IN_AG(nil) -> FLATA_IN_AG(nil) 6.94/2.65 FLATA_IN_AG(cons(X1, X3)) -> FLATA_IN_AG(X3) 6.94/2.65 FLATA_IN_AG(cons(X6, X7)) -> FLATA_IN_AG(cons(X6, X7)) 6.94/2.65 6.94/2.65 R is empty. 6.94/2.65 Q is empty. 6.94/2.65 We have to consider all (P,Q,R)-chains. 6.94/2.65 ---------------------------------------- 6.94/2.65 6.94/2.65 (73) MRRProof (EQUIVALENT) 6.94/2.65 By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. 6.94/2.65 6.94/2.65 Strictly oriented dependency pairs: 6.94/2.65 6.94/2.65 FLATA_IN_AG(cons(X1, X3)) -> FLATA_IN_AG(X3) 6.94/2.65 6.94/2.65 6.94/2.65 Used ordering: Knuth-Bendix order [KBO] with precedence:cons_2 > nil > FLATA_IN_AG_1 6.94/2.65 6.94/2.65 and weight map: 6.94/2.65 6.94/2.65 nil=1 6.94/2.65 FLATA_IN_AG_1=1 6.94/2.65 cons_2=0 6.94/2.65 6.94/2.65 The variable weight is 1 6.94/2.65 6.94/2.65 ---------------------------------------- 6.94/2.65 6.94/2.65 (74) 6.94/2.65 Obligation: 6.94/2.65 Q DP problem: 6.94/2.65 The TRS P consists of the following rules: 6.94/2.65 6.94/2.65 FLATA_IN_AG(X8) -> FLATA_IN_AG(X8) 6.94/2.65 FLATA_IN_AG(nil) -> FLATA_IN_AG(nil) 6.94/2.65 FLATA_IN_AG(cons(X6, X7)) -> FLATA_IN_AG(cons(X6, X7)) 6.94/2.65 6.94/2.65 R is empty. 6.94/2.65 Q is empty. 6.94/2.65 We have to consider all (P,Q,R)-chains. 6.94/2.65 ---------------------------------------- 6.94/2.65 6.94/2.65 (75) NonTerminationLoopProof (COMPLETE) 6.94/2.65 We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. 6.94/2.65 Found a loop by semiunifying a rule from P directly. 6.94/2.65 6.94/2.65 s = FLATA_IN_AG(X8) evaluates to t =FLATA_IN_AG(X8) 6.94/2.65 6.94/2.65 Thus s starts an infinite chain as s semiunifies with t with the following substitutions: 6.94/2.65 * Matcher: [ ] 6.94/2.65 * Semiunifier: [ ] 6.94/2.65 6.94/2.65 -------------------------------------------------------------------------------- 6.94/2.65 Rewriting sequence 6.94/2.65 6.94/2.65 The DP semiunifies directly so there is only one rewrite step from FLATA_IN_AG(X8) to FLATA_IN_AG(X8). 6.94/2.65 6.94/2.65 6.94/2.65 6.94/2.65 6.94/2.65 ---------------------------------------- 6.94/2.65 6.94/2.65 (76) 6.94/2.65 NO 7.05/2.79 EOF