  addtbnds <- solveSubproblem prob rest_rhs (con rule)
  res <- case (trace ("subproblem complexity " ++ show addtbnds) addtbnds) of
    Just (add_bound, reach_rls) ->
      --FIXME pass invariant of SCC instead of true constraint
      case findInitCond [] (con rule) of
        Nothing -> return Nothing
        Just (x, c) ->
          let
            rexprs = map (\t -> map (arithSimp . poly2arith) (args t)) rec_calls
            lexprs = map (arithSimp . poly2arith) largs
            arg_pairs = zip lexprs rexprs
          in