bool ap_abstract1_check_env_array(ap_funid_t funid,ap_manager_t* man, ap_abstract1_t* tab, size_t size) { bool res; if (size==0){ ap_manager_raise_exception(man, AP_EXC_INVALID_ARGUMENT, funid,"array of abstract values of size 0"); res = false; } else { size_t i; ap_environment_t* env0 = tab[0].env; for (i=1;i<size; i++){ if (!ap_environment_is_eq(env0,tab[i].env)){ res = false; break; char str[160]; snprintf(str,159,"The %luth abstract value of the array has not \ the same environement as the 0th abstract value\ ",(unsigned long)i); ap_manager_raise_exception(man, AP_EXC_INVALID_ARGUMENT, funid,str); return false; } } res = true; }
void sh_push (sh_formula_t* f, bool sign) { sh_formula_t** sh = (sign == true) ? &sh_pos : &sh_neg; if (!f) { fprintf (stderr, "Sh_push: NULL formula of sign %d pushed.\n", sign); return; } if (!(*sh)) { (*sh) = f; } else if (ap_environment_is_eq ((*sh)->env, f->env)) { /* TODO: check f->dw */ sh_push2 ((*sh), f); /* free f->form */ ap_environment_free (f->env); free (f); } else fprintf (stderr, "Sh_push: formula with different environments.\n"); return; }
bool ap_abstract1_check_env2(ap_funid_t funid, ap_manager_t* man, ap_abstract1_t* a1, ap_abstract1_t* a2) { if (ap_environment_is_eq(a1->env,a2->env)) return true; else { ap_manager_raise_exception(man, AP_EXC_INVALID_ARGUMENT, funid, "The two abstract values have different environments"); return false; } }