0 Prolog
↳1 PrologToPrologProblemTransformerProof (⇐)
↳2 Prolog
↳3 PrologToPiTRSProof (⇐)
↳4 PiTRS
↳5 DependencyPairsProof (⇔)
↳6 PiDP
↳7 DependencyGraphProof (⇔)
↳8 PiDP
↳9 UsableRulesProof (⇔)
↳10 PiDP
↳11 PiDPToQDPProof (⇐)
↳12 QDP
↳13 UsableRulesReductionPairsProof (⇔)
↳14 QDP
↳15 MRRProof (⇔)
↳16 QDP
↳17 PisEmptyProof (⇔)
↳18 YES
flat1_in_ga([], []) → flat1_out_ga([], [])
flat1_in_ga(.([], []), []) → flat1_out_ga(.([], []), [])
flat1_in_ga(.([], .([], T16)), T18) → U1_ga(T16, T18, flat1_in_ga(T16, T18))
flat1_in_ga(.([], .(.(T35, T36), T37)), .(T35, T39)) → U2_ga(T35, T36, T37, T39, flat1_in_ga(.(T36, T37), T39))
flat1_in_ga(.(.(T46, []), T59), .(T46, T61)) → U3_ga(T46, T59, T61, flat1_in_ga(T59, T61))
flat1_in_ga(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74))) → U4_ga(T46, T70, T71, T72, T74, flat1_in_ga(.(T71, T72), T74))
U4_ga(T46, T70, T71, T72, T74, flat1_out_ga(.(T71, T72), T74)) → flat1_out_ga(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74)))
U3_ga(T46, T59, T61, flat1_out_ga(T59, T61)) → flat1_out_ga(.(.(T46, []), T59), .(T46, T61))
U2_ga(T35, T36, T37, T39, flat1_out_ga(.(T36, T37), T39)) → flat1_out_ga(.([], .(.(T35, T36), T37)), .(T35, T39))
U1_ga(T16, T18, flat1_out_ga(T16, T18)) → flat1_out_ga(.([], .([], T16)), T18)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
flat1_in_ga([], []) → flat1_out_ga([], [])
flat1_in_ga(.([], []), []) → flat1_out_ga(.([], []), [])
flat1_in_ga(.([], .([], T16)), T18) → U1_ga(T16, T18, flat1_in_ga(T16, T18))
flat1_in_ga(.([], .(.(T35, T36), T37)), .(T35, T39)) → U2_ga(T35, T36, T37, T39, flat1_in_ga(.(T36, T37), T39))
flat1_in_ga(.(.(T46, []), T59), .(T46, T61)) → U3_ga(T46, T59, T61, flat1_in_ga(T59, T61))
flat1_in_ga(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74))) → U4_ga(T46, T70, T71, T72, T74, flat1_in_ga(.(T71, T72), T74))
U4_ga(T46, T70, T71, T72, T74, flat1_out_ga(.(T71, T72), T74)) → flat1_out_ga(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74)))
U3_ga(T46, T59, T61, flat1_out_ga(T59, T61)) → flat1_out_ga(.(.(T46, []), T59), .(T46, T61))
U2_ga(T35, T36, T37, T39, flat1_out_ga(.(T36, T37), T39)) → flat1_out_ga(.([], .(.(T35, T36), T37)), .(T35, T39))
U1_ga(T16, T18, flat1_out_ga(T16, T18)) → flat1_out_ga(.([], .([], T16)), T18)
FLAT1_IN_GA(.([], .([], T16)), T18) → U1_GA(T16, T18, flat1_in_ga(T16, T18))
FLAT1_IN_GA(.([], .([], T16)), T18) → FLAT1_IN_GA(T16, T18)
FLAT1_IN_GA(.([], .(.(T35, T36), T37)), .(T35, T39)) → U2_GA(T35, T36, T37, T39, flat1_in_ga(.(T36, T37), T39))
FLAT1_IN_GA(.([], .(.(T35, T36), T37)), .(T35, T39)) → FLAT1_IN_GA(.(T36, T37), T39)
FLAT1_IN_GA(.(.(T46, []), T59), .(T46, T61)) → U3_GA(T46, T59, T61, flat1_in_ga(T59, T61))
FLAT1_IN_GA(.(.(T46, []), T59), .(T46, T61)) → FLAT1_IN_GA(T59, T61)
FLAT1_IN_GA(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74))) → U4_GA(T46, T70, T71, T72, T74, flat1_in_ga(.(T71, T72), T74))
FLAT1_IN_GA(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74))) → FLAT1_IN_GA(.(T71, T72), T74)
flat1_in_ga([], []) → flat1_out_ga([], [])
flat1_in_ga(.([], []), []) → flat1_out_ga(.([], []), [])
flat1_in_ga(.([], .([], T16)), T18) → U1_ga(T16, T18, flat1_in_ga(T16, T18))
flat1_in_ga(.([], .(.(T35, T36), T37)), .(T35, T39)) → U2_ga(T35, T36, T37, T39, flat1_in_ga(.(T36, T37), T39))
flat1_in_ga(.(.(T46, []), T59), .(T46, T61)) → U3_ga(T46, T59, T61, flat1_in_ga(T59, T61))
flat1_in_ga(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74))) → U4_ga(T46, T70, T71, T72, T74, flat1_in_ga(.(T71, T72), T74))
U4_ga(T46, T70, T71, T72, T74, flat1_out_ga(.(T71, T72), T74)) → flat1_out_ga(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74)))
U3_ga(T46, T59, T61, flat1_out_ga(T59, T61)) → flat1_out_ga(.(.(T46, []), T59), .(T46, T61))
U2_ga(T35, T36, T37, T39, flat1_out_ga(.(T36, T37), T39)) → flat1_out_ga(.([], .(.(T35, T36), T37)), .(T35, T39))
U1_ga(T16, T18, flat1_out_ga(T16, T18)) → flat1_out_ga(.([], .([], T16)), T18)
FLAT1_IN_GA(.([], .([], T16)), T18) → U1_GA(T16, T18, flat1_in_ga(T16, T18))
FLAT1_IN_GA(.([], .([], T16)), T18) → FLAT1_IN_GA(T16, T18)
FLAT1_IN_GA(.([], .(.(T35, T36), T37)), .(T35, T39)) → U2_GA(T35, T36, T37, T39, flat1_in_ga(.(T36, T37), T39))
FLAT1_IN_GA(.([], .(.(T35, T36), T37)), .(T35, T39)) → FLAT1_IN_GA(.(T36, T37), T39)
FLAT1_IN_GA(.(.(T46, []), T59), .(T46, T61)) → U3_GA(T46, T59, T61, flat1_in_ga(T59, T61))
FLAT1_IN_GA(.(.(T46, []), T59), .(T46, T61)) → FLAT1_IN_GA(T59, T61)
FLAT1_IN_GA(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74))) → U4_GA(T46, T70, T71, T72, T74, flat1_in_ga(.(T71, T72), T74))
FLAT1_IN_GA(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74))) → FLAT1_IN_GA(.(T71, T72), T74)
flat1_in_ga([], []) → flat1_out_ga([], [])
flat1_in_ga(.([], []), []) → flat1_out_ga(.([], []), [])
flat1_in_ga(.([], .([], T16)), T18) → U1_ga(T16, T18, flat1_in_ga(T16, T18))
flat1_in_ga(.([], .(.(T35, T36), T37)), .(T35, T39)) → U2_ga(T35, T36, T37, T39, flat1_in_ga(.(T36, T37), T39))
flat1_in_ga(.(.(T46, []), T59), .(T46, T61)) → U3_ga(T46, T59, T61, flat1_in_ga(T59, T61))
flat1_in_ga(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74))) → U4_ga(T46, T70, T71, T72, T74, flat1_in_ga(.(T71, T72), T74))
U4_ga(T46, T70, T71, T72, T74, flat1_out_ga(.(T71, T72), T74)) → flat1_out_ga(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74)))
U3_ga(T46, T59, T61, flat1_out_ga(T59, T61)) → flat1_out_ga(.(.(T46, []), T59), .(T46, T61))
U2_ga(T35, T36, T37, T39, flat1_out_ga(.(T36, T37), T39)) → flat1_out_ga(.([], .(.(T35, T36), T37)), .(T35, T39))
U1_ga(T16, T18, flat1_out_ga(T16, T18)) → flat1_out_ga(.([], .([], T16)), T18)
FLAT1_IN_GA(.([], .(.(T35, T36), T37)), .(T35, T39)) → FLAT1_IN_GA(.(T36, T37), T39)
FLAT1_IN_GA(.([], .([], T16)), T18) → FLAT1_IN_GA(T16, T18)
FLAT1_IN_GA(.(.(T46, []), T59), .(T46, T61)) → FLAT1_IN_GA(T59, T61)
FLAT1_IN_GA(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74))) → FLAT1_IN_GA(.(T71, T72), T74)
flat1_in_ga([], []) → flat1_out_ga([], [])
flat1_in_ga(.([], []), []) → flat1_out_ga(.([], []), [])
flat1_in_ga(.([], .([], T16)), T18) → U1_ga(T16, T18, flat1_in_ga(T16, T18))
flat1_in_ga(.([], .(.(T35, T36), T37)), .(T35, T39)) → U2_ga(T35, T36, T37, T39, flat1_in_ga(.(T36, T37), T39))
flat1_in_ga(.(.(T46, []), T59), .(T46, T61)) → U3_ga(T46, T59, T61, flat1_in_ga(T59, T61))
flat1_in_ga(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74))) → U4_ga(T46, T70, T71, T72, T74, flat1_in_ga(.(T71, T72), T74))
U4_ga(T46, T70, T71, T72, T74, flat1_out_ga(.(T71, T72), T74)) → flat1_out_ga(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74)))
U3_ga(T46, T59, T61, flat1_out_ga(T59, T61)) → flat1_out_ga(.(.(T46, []), T59), .(T46, T61))
U2_ga(T35, T36, T37, T39, flat1_out_ga(.(T36, T37), T39)) → flat1_out_ga(.([], .(.(T35, T36), T37)), .(T35, T39))
U1_ga(T16, T18, flat1_out_ga(T16, T18)) → flat1_out_ga(.([], .([], T16)), T18)
FLAT1_IN_GA(.([], .(.(T35, T36), T37)), .(T35, T39)) → FLAT1_IN_GA(.(T36, T37), T39)
FLAT1_IN_GA(.([], .([], T16)), T18) → FLAT1_IN_GA(T16, T18)
FLAT1_IN_GA(.(.(T46, []), T59), .(T46, T61)) → FLAT1_IN_GA(T59, T61)
FLAT1_IN_GA(.(.(T46, .(T70, T71)), T72), .(T46, .(T70, T74))) → FLAT1_IN_GA(.(T71, T72), T74)
FLAT1_IN_GA(.([], .(.(T35, T36), T37))) → FLAT1_IN_GA(.(T36, T37))
FLAT1_IN_GA(.([], .([], T16))) → FLAT1_IN_GA(T16)
FLAT1_IN_GA(.(.(T46, []), T59)) → FLAT1_IN_GA(T59)
FLAT1_IN_GA(.(.(T46, .(T70, T71)), T72)) → FLAT1_IN_GA(.(T71, T72))
No rules are removed from R.
FLAT1_IN_GA(.([], .(.(T35, T36), T37))) → FLAT1_IN_GA(.(T36, T37))
FLAT1_IN_GA(.([], .([], T16))) → FLAT1_IN_GA(T16)
FLAT1_IN_GA(.(.(T46, []), T59)) → FLAT1_IN_GA(T59)
POL(.(x1, x2)) = 2·x1 + 2·x2
POL(FLAT1_IN_GA(x1)) = 2·x1
POL([]) = 0
FLAT1_IN_GA(.(.(T46, .(T70, T71)), T72)) → FLAT1_IN_GA(.(T71, T72))
FLAT1_IN_GA(.(.(T46, .(T70, T71)), T72)) → FLAT1_IN_GA(.(T71, T72))
POL(.(x1, x2)) = 1 + x1 + x2
POL(FLAT1_IN_GA(x1)) = x1