177 long resflag,resflag2;
182 long not_found =
TRUE;
191 Errorline(
"attempt to residuate on psi-term %P in the heap.\n",var);
198 while (not_found && *r) {
199 if ((*r)->goal == g) {
202 result=
glb_code((*r)->sortflag,(*r)->bestsort,
211 &resflag2,&rescode2);
220 if ((*r)->value_2==
NULL && resvalue2!=
NULL) {
223 if ((*r)->bestsort!=rescode2) {
226 (*r)->bestsort=rescode2;
228 if ((*r)->sortflag!=resflag2) {
230 (*r)->sortflag=resflag2;
235 if ((*r)->value_2==
NULL && resvalue!=
NULL) {
238 if ((*r)->bestsort!=rescode) {
241 (*r)->bestsort=rescode;
243 if ((*r)->sortflag!=resflag) {
245 (*r)->sortflag=resflag;
267 (*r)->sortflag=resflag;
268 (*r)->bestsort=rescode;
269 (*r)->value_2=resvalue;
339 traceline(
"residuating on %P (other = %P)\n",t,u);
343 traceline(
"failure because of disentailment\n");
348 traceline(
"no failure because of disentailment\n");
491 success=
c_rule[(
unsigned long)rule]();
505 traceline(
"alternative rule has been retracted\n");
740 unsigned long ulen = *((
unsigned long *) u->
value_3);
741 unsigned long vlen = *((
unsigned long *) v->
value_3);
742 success=(ulen==vlen && bcmp((
char *)u->
value_3,(
char *)v->
value_3,ulen)==0);
760 success=(r==floor(r));
848 traceline(
"push disjunction goal %P\n",t);
874 traceline(
"setting up function call %P\n",t);
903 if (t->type->evaluate_args)
930 if (t->type->properties) {
931 if (t->attr_list || t->type->always_check) {
1007 traceline(
"PVR: entering check_out with status %d and term %P\n",
1015 switch((
long)t->type->type_def) {
1041 t->status &= ~
RMASK;
1107 if (((
long)t->status)!=2) {
1211 if (!
in_set(n->key,set)) {
1266 rb->md = match_date;
1281 *match_date = rb->md;
1299 traceline(
"dereferencing variable %P\n",t);
1302 if(!t->type->global_value) {
1323 if(t->type->type_def==(
def_type)
global && t!=t->type->global_value) {
1326 t->coref=t->type->global_value;
long glb_value(long result, long f, GENERIC c, GENERIC value1, GENERIC value2, GENERIC *value)
struct wl_resid_block * ptr_resid_block
void deref2_eval(ptr_psi_term t)
long eval_args(ptr_node n)
long deref_eval(ptr_psi_term t)
void eval_global_var(ptr_psi_term t)
ptr_psi_term real_stack_psi_term(long stat, REAL thereal)
void push2_ptr_value(type_ptr t, GENERIC *p, GENERIC v)
void deref_rec_args(ptr_node n)
long check_out(ptr_psi_term t)
void push_ptr_value(type_ptr t, GENERIC *p)
void match_attr2(ptr_node *u, ptr_node v, ptr_resid_block rb)
void push_choice_point(goals t, ptr_psi_term a, ptr_psi_term b, GENERIC c)
void push_goal(goals t, ptr_psi_term a, ptr_psi_term b, GENERIC c)
long(* c_rule[MAX_BUILT_INS])()
void push_psi_ptr_value(ptr_psi_term q, GENERIC *p)
void residuate3(ptr_psi_term u, ptr_psi_term v, ptr_psi_term w)
long matches(ptr_definition t1, ptr_definition t2, long *smaller)
void get_one_arg(ptr_node t, ptr_psi_term *a)
long check_type(ptr_psi_term t)
long overlap_type(ptr_definition t1, ptr_definition t2)
ptr_resid_list resid_vars
void residuate_double(ptr_psi_term t, ptr_psi_term u)
void traceline(char *format,...)
void fetch_def(ptr_psi_term u, long allflag)
ptr_psi_term quote_copy(ptr_psi_term t, long heap_flag)
void Errorline(char *format,...)
void print_resid_message(ptr_psi_term t, ptr_resid_list r)
ptr_definition first_definition
ptr_psi_term copy(ptr_psi_term t, long copy_flag, long heap_flag)
long deref_rec_eval(ptr_psi_term t)
ptr_psi_term global_value
long f_check_out(ptr_psi_term t)
ptr_definition quoted_string
struct wl_definition * ptr_definition
long deref_args_eval(ptr_psi_term t, long set)
void check_func(ptr_psi_term t)
void release_resid(ptr_psi_term t)
ptr_definition disjunction
void append_resid(ptr_psi_term u, ptr_psi_term v)
ptr_psi_term stack_copy_psi_term(psi_term t)
long featcmp(char *str1, char *str2)
ptr_psi_term heap_psi_term(long stat)
ptr_psi_term stack_psi_term(long stat)
ptr_definition sys_bytedata
void match_attr1(ptr_node *u, ptr_node v, ptr_resid_block rb)
long residuateGoalOnVar(ptr_goal g, ptr_psi_term var, ptr_psi_term othervar)
long i_eval_args(ptr_node n)
struct wl_psi_term * ptr_psi_term
void save_resid(ptr_resid_block rb, ptr_psi_term match_date)
long i_check_out(ptr_psi_term t)
void residuate2(ptr_psi_term u, ptr_psi_term v)
static long check_func_flag
void match_attr(ptr_node *u, ptr_node v, ptr_resid_block rb)
unsigned long global_time_stamp
void match_attr3(ptr_node *u, ptr_node v, ptr_resid_block rb)
void deref_rec_body(ptr_psi_term t)
long glb_code(long f1, GENERIC c1, long f2, GENERIC c2, long *f3, GENERIC *c3)
ptr_psi_term eval_copy(ptr_psi_term t, long heap_flag)
void deref_rec_args_exc(ptr_node n, long set)
void residuate(ptr_psi_term t)
void deref2_rec_eval(ptr_psi_term t)
long in_set(char *str, long set)
void release_resid_notrail(ptr_psi_term t)
void release_resid_main(ptr_psi_term t, long trailflag)
long do_residuation_user()
void restore_resid(ptr_resid_block rb, ptr_psi_term *match_date)
GENERIC heap_alloc(long s)
ptr_choice_point choice_stack
void check_disj(ptr_psi_term t)