↳ PROLOG
↳ PrologToPiTRSProof
With regard to the inferred argument filtering the predicates were used in the following modes:
flat2: (b,f)
Transforming PROLOG into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:
flat_2_in_ga2([]_0, []_0) -> flat_2_out_ga2([]_0, []_0)
flat_2_in_ga2(._22([]_0, T), R) -> if_flat_2_in_1_ga3(T, R, flat_2_in_ga2(T, R))
flat_2_in_ga2(._22(._22(H, T), TT), ._22(H, R)) -> if_flat_2_in_2_ga5(H, T, TT, R, flat_2_in_ga2(._22(T, TT), R))
if_flat_2_in_2_ga5(H, T, TT, R, flat_2_out_ga2(._22(T, TT), R)) -> flat_2_out_ga2(._22(._22(H, T), TT), ._22(H, R))
if_flat_2_in_1_ga3(T, R, flat_2_out_ga2(T, R)) -> flat_2_out_ga2(._22([]_0, T), R)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of PROLOG
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
flat_2_in_ga2([]_0, []_0) -> flat_2_out_ga2([]_0, []_0)
flat_2_in_ga2(._22([]_0, T), R) -> if_flat_2_in_1_ga3(T, R, flat_2_in_ga2(T, R))
flat_2_in_ga2(._22(._22(H, T), TT), ._22(H, R)) -> if_flat_2_in_2_ga5(H, T, TT, R, flat_2_in_ga2(._22(T, TT), R))
if_flat_2_in_2_ga5(H, T, TT, R, flat_2_out_ga2(._22(T, TT), R)) -> flat_2_out_ga2(._22(._22(H, T), TT), ._22(H, R))
if_flat_2_in_1_ga3(T, R, flat_2_out_ga2(T, R)) -> flat_2_out_ga2(._22([]_0, T), R)
FLAT_2_IN_GA2(._22([]_0, T), R) -> IF_FLAT_2_IN_1_GA3(T, R, flat_2_in_ga2(T, R))
FLAT_2_IN_GA2(._22([]_0, T), R) -> FLAT_2_IN_GA2(T, R)
FLAT_2_IN_GA2(._22(._22(H, T), TT), ._22(H, R)) -> IF_FLAT_2_IN_2_GA5(H, T, TT, R, flat_2_in_ga2(._22(T, TT), R))
FLAT_2_IN_GA2(._22(._22(H, T), TT), ._22(H, R)) -> FLAT_2_IN_GA2(._22(T, TT), R)
flat_2_in_ga2([]_0, []_0) -> flat_2_out_ga2([]_0, []_0)
flat_2_in_ga2(._22([]_0, T), R) -> if_flat_2_in_1_ga3(T, R, flat_2_in_ga2(T, R))
flat_2_in_ga2(._22(._22(H, T), TT), ._22(H, R)) -> if_flat_2_in_2_ga5(H, T, TT, R, flat_2_in_ga2(._22(T, TT), R))
if_flat_2_in_2_ga5(H, T, TT, R, flat_2_out_ga2(._22(T, TT), R)) -> flat_2_out_ga2(._22(._22(H, T), TT), ._22(H, R))
if_flat_2_in_1_ga3(T, R, flat_2_out_ga2(T, R)) -> flat_2_out_ga2(._22([]_0, T), R)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
FLAT_2_IN_GA2(._22([]_0, T), R) -> IF_FLAT_2_IN_1_GA3(T, R, flat_2_in_ga2(T, R))
FLAT_2_IN_GA2(._22([]_0, T), R) -> FLAT_2_IN_GA2(T, R)
FLAT_2_IN_GA2(._22(._22(H, T), TT), ._22(H, R)) -> IF_FLAT_2_IN_2_GA5(H, T, TT, R, flat_2_in_ga2(._22(T, TT), R))
FLAT_2_IN_GA2(._22(._22(H, T), TT), ._22(H, R)) -> FLAT_2_IN_GA2(._22(T, TT), R)
flat_2_in_ga2([]_0, []_0) -> flat_2_out_ga2([]_0, []_0)
flat_2_in_ga2(._22([]_0, T), R) -> if_flat_2_in_1_ga3(T, R, flat_2_in_ga2(T, R))
flat_2_in_ga2(._22(._22(H, T), TT), ._22(H, R)) -> if_flat_2_in_2_ga5(H, T, TT, R, flat_2_in_ga2(._22(T, TT), R))
if_flat_2_in_2_ga5(H, T, TT, R, flat_2_out_ga2(._22(T, TT), R)) -> flat_2_out_ga2(._22(._22(H, T), TT), ._22(H, R))
if_flat_2_in_1_ga3(T, R, flat_2_out_ga2(T, R)) -> flat_2_out_ga2(._22([]_0, T), R)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
FLAT_2_IN_GA2(._22(._22(H, T), TT), ._22(H, R)) -> FLAT_2_IN_GA2(._22(T, TT), R)
FLAT_2_IN_GA2(._22([]_0, T), R) -> FLAT_2_IN_GA2(T, R)
flat_2_in_ga2([]_0, []_0) -> flat_2_out_ga2([]_0, []_0)
flat_2_in_ga2(._22([]_0, T), R) -> if_flat_2_in_1_ga3(T, R, flat_2_in_ga2(T, R))
flat_2_in_ga2(._22(._22(H, T), TT), ._22(H, R)) -> if_flat_2_in_2_ga5(H, T, TT, R, flat_2_in_ga2(._22(T, TT), R))
if_flat_2_in_2_ga5(H, T, TT, R, flat_2_out_ga2(._22(T, TT), R)) -> flat_2_out_ga2(._22(._22(H, T), TT), ._22(H, R))
if_flat_2_in_1_ga3(T, R, flat_2_out_ga2(T, R)) -> flat_2_out_ga2(._22([]_0, T), R)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
FLAT_2_IN_GA2(._22(._22(H, T), TT), ._22(H, R)) -> FLAT_2_IN_GA2(._22(T, TT), R)
FLAT_2_IN_GA2(._22([]_0, T), R) -> FLAT_2_IN_GA2(T, R)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
FLAT_2_IN_GA1(._22(._22(H, T), TT)) -> FLAT_2_IN_GA1(._22(T, TT))
FLAT_2_IN_GA1(._22([]_0, T)) -> FLAT_2_IN_GA1(T)
Order:Homeomorphic Embedding Order
AFS:
[]_0 = []_0
._22(x1, x2) = ._22(x1, x2)
From the DPs we obtained the following set of size-change graphs:
We oriented the following set of usable rules.
none