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 PisEmptyProof (⇔)
↳16 YES
countstack1_in_ga(empty, 0) → countstack1_out_ga(empty, 0)
countstack1_in_ga(push(nil, empty), 0) → countstack1_out_ga(push(nil, empty), 0)
countstack1_in_ga(push(nil, push(nil, T16)), T18) → U1_ga(T16, T18, countstack1_in_ga(T16, T18))
countstack1_in_ga(push(nil, push(cons(T35, T36), T37)), s(T39)) → U2_ga(T35, T36, T37, T39, countstack1_in_ga(push(T35, push(T36, T37)), T39))
countstack1_in_ga(push(cons(nil, T64), T65), s(T67)) → U3_ga(T64, T65, T67, countstack1_in_ga(push(T64, T65), T67))
countstack1_in_ga(push(cons(cons(T80, T81), T82), T83), s(s(T85))) → U4_ga(T80, T81, T82, T83, T85, countstack1_in_ga(push(T80, push(T81, push(T82, T83))), T85))
U4_ga(T80, T81, T82, T83, T85, countstack1_out_ga(push(T80, push(T81, push(T82, T83))), T85)) → countstack1_out_ga(push(cons(cons(T80, T81), T82), T83), s(s(T85)))
U3_ga(T64, T65, T67, countstack1_out_ga(push(T64, T65), T67)) → countstack1_out_ga(push(cons(nil, T64), T65), s(T67))
U2_ga(T35, T36, T37, T39, countstack1_out_ga(push(T35, push(T36, T37)), T39)) → countstack1_out_ga(push(nil, push(cons(T35, T36), T37)), s(T39))
U1_ga(T16, T18, countstack1_out_ga(T16, T18)) → countstack1_out_ga(push(nil, push(nil, T16)), T18)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
countstack1_in_ga(empty, 0) → countstack1_out_ga(empty, 0)
countstack1_in_ga(push(nil, empty), 0) → countstack1_out_ga(push(nil, empty), 0)
countstack1_in_ga(push(nil, push(nil, T16)), T18) → U1_ga(T16, T18, countstack1_in_ga(T16, T18))
countstack1_in_ga(push(nil, push(cons(T35, T36), T37)), s(T39)) → U2_ga(T35, T36, T37, T39, countstack1_in_ga(push(T35, push(T36, T37)), T39))
countstack1_in_ga(push(cons(nil, T64), T65), s(T67)) → U3_ga(T64, T65, T67, countstack1_in_ga(push(T64, T65), T67))
countstack1_in_ga(push(cons(cons(T80, T81), T82), T83), s(s(T85))) → U4_ga(T80, T81, T82, T83, T85, countstack1_in_ga(push(T80, push(T81, push(T82, T83))), T85))
U4_ga(T80, T81, T82, T83, T85, countstack1_out_ga(push(T80, push(T81, push(T82, T83))), T85)) → countstack1_out_ga(push(cons(cons(T80, T81), T82), T83), s(s(T85)))
U3_ga(T64, T65, T67, countstack1_out_ga(push(T64, T65), T67)) → countstack1_out_ga(push(cons(nil, T64), T65), s(T67))
U2_ga(T35, T36, T37, T39, countstack1_out_ga(push(T35, push(T36, T37)), T39)) → countstack1_out_ga(push(nil, push(cons(T35, T36), T37)), s(T39))
U1_ga(T16, T18, countstack1_out_ga(T16, T18)) → countstack1_out_ga(push(nil, push(nil, T16)), T18)
COUNTSTACK1_IN_GA(push(nil, push(nil, T16)), T18) → U1_GA(T16, T18, countstack1_in_ga(T16, T18))
COUNTSTACK1_IN_GA(push(nil, push(nil, T16)), T18) → COUNTSTACK1_IN_GA(T16, T18)
COUNTSTACK1_IN_GA(push(nil, push(cons(T35, T36), T37)), s(T39)) → U2_GA(T35, T36, T37, T39, countstack1_in_ga(push(T35, push(T36, T37)), T39))
COUNTSTACK1_IN_GA(push(nil, push(cons(T35, T36), T37)), s(T39)) → COUNTSTACK1_IN_GA(push(T35, push(T36, T37)), T39)
COUNTSTACK1_IN_GA(push(cons(nil, T64), T65), s(T67)) → U3_GA(T64, T65, T67, countstack1_in_ga(push(T64, T65), T67))
COUNTSTACK1_IN_GA(push(cons(nil, T64), T65), s(T67)) → COUNTSTACK1_IN_GA(push(T64, T65), T67)
COUNTSTACK1_IN_GA(push(cons(cons(T80, T81), T82), T83), s(s(T85))) → U4_GA(T80, T81, T82, T83, T85, countstack1_in_ga(push(T80, push(T81, push(T82, T83))), T85))
COUNTSTACK1_IN_GA(push(cons(cons(T80, T81), T82), T83), s(s(T85))) → COUNTSTACK1_IN_GA(push(T80, push(T81, push(T82, T83))), T85)
countstack1_in_ga(empty, 0) → countstack1_out_ga(empty, 0)
countstack1_in_ga(push(nil, empty), 0) → countstack1_out_ga(push(nil, empty), 0)
countstack1_in_ga(push(nil, push(nil, T16)), T18) → U1_ga(T16, T18, countstack1_in_ga(T16, T18))
countstack1_in_ga(push(nil, push(cons(T35, T36), T37)), s(T39)) → U2_ga(T35, T36, T37, T39, countstack1_in_ga(push(T35, push(T36, T37)), T39))
countstack1_in_ga(push(cons(nil, T64), T65), s(T67)) → U3_ga(T64, T65, T67, countstack1_in_ga(push(T64, T65), T67))
countstack1_in_ga(push(cons(cons(T80, T81), T82), T83), s(s(T85))) → U4_ga(T80, T81, T82, T83, T85, countstack1_in_ga(push(T80, push(T81, push(T82, T83))), T85))
U4_ga(T80, T81, T82, T83, T85, countstack1_out_ga(push(T80, push(T81, push(T82, T83))), T85)) → countstack1_out_ga(push(cons(cons(T80, T81), T82), T83), s(s(T85)))
U3_ga(T64, T65, T67, countstack1_out_ga(push(T64, T65), T67)) → countstack1_out_ga(push(cons(nil, T64), T65), s(T67))
U2_ga(T35, T36, T37, T39, countstack1_out_ga(push(T35, push(T36, T37)), T39)) → countstack1_out_ga(push(nil, push(cons(T35, T36), T37)), s(T39))
U1_ga(T16, T18, countstack1_out_ga(T16, T18)) → countstack1_out_ga(push(nil, push(nil, T16)), T18)
COUNTSTACK1_IN_GA(push(nil, push(nil, T16)), T18) → U1_GA(T16, T18, countstack1_in_ga(T16, T18))
COUNTSTACK1_IN_GA(push(nil, push(nil, T16)), T18) → COUNTSTACK1_IN_GA(T16, T18)
COUNTSTACK1_IN_GA(push(nil, push(cons(T35, T36), T37)), s(T39)) → U2_GA(T35, T36, T37, T39, countstack1_in_ga(push(T35, push(T36, T37)), T39))
COUNTSTACK1_IN_GA(push(nil, push(cons(T35, T36), T37)), s(T39)) → COUNTSTACK1_IN_GA(push(T35, push(T36, T37)), T39)
COUNTSTACK1_IN_GA(push(cons(nil, T64), T65), s(T67)) → U3_GA(T64, T65, T67, countstack1_in_ga(push(T64, T65), T67))
COUNTSTACK1_IN_GA(push(cons(nil, T64), T65), s(T67)) → COUNTSTACK1_IN_GA(push(T64, T65), T67)
COUNTSTACK1_IN_GA(push(cons(cons(T80, T81), T82), T83), s(s(T85))) → U4_GA(T80, T81, T82, T83, T85, countstack1_in_ga(push(T80, push(T81, push(T82, T83))), T85))
COUNTSTACK1_IN_GA(push(cons(cons(T80, T81), T82), T83), s(s(T85))) → COUNTSTACK1_IN_GA(push(T80, push(T81, push(T82, T83))), T85)
countstack1_in_ga(empty, 0) → countstack1_out_ga(empty, 0)
countstack1_in_ga(push(nil, empty), 0) → countstack1_out_ga(push(nil, empty), 0)
countstack1_in_ga(push(nil, push(nil, T16)), T18) → U1_ga(T16, T18, countstack1_in_ga(T16, T18))
countstack1_in_ga(push(nil, push(cons(T35, T36), T37)), s(T39)) → U2_ga(T35, T36, T37, T39, countstack1_in_ga(push(T35, push(T36, T37)), T39))
countstack1_in_ga(push(cons(nil, T64), T65), s(T67)) → U3_ga(T64, T65, T67, countstack1_in_ga(push(T64, T65), T67))
countstack1_in_ga(push(cons(cons(T80, T81), T82), T83), s(s(T85))) → U4_ga(T80, T81, T82, T83, T85, countstack1_in_ga(push(T80, push(T81, push(T82, T83))), T85))
U4_ga(T80, T81, T82, T83, T85, countstack1_out_ga(push(T80, push(T81, push(T82, T83))), T85)) → countstack1_out_ga(push(cons(cons(T80, T81), T82), T83), s(s(T85)))
U3_ga(T64, T65, T67, countstack1_out_ga(push(T64, T65), T67)) → countstack1_out_ga(push(cons(nil, T64), T65), s(T67))
U2_ga(T35, T36, T37, T39, countstack1_out_ga(push(T35, push(T36, T37)), T39)) → countstack1_out_ga(push(nil, push(cons(T35, T36), T37)), s(T39))
U1_ga(T16, T18, countstack1_out_ga(T16, T18)) → countstack1_out_ga(push(nil, push(nil, T16)), T18)
COUNTSTACK1_IN_GA(push(nil, push(cons(T35, T36), T37)), s(T39)) → COUNTSTACK1_IN_GA(push(T35, push(T36, T37)), T39)
COUNTSTACK1_IN_GA(push(nil, push(nil, T16)), T18) → COUNTSTACK1_IN_GA(T16, T18)
COUNTSTACK1_IN_GA(push(cons(nil, T64), T65), s(T67)) → COUNTSTACK1_IN_GA(push(T64, T65), T67)
COUNTSTACK1_IN_GA(push(cons(cons(T80, T81), T82), T83), s(s(T85))) → COUNTSTACK1_IN_GA(push(T80, push(T81, push(T82, T83))), T85)
countstack1_in_ga(empty, 0) → countstack1_out_ga(empty, 0)
countstack1_in_ga(push(nil, empty), 0) → countstack1_out_ga(push(nil, empty), 0)
countstack1_in_ga(push(nil, push(nil, T16)), T18) → U1_ga(T16, T18, countstack1_in_ga(T16, T18))
countstack1_in_ga(push(nil, push(cons(T35, T36), T37)), s(T39)) → U2_ga(T35, T36, T37, T39, countstack1_in_ga(push(T35, push(T36, T37)), T39))
countstack1_in_ga(push(cons(nil, T64), T65), s(T67)) → U3_ga(T64, T65, T67, countstack1_in_ga(push(T64, T65), T67))
countstack1_in_ga(push(cons(cons(T80, T81), T82), T83), s(s(T85))) → U4_ga(T80, T81, T82, T83, T85, countstack1_in_ga(push(T80, push(T81, push(T82, T83))), T85))
U4_ga(T80, T81, T82, T83, T85, countstack1_out_ga(push(T80, push(T81, push(T82, T83))), T85)) → countstack1_out_ga(push(cons(cons(T80, T81), T82), T83), s(s(T85)))
U3_ga(T64, T65, T67, countstack1_out_ga(push(T64, T65), T67)) → countstack1_out_ga(push(cons(nil, T64), T65), s(T67))
U2_ga(T35, T36, T37, T39, countstack1_out_ga(push(T35, push(T36, T37)), T39)) → countstack1_out_ga(push(nil, push(cons(T35, T36), T37)), s(T39))
U1_ga(T16, T18, countstack1_out_ga(T16, T18)) → countstack1_out_ga(push(nil, push(nil, T16)), T18)
COUNTSTACK1_IN_GA(push(nil, push(cons(T35, T36), T37)), s(T39)) → COUNTSTACK1_IN_GA(push(T35, push(T36, T37)), T39)
COUNTSTACK1_IN_GA(push(nil, push(nil, T16)), T18) → COUNTSTACK1_IN_GA(T16, T18)
COUNTSTACK1_IN_GA(push(cons(nil, T64), T65), s(T67)) → COUNTSTACK1_IN_GA(push(T64, T65), T67)
COUNTSTACK1_IN_GA(push(cons(cons(T80, T81), T82), T83), s(s(T85))) → COUNTSTACK1_IN_GA(push(T80, push(T81, push(T82, T83))), T85)
COUNTSTACK1_IN_GA(push(nil, push(cons(T35, T36), T37))) → COUNTSTACK1_IN_GA(push(T35, push(T36, T37)))
COUNTSTACK1_IN_GA(push(nil, push(nil, T16))) → COUNTSTACK1_IN_GA(T16)
COUNTSTACK1_IN_GA(push(cons(nil, T64), T65)) → COUNTSTACK1_IN_GA(push(T64, T65))
COUNTSTACK1_IN_GA(push(cons(cons(T80, T81), T82), T83)) → COUNTSTACK1_IN_GA(push(T80, push(T81, push(T82, T83))))
No rules are removed from R.
COUNTSTACK1_IN_GA(push(nil, push(cons(T35, T36), T37))) → COUNTSTACK1_IN_GA(push(T35, push(T36, T37)))
COUNTSTACK1_IN_GA(push(nil, push(nil, T16))) → COUNTSTACK1_IN_GA(T16)
COUNTSTACK1_IN_GA(push(cons(nil, T64), T65)) → COUNTSTACK1_IN_GA(push(T64, T65))
COUNTSTACK1_IN_GA(push(cons(cons(T80, T81), T82), T83)) → COUNTSTACK1_IN_GA(push(T80, push(T81, push(T82, T83))))
POL(COUNTSTACK1_IN_GA(x1)) = 2·x1
POL(cons(x1, x2)) = x1 + x2
POL(nil) = 0
POL(push(x1, x2)) = 2·x1 + x2