↳ PROLOG
↳ PrologToPiTRSProof
With regard to the inferred argument filtering the predicates were used in the following modes:
reverse2: (b,f)
reverse3: (b,b,f)
Transforming PROLOG into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:
reverse_2_in_ga2(X1s, X2s) -> if_reverse_2_in_1_ga3(X1s, X2s, reverse_3_in_gga3(X1s, []_0, X2s))
reverse_3_in_gga3([]_0, Xs, Xs) -> reverse_3_out_gga3([]_0, Xs, Xs)
reverse_3_in_gga3(._22(X, X1s), X2s, Ys) -> if_reverse_3_in_1_gga5(X, X1s, X2s, Ys, reverse_3_in_gga3(X1s, ._22(X, X2s), Ys))
if_reverse_3_in_1_gga5(X, X1s, X2s, Ys, reverse_3_out_gga3(X1s, ._22(X, X2s), Ys)) -> reverse_3_out_gga3(._22(X, X1s), X2s, Ys)
if_reverse_2_in_1_ga3(X1s, X2s, reverse_3_out_gga3(X1s, []_0, X2s)) -> reverse_2_out_ga2(X1s, X2s)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of PROLOG
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
reverse_2_in_ga2(X1s, X2s) -> if_reverse_2_in_1_ga3(X1s, X2s, reverse_3_in_gga3(X1s, []_0, X2s))
reverse_3_in_gga3([]_0, Xs, Xs) -> reverse_3_out_gga3([]_0, Xs, Xs)
reverse_3_in_gga3(._22(X, X1s), X2s, Ys) -> if_reverse_3_in_1_gga5(X, X1s, X2s, Ys, reverse_3_in_gga3(X1s, ._22(X, X2s), Ys))
if_reverse_3_in_1_gga5(X, X1s, X2s, Ys, reverse_3_out_gga3(X1s, ._22(X, X2s), Ys)) -> reverse_3_out_gga3(._22(X, X1s), X2s, Ys)
if_reverse_2_in_1_ga3(X1s, X2s, reverse_3_out_gga3(X1s, []_0, X2s)) -> reverse_2_out_ga2(X1s, X2s)
REVERSE_2_IN_GA2(X1s, X2s) -> IF_REVERSE_2_IN_1_GA3(X1s, X2s, reverse_3_in_gga3(X1s, []_0, X2s))
REVERSE_2_IN_GA2(X1s, X2s) -> REVERSE_3_IN_GGA3(X1s, []_0, X2s)
REVERSE_3_IN_GGA3(._22(X, X1s), X2s, Ys) -> IF_REVERSE_3_IN_1_GGA5(X, X1s, X2s, Ys, reverse_3_in_gga3(X1s, ._22(X, X2s), Ys))
REVERSE_3_IN_GGA3(._22(X, X1s), X2s, Ys) -> REVERSE_3_IN_GGA3(X1s, ._22(X, X2s), Ys)
reverse_2_in_ga2(X1s, X2s) -> if_reverse_2_in_1_ga3(X1s, X2s, reverse_3_in_gga3(X1s, []_0, X2s))
reverse_3_in_gga3([]_0, Xs, Xs) -> reverse_3_out_gga3([]_0, Xs, Xs)
reverse_3_in_gga3(._22(X, X1s), X2s, Ys) -> if_reverse_3_in_1_gga5(X, X1s, X2s, Ys, reverse_3_in_gga3(X1s, ._22(X, X2s), Ys))
if_reverse_3_in_1_gga5(X, X1s, X2s, Ys, reverse_3_out_gga3(X1s, ._22(X, X2s), Ys)) -> reverse_3_out_gga3(._22(X, X1s), X2s, Ys)
if_reverse_2_in_1_ga3(X1s, X2s, reverse_3_out_gga3(X1s, []_0, X2s)) -> reverse_2_out_ga2(X1s, X2s)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
REVERSE_2_IN_GA2(X1s, X2s) -> IF_REVERSE_2_IN_1_GA3(X1s, X2s, reverse_3_in_gga3(X1s, []_0, X2s))
REVERSE_2_IN_GA2(X1s, X2s) -> REVERSE_3_IN_GGA3(X1s, []_0, X2s)
REVERSE_3_IN_GGA3(._22(X, X1s), X2s, Ys) -> IF_REVERSE_3_IN_1_GGA5(X, X1s, X2s, Ys, reverse_3_in_gga3(X1s, ._22(X, X2s), Ys))
REVERSE_3_IN_GGA3(._22(X, X1s), X2s, Ys) -> REVERSE_3_IN_GGA3(X1s, ._22(X, X2s), Ys)
reverse_2_in_ga2(X1s, X2s) -> if_reverse_2_in_1_ga3(X1s, X2s, reverse_3_in_gga3(X1s, []_0, X2s))
reverse_3_in_gga3([]_0, Xs, Xs) -> reverse_3_out_gga3([]_0, Xs, Xs)
reverse_3_in_gga3(._22(X, X1s), X2s, Ys) -> if_reverse_3_in_1_gga5(X, X1s, X2s, Ys, reverse_3_in_gga3(X1s, ._22(X, X2s), Ys))
if_reverse_3_in_1_gga5(X, X1s, X2s, Ys, reverse_3_out_gga3(X1s, ._22(X, X2s), Ys)) -> reverse_3_out_gga3(._22(X, X1s), X2s, Ys)
if_reverse_2_in_1_ga3(X1s, X2s, reverse_3_out_gga3(X1s, []_0, X2s)) -> reverse_2_out_ga2(X1s, X2s)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
REVERSE_3_IN_GGA3(._22(X, X1s), X2s, Ys) -> REVERSE_3_IN_GGA3(X1s, ._22(X, X2s), Ys)
reverse_2_in_ga2(X1s, X2s) -> if_reverse_2_in_1_ga3(X1s, X2s, reverse_3_in_gga3(X1s, []_0, X2s))
reverse_3_in_gga3([]_0, Xs, Xs) -> reverse_3_out_gga3([]_0, Xs, Xs)
reverse_3_in_gga3(._22(X, X1s), X2s, Ys) -> if_reverse_3_in_1_gga5(X, X1s, X2s, Ys, reverse_3_in_gga3(X1s, ._22(X, X2s), Ys))
if_reverse_3_in_1_gga5(X, X1s, X2s, Ys, reverse_3_out_gga3(X1s, ._22(X, X2s), Ys)) -> reverse_3_out_gga3(._22(X, X1s), X2s, Ys)
if_reverse_2_in_1_ga3(X1s, X2s, reverse_3_out_gga3(X1s, []_0, X2s)) -> reverse_2_out_ga2(X1s, X2s)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
REVERSE_3_IN_GGA3(._22(X, X1s), X2s, Ys) -> REVERSE_3_IN_GGA3(X1s, ._22(X, X2s), Ys)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
REVERSE_3_IN_GGA2(._22(X, X1s), X2s) -> REVERSE_3_IN_GGA2(X1s, ._22(X, X2s))
From the DPs we obtained the following set of size-change graphs: