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);
GENERIC stack_pointer
used to allocate from stack - size allocated added - adj for alignment
ptr_definition disjunction
symbol in bi module
#define function_it
was enum (def_type) in extern.h now there is typedef ptr_definition
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
GENERIC heap_pointer
used to allocate from heap - size allocated subtracted - adj for alignment
void push2_ptr_value(type_ptr t, GENERIC *p, GENERIC v)
push2_ptr_value
void deref_rec_args(ptr_node n)
deref_rec_args
ptr_definition integer
symbol in bi module
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
#define def_ptr
values of type_ptr
ptr_definition first_definition
All definition are stores in a linked list starting at first_definition.
ptr_definition cut
symbol in syntax module
ptr_definition iff
symbol in bi module
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
struct wl_psi_term * ptr_psi_term
quotedStackCopy
#define global_it
was enum (def_type) in extern.h now there is typedef ptr_definition
void init_global_vars()
init_global_vars
#define REAL
Which C type to use to represent reals and integers in Wild_Life.
long overlap_type(ptr_definition t1, ptr_definition t2)
overlap_type
ptr_resid_list resid_vars
#define eval
was enum (goal) – but must be long for error.c - now typedef
ptr_definition sys_bytedata
symbol in sys module
void residuate_double(ptr_psi_term t, ptr_psi_term u)
residuate_double
void traceline(char *format,...)
traceline
ptr_definition real
symbol in bi module
void fetch_def(ptr_psi_term u, long allflag)
fetch_def
#define type_it
was enum (def_type) in extern.h now there is typedef ptr_definition
ptr_psi_term quote_copy(ptr_psi_term t, long heap_flag)
quote_copy
void Errorline(char *format,...)
Errorline.
unsigned long * GENERIC
unsigned long *GENERIC
void print_resid_message(ptr_psi_term t, ptr_resid_list r)
print_resid_message
#define TRUE
Standard boolean.
ptr_psi_term copy(ptr_psi_term t, long copy_flag, long heap_flag)
copy
#define RMASK
Bit mask for status field of psi-terms: RMASK is used as a flag to avoid infinite loops when tracing ...
long deref_rec_eval(ptr_psi_term t)
deref_rec_eval
#define match
was enum (goal) – but must be long for error.c - now typedef
ptr_psi_term global_value
#define FALSE
Standard boolean.
long f_check_out(ptr_psi_term t)
f_check_out
#define code_ptr
values of type_ptr
long match_aim()
match_aim
struct wl_definition * ptr_definition
ptr_definition such_that
symbol in syntax module
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
#define fail
was enum (goal) – but must be long for error.c - now typedef
void append_resid(ptr_psi_term u, ptr_psi_term v)
append_resid
#define unify
was enum (goal) – but must be long for error.c - now typedef
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
#define unify_noeval
was enum (goal) – but must be long for error.c - now typedef
ptr_definition top
symbol in syntax module
ptr_psi_term stack_psi_term(long stat)
stack_psi_term
#define eval_cut
was enum (goal) – but must be long for error.c - now typedef
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
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
#define disj
was enum (goal) – but must be long for error.c - now typedef
long glb_code(long f1, GENERIC c1, long f2, GENERIC c2, long *f3, GENERIC *c3)
glb_code
#define MAX_BUILT_INS
Maximum number of built_ins.
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
#define resid_ptr
values of type_ptr
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
#define QUOTED_TRUE
True flags for the flags field of psi-terms.
#define goal_ptr
values of type_ptr
#define SMASK
Bit mask for status field of psi-terms: SMASK masks off the status bits. These are used in the 'mark'...
long do_residuation_user()
do_residuation_user()
ptr_definition quoted_string
symbol in bi module
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
#define STACK
Flag to indicate stack allocation.
#define psi_term_ptr
values of type_ptr
#define int_ptr
values of type_ptr