↳ PROLOG
↳ PrologToPiTRSProof
With regard to the inferred argument filtering the predicates were used in the following modes:
perm2: (b,f)
insert3: (b,b,f)
Transforming PROLOG into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:
perm_2_in_ga2([]_0, []_0) -> perm_2_out_ga2([]_0, []_0)
perm_2_in_ga2(._22(X, L), Z) -> if_perm_2_in_1_ga4(X, L, Z, perm_2_in_ga2(L, Y))
if_perm_2_in_1_ga4(X, L, Z, perm_2_out_ga2(L, Y)) -> if_perm_2_in_2_ga5(X, L, Z, Y, insert_3_in_gga3(X, Y, Z))
insert_3_in_gga3(X, []_0, ._22(X, []_0)) -> insert_3_out_gga3(X, []_0, ._22(X, []_0))
insert_3_in_gga3(X, L, ._22(X, L)) -> insert_3_out_gga3(X, L, ._22(X, L))
insert_3_in_gga3(X, ._22(H, L1), ._22(H, L2)) -> if_insert_3_in_1_gga5(X, H, L1, L2, insert_3_in_gga3(X, L1, L2))
if_insert_3_in_1_gga5(X, H, L1, L2, insert_3_out_gga3(X, L1, L2)) -> insert_3_out_gga3(X, ._22(H, L1), ._22(H, L2))
if_perm_2_in_2_ga5(X, L, Z, Y, insert_3_out_gga3(X, Y, Z)) -> perm_2_out_ga2(._22(X, L), Z)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of PROLOG
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
perm_2_in_ga2([]_0, []_0) -> perm_2_out_ga2([]_0, []_0)
perm_2_in_ga2(._22(X, L), Z) -> if_perm_2_in_1_ga4(X, L, Z, perm_2_in_ga2(L, Y))
if_perm_2_in_1_ga4(X, L, Z, perm_2_out_ga2(L, Y)) -> if_perm_2_in_2_ga5(X, L, Z, Y, insert_3_in_gga3(X, Y, Z))
insert_3_in_gga3(X, []_0, ._22(X, []_0)) -> insert_3_out_gga3(X, []_0, ._22(X, []_0))
insert_3_in_gga3(X, L, ._22(X, L)) -> insert_3_out_gga3(X, L, ._22(X, L))
insert_3_in_gga3(X, ._22(H, L1), ._22(H, L2)) -> if_insert_3_in_1_gga5(X, H, L1, L2, insert_3_in_gga3(X, L1, L2))
if_insert_3_in_1_gga5(X, H, L1, L2, insert_3_out_gga3(X, L1, L2)) -> insert_3_out_gga3(X, ._22(H, L1), ._22(H, L2))
if_perm_2_in_2_ga5(X, L, Z, Y, insert_3_out_gga3(X, Y, Z)) -> perm_2_out_ga2(._22(X, L), Z)
PERM_2_IN_GA2(._22(X, L), Z) -> IF_PERM_2_IN_1_GA4(X, L, Z, perm_2_in_ga2(L, Y))
PERM_2_IN_GA2(._22(X, L), Z) -> PERM_2_IN_GA2(L, Y)
IF_PERM_2_IN_1_GA4(X, L, Z, perm_2_out_ga2(L, Y)) -> IF_PERM_2_IN_2_GA5(X, L, Z, Y, insert_3_in_gga3(X, Y, Z))
IF_PERM_2_IN_1_GA4(X, L, Z, perm_2_out_ga2(L, Y)) -> INSERT_3_IN_GGA3(X, Y, Z)
INSERT_3_IN_GGA3(X, ._22(H, L1), ._22(H, L2)) -> IF_INSERT_3_IN_1_GGA5(X, H, L1, L2, insert_3_in_gga3(X, L1, L2))
INSERT_3_IN_GGA3(X, ._22(H, L1), ._22(H, L2)) -> INSERT_3_IN_GGA3(X, L1, L2)
perm_2_in_ga2([]_0, []_0) -> perm_2_out_ga2([]_0, []_0)
perm_2_in_ga2(._22(X, L), Z) -> if_perm_2_in_1_ga4(X, L, Z, perm_2_in_ga2(L, Y))
if_perm_2_in_1_ga4(X, L, Z, perm_2_out_ga2(L, Y)) -> if_perm_2_in_2_ga5(X, L, Z, Y, insert_3_in_gga3(X, Y, Z))
insert_3_in_gga3(X, []_0, ._22(X, []_0)) -> insert_3_out_gga3(X, []_0, ._22(X, []_0))
insert_3_in_gga3(X, L, ._22(X, L)) -> insert_3_out_gga3(X, L, ._22(X, L))
insert_3_in_gga3(X, ._22(H, L1), ._22(H, L2)) -> if_insert_3_in_1_gga5(X, H, L1, L2, insert_3_in_gga3(X, L1, L2))
if_insert_3_in_1_gga5(X, H, L1, L2, insert_3_out_gga3(X, L1, L2)) -> insert_3_out_gga3(X, ._22(H, L1), ._22(H, L2))
if_perm_2_in_2_ga5(X, L, Z, Y, insert_3_out_gga3(X, Y, Z)) -> perm_2_out_ga2(._22(X, L), Z)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
PERM_2_IN_GA2(._22(X, L), Z) -> IF_PERM_2_IN_1_GA4(X, L, Z, perm_2_in_ga2(L, Y))
PERM_2_IN_GA2(._22(X, L), Z) -> PERM_2_IN_GA2(L, Y)
IF_PERM_2_IN_1_GA4(X, L, Z, perm_2_out_ga2(L, Y)) -> IF_PERM_2_IN_2_GA5(X, L, Z, Y, insert_3_in_gga3(X, Y, Z))
IF_PERM_2_IN_1_GA4(X, L, Z, perm_2_out_ga2(L, Y)) -> INSERT_3_IN_GGA3(X, Y, Z)
INSERT_3_IN_GGA3(X, ._22(H, L1), ._22(H, L2)) -> IF_INSERT_3_IN_1_GGA5(X, H, L1, L2, insert_3_in_gga3(X, L1, L2))
INSERT_3_IN_GGA3(X, ._22(H, L1), ._22(H, L2)) -> INSERT_3_IN_GGA3(X, L1, L2)
perm_2_in_ga2([]_0, []_0) -> perm_2_out_ga2([]_0, []_0)
perm_2_in_ga2(._22(X, L), Z) -> if_perm_2_in_1_ga4(X, L, Z, perm_2_in_ga2(L, Y))
if_perm_2_in_1_ga4(X, L, Z, perm_2_out_ga2(L, Y)) -> if_perm_2_in_2_ga5(X, L, Z, Y, insert_3_in_gga3(X, Y, Z))
insert_3_in_gga3(X, []_0, ._22(X, []_0)) -> insert_3_out_gga3(X, []_0, ._22(X, []_0))
insert_3_in_gga3(X, L, ._22(X, L)) -> insert_3_out_gga3(X, L, ._22(X, L))
insert_3_in_gga3(X, ._22(H, L1), ._22(H, L2)) -> if_insert_3_in_1_gga5(X, H, L1, L2, insert_3_in_gga3(X, L1, L2))
if_insert_3_in_1_gga5(X, H, L1, L2, insert_3_out_gga3(X, L1, L2)) -> insert_3_out_gga3(X, ._22(H, L1), ._22(H, L2))
if_perm_2_in_2_ga5(X, L, Z, Y, insert_3_out_gga3(X, Y, Z)) -> perm_2_out_ga2(._22(X, L), Z)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
INSERT_3_IN_GGA3(X, ._22(H, L1), ._22(H, L2)) -> INSERT_3_IN_GGA3(X, L1, L2)
perm_2_in_ga2([]_0, []_0) -> perm_2_out_ga2([]_0, []_0)
perm_2_in_ga2(._22(X, L), Z) -> if_perm_2_in_1_ga4(X, L, Z, perm_2_in_ga2(L, Y))
if_perm_2_in_1_ga4(X, L, Z, perm_2_out_ga2(L, Y)) -> if_perm_2_in_2_ga5(X, L, Z, Y, insert_3_in_gga3(X, Y, Z))
insert_3_in_gga3(X, []_0, ._22(X, []_0)) -> insert_3_out_gga3(X, []_0, ._22(X, []_0))
insert_3_in_gga3(X, L, ._22(X, L)) -> insert_3_out_gga3(X, L, ._22(X, L))
insert_3_in_gga3(X, ._22(H, L1), ._22(H, L2)) -> if_insert_3_in_1_gga5(X, H, L1, L2, insert_3_in_gga3(X, L1, L2))
if_insert_3_in_1_gga5(X, H, L1, L2, insert_3_out_gga3(X, L1, L2)) -> insert_3_out_gga3(X, ._22(H, L1), ._22(H, L2))
if_perm_2_in_2_ga5(X, L, Z, Y, insert_3_out_gga3(X, Y, Z)) -> perm_2_out_ga2(._22(X, L), Z)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
INSERT_3_IN_GGA3(X, ._22(H, L1), ._22(H, L2)) -> INSERT_3_IN_GGA3(X, L1, L2)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
INSERT_3_IN_GGA2(X, ._22(H, L1)) -> INSERT_3_IN_GGA2(X, L1)
From the DPs we obtained the following set of size-change graphs:
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
PERM_2_IN_GA2(._22(X, L), Z) -> PERM_2_IN_GA2(L, Y)
perm_2_in_ga2([]_0, []_0) -> perm_2_out_ga2([]_0, []_0)
perm_2_in_ga2(._22(X, L), Z) -> if_perm_2_in_1_ga4(X, L, Z, perm_2_in_ga2(L, Y))
if_perm_2_in_1_ga4(X, L, Z, perm_2_out_ga2(L, Y)) -> if_perm_2_in_2_ga5(X, L, Z, Y, insert_3_in_gga3(X, Y, Z))
insert_3_in_gga3(X, []_0, ._22(X, []_0)) -> insert_3_out_gga3(X, []_0, ._22(X, []_0))
insert_3_in_gga3(X, L, ._22(X, L)) -> insert_3_out_gga3(X, L, ._22(X, L))
insert_3_in_gga3(X, ._22(H, L1), ._22(H, L2)) -> if_insert_3_in_1_gga5(X, H, L1, L2, insert_3_in_gga3(X, L1, L2))
if_insert_3_in_1_gga5(X, H, L1, L2, insert_3_out_gga3(X, L1, L2)) -> insert_3_out_gga3(X, ._22(H, L1), ._22(H, L2))
if_perm_2_in_2_ga5(X, L, Z, Y, insert_3_out_gga3(X, Y, Z)) -> perm_2_out_ga2(._22(X, L), Z)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
PERM_2_IN_GA2(._22(X, L), Z) -> PERM_2_IN_GA2(L, Y)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
PERM_2_IN_GA1(._22(X, L)) -> PERM_2_IN_GA1(L)
From the DPs we obtained the following set of size-change graphs: