↳ PROLOG
↳ PrologToPiTRSProof
With regard to the inferred argument filtering the predicates were used in the following modes:
fib2: (b,f)
add3: (b,b,f)
Transforming PROLOG into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:
fib_2_in_ga2(0_0, 0_0) -> fib_2_out_ga2(0_0, 0_0)
fib_2_in_ga2(s_11(0_0), s_11(0_0)) -> fib_2_out_ga2(s_11(0_0), s_11(0_0))
fib_2_in_ga2(s_11(s_11(X)), N) -> if_fib_2_in_1_ga3(X, N, fib_2_in_ga2(s_11(X), N1))
if_fib_2_in_1_ga3(X, N, fib_2_out_ga2(s_11(X), N1)) -> if_fib_2_in_2_ga4(X, N, N1, fib_2_in_ga2(X, N2))
if_fib_2_in_2_ga4(X, N, N1, fib_2_out_ga2(X, N2)) -> if_fib_2_in_3_ga5(X, N, N1, N2, add_3_in_gga3(N1, N2, N))
add_3_in_gga3(0_0, 0_0, 0_0) -> add_3_out_gga3(0_0, 0_0, 0_0)
add_3_in_gga3(s_11(X), Y, s_11(N)) -> if_add_3_in_1_gga4(X, Y, N, add_3_in_gga3(X, Y, N))
add_3_in_gga3(X, s_11(Y), s_11(N)) -> if_add_3_in_2_gga4(X, Y, N, add_3_in_gga3(X, Y, N))
if_add_3_in_2_gga4(X, Y, N, add_3_out_gga3(X, Y, N)) -> add_3_out_gga3(X, s_11(Y), s_11(N))
if_add_3_in_1_gga4(X, Y, N, add_3_out_gga3(X, Y, N)) -> add_3_out_gga3(s_11(X), Y, s_11(N))
if_fib_2_in_3_ga5(X, N, N1, N2, add_3_out_gga3(N1, N2, N)) -> fib_2_out_ga2(s_11(s_11(X)), N)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of PROLOG
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
fib_2_in_ga2(0_0, 0_0) -> fib_2_out_ga2(0_0, 0_0)
fib_2_in_ga2(s_11(0_0), s_11(0_0)) -> fib_2_out_ga2(s_11(0_0), s_11(0_0))
fib_2_in_ga2(s_11(s_11(X)), N) -> if_fib_2_in_1_ga3(X, N, fib_2_in_ga2(s_11(X), N1))
if_fib_2_in_1_ga3(X, N, fib_2_out_ga2(s_11(X), N1)) -> if_fib_2_in_2_ga4(X, N, N1, fib_2_in_ga2(X, N2))
if_fib_2_in_2_ga4(X, N, N1, fib_2_out_ga2(X, N2)) -> if_fib_2_in_3_ga5(X, N, N1, N2, add_3_in_gga3(N1, N2, N))
add_3_in_gga3(0_0, 0_0, 0_0) -> add_3_out_gga3(0_0, 0_0, 0_0)
add_3_in_gga3(s_11(X), Y, s_11(N)) -> if_add_3_in_1_gga4(X, Y, N, add_3_in_gga3(X, Y, N))
add_3_in_gga3(X, s_11(Y), s_11(N)) -> if_add_3_in_2_gga4(X, Y, N, add_3_in_gga3(X, Y, N))
if_add_3_in_2_gga4(X, Y, N, add_3_out_gga3(X, Y, N)) -> add_3_out_gga3(X, s_11(Y), s_11(N))
if_add_3_in_1_gga4(X, Y, N, add_3_out_gga3(X, Y, N)) -> add_3_out_gga3(s_11(X), Y, s_11(N))
if_fib_2_in_3_ga5(X, N, N1, N2, add_3_out_gga3(N1, N2, N)) -> fib_2_out_ga2(s_11(s_11(X)), N)
FIB_2_IN_GA2(s_11(s_11(X)), N) -> IF_FIB_2_IN_1_GA3(X, N, fib_2_in_ga2(s_11(X), N1))
FIB_2_IN_GA2(s_11(s_11(X)), N) -> FIB_2_IN_GA2(s_11(X), N1)
IF_FIB_2_IN_1_GA3(X, N, fib_2_out_ga2(s_11(X), N1)) -> IF_FIB_2_IN_2_GA4(X, N, N1, fib_2_in_ga2(X, N2))
IF_FIB_2_IN_1_GA3(X, N, fib_2_out_ga2(s_11(X), N1)) -> FIB_2_IN_GA2(X, N2)
IF_FIB_2_IN_2_GA4(X, N, N1, fib_2_out_ga2(X, N2)) -> IF_FIB_2_IN_3_GA5(X, N, N1, N2, add_3_in_gga3(N1, N2, N))
IF_FIB_2_IN_2_GA4(X, N, N1, fib_2_out_ga2(X, N2)) -> ADD_3_IN_GGA3(N1, N2, N)
ADD_3_IN_GGA3(s_11(X), Y, s_11(N)) -> IF_ADD_3_IN_1_GGA4(X, Y, N, add_3_in_gga3(X, Y, N))
ADD_3_IN_GGA3(s_11(X), Y, s_11(N)) -> ADD_3_IN_GGA3(X, Y, N)
ADD_3_IN_GGA3(X, s_11(Y), s_11(N)) -> IF_ADD_3_IN_2_GGA4(X, Y, N, add_3_in_gga3(X, Y, N))
ADD_3_IN_GGA3(X, s_11(Y), s_11(N)) -> ADD_3_IN_GGA3(X, Y, N)
fib_2_in_ga2(0_0, 0_0) -> fib_2_out_ga2(0_0, 0_0)
fib_2_in_ga2(s_11(0_0), s_11(0_0)) -> fib_2_out_ga2(s_11(0_0), s_11(0_0))
fib_2_in_ga2(s_11(s_11(X)), N) -> if_fib_2_in_1_ga3(X, N, fib_2_in_ga2(s_11(X), N1))
if_fib_2_in_1_ga3(X, N, fib_2_out_ga2(s_11(X), N1)) -> if_fib_2_in_2_ga4(X, N, N1, fib_2_in_ga2(X, N2))
if_fib_2_in_2_ga4(X, N, N1, fib_2_out_ga2(X, N2)) -> if_fib_2_in_3_ga5(X, N, N1, N2, add_3_in_gga3(N1, N2, N))
add_3_in_gga3(0_0, 0_0, 0_0) -> add_3_out_gga3(0_0, 0_0, 0_0)
add_3_in_gga3(s_11(X), Y, s_11(N)) -> if_add_3_in_1_gga4(X, Y, N, add_3_in_gga3(X, Y, N))
add_3_in_gga3(X, s_11(Y), s_11(N)) -> if_add_3_in_2_gga4(X, Y, N, add_3_in_gga3(X, Y, N))
if_add_3_in_2_gga4(X, Y, N, add_3_out_gga3(X, Y, N)) -> add_3_out_gga3(X, s_11(Y), s_11(N))
if_add_3_in_1_gga4(X, Y, N, add_3_out_gga3(X, Y, N)) -> add_3_out_gga3(s_11(X), Y, s_11(N))
if_fib_2_in_3_ga5(X, N, N1, N2, add_3_out_gga3(N1, N2, N)) -> fib_2_out_ga2(s_11(s_11(X)), N)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
FIB_2_IN_GA2(s_11(s_11(X)), N) -> IF_FIB_2_IN_1_GA3(X, N, fib_2_in_ga2(s_11(X), N1))
FIB_2_IN_GA2(s_11(s_11(X)), N) -> FIB_2_IN_GA2(s_11(X), N1)
IF_FIB_2_IN_1_GA3(X, N, fib_2_out_ga2(s_11(X), N1)) -> IF_FIB_2_IN_2_GA4(X, N, N1, fib_2_in_ga2(X, N2))
IF_FIB_2_IN_1_GA3(X, N, fib_2_out_ga2(s_11(X), N1)) -> FIB_2_IN_GA2(X, N2)
IF_FIB_2_IN_2_GA4(X, N, N1, fib_2_out_ga2(X, N2)) -> IF_FIB_2_IN_3_GA5(X, N, N1, N2, add_3_in_gga3(N1, N2, N))
IF_FIB_2_IN_2_GA4(X, N, N1, fib_2_out_ga2(X, N2)) -> ADD_3_IN_GGA3(N1, N2, N)
ADD_3_IN_GGA3(s_11(X), Y, s_11(N)) -> IF_ADD_3_IN_1_GGA4(X, Y, N, add_3_in_gga3(X, Y, N))
ADD_3_IN_GGA3(s_11(X), Y, s_11(N)) -> ADD_3_IN_GGA3(X, Y, N)
ADD_3_IN_GGA3(X, s_11(Y), s_11(N)) -> IF_ADD_3_IN_2_GGA4(X, Y, N, add_3_in_gga3(X, Y, N))
ADD_3_IN_GGA3(X, s_11(Y), s_11(N)) -> ADD_3_IN_GGA3(X, Y, N)
fib_2_in_ga2(0_0, 0_0) -> fib_2_out_ga2(0_0, 0_0)
fib_2_in_ga2(s_11(0_0), s_11(0_0)) -> fib_2_out_ga2(s_11(0_0), s_11(0_0))
fib_2_in_ga2(s_11(s_11(X)), N) -> if_fib_2_in_1_ga3(X, N, fib_2_in_ga2(s_11(X), N1))
if_fib_2_in_1_ga3(X, N, fib_2_out_ga2(s_11(X), N1)) -> if_fib_2_in_2_ga4(X, N, N1, fib_2_in_ga2(X, N2))
if_fib_2_in_2_ga4(X, N, N1, fib_2_out_ga2(X, N2)) -> if_fib_2_in_3_ga5(X, N, N1, N2, add_3_in_gga3(N1, N2, N))
add_3_in_gga3(0_0, 0_0, 0_0) -> add_3_out_gga3(0_0, 0_0, 0_0)
add_3_in_gga3(s_11(X), Y, s_11(N)) -> if_add_3_in_1_gga4(X, Y, N, add_3_in_gga3(X, Y, N))
add_3_in_gga3(X, s_11(Y), s_11(N)) -> if_add_3_in_2_gga4(X, Y, N, add_3_in_gga3(X, Y, N))
if_add_3_in_2_gga4(X, Y, N, add_3_out_gga3(X, Y, N)) -> add_3_out_gga3(X, s_11(Y), s_11(N))
if_add_3_in_1_gga4(X, Y, N, add_3_out_gga3(X, Y, N)) -> add_3_out_gga3(s_11(X), Y, s_11(N))
if_fib_2_in_3_ga5(X, N, N1, N2, add_3_out_gga3(N1, N2, N)) -> fib_2_out_ga2(s_11(s_11(X)), N)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
ADD_3_IN_GGA3(s_11(X), Y, s_11(N)) -> ADD_3_IN_GGA3(X, Y, N)
ADD_3_IN_GGA3(X, s_11(Y), s_11(N)) -> ADD_3_IN_GGA3(X, Y, N)
fib_2_in_ga2(0_0, 0_0) -> fib_2_out_ga2(0_0, 0_0)
fib_2_in_ga2(s_11(0_0), s_11(0_0)) -> fib_2_out_ga2(s_11(0_0), s_11(0_0))
fib_2_in_ga2(s_11(s_11(X)), N) -> if_fib_2_in_1_ga3(X, N, fib_2_in_ga2(s_11(X), N1))
if_fib_2_in_1_ga3(X, N, fib_2_out_ga2(s_11(X), N1)) -> if_fib_2_in_2_ga4(X, N, N1, fib_2_in_ga2(X, N2))
if_fib_2_in_2_ga4(X, N, N1, fib_2_out_ga2(X, N2)) -> if_fib_2_in_3_ga5(X, N, N1, N2, add_3_in_gga3(N1, N2, N))
add_3_in_gga3(0_0, 0_0, 0_0) -> add_3_out_gga3(0_0, 0_0, 0_0)
add_3_in_gga3(s_11(X), Y, s_11(N)) -> if_add_3_in_1_gga4(X, Y, N, add_3_in_gga3(X, Y, N))
add_3_in_gga3(X, s_11(Y), s_11(N)) -> if_add_3_in_2_gga4(X, Y, N, add_3_in_gga3(X, Y, N))
if_add_3_in_2_gga4(X, Y, N, add_3_out_gga3(X, Y, N)) -> add_3_out_gga3(X, s_11(Y), s_11(N))
if_add_3_in_1_gga4(X, Y, N, add_3_out_gga3(X, Y, N)) -> add_3_out_gga3(s_11(X), Y, s_11(N))
if_fib_2_in_3_ga5(X, N, N1, N2, add_3_out_gga3(N1, N2, N)) -> fib_2_out_ga2(s_11(s_11(X)), N)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
ADD_3_IN_GGA3(s_11(X), Y, s_11(N)) -> ADD_3_IN_GGA3(X, Y, N)
ADD_3_IN_GGA3(X, s_11(Y), s_11(N)) -> ADD_3_IN_GGA3(X, Y, N)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
ADD_3_IN_GGA2(s_11(X), Y) -> ADD_3_IN_GGA2(X, Y)
ADD_3_IN_GGA2(X, s_11(Y)) -> ADD_3_IN_GGA2(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
IF_FIB_2_IN_1_GA3(X, N, fib_2_out_ga2(s_11(X), N1)) -> FIB_2_IN_GA2(X, N2)
FIB_2_IN_GA2(s_11(s_11(X)), N) -> FIB_2_IN_GA2(s_11(X), N1)
FIB_2_IN_GA2(s_11(s_11(X)), N) -> IF_FIB_2_IN_1_GA3(X, N, fib_2_in_ga2(s_11(X), N1))
fib_2_in_ga2(0_0, 0_0) -> fib_2_out_ga2(0_0, 0_0)
fib_2_in_ga2(s_11(0_0), s_11(0_0)) -> fib_2_out_ga2(s_11(0_0), s_11(0_0))
fib_2_in_ga2(s_11(s_11(X)), N) -> if_fib_2_in_1_ga3(X, N, fib_2_in_ga2(s_11(X), N1))
if_fib_2_in_1_ga3(X, N, fib_2_out_ga2(s_11(X), N1)) -> if_fib_2_in_2_ga4(X, N, N1, fib_2_in_ga2(X, N2))
if_fib_2_in_2_ga4(X, N, N1, fib_2_out_ga2(X, N2)) -> if_fib_2_in_3_ga5(X, N, N1, N2, add_3_in_gga3(N1, N2, N))
add_3_in_gga3(0_0, 0_0, 0_0) -> add_3_out_gga3(0_0, 0_0, 0_0)
add_3_in_gga3(s_11(X), Y, s_11(N)) -> if_add_3_in_1_gga4(X, Y, N, add_3_in_gga3(X, Y, N))
add_3_in_gga3(X, s_11(Y), s_11(N)) -> if_add_3_in_2_gga4(X, Y, N, add_3_in_gga3(X, Y, N))
if_add_3_in_2_gga4(X, Y, N, add_3_out_gga3(X, Y, N)) -> add_3_out_gga3(X, s_11(Y), s_11(N))
if_add_3_in_1_gga4(X, Y, N, add_3_out_gga3(X, Y, N)) -> add_3_out_gga3(s_11(X), Y, s_11(N))
if_fib_2_in_3_ga5(X, N, N1, N2, add_3_out_gga3(N1, N2, N)) -> fib_2_out_ga2(s_11(s_11(X)), N)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
IF_FIB_2_IN_1_GA2(X, fib_2_out_ga1(N1)) -> FIB_2_IN_GA1(X)
FIB_2_IN_GA1(s_11(s_11(X))) -> FIB_2_IN_GA1(s_11(X))
FIB_2_IN_GA1(s_11(s_11(X))) -> IF_FIB_2_IN_1_GA2(X, fib_2_in_ga1(s_11(X)))
fib_2_in_ga1(0_0) -> fib_2_out_ga1(0_0)
fib_2_in_ga1(s_11(0_0)) -> fib_2_out_ga1(s_11(0_0))
fib_2_in_ga1(s_11(s_11(X))) -> if_fib_2_in_1_ga2(X, fib_2_in_ga1(s_11(X)))
if_fib_2_in_1_ga2(X, fib_2_out_ga1(N1)) -> if_fib_2_in_2_ga2(N1, fib_2_in_ga1(X))
if_fib_2_in_2_ga2(N1, fib_2_out_ga1(N2)) -> if_fib_2_in_3_ga1(add_3_in_gga2(N1, N2))
add_3_in_gga2(0_0, 0_0) -> add_3_out_gga1(0_0)
add_3_in_gga2(s_11(X), Y) -> if_add_3_in_1_gga1(add_3_in_gga2(X, Y))
add_3_in_gga2(X, s_11(Y)) -> if_add_3_in_2_gga1(add_3_in_gga2(X, Y))
if_add_3_in_2_gga1(add_3_out_gga1(N)) -> add_3_out_gga1(s_11(N))
if_add_3_in_1_gga1(add_3_out_gga1(N)) -> add_3_out_gga1(s_11(N))
if_fib_2_in_3_ga1(add_3_out_gga1(N)) -> fib_2_out_ga1(N)
fib_2_in_ga1(x0)
if_fib_2_in_1_ga2(x0, x1)
if_fib_2_in_2_ga2(x0, x1)
add_3_in_gga2(x0, x1)
if_add_3_in_2_gga1(x0)
if_add_3_in_1_gga1(x0)
if_fib_2_in_3_ga1(x0)
From the DPs we obtained the following set of size-change graphs: