↳ PROLOG
↳ PrologToPiTRSProof
With regard to the inferred argument filtering the predicates were used in the following modes:
f3: (b,b,f)
g3: (b,b,f)
Transforming PROLOG into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:
f_3_in_gga3(A, []_0, RES) -> if_f_3_in_1_gga3(A, RES, g_3_in_gga3(A, []_0, RES))
g_3_in_gga3([]_0, RES, RES) -> g_3_out_gga3([]_0, RES, RES)
g_3_in_gga3(._22(C, Cs), D, RES) -> if_g_3_in_1_gga5(C, Cs, D, RES, g_3_in_gga3(Cs, ._22(C, D), RES))
if_g_3_in_1_gga5(C, Cs, D, RES, g_3_out_gga3(Cs, ._22(C, D), RES)) -> g_3_out_gga3(._22(C, Cs), D, RES)
if_f_3_in_1_gga3(A, RES, g_3_out_gga3(A, []_0, RES)) -> f_3_out_gga3(A, []_0, RES)
f_3_in_gga3(._22(A, As), ._22(B, Bs), RES) -> if_f_3_in_2_gga6(A, As, B, Bs, RES, f_3_in_gga3(._22(B, ._22(A, As)), Bs, RES))
if_f_3_in_2_gga6(A, As, B, Bs, RES, f_3_out_gga3(._22(B, ._22(A, As)), Bs, RES)) -> f_3_out_gga3(._22(A, As), ._22(B, Bs), RES)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of PROLOG
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
f_3_in_gga3(A, []_0, RES) -> if_f_3_in_1_gga3(A, RES, g_3_in_gga3(A, []_0, RES))
g_3_in_gga3([]_0, RES, RES) -> g_3_out_gga3([]_0, RES, RES)
g_3_in_gga3(._22(C, Cs), D, RES) -> if_g_3_in_1_gga5(C, Cs, D, RES, g_3_in_gga3(Cs, ._22(C, D), RES))
if_g_3_in_1_gga5(C, Cs, D, RES, g_3_out_gga3(Cs, ._22(C, D), RES)) -> g_3_out_gga3(._22(C, Cs), D, RES)
if_f_3_in_1_gga3(A, RES, g_3_out_gga3(A, []_0, RES)) -> f_3_out_gga3(A, []_0, RES)
f_3_in_gga3(._22(A, As), ._22(B, Bs), RES) -> if_f_3_in_2_gga6(A, As, B, Bs, RES, f_3_in_gga3(._22(B, ._22(A, As)), Bs, RES))
if_f_3_in_2_gga6(A, As, B, Bs, RES, f_3_out_gga3(._22(B, ._22(A, As)), Bs, RES)) -> f_3_out_gga3(._22(A, As), ._22(B, Bs), RES)
F_3_IN_GGA3(A, []_0, RES) -> IF_F_3_IN_1_GGA3(A, RES, g_3_in_gga3(A, []_0, RES))
F_3_IN_GGA3(A, []_0, RES) -> G_3_IN_GGA3(A, []_0, RES)
G_3_IN_GGA3(._22(C, Cs), D, RES) -> IF_G_3_IN_1_GGA5(C, Cs, D, RES, g_3_in_gga3(Cs, ._22(C, D), RES))
G_3_IN_GGA3(._22(C, Cs), D, RES) -> G_3_IN_GGA3(Cs, ._22(C, D), RES)
F_3_IN_GGA3(._22(A, As), ._22(B, Bs), RES) -> IF_F_3_IN_2_GGA6(A, As, B, Bs, RES, f_3_in_gga3(._22(B, ._22(A, As)), Bs, RES))
F_3_IN_GGA3(._22(A, As), ._22(B, Bs), RES) -> F_3_IN_GGA3(._22(B, ._22(A, As)), Bs, RES)
f_3_in_gga3(A, []_0, RES) -> if_f_3_in_1_gga3(A, RES, g_3_in_gga3(A, []_0, RES))
g_3_in_gga3([]_0, RES, RES) -> g_3_out_gga3([]_0, RES, RES)
g_3_in_gga3(._22(C, Cs), D, RES) -> if_g_3_in_1_gga5(C, Cs, D, RES, g_3_in_gga3(Cs, ._22(C, D), RES))
if_g_3_in_1_gga5(C, Cs, D, RES, g_3_out_gga3(Cs, ._22(C, D), RES)) -> g_3_out_gga3(._22(C, Cs), D, RES)
if_f_3_in_1_gga3(A, RES, g_3_out_gga3(A, []_0, RES)) -> f_3_out_gga3(A, []_0, RES)
f_3_in_gga3(._22(A, As), ._22(B, Bs), RES) -> if_f_3_in_2_gga6(A, As, B, Bs, RES, f_3_in_gga3(._22(B, ._22(A, As)), Bs, RES))
if_f_3_in_2_gga6(A, As, B, Bs, RES, f_3_out_gga3(._22(B, ._22(A, As)), Bs, RES)) -> f_3_out_gga3(._22(A, As), ._22(B, Bs), RES)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
F_3_IN_GGA3(A, []_0, RES) -> IF_F_3_IN_1_GGA3(A, RES, g_3_in_gga3(A, []_0, RES))
F_3_IN_GGA3(A, []_0, RES) -> G_3_IN_GGA3(A, []_0, RES)
G_3_IN_GGA3(._22(C, Cs), D, RES) -> IF_G_3_IN_1_GGA5(C, Cs, D, RES, g_3_in_gga3(Cs, ._22(C, D), RES))
G_3_IN_GGA3(._22(C, Cs), D, RES) -> G_3_IN_GGA3(Cs, ._22(C, D), RES)
F_3_IN_GGA3(._22(A, As), ._22(B, Bs), RES) -> IF_F_3_IN_2_GGA6(A, As, B, Bs, RES, f_3_in_gga3(._22(B, ._22(A, As)), Bs, RES))
F_3_IN_GGA3(._22(A, As), ._22(B, Bs), RES) -> F_3_IN_GGA3(._22(B, ._22(A, As)), Bs, RES)
f_3_in_gga3(A, []_0, RES) -> if_f_3_in_1_gga3(A, RES, g_3_in_gga3(A, []_0, RES))
g_3_in_gga3([]_0, RES, RES) -> g_3_out_gga3([]_0, RES, RES)
g_3_in_gga3(._22(C, Cs), D, RES) -> if_g_3_in_1_gga5(C, Cs, D, RES, g_3_in_gga3(Cs, ._22(C, D), RES))
if_g_3_in_1_gga5(C, Cs, D, RES, g_3_out_gga3(Cs, ._22(C, D), RES)) -> g_3_out_gga3(._22(C, Cs), D, RES)
if_f_3_in_1_gga3(A, RES, g_3_out_gga3(A, []_0, RES)) -> f_3_out_gga3(A, []_0, RES)
f_3_in_gga3(._22(A, As), ._22(B, Bs), RES) -> if_f_3_in_2_gga6(A, As, B, Bs, RES, f_3_in_gga3(._22(B, ._22(A, As)), Bs, RES))
if_f_3_in_2_gga6(A, As, B, Bs, RES, f_3_out_gga3(._22(B, ._22(A, As)), Bs, RES)) -> f_3_out_gga3(._22(A, As), ._22(B, Bs), RES)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
G_3_IN_GGA3(._22(C, Cs), D, RES) -> G_3_IN_GGA3(Cs, ._22(C, D), RES)
f_3_in_gga3(A, []_0, RES) -> if_f_3_in_1_gga3(A, RES, g_3_in_gga3(A, []_0, RES))
g_3_in_gga3([]_0, RES, RES) -> g_3_out_gga3([]_0, RES, RES)
g_3_in_gga3(._22(C, Cs), D, RES) -> if_g_3_in_1_gga5(C, Cs, D, RES, g_3_in_gga3(Cs, ._22(C, D), RES))
if_g_3_in_1_gga5(C, Cs, D, RES, g_3_out_gga3(Cs, ._22(C, D), RES)) -> g_3_out_gga3(._22(C, Cs), D, RES)
if_f_3_in_1_gga3(A, RES, g_3_out_gga3(A, []_0, RES)) -> f_3_out_gga3(A, []_0, RES)
f_3_in_gga3(._22(A, As), ._22(B, Bs), RES) -> if_f_3_in_2_gga6(A, As, B, Bs, RES, f_3_in_gga3(._22(B, ._22(A, As)), Bs, RES))
if_f_3_in_2_gga6(A, As, B, Bs, RES, f_3_out_gga3(._22(B, ._22(A, As)), Bs, RES)) -> f_3_out_gga3(._22(A, As), ._22(B, Bs), RES)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
G_3_IN_GGA3(._22(C, Cs), D, RES) -> G_3_IN_GGA3(Cs, ._22(C, D), RES)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
G_3_IN_GGA2(._22(C, Cs), D) -> G_3_IN_GGA2(Cs, ._22(C, D))
From the DPs we obtained the following set of size-change graphs:
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
F_3_IN_GGA3(._22(A, As), ._22(B, Bs), RES) -> F_3_IN_GGA3(._22(B, ._22(A, As)), Bs, RES)
f_3_in_gga3(A, []_0, RES) -> if_f_3_in_1_gga3(A, RES, g_3_in_gga3(A, []_0, RES))
g_3_in_gga3([]_0, RES, RES) -> g_3_out_gga3([]_0, RES, RES)
g_3_in_gga3(._22(C, Cs), D, RES) -> if_g_3_in_1_gga5(C, Cs, D, RES, g_3_in_gga3(Cs, ._22(C, D), RES))
if_g_3_in_1_gga5(C, Cs, D, RES, g_3_out_gga3(Cs, ._22(C, D), RES)) -> g_3_out_gga3(._22(C, Cs), D, RES)
if_f_3_in_1_gga3(A, RES, g_3_out_gga3(A, []_0, RES)) -> f_3_out_gga3(A, []_0, RES)
f_3_in_gga3(._22(A, As), ._22(B, Bs), RES) -> if_f_3_in_2_gga6(A, As, B, Bs, RES, f_3_in_gga3(._22(B, ._22(A, As)), Bs, RES))
if_f_3_in_2_gga6(A, As, B, Bs, RES, f_3_out_gga3(._22(B, ._22(A, As)), Bs, RES)) -> f_3_out_gga3(._22(A, As), ._22(B, Bs), RES)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
F_3_IN_GGA3(._22(A, As), ._22(B, Bs), RES) -> F_3_IN_GGA3(._22(B, ._22(A, As)), Bs, RES)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
F_3_IN_GGA2(._22(A, As), ._22(B, Bs)) -> F_3_IN_GGA2(._22(B, ._22(A, As)), Bs)
From the DPs we obtained the following set of size-change graphs: