↳ PROLOG
↳ PrologToPiTRSProof
With regard to the inferred argument filtering the predicates were used in the following modes:
palindrome1: (b)
reverse2: (b,b)
reverse3: (b,b,b)
Transforming PROLOG into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:
palindrome_1_in_g1(Xs) -> if_palindrome_1_in_1_g2(Xs, reverse_2_in_gg2(Xs, Xs))
reverse_2_in_gg2(X1s, X2s) -> if_reverse_2_in_1_gg3(X1s, X2s, reverse_3_in_ggg3(X1s, []_0, X2s))
reverse_3_in_ggg3([]_0, Xs, Xs) -> reverse_3_out_ggg3([]_0, Xs, Xs)
reverse_3_in_ggg3(._22(X, X1s), X2s, Ys) -> if_reverse_3_in_1_ggg5(X, X1s, X2s, Ys, reverse_3_in_ggg3(X1s, ._22(X, X2s), Ys))
if_reverse_3_in_1_ggg5(X, X1s, X2s, Ys, reverse_3_out_ggg3(X1s, ._22(X, X2s), Ys)) -> reverse_3_out_ggg3(._22(X, X1s), X2s, Ys)
if_reverse_2_in_1_gg3(X1s, X2s, reverse_3_out_ggg3(X1s, []_0, X2s)) -> reverse_2_out_gg2(X1s, X2s)
if_palindrome_1_in_1_g2(Xs, reverse_2_out_gg2(Xs, Xs)) -> palindrome_1_out_g1(Xs)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of PROLOG
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
palindrome_1_in_g1(Xs) -> if_palindrome_1_in_1_g2(Xs, reverse_2_in_gg2(Xs, Xs))
reverse_2_in_gg2(X1s, X2s) -> if_reverse_2_in_1_gg3(X1s, X2s, reverse_3_in_ggg3(X1s, []_0, X2s))
reverse_3_in_ggg3([]_0, Xs, Xs) -> reverse_3_out_ggg3([]_0, Xs, Xs)
reverse_3_in_ggg3(._22(X, X1s), X2s, Ys) -> if_reverse_3_in_1_ggg5(X, X1s, X2s, Ys, reverse_3_in_ggg3(X1s, ._22(X, X2s), Ys))
if_reverse_3_in_1_ggg5(X, X1s, X2s, Ys, reverse_3_out_ggg3(X1s, ._22(X, X2s), Ys)) -> reverse_3_out_ggg3(._22(X, X1s), X2s, Ys)
if_reverse_2_in_1_gg3(X1s, X2s, reverse_3_out_ggg3(X1s, []_0, X2s)) -> reverse_2_out_gg2(X1s, X2s)
if_palindrome_1_in_1_g2(Xs, reverse_2_out_gg2(Xs, Xs)) -> palindrome_1_out_g1(Xs)
PALINDROME_1_IN_G1(Xs) -> IF_PALINDROME_1_IN_1_G2(Xs, reverse_2_in_gg2(Xs, Xs))
PALINDROME_1_IN_G1(Xs) -> REVERSE_2_IN_GG2(Xs, Xs)
REVERSE_2_IN_GG2(X1s, X2s) -> IF_REVERSE_2_IN_1_GG3(X1s, X2s, reverse_3_in_ggg3(X1s, []_0, X2s))
REVERSE_2_IN_GG2(X1s, X2s) -> REVERSE_3_IN_GGG3(X1s, []_0, X2s)
REVERSE_3_IN_GGG3(._22(X, X1s), X2s, Ys) -> IF_REVERSE_3_IN_1_GGG5(X, X1s, X2s, Ys, reverse_3_in_ggg3(X1s, ._22(X, X2s), Ys))
REVERSE_3_IN_GGG3(._22(X, X1s), X2s, Ys) -> REVERSE_3_IN_GGG3(X1s, ._22(X, X2s), Ys)
palindrome_1_in_g1(Xs) -> if_palindrome_1_in_1_g2(Xs, reverse_2_in_gg2(Xs, Xs))
reverse_2_in_gg2(X1s, X2s) -> if_reverse_2_in_1_gg3(X1s, X2s, reverse_3_in_ggg3(X1s, []_0, X2s))
reverse_3_in_ggg3([]_0, Xs, Xs) -> reverse_3_out_ggg3([]_0, Xs, Xs)
reverse_3_in_ggg3(._22(X, X1s), X2s, Ys) -> if_reverse_3_in_1_ggg5(X, X1s, X2s, Ys, reverse_3_in_ggg3(X1s, ._22(X, X2s), Ys))
if_reverse_3_in_1_ggg5(X, X1s, X2s, Ys, reverse_3_out_ggg3(X1s, ._22(X, X2s), Ys)) -> reverse_3_out_ggg3(._22(X, X1s), X2s, Ys)
if_reverse_2_in_1_gg3(X1s, X2s, reverse_3_out_ggg3(X1s, []_0, X2s)) -> reverse_2_out_gg2(X1s, X2s)
if_palindrome_1_in_1_g2(Xs, reverse_2_out_gg2(Xs, Xs)) -> palindrome_1_out_g1(Xs)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
PALINDROME_1_IN_G1(Xs) -> IF_PALINDROME_1_IN_1_G2(Xs, reverse_2_in_gg2(Xs, Xs))
PALINDROME_1_IN_G1(Xs) -> REVERSE_2_IN_GG2(Xs, Xs)
REVERSE_2_IN_GG2(X1s, X2s) -> IF_REVERSE_2_IN_1_GG3(X1s, X2s, reverse_3_in_ggg3(X1s, []_0, X2s))
REVERSE_2_IN_GG2(X1s, X2s) -> REVERSE_3_IN_GGG3(X1s, []_0, X2s)
REVERSE_3_IN_GGG3(._22(X, X1s), X2s, Ys) -> IF_REVERSE_3_IN_1_GGG5(X, X1s, X2s, Ys, reverse_3_in_ggg3(X1s, ._22(X, X2s), Ys))
REVERSE_3_IN_GGG3(._22(X, X1s), X2s, Ys) -> REVERSE_3_IN_GGG3(X1s, ._22(X, X2s), Ys)
palindrome_1_in_g1(Xs) -> if_palindrome_1_in_1_g2(Xs, reverse_2_in_gg2(Xs, Xs))
reverse_2_in_gg2(X1s, X2s) -> if_reverse_2_in_1_gg3(X1s, X2s, reverse_3_in_ggg3(X1s, []_0, X2s))
reverse_3_in_ggg3([]_0, Xs, Xs) -> reverse_3_out_ggg3([]_0, Xs, Xs)
reverse_3_in_ggg3(._22(X, X1s), X2s, Ys) -> if_reverse_3_in_1_ggg5(X, X1s, X2s, Ys, reverse_3_in_ggg3(X1s, ._22(X, X2s), Ys))
if_reverse_3_in_1_ggg5(X, X1s, X2s, Ys, reverse_3_out_ggg3(X1s, ._22(X, X2s), Ys)) -> reverse_3_out_ggg3(._22(X, X1s), X2s, Ys)
if_reverse_2_in_1_gg3(X1s, X2s, reverse_3_out_ggg3(X1s, []_0, X2s)) -> reverse_2_out_gg2(X1s, X2s)
if_palindrome_1_in_1_g2(Xs, reverse_2_out_gg2(Xs, Xs)) -> palindrome_1_out_g1(Xs)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
REVERSE_3_IN_GGG3(._22(X, X1s), X2s, Ys) -> REVERSE_3_IN_GGG3(X1s, ._22(X, X2s), Ys)
palindrome_1_in_g1(Xs) -> if_palindrome_1_in_1_g2(Xs, reverse_2_in_gg2(Xs, Xs))
reverse_2_in_gg2(X1s, X2s) -> if_reverse_2_in_1_gg3(X1s, X2s, reverse_3_in_ggg3(X1s, []_0, X2s))
reverse_3_in_ggg3([]_0, Xs, Xs) -> reverse_3_out_ggg3([]_0, Xs, Xs)
reverse_3_in_ggg3(._22(X, X1s), X2s, Ys) -> if_reverse_3_in_1_ggg5(X, X1s, X2s, Ys, reverse_3_in_ggg3(X1s, ._22(X, X2s), Ys))
if_reverse_3_in_1_ggg5(X, X1s, X2s, Ys, reverse_3_out_ggg3(X1s, ._22(X, X2s), Ys)) -> reverse_3_out_ggg3(._22(X, X1s), X2s, Ys)
if_reverse_2_in_1_gg3(X1s, X2s, reverse_3_out_ggg3(X1s, []_0, X2s)) -> reverse_2_out_gg2(X1s, X2s)
if_palindrome_1_in_1_g2(Xs, reverse_2_out_gg2(Xs, Xs)) -> palindrome_1_out_g1(Xs)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
REVERSE_3_IN_GGG3(._22(X, X1s), X2s, Ys) -> REVERSE_3_IN_GGG3(X1s, ._22(X, X2s), Ys)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
REVERSE_3_IN_GGG3(._22(X, X1s), X2s, Ys) -> REVERSE_3_IN_GGG3(X1s, ._22(X, X2s), Ys)
From the DPs we obtained the following set of size-change graphs: