195 long resflag,resflag2;
200 long not_found =
TRUE;
209 Errorline(
"attempt to residuate on psi-term %P in the heap.\n",var);
216 while (not_found && *r) {
217 if ((*r)->goal == g) {
220 result=
glb_code((*r)->sortflag,(*r)->bestsort,
229 &resflag2,&rescode2);
238 if ((*r)->value_2==
NULL && resvalue2!=
NULL) {
241 if ((*r)->bestsort!=rescode2) {
244 (*r)->bestsort=rescode2;
246 if ((*r)->sortflag!=resflag2) {
248 (*r)->sortflag=resflag2;
253 if ((*r)->value_2==
NULL && resvalue!=
NULL) {
256 if ((*r)->bestsort!=rescode) {
259 (*r)->bestsort=rescode;
261 if ((*r)->sortflag!=resflag) {
263 (*r)->sortflag=resflag;
285 (*r)->sortflag=resflag;
286 (*r)->bestsort=rescode;
287 (*r)->value_2=resvalue;
362 traceline(
"residuating on %P (other = %P)\n",t,u);
366 traceline(
"failure because of disentailment\n");
371 traceline(
"no failure because of disentailment\n");
532 success=
c_rule[(
unsigned long)rule]();
546 traceline(
"alternative rule has been retracted\n");
798 unsigned long ulen = *((
unsigned long *) u->
value_3);
799 unsigned long vlen = *((
unsigned long *) v->
value_3);
800 success=(ulen==vlen && bcmp((
char *)u->
value_3,(
char *)v->
value_3,ulen)==0);
818 success=(r==floor(r));
912 traceline(
"push disjunction goal %P\n",t);
940 traceline(
"setting up function call %P\n",t);
1090 traceline(
"PVR: entering check_out with status %d and term %P\n",
1199 if (((
long)t->
status)!=2) {
1406 rb->
md = match_date;
1426 *match_date = rb->
md;
1446 traceline(
"dereferencing variable %P\n",t);
long do_residuation()
do_residuation
void push_ptr_value(type_ptr t, GENERIC *p)
push_ptr_value
long glb_value(long result, long f, GENERIC c, GENERIC value1, GENERIC value2, GENERIC *value)
glb_value
struct wl_resid_block * ptr_resid_block
void deref2_eval(ptr_psi_term t)
deref2_eval
long eval_args(ptr_node n)
eval_args
long deref_eval(ptr_psi_term t)
deref_eval
void eval_global_var(ptr_psi_term t)
eval_global_var
void clear_copy()
clear_copy
ptr_psi_term real_stack_psi_term(long stat, REAL thereal)
real_stack_psi_term
void push2_ptr_value(type_ptr t, GENERIC *p, GENERIC v)
push2_ptr_value
void deref_rec_args(ptr_node n)
deref_rec_args
long check_out(ptr_psi_term t)
void match_attr2(ptr_node *u, ptr_node v, ptr_resid_block rb)
match_attr2
void push_choice_point(goals t, ptr_psi_term a, ptr_psi_term b, GENERIC c)
push_choice_point
void push_goal(goals t, ptr_psi_term a, ptr_psi_term b, GENERIC c)
push_goal
long(* c_rule[MAX_BUILT_INS])()
void push_psi_ptr_value(ptr_psi_term q, GENERIC *p)
push_psi_ptr_value
void do_currying()
do_currying
void residuate3(ptr_psi_term u, ptr_psi_term v, ptr_psi_term w)
residuate3
long matches(ptr_definition t1, ptr_definition t2, long *smaller)
matches
void get_one_arg(ptr_node t, ptr_psi_term *a)
get_one_arg
long check_type(ptr_psi_term t)
check_type
void init_global_vars()
init_global_vars
long overlap_type(ptr_definition t1, ptr_definition t2)
overlap_type
ptr_resid_list resid_vars
void residuate_double(ptr_psi_term t, ptr_psi_term u)
residuate_double
void traceline(char *format,...)
traceline
void fetch_def(ptr_psi_term u, long allflag)
fetch_def
ptr_psi_term quote_copy(ptr_psi_term t, long heap_flag)
quote_copy
void Errorline(char *format,...)
Errorline.
void print_resid_message(ptr_psi_term t, ptr_resid_list r)
print_resid_message
ptr_definition first_definition
ptr_psi_term copy(ptr_psi_term t, long copy_flag, long heap_flag)
copy
long deref_rec_eval(ptr_psi_term t)
deref_rec_eval
ptr_psi_term global_value
long f_check_out(ptr_psi_term t)
f_check_out
long match_aim()
match_aim
ptr_definition quoted_string
struct wl_definition * ptr_definition
long deref_args_eval(ptr_psi_term t, long set)
deref_args_eval
void check_func(ptr_psi_term t)
check_func
void release_resid(ptr_psi_term t)
release_resid
ptr_definition disjunction
void append_resid(ptr_psi_term u, ptr_psi_term v)
append_resid
ptr_psi_term stack_copy_psi_term(psi_term t)
stack_copy_psi_term
long featcmp(char *str1, char *str2)
featcmp
ptr_psi_term heap_psi_term(long stat)
heap_psi_term
ptr_psi_term stack_psi_term(long stat)
stack_psi_term
ptr_definition sys_bytedata
void match_attr1(ptr_node *u, ptr_node v, ptr_resid_block rb)
void match_attr1
long residuateGoalOnVar(ptr_goal g, ptr_psi_term var, ptr_psi_term othervar)
residuateGoalOnVar
long i_eval_args(ptr_node n)
i_eval_args
struct wl_psi_term * ptr_psi_term
void save_resid(ptr_resid_block rb, ptr_psi_term match_date)
save_resid
long i_check_out(ptr_psi_term t)
i_check_out
void residuate2(ptr_psi_term u, ptr_psi_term v)
residuate2
static long check_func_flag
void match_attr(ptr_node *u, ptr_node v, ptr_resid_block rb)
match_attr
unsigned long global_time_stamp
void match_attr3(ptr_node *u, ptr_node v, ptr_resid_block rb)
match_attr3
void deref_rec_body(ptr_psi_term t)
deref_rec_body
long glb_code(long f1, GENERIC c1, long f2, GENERIC c2, long *f3, GENERIC *c3)
glb_code
ptr_psi_term eval_copy(ptr_psi_term t, long heap_flag)
eval_copy
void deref_rec_args_exc(ptr_node n, long set)
deref_rec_args_exc
void residuate(ptr_psi_term t)
residuate
void deref2_rec_eval(ptr_psi_term t)
deref2_rec_eval
long in_set(char *str, long set)
in_set
ptr_triple_list properties
void release_resid_notrail(ptr_psi_term t)
release_resid_notrail
void release_resid_main(ptr_psi_term t, long trailflag)
release_resid_main
long do_residuation_user()
do_residuation_user()
void restore_resid(ptr_resid_block rb, ptr_psi_term *match_date)
restore_resid
GENERIC heap_alloc(long s)
heap_alloc
ptr_choice_point choice_stack
void check_disj(ptr_psi_term t)
check_disj