namespace factor { void abort(); }

#ifdef FACTOR_DEBUG
#define FACTOR_ASSERT(condition)                                               \
  ((condition)                                                                 \
       ? (void)0                                                               \
       : (::fprintf(stderr, "assertion \"%s\" failed: file \"%s\", line %d\n", \
                    #condition, __FILE__, __LINE__),                           \
          ::factor::abort()))
#else
#define FACTOR_ASSERT(condition) ((void)0)
#endif