↳ PROLOG
↳ PrologToPiTRSProof
With regard to the inferred argument filtering the predicates were used in the following modes:
query1: (b)
shuffle2: (b,f)
reverse2: (b,f)
append3: (b,b,f)
Transforming PROLOG into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:
query_1_in_g1(XS) -> if_query_1_in_1_g2(XS, shuffle_2_in_ga2(cons_22(X, XS), YS))
shuffle_2_in_ga2(nil_0, nil_0) -> shuffle_2_out_ga2(nil_0, nil_0)
shuffle_2_in_ga2(cons_22(X, XS), cons_22(X, YS)) -> if_shuffle_2_in_1_ga4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
reverse_2_in_ga2(nil_0, nil_0) -> reverse_2_out_ga2(nil_0, nil_0)
reverse_2_in_ga2(cons_22(X, nil_0), cons_22(X, nil_0)) -> reverse_2_out_ga2(cons_22(X, nil_0), cons_22(X, nil_0))
reverse_2_in_ga2(cons_22(X, XS), YS) -> if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_in_gga3(ZS, cons_22(X, nil_0), YS))
append_3_in_gga3(nil_0, XS, XS) -> append_3_out_gga3(nil_0, XS, XS)
append_3_in_gga3(cons_22(X, XS), YS, cons_22(X, ZS)) -> if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_in_gga3(XS, YS, ZS))
if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_out_gga3(XS, YS, ZS)) -> append_3_out_gga3(cons_22(X, XS), YS, cons_22(X, ZS))
if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_out_gga3(ZS, cons_22(X, nil_0), YS)) -> reverse_2_out_ga2(cons_22(X, XS), YS)
if_shuffle_2_in_1_ga4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> if_shuffle_2_in_2_ga5(X, XS, YS, ZS, shuffle_2_in_ga2(ZS, YS))
if_shuffle_2_in_2_ga5(X, XS, YS, ZS, shuffle_2_out_ga2(ZS, YS)) -> shuffle_2_out_ga2(cons_22(X, XS), cons_22(X, YS))
if_query_1_in_1_g2(XS, shuffle_2_out_ga2(cons_22(X, XS), YS)) -> query_1_out_g1(XS)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of PROLOG
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
query_1_in_g1(XS) -> if_query_1_in_1_g2(XS, shuffle_2_in_ga2(cons_22(X, XS), YS))
shuffle_2_in_ga2(nil_0, nil_0) -> shuffle_2_out_ga2(nil_0, nil_0)
shuffle_2_in_ga2(cons_22(X, XS), cons_22(X, YS)) -> if_shuffle_2_in_1_ga4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
reverse_2_in_ga2(nil_0, nil_0) -> reverse_2_out_ga2(nil_0, nil_0)
reverse_2_in_ga2(cons_22(X, nil_0), cons_22(X, nil_0)) -> reverse_2_out_ga2(cons_22(X, nil_0), cons_22(X, nil_0))
reverse_2_in_ga2(cons_22(X, XS), YS) -> if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_in_gga3(ZS, cons_22(X, nil_0), YS))
append_3_in_gga3(nil_0, XS, XS) -> append_3_out_gga3(nil_0, XS, XS)
append_3_in_gga3(cons_22(X, XS), YS, cons_22(X, ZS)) -> if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_in_gga3(XS, YS, ZS))
if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_out_gga3(XS, YS, ZS)) -> append_3_out_gga3(cons_22(X, XS), YS, cons_22(X, ZS))
if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_out_gga3(ZS, cons_22(X, nil_0), YS)) -> reverse_2_out_ga2(cons_22(X, XS), YS)
if_shuffle_2_in_1_ga4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> if_shuffle_2_in_2_ga5(X, XS, YS, ZS, shuffle_2_in_ga2(ZS, YS))
if_shuffle_2_in_2_ga5(X, XS, YS, ZS, shuffle_2_out_ga2(ZS, YS)) -> shuffle_2_out_ga2(cons_22(X, XS), cons_22(X, YS))
if_query_1_in_1_g2(XS, shuffle_2_out_ga2(cons_22(X, XS), YS)) -> query_1_out_g1(XS)
QUERY_1_IN_G1(XS) -> IF_QUERY_1_IN_1_G2(XS, shuffle_2_in_ga2(cons_22(X, XS), YS))
QUERY_1_IN_G1(XS) -> SHUFFLE_2_IN_GA2(cons_22(X, XS), YS)
SHUFFLE_2_IN_GA2(cons_22(X, XS), cons_22(X, YS)) -> IF_SHUFFLE_2_IN_1_GA4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
SHUFFLE_2_IN_GA2(cons_22(X, XS), cons_22(X, YS)) -> REVERSE_2_IN_GA2(XS, ZS)
REVERSE_2_IN_GA2(cons_22(X, XS), YS) -> IF_REVERSE_2_IN_1_GA4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
REVERSE_2_IN_GA2(cons_22(X, XS), YS) -> REVERSE_2_IN_GA2(XS, ZS)
IF_REVERSE_2_IN_1_GA4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> IF_REVERSE_2_IN_2_GA5(X, XS, YS, ZS, append_3_in_gga3(ZS, cons_22(X, nil_0), YS))
IF_REVERSE_2_IN_1_GA4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> APPEND_3_IN_GGA3(ZS, cons_22(X, nil_0), YS)
APPEND_3_IN_GGA3(cons_22(X, XS), YS, cons_22(X, ZS)) -> IF_APPEND_3_IN_1_GGA5(X, XS, YS, ZS, append_3_in_gga3(XS, YS, ZS))
APPEND_3_IN_GGA3(cons_22(X, XS), YS, cons_22(X, ZS)) -> APPEND_3_IN_GGA3(XS, YS, ZS)
IF_SHUFFLE_2_IN_1_GA4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> IF_SHUFFLE_2_IN_2_GA5(X, XS, YS, ZS, shuffle_2_in_ga2(ZS, YS))
IF_SHUFFLE_2_IN_1_GA4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> SHUFFLE_2_IN_GA2(ZS, YS)
query_1_in_g1(XS) -> if_query_1_in_1_g2(XS, shuffle_2_in_ga2(cons_22(X, XS), YS))
shuffle_2_in_ga2(nil_0, nil_0) -> shuffle_2_out_ga2(nil_0, nil_0)
shuffle_2_in_ga2(cons_22(X, XS), cons_22(X, YS)) -> if_shuffle_2_in_1_ga4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
reverse_2_in_ga2(nil_0, nil_0) -> reverse_2_out_ga2(nil_0, nil_0)
reverse_2_in_ga2(cons_22(X, nil_0), cons_22(X, nil_0)) -> reverse_2_out_ga2(cons_22(X, nil_0), cons_22(X, nil_0))
reverse_2_in_ga2(cons_22(X, XS), YS) -> if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_in_gga3(ZS, cons_22(X, nil_0), YS))
append_3_in_gga3(nil_0, XS, XS) -> append_3_out_gga3(nil_0, XS, XS)
append_3_in_gga3(cons_22(X, XS), YS, cons_22(X, ZS)) -> if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_in_gga3(XS, YS, ZS))
if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_out_gga3(XS, YS, ZS)) -> append_3_out_gga3(cons_22(X, XS), YS, cons_22(X, ZS))
if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_out_gga3(ZS, cons_22(X, nil_0), YS)) -> reverse_2_out_ga2(cons_22(X, XS), YS)
if_shuffle_2_in_1_ga4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> if_shuffle_2_in_2_ga5(X, XS, YS, ZS, shuffle_2_in_ga2(ZS, YS))
if_shuffle_2_in_2_ga5(X, XS, YS, ZS, shuffle_2_out_ga2(ZS, YS)) -> shuffle_2_out_ga2(cons_22(X, XS), cons_22(X, YS))
if_query_1_in_1_g2(XS, shuffle_2_out_ga2(cons_22(X, XS), YS)) -> query_1_out_g1(XS)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
QUERY_1_IN_G1(XS) -> IF_QUERY_1_IN_1_G2(XS, shuffle_2_in_ga2(cons_22(X, XS), YS))
QUERY_1_IN_G1(XS) -> SHUFFLE_2_IN_GA2(cons_22(X, XS), YS)
SHUFFLE_2_IN_GA2(cons_22(X, XS), cons_22(X, YS)) -> IF_SHUFFLE_2_IN_1_GA4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
SHUFFLE_2_IN_GA2(cons_22(X, XS), cons_22(X, YS)) -> REVERSE_2_IN_GA2(XS, ZS)
REVERSE_2_IN_GA2(cons_22(X, XS), YS) -> IF_REVERSE_2_IN_1_GA4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
REVERSE_2_IN_GA2(cons_22(X, XS), YS) -> REVERSE_2_IN_GA2(XS, ZS)
IF_REVERSE_2_IN_1_GA4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> IF_REVERSE_2_IN_2_GA5(X, XS, YS, ZS, append_3_in_gga3(ZS, cons_22(X, nil_0), YS))
IF_REVERSE_2_IN_1_GA4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> APPEND_3_IN_GGA3(ZS, cons_22(X, nil_0), YS)
APPEND_3_IN_GGA3(cons_22(X, XS), YS, cons_22(X, ZS)) -> IF_APPEND_3_IN_1_GGA5(X, XS, YS, ZS, append_3_in_gga3(XS, YS, ZS))
APPEND_3_IN_GGA3(cons_22(X, XS), YS, cons_22(X, ZS)) -> APPEND_3_IN_GGA3(XS, YS, ZS)
IF_SHUFFLE_2_IN_1_GA4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> IF_SHUFFLE_2_IN_2_GA5(X, XS, YS, ZS, shuffle_2_in_ga2(ZS, YS))
IF_SHUFFLE_2_IN_1_GA4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> SHUFFLE_2_IN_GA2(ZS, YS)
query_1_in_g1(XS) -> if_query_1_in_1_g2(XS, shuffle_2_in_ga2(cons_22(X, XS), YS))
shuffle_2_in_ga2(nil_0, nil_0) -> shuffle_2_out_ga2(nil_0, nil_0)
shuffle_2_in_ga2(cons_22(X, XS), cons_22(X, YS)) -> if_shuffle_2_in_1_ga4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
reverse_2_in_ga2(nil_0, nil_0) -> reverse_2_out_ga2(nil_0, nil_0)
reverse_2_in_ga2(cons_22(X, nil_0), cons_22(X, nil_0)) -> reverse_2_out_ga2(cons_22(X, nil_0), cons_22(X, nil_0))
reverse_2_in_ga2(cons_22(X, XS), YS) -> if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_in_gga3(ZS, cons_22(X, nil_0), YS))
append_3_in_gga3(nil_0, XS, XS) -> append_3_out_gga3(nil_0, XS, XS)
append_3_in_gga3(cons_22(X, XS), YS, cons_22(X, ZS)) -> if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_in_gga3(XS, YS, ZS))
if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_out_gga3(XS, YS, ZS)) -> append_3_out_gga3(cons_22(X, XS), YS, cons_22(X, ZS))
if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_out_gga3(ZS, cons_22(X, nil_0), YS)) -> reverse_2_out_ga2(cons_22(X, XS), YS)
if_shuffle_2_in_1_ga4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> if_shuffle_2_in_2_ga5(X, XS, YS, ZS, shuffle_2_in_ga2(ZS, YS))
if_shuffle_2_in_2_ga5(X, XS, YS, ZS, shuffle_2_out_ga2(ZS, YS)) -> shuffle_2_out_ga2(cons_22(X, XS), cons_22(X, YS))
if_query_1_in_1_g2(XS, shuffle_2_out_ga2(cons_22(X, XS), YS)) -> query_1_out_g1(XS)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
APPEND_3_IN_GGA3(cons_22(X, XS), YS, cons_22(X, ZS)) -> APPEND_3_IN_GGA3(XS, YS, ZS)
query_1_in_g1(XS) -> if_query_1_in_1_g2(XS, shuffle_2_in_ga2(cons_22(X, XS), YS))
shuffle_2_in_ga2(nil_0, nil_0) -> shuffle_2_out_ga2(nil_0, nil_0)
shuffle_2_in_ga2(cons_22(X, XS), cons_22(X, YS)) -> if_shuffle_2_in_1_ga4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
reverse_2_in_ga2(nil_0, nil_0) -> reverse_2_out_ga2(nil_0, nil_0)
reverse_2_in_ga2(cons_22(X, nil_0), cons_22(X, nil_0)) -> reverse_2_out_ga2(cons_22(X, nil_0), cons_22(X, nil_0))
reverse_2_in_ga2(cons_22(X, XS), YS) -> if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_in_gga3(ZS, cons_22(X, nil_0), YS))
append_3_in_gga3(nil_0, XS, XS) -> append_3_out_gga3(nil_0, XS, XS)
append_3_in_gga3(cons_22(X, XS), YS, cons_22(X, ZS)) -> if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_in_gga3(XS, YS, ZS))
if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_out_gga3(XS, YS, ZS)) -> append_3_out_gga3(cons_22(X, XS), YS, cons_22(X, ZS))
if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_out_gga3(ZS, cons_22(X, nil_0), YS)) -> reverse_2_out_ga2(cons_22(X, XS), YS)
if_shuffle_2_in_1_ga4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> if_shuffle_2_in_2_ga5(X, XS, YS, ZS, shuffle_2_in_ga2(ZS, YS))
if_shuffle_2_in_2_ga5(X, XS, YS, ZS, shuffle_2_out_ga2(ZS, YS)) -> shuffle_2_out_ga2(cons_22(X, XS), cons_22(X, YS))
if_query_1_in_1_g2(XS, shuffle_2_out_ga2(cons_22(X, XS), YS)) -> query_1_out_g1(XS)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
APPEND_3_IN_GGA3(cons_22(X, XS), YS, cons_22(X, ZS)) -> APPEND_3_IN_GGA3(XS, YS, ZS)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
APPEND_3_IN_GGA2(cons_21(XS), YS) -> APPEND_3_IN_GGA2(XS, YS)
From the DPs we obtained the following set of size-change graphs:
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
REVERSE_2_IN_GA2(cons_22(X, XS), YS) -> REVERSE_2_IN_GA2(XS, ZS)
query_1_in_g1(XS) -> if_query_1_in_1_g2(XS, shuffle_2_in_ga2(cons_22(X, XS), YS))
shuffle_2_in_ga2(nil_0, nil_0) -> shuffle_2_out_ga2(nil_0, nil_0)
shuffle_2_in_ga2(cons_22(X, XS), cons_22(X, YS)) -> if_shuffle_2_in_1_ga4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
reverse_2_in_ga2(nil_0, nil_0) -> reverse_2_out_ga2(nil_0, nil_0)
reverse_2_in_ga2(cons_22(X, nil_0), cons_22(X, nil_0)) -> reverse_2_out_ga2(cons_22(X, nil_0), cons_22(X, nil_0))
reverse_2_in_ga2(cons_22(X, XS), YS) -> if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_in_gga3(ZS, cons_22(X, nil_0), YS))
append_3_in_gga3(nil_0, XS, XS) -> append_3_out_gga3(nil_0, XS, XS)
append_3_in_gga3(cons_22(X, XS), YS, cons_22(X, ZS)) -> if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_in_gga3(XS, YS, ZS))
if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_out_gga3(XS, YS, ZS)) -> append_3_out_gga3(cons_22(X, XS), YS, cons_22(X, ZS))
if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_out_gga3(ZS, cons_22(X, nil_0), YS)) -> reverse_2_out_ga2(cons_22(X, XS), YS)
if_shuffle_2_in_1_ga4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> if_shuffle_2_in_2_ga5(X, XS, YS, ZS, shuffle_2_in_ga2(ZS, YS))
if_shuffle_2_in_2_ga5(X, XS, YS, ZS, shuffle_2_out_ga2(ZS, YS)) -> shuffle_2_out_ga2(cons_22(X, XS), cons_22(X, YS))
if_query_1_in_1_g2(XS, shuffle_2_out_ga2(cons_22(X, XS), YS)) -> query_1_out_g1(XS)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
REVERSE_2_IN_GA2(cons_22(X, XS), YS) -> REVERSE_2_IN_GA2(XS, ZS)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
REVERSE_2_IN_GA1(cons_21(XS)) -> REVERSE_2_IN_GA1(XS)
From the DPs we obtained the following set of size-change graphs:
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
SHUFFLE_2_IN_GA2(cons_22(X, XS), cons_22(X, YS)) -> IF_SHUFFLE_2_IN_1_GA4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
IF_SHUFFLE_2_IN_1_GA4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> SHUFFLE_2_IN_GA2(ZS, YS)
query_1_in_g1(XS) -> if_query_1_in_1_g2(XS, shuffle_2_in_ga2(cons_22(X, XS), YS))
shuffle_2_in_ga2(nil_0, nil_0) -> shuffle_2_out_ga2(nil_0, nil_0)
shuffle_2_in_ga2(cons_22(X, XS), cons_22(X, YS)) -> if_shuffle_2_in_1_ga4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
reverse_2_in_ga2(nil_0, nil_0) -> reverse_2_out_ga2(nil_0, nil_0)
reverse_2_in_ga2(cons_22(X, nil_0), cons_22(X, nil_0)) -> reverse_2_out_ga2(cons_22(X, nil_0), cons_22(X, nil_0))
reverse_2_in_ga2(cons_22(X, XS), YS) -> if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_in_gga3(ZS, cons_22(X, nil_0), YS))
append_3_in_gga3(nil_0, XS, XS) -> append_3_out_gga3(nil_0, XS, XS)
append_3_in_gga3(cons_22(X, XS), YS, cons_22(X, ZS)) -> if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_in_gga3(XS, YS, ZS))
if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_out_gga3(XS, YS, ZS)) -> append_3_out_gga3(cons_22(X, XS), YS, cons_22(X, ZS))
if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_out_gga3(ZS, cons_22(X, nil_0), YS)) -> reverse_2_out_ga2(cons_22(X, XS), YS)
if_shuffle_2_in_1_ga4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> if_shuffle_2_in_2_ga5(X, XS, YS, ZS, shuffle_2_in_ga2(ZS, YS))
if_shuffle_2_in_2_ga5(X, XS, YS, ZS, shuffle_2_out_ga2(ZS, YS)) -> shuffle_2_out_ga2(cons_22(X, XS), cons_22(X, YS))
if_query_1_in_1_g2(XS, shuffle_2_out_ga2(cons_22(X, XS), YS)) -> query_1_out_g1(XS)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
SHUFFLE_2_IN_GA2(cons_22(X, XS), cons_22(X, YS)) -> IF_SHUFFLE_2_IN_1_GA4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
IF_SHUFFLE_2_IN_1_GA4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> SHUFFLE_2_IN_GA2(ZS, YS)
reverse_2_in_ga2(nil_0, nil_0) -> reverse_2_out_ga2(nil_0, nil_0)
reverse_2_in_ga2(cons_22(X, nil_0), cons_22(X, nil_0)) -> reverse_2_out_ga2(cons_22(X, nil_0), cons_22(X, nil_0))
reverse_2_in_ga2(cons_22(X, XS), YS) -> if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_in_ga2(XS, ZS))
if_reverse_2_in_1_ga4(X, XS, YS, reverse_2_out_ga2(XS, ZS)) -> if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_in_gga3(ZS, cons_22(X, nil_0), YS))
if_reverse_2_in_2_ga5(X, XS, YS, ZS, append_3_out_gga3(ZS, cons_22(X, nil_0), YS)) -> reverse_2_out_ga2(cons_22(X, XS), YS)
append_3_in_gga3(nil_0, XS, XS) -> append_3_out_gga3(nil_0, XS, XS)
append_3_in_gga3(cons_22(X, XS), YS, cons_22(X, ZS)) -> if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_in_gga3(XS, YS, ZS))
if_append_3_in_1_gga5(X, XS, YS, ZS, append_3_out_gga3(XS, YS, ZS)) -> append_3_out_gga3(cons_22(X, XS), YS, cons_22(X, ZS))
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
SHUFFLE_2_IN_GA1(cons_21(XS)) -> IF_SHUFFLE_2_IN_1_GA1(reverse_2_in_ga1(XS))
IF_SHUFFLE_2_IN_1_GA1(reverse_2_out_ga1(ZS)) -> SHUFFLE_2_IN_GA1(ZS)
reverse_2_in_ga1(nil_0) -> reverse_2_out_ga1(nil_0)
reverse_2_in_ga1(cons_21(nil_0)) -> reverse_2_out_ga1(cons_21(nil_0))
reverse_2_in_ga1(cons_21(XS)) -> if_reverse_2_in_1_ga1(reverse_2_in_ga1(XS))
if_reverse_2_in_1_ga1(reverse_2_out_ga1(ZS)) -> if_reverse_2_in_2_ga1(append_3_in_gga2(ZS, cons_21(nil_0)))
if_reverse_2_in_2_ga1(append_3_out_gga1(YS)) -> reverse_2_out_ga1(YS)
append_3_in_gga2(nil_0, XS) -> append_3_out_gga1(XS)
append_3_in_gga2(cons_21(XS), YS) -> if_append_3_in_1_gga1(append_3_in_gga2(XS, YS))
if_append_3_in_1_gga1(append_3_out_gga1(ZS)) -> append_3_out_gga1(cons_21(ZS))
reverse_2_in_ga1(x0)
if_reverse_2_in_1_ga1(x0)
if_reverse_2_in_2_ga1(x0)
append_3_in_gga2(x0, x1)
if_append_3_in_1_gga1(x0)
Order:Polynomial interpretation:
POL(nil_0) = 0
POL(append_3_out_gga1(x1)) = x1
POL(cons_21(x1)) = 1 + x1
POL(reverse_2_out_ga1(x1)) = x1
POL(if_reverse_2_in_1_ga1(x1)) = 1 + x1
POL(if_append_3_in_1_gga1(x1)) = 1 + x1
POL(reverse_2_in_ga1(x1)) = x1
POL(if_reverse_2_in_2_ga1(x1)) = x1
POL(append_3_in_gga2(x1, x2)) = x1 + x2
From the DPs we obtained the following set of size-change graphs:
We oriented the following set of usable rules.
reverse_2_in_ga1(nil_0) -> reverse_2_out_ga1(nil_0)
reverse_2_in_ga1(cons_21(XS)) -> if_reverse_2_in_1_ga1(reverse_2_in_ga1(XS))
reverse_2_in_ga1(cons_21(nil_0)) -> reverse_2_out_ga1(cons_21(nil_0))
if_reverse_2_in_2_ga1(append_3_out_gga1(YS)) -> reverse_2_out_ga1(YS)
if_reverse_2_in_1_ga1(reverse_2_out_ga1(ZS)) -> if_reverse_2_in_2_ga1(append_3_in_gga2(ZS, cons_21(nil_0)))
if_append_3_in_1_gga1(append_3_out_gga1(ZS)) -> append_3_out_gga1(cons_21(ZS))
append_3_in_gga2(nil_0, XS) -> append_3_out_gga1(XS)
append_3_in_gga2(cons_21(XS), YS) -> if_append_3_in_1_gga1(append_3_in_gga2(XS, YS))