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 MRRProof (⇔)
↳14 QDP
↳15 PisEmptyProof (⇔)
↳16 YES
gopher1_in_ga(nil, nil) → gopher1_out_ga(nil, nil)
gopher1_in_ga(cons(nil, T4), cons(nil, T4)) → gopher1_out_ga(cons(nil, T4), cons(nil, T4))
gopher1_in_ga(cons(cons(nil, T22), T23), cons(nil, cons(T22, T23))) → gopher1_out_ga(cons(cons(nil, T22), T23), cons(nil, cons(T22, T23)))
gopher1_in_ga(cons(cons(cons(T34, T35), T36), T37), T39) → U1_ga(T34, T35, T36, T37, T39, gopher1_in_ga(cons(T34, cons(T35, cons(T36, T37))), T39))
U1_ga(T34, T35, T36, T37, T39, gopher1_out_ga(cons(T34, cons(T35, cons(T36, T37))), T39)) → gopher1_out_ga(cons(cons(cons(T34, T35), T36), T37), T39)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
gopher1_in_ga(nil, nil) → gopher1_out_ga(nil, nil)
gopher1_in_ga(cons(nil, T4), cons(nil, T4)) → gopher1_out_ga(cons(nil, T4), cons(nil, T4))
gopher1_in_ga(cons(cons(nil, T22), T23), cons(nil, cons(T22, T23))) → gopher1_out_ga(cons(cons(nil, T22), T23), cons(nil, cons(T22, T23)))
gopher1_in_ga(cons(cons(cons(T34, T35), T36), T37), T39) → U1_ga(T34, T35, T36, T37, T39, gopher1_in_ga(cons(T34, cons(T35, cons(T36, T37))), T39))
U1_ga(T34, T35, T36, T37, T39, gopher1_out_ga(cons(T34, cons(T35, cons(T36, T37))), T39)) → gopher1_out_ga(cons(cons(cons(T34, T35), T36), T37), T39)
GOPHER1_IN_GA(cons(cons(cons(T34, T35), T36), T37), T39) → U1_GA(T34, T35, T36, T37, T39, gopher1_in_ga(cons(T34, cons(T35, cons(T36, T37))), T39))
GOPHER1_IN_GA(cons(cons(cons(T34, T35), T36), T37), T39) → GOPHER1_IN_GA(cons(T34, cons(T35, cons(T36, T37))), T39)
gopher1_in_ga(nil, nil) → gopher1_out_ga(nil, nil)
gopher1_in_ga(cons(nil, T4), cons(nil, T4)) → gopher1_out_ga(cons(nil, T4), cons(nil, T4))
gopher1_in_ga(cons(cons(nil, T22), T23), cons(nil, cons(T22, T23))) → gopher1_out_ga(cons(cons(nil, T22), T23), cons(nil, cons(T22, T23)))
gopher1_in_ga(cons(cons(cons(T34, T35), T36), T37), T39) → U1_ga(T34, T35, T36, T37, T39, gopher1_in_ga(cons(T34, cons(T35, cons(T36, T37))), T39))
U1_ga(T34, T35, T36, T37, T39, gopher1_out_ga(cons(T34, cons(T35, cons(T36, T37))), T39)) → gopher1_out_ga(cons(cons(cons(T34, T35), T36), T37), T39)
GOPHER1_IN_GA(cons(cons(cons(T34, T35), T36), T37), T39) → U1_GA(T34, T35, T36, T37, T39, gopher1_in_ga(cons(T34, cons(T35, cons(T36, T37))), T39))
GOPHER1_IN_GA(cons(cons(cons(T34, T35), T36), T37), T39) → GOPHER1_IN_GA(cons(T34, cons(T35, cons(T36, T37))), T39)
gopher1_in_ga(nil, nil) → gopher1_out_ga(nil, nil)
gopher1_in_ga(cons(nil, T4), cons(nil, T4)) → gopher1_out_ga(cons(nil, T4), cons(nil, T4))
gopher1_in_ga(cons(cons(nil, T22), T23), cons(nil, cons(T22, T23))) → gopher1_out_ga(cons(cons(nil, T22), T23), cons(nil, cons(T22, T23)))
gopher1_in_ga(cons(cons(cons(T34, T35), T36), T37), T39) → U1_ga(T34, T35, T36, T37, T39, gopher1_in_ga(cons(T34, cons(T35, cons(T36, T37))), T39))
U1_ga(T34, T35, T36, T37, T39, gopher1_out_ga(cons(T34, cons(T35, cons(T36, T37))), T39)) → gopher1_out_ga(cons(cons(cons(T34, T35), T36), T37), T39)
GOPHER1_IN_GA(cons(cons(cons(T34, T35), T36), T37), T39) → GOPHER1_IN_GA(cons(T34, cons(T35, cons(T36, T37))), T39)
gopher1_in_ga(nil, nil) → gopher1_out_ga(nil, nil)
gopher1_in_ga(cons(nil, T4), cons(nil, T4)) → gopher1_out_ga(cons(nil, T4), cons(nil, T4))
gopher1_in_ga(cons(cons(nil, T22), T23), cons(nil, cons(T22, T23))) → gopher1_out_ga(cons(cons(nil, T22), T23), cons(nil, cons(T22, T23)))
gopher1_in_ga(cons(cons(cons(T34, T35), T36), T37), T39) → U1_ga(T34, T35, T36, T37, T39, gopher1_in_ga(cons(T34, cons(T35, cons(T36, T37))), T39))
U1_ga(T34, T35, T36, T37, T39, gopher1_out_ga(cons(T34, cons(T35, cons(T36, T37))), T39)) → gopher1_out_ga(cons(cons(cons(T34, T35), T36), T37), T39)
GOPHER1_IN_GA(cons(cons(cons(T34, T35), T36), T37), T39) → GOPHER1_IN_GA(cons(T34, cons(T35, cons(T36, T37))), T39)
GOPHER1_IN_GA(cons(cons(cons(T34, T35), T36), T37)) → GOPHER1_IN_GA(cons(T34, cons(T35, cons(T36, T37))))
GOPHER1_IN_GA(cons(cons(cons(T34, T35), T36), T37)) → GOPHER1_IN_GA(cons(T34, cons(T35, cons(T36, T37))))
POL(GOPHER1_IN_GA(x1)) = 2·x1
POL(cons(x1, x2)) = 2 + 2·x1 + x2