uint64_t solver_Algebra_to_boolean(struct solver_Algebra *a, uint64_t expr) {
  switch(get_tag(expr)) {
  case Tag_Boolean:
    return expr;
  case Tag_Equals:
    return pack_boolean(equals(a, get_car(a, expr), get_cdr(a, expr)));
  default:
    return pack_undefined();
  }
}