0 Prolog
↳1 PrologToPiTRSProof (⇐)
↳2 PiTRS
↳3 DependencyPairsProof (⇔)
↳4 PiDP
↳5 DependencyGraphProof (⇔)
↳6 PiDP
↳7 PiDPToQDPProof (⇐)
↳8 QDP
↳9 QDPSizeChangeProof (⇔)
↳10 TRUE
↳11 PrologToPiTRSProof (⇐)
↳12 PiTRS
↳13 DependencyPairsProof (⇔)
↳14 PiDP
bin_tree_in_g(void) → bin_tree_out_g(void)
bin_tree_in_g(tree(X1, Left, Right)) → U1_g(X1, Left, Right, bin_tree_in_g(Left))
U1_g(X1, Left, Right, bin_tree_out_g(Left)) → U2_g(X1, Left, Right, bin_tree_in_g(Right))
U2_g(X1, Left, Right, bin_tree_out_g(Right)) → bin_tree_out_g(tree(X1, Left, Right))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
bin_tree_in_g(void) → bin_tree_out_g(void)
bin_tree_in_g(tree(X1, Left, Right)) → U1_g(X1, Left, Right, bin_tree_in_g(Left))
U1_g(X1, Left, Right, bin_tree_out_g(Left)) → U2_g(X1, Left, Right, bin_tree_in_g(Right))
U2_g(X1, Left, Right, bin_tree_out_g(Right)) → bin_tree_out_g(tree(X1, Left, Right))
BIN_TREE_IN_G(tree(X1, Left, Right)) → U1_G(X1, Left, Right, bin_tree_in_g(Left))
BIN_TREE_IN_G(tree(X1, Left, Right)) → BIN_TREE_IN_G(Left)
U1_G(X1, Left, Right, bin_tree_out_g(Left)) → U2_G(X1, Left, Right, bin_tree_in_g(Right))
U1_G(X1, Left, Right, bin_tree_out_g(Left)) → BIN_TREE_IN_G(Right)
bin_tree_in_g(void) → bin_tree_out_g(void)
bin_tree_in_g(tree(X1, Left, Right)) → U1_g(X1, Left, Right, bin_tree_in_g(Left))
U1_g(X1, Left, Right, bin_tree_out_g(Left)) → U2_g(X1, Left, Right, bin_tree_in_g(Right))
U2_g(X1, Left, Right, bin_tree_out_g(Right)) → bin_tree_out_g(tree(X1, Left, Right))
BIN_TREE_IN_G(tree(X1, Left, Right)) → U1_G(X1, Left, Right, bin_tree_in_g(Left))
BIN_TREE_IN_G(tree(X1, Left, Right)) → BIN_TREE_IN_G(Left)
U1_G(X1, Left, Right, bin_tree_out_g(Left)) → U2_G(X1, Left, Right, bin_tree_in_g(Right))
U1_G(X1, Left, Right, bin_tree_out_g(Left)) → BIN_TREE_IN_G(Right)
bin_tree_in_g(void) → bin_tree_out_g(void)
bin_tree_in_g(tree(X1, Left, Right)) → U1_g(X1, Left, Right, bin_tree_in_g(Left))
U1_g(X1, Left, Right, bin_tree_out_g(Left)) → U2_g(X1, Left, Right, bin_tree_in_g(Right))
U2_g(X1, Left, Right, bin_tree_out_g(Right)) → bin_tree_out_g(tree(X1, Left, Right))
U1_G(X1, Left, Right, bin_tree_out_g(Left)) → BIN_TREE_IN_G(Right)
BIN_TREE_IN_G(tree(X1, Left, Right)) → U1_G(X1, Left, Right, bin_tree_in_g(Left))
BIN_TREE_IN_G(tree(X1, Left, Right)) → BIN_TREE_IN_G(Left)
bin_tree_in_g(void) → bin_tree_out_g(void)
bin_tree_in_g(tree(X1, Left, Right)) → U1_g(X1, Left, Right, bin_tree_in_g(Left))
U1_g(X1, Left, Right, bin_tree_out_g(Left)) → U2_g(X1, Left, Right, bin_tree_in_g(Right))
U2_g(X1, Left, Right, bin_tree_out_g(Right)) → bin_tree_out_g(tree(X1, Left, Right))
U1_G(Right, bin_tree_out_g) → BIN_TREE_IN_G(Right)
BIN_TREE_IN_G(tree(X1, Left, Right)) → U1_G(Right, bin_tree_in_g(Left))
BIN_TREE_IN_G(tree(X1, Left, Right)) → BIN_TREE_IN_G(Left)
bin_tree_in_g(void) → bin_tree_out_g
bin_tree_in_g(tree(X1, Left, Right)) → U1_g(Right, bin_tree_in_g(Left))
U1_g(Right, bin_tree_out_g) → U2_g(bin_tree_in_g(Right))
U2_g(bin_tree_out_g) → bin_tree_out_g
bin_tree_in_g(x0)
U1_g(x0, x1)
U2_g(x0)
From the DPs we obtained the following set of size-change graphs:
bin_tree_in_g(void) → bin_tree_out_g(void)
bin_tree_in_g(tree(X1, Left, Right)) → U1_g(X1, Left, Right, bin_tree_in_g(Left))
U1_g(X1, Left, Right, bin_tree_out_g(Left)) → U2_g(X1, Left, Right, bin_tree_in_g(Right))
U2_g(X1, Left, Right, bin_tree_out_g(Right)) → bin_tree_out_g(tree(X1, Left, Right))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
bin_tree_in_g(void) → bin_tree_out_g(void)
bin_tree_in_g(tree(X1, Left, Right)) → U1_g(X1, Left, Right, bin_tree_in_g(Left))
U1_g(X1, Left, Right, bin_tree_out_g(Left)) → U2_g(X1, Left, Right, bin_tree_in_g(Right))
U2_g(X1, Left, Right, bin_tree_out_g(Right)) → bin_tree_out_g(tree(X1, Left, Right))
BIN_TREE_IN_G(tree(X1, Left, Right)) → U1_G(X1, Left, Right, bin_tree_in_g(Left))
BIN_TREE_IN_G(tree(X1, Left, Right)) → BIN_TREE_IN_G(Left)
U1_G(X1, Left, Right, bin_tree_out_g(Left)) → U2_G(X1, Left, Right, bin_tree_in_g(Right))
U1_G(X1, Left, Right, bin_tree_out_g(Left)) → BIN_TREE_IN_G(Right)
bin_tree_in_g(void) → bin_tree_out_g(void)
bin_tree_in_g(tree(X1, Left, Right)) → U1_g(X1, Left, Right, bin_tree_in_g(Left))
U1_g(X1, Left, Right, bin_tree_out_g(Left)) → U2_g(X1, Left, Right, bin_tree_in_g(Right))
U2_g(X1, Left, Right, bin_tree_out_g(Right)) → bin_tree_out_g(tree(X1, Left, Right))
BIN_TREE_IN_G(tree(X1, Left, Right)) → U1_G(X1, Left, Right, bin_tree_in_g(Left))
BIN_TREE_IN_G(tree(X1, Left, Right)) → BIN_TREE_IN_G(Left)
U1_G(X1, Left, Right, bin_tree_out_g(Left)) → U2_G(X1, Left, Right, bin_tree_in_g(Right))
U1_G(X1, Left, Right, bin_tree_out_g(Left)) → BIN_TREE_IN_G(Right)
bin_tree_in_g(void) → bin_tree_out_g(void)
bin_tree_in_g(tree(X1, Left, Right)) → U1_g(X1, Left, Right, bin_tree_in_g(Left))
U1_g(X1, Left, Right, bin_tree_out_g(Left)) → U2_g(X1, Left, Right, bin_tree_in_g(Right))
U2_g(X1, Left, Right, bin_tree_out_g(Right)) → bin_tree_out_g(tree(X1, Left, Right))