(STRATEGY
    INNERMOST)

(VAR
    x4 x3 x2 x1 x6 x8 x35 x19 x9 x65 x39 x20 x28 x32)
(RULES
    cond_add_b_c_carry_2(Pair(x4,x3),x2,x1) -> Cons(x4,add_1#3(x2,x1,x3))
    add_1#3(Nil(),x4,x2) -> add_int#2(x4,x2)
    add_1#3(Cons(x6,x4),Nil(),x2) -> add_int#2(Cons(x6,x4),x2)
    add_1#3(Cons(x8,x35),Cons(x4,x19),x9) ->
      cond_add_b_c_carry_2(split#1(plus#2(plus#2(x8,x4),x9)),x35,x19)
    cond_add_int_b_n_1(Pair(x3,x2),x1) -> Cons(x3,add_int#2(x1,x2))
    add_int#2(Nil(),0()) -> Nil()
    add_int#2(Nil(),S(x65)) -> Cons(S(x65),Nil())
    add_int#2(Nil(),S(0())) -> Nil()
    add_int#2(Cons(x9,x19),0()) -> ite#3(Cons(x9,x19)
                                        ,cond_add_int_b_n_1(split#1(plus#2(0()
                                                                          ,x9))
                                                           ,x19))
    add_int#2(Cons(x19,x39),S(x65)) -> cond_add_int_b_n_1(split#1(plus#2(S(x65)
                                                                        ,x19))
                                                         ,x39)
    add_int#2(Cons(x9,x19),S(0())) ->
      ite#3(Cons(x9,x19),cond_add_int_b_n_1(split#1(plus#2(S(0()),x9)),x19))
    cond_split_n(Triple(x2,x1)) -> Pair(x1,x2)
    split#1(x1) -> cond_split_n(div_mod#2(x1))
    cond_div_mod_n_m_2(Triple(x2,x1)) -> Triple(plus#2(S(0()),x2),x1)
    cond_div_mod_n_m(Pair(0(),S(S(S(S(S(S(S(S(S(S(0()))))))))))),x1) ->
      Triple(0(),x1)
    cond_div_mod_n_m(Pair(S(x2),S(S(S(S(S(S(S(S(S(S(0()))))))))))),x1) ->
      cond_div_mod_n_m_2(div_mod#2(S(x2)))
    div_mod#2(x4) ->
      cond_div_mod_n_m(Pair(minus'#2(x4,S(S(S(S(S(S(S(S(S(S(0())))))))))))
                           ,S(S(S(S(S(S(S(S(S(S(0())))))))))))
                      ,x4)
    plus#2(x20,0()) -> x20
    plus#2(x4,S(x2)) -> S(plus#2(x4,x2))
    minus'#2(0(),x28) -> 0()
    minus'#2(S(x32),0()) -> S(x32)
    minus'#2(S(x4),S(x2)) -> minus'#2(x4,x2)
    ite#3(Cons(x2,x3),x1) -> Cons(x2,x3)
    main(x2,x1) -> add_1#3(x2,x1,0()))