OSDN Git Service

Toplevel:
[pf3gnuchains/gcc-fork.git] / libbanshee / points-to / andersen_terms.c
diff --git a/libbanshee/points-to/andersen_terms.c b/libbanshee/points-to/andersen_terms.c
deleted file mode 100644 (file)
index 9268a51..0000000
+++ /dev/null
@@ -1,1363 +0,0 @@
-/*
-
-DO NOT edit this file
-
-*/
-#include <engine/list.h>
-#include <regions.h>
-#include <engine/banshee.h>
-#include <assert.h>
-#include <stdio.h>
-#include <engine/bool.h>
-#include <engine/ufind.h>
-#include <string.h>
-#include <engine/setif-sort.h>
-#include <engine/flowrow-sort.h>
-#include <engine/setif-sort.h>
-
-#define REF_ 11
-#define REFPROJ0_ 12
-#define REFPROJ1_ 13
-#define REFPROJ2_ 14
-#define LAM_ 15
-#define LAMPROJ0_ 16
-#define LAMPROJ1_ 17
-#define LAMPROJ2_ 18
-
-typedef gen_e label_term;
-typedef gen_e_list label_term_list;
-
-typedef struct flowrow_field *argterm_field;
-typedef flowrow_map argterm_map;
-typedef gen_e argterm;
-
-typedef gen_e aterm;
-typedef gen_e_list aterm_list;
-
-
-stamp label_term_get_stamp(gen_e arg1);
-bool label_term_is_var(gen_e arg1);
-DECLARE_OPAQUE_LIST(label_term_list,gen_e)
-label_term label_term_zero(void);
-label_term label_term_one(void);
-label_term label_term_fresh(const char *name);
-label_term label_term_union(label_term_list exprs) deletes;
-label_term label_term_inter(label_term_list exprs) deletes;
-label_term label_term_constant(const char *name) deletes;
-bool label_term_is_constant(label_term e,const char *name);
-label_term_list label_term_tlb(label_term e) deletes;
-void label_term_inclusion(label_term e1,label_term e2) deletes;
-void label_term_unify(label_term e1,label_term e2) deletes;
-
-void label_term_print(FILE* arg1,label_term arg2) deletes;
-static bool label_term_res_proj(setif_var arg1,gen_e arg2) deletes;
-static void label_term_con_match(gen_e arg1,gen_e arg2) deletes;
-stamp argterm_get_stamp(gen_e arg1);
-bool argterm_is_var(gen_e arg1);
-DECLARE_OPAQUE_LIST(argterm_map,flowrow_field)
-void argterm_print(FILE *f,argterm row) deletes;
-stamp aterm_get_stamp(gen_e arg1);
-bool aterm_is_var(gen_e arg1);
-DECLARE_OPAQUE_LIST(aterm_list,gen_e)
-aterm aterm_zero(void);
-aterm aterm_one(void);
-aterm aterm_fresh(const char *name);
-aterm aterm_union(aterm_list exprs) deletes;
-aterm aterm_inter(aterm_list exprs) deletes;
-aterm aterm_constant(const char *name) deletes;
-bool aterm_is_constant(aterm e,const char *name);
-aterm_list aterm_tlb(aterm e) deletes;
-void aterm_inclusion(aterm e1,aterm e2) deletes;
-void aterm_unify(aterm e1,aterm e2) deletes;
-
-aterm ref(label_term arg1,aterm arg2,aterm arg3) deletes;
-struct ref_decon ref_decon(aterm arg1);
-struct ref_
-{
-int type;
-stamp st;
-label_term f0;
-aterm f1;
-aterm f2;
-};
-struct ref_decon
-{
-label_term f0;
-aterm f1;
-aterm f2;
-};
-struct refProj0_
-{
-int type;
-stamp st;
-label_term f0;
-};
-static gen_e ref_pat0_con(gen_e arg1) deletes;
-aterm ref_pat0(label_term arg1) deletes;
-struct refProj1_
-{
-int type;
-stamp st;
-aterm f0;
-};
-static gen_e ref_pat1_con(gen_e arg1) deletes;
-aterm ref_pat1(aterm arg1) deletes;
-struct refProj2_
-{
-int type;
-stamp st;
-aterm f0;
-};
-static gen_e ref_pat2_con(gen_e arg1) deletes;
-aterm ref_pat2(aterm arg1) deletes;
-aterm lam(label_term arg1,argterm arg2,aterm arg3) deletes;
-struct lam_decon lam_decon(aterm arg1);
-struct lam_
-{
-int type;
-stamp st;
-label_term f0;
-argterm f1;
-aterm f2;
-};
-struct lam_decon
-{
-label_term f0;
-argterm f1;
-aterm f2;
-};
-struct lamProj0_
-{
-int type;
-stamp st;
-label_term f0;
-};
-static gen_e lam_pat0_con(gen_e arg1) deletes;
-aterm lam_pat0(label_term arg1) deletes;
-struct lamProj1_
-{
-int type;
-stamp st;
-argterm f0;
-};
-static gen_e lam_pat1_con(gen_e arg1) deletes;
-aterm lam_pat1(argterm arg1) deletes;
-struct lamProj2_
-{
-int type;
-stamp st;
-aterm f0;
-};
-static gen_e lam_pat2_con(gen_e arg1) deletes;
-aterm lam_pat2(aterm arg1) deletes;
-void aterm_print(FILE* arg1,aterm arg2) deletes;
-static bool aterm_res_proj(setif_var arg1,gen_e arg2) deletes;
-static void aterm_con_match(gen_e arg1,gen_e arg2) deletes;
-
-stamp label_term_get_stamp(gen_e arg1) 
-{
-return setif_get_stamp((gen_e)arg1);
-}
-
-bool label_term_is_var(gen_e arg1) 
-{
-return setif_is_var((gen_e)arg1);
-}
-
-DEFINE_LIST(label_term_list,gen_e)
-label_term label_term_zero(void)
-{
- return setif_zero();
-}
-
-label_term label_term_one(void)
-{
- return setif_one();
-}
-
-label_term label_term_fresh(const char *name)
-{
- return setif_fresh(name);
-}
-
-static label_term label_term_fresh_small(const char *name)
-{
- return setif_fresh_small(name);
-}
-
-static label_term label_term_fresh_large(const char *name)
-{
- return setif_fresh_large(name);
-}
-
-label_term label_term_union(label_term_list exprs) deletes
-{
- return setif_union(exprs);
-}
-
-label_term label_term_inter(label_term_list exprs) deletes
-{
- return setif_inter(exprs);
-}
-
-label_term label_term_constant(const char *name) deletes
-{
- return setif_constant(name);
-}
-
-bool label_term_is_constant(label_term e, const char *name) 
-{
- if (setif_is_constant(e))
-return (! strcmp(name,setif_get_constant_name(e)));
-else return FALSE;
-}
-
-label_term_list label_term_tlb(label_term e) deletes
-{
- return setif_tlb(e);
-}
-
-void label_term_inclusion(label_term e1, label_term e2) deletes
-{
- setif_inclusion(label_term_con_match,label_term_res_proj,e1,e2);
-}
-
-static void label_term_inclusion_contra(label_term e1, label_term e2) deletes
-{
- setif_inclusion(label_term_con_match,label_term_res_proj,e2,e1);
-}
-
-void label_term_unify(label_term e1, label_term e2) deletes
-{
- setif_inclusion(label_term_con_match,label_term_res_proj,e1,e2);
-setif_inclusion(label_term_con_match,label_term_res_proj,e2,e1);
-}
-
-void label_term_print(FILE* arg1,label_term arg2) deletes
-{
-switch(((setif_term)arg2)->type)
-{
-case VAR_TYPE:
-fprintf(arg1,"%s",sv_get_name((setif_var)arg2));
-break;
-case ZERO_TYPE:
-fprintf(arg1,"0");
-break;
-case ONE_TYPE:
-fprintf(arg1,"1");
-break;
-case CONSTANT_TYPE:
-fprintf(arg1,setif_get_constant_name(arg2));
-break;
-case UNION_TYPE:
-{
-gen_e_list list = setif_get_union(arg2);
-gen_e_list_scanner scan;
-gen_e temp;
-gen_e_list_scan(list,&scan);
-if (gen_e_list_next(&scan,&temp))
-label_term_print(arg1,temp);
-while (gen_e_list_next(&scan,&temp))
-{
-fprintf(arg1," || ");
-label_term_print(arg1,temp);
-}
-
-}
-break;
-case INTER_TYPE:
-{
-gen_e_list list = setif_get_inter(arg2);
-gen_e_list_scanner scan;
-gen_e temp;
-gen_e_list_scan(list,&scan);
-if (gen_e_list_next(&scan,&temp))
-label_term_print(arg1,temp);
-while (gen_e_list_next(&scan,&temp))
-{
-fprintf(arg1," && ");
-label_term_print(arg1,temp);
-}
-
-}
-break;
-
-default:
-return ;
-}
-
-}
-
-static bool label_term_res_proj(setif_var arg1,gen_e arg2) deletes
-{
-switch(((setif_term)arg2)->type)
-{
-
-default:
-return FALSE;
-}
-
-return FALSE;
-}
-
-static void label_term_con_match(gen_e arg1,gen_e arg2) deletes
-{
-switch(((setif_term)arg1)->type)
-{
-
-default:
-failure("Inconsistent system of constraints\n");
-}
-
-return;
-}
-
-stamp argterm_get_stamp(gen_e arg1) 
-{
-return flowrow_get_stamp((gen_e)arg1);
-}
-
-bool argterm_is_var(gen_e arg1) 
-{
-return flowrow_is_var((gen_e)arg1);
-}
-
-DEFINE_LIST(argterm_map,flowrow_field)
-argterm_field argterm_make_field(const char *label, aterm expr)
-{
- flowrow_field result = ralloc(flowrow_region, struct flowrow_field);
-result->label = rstrdup(flowrow_region,label);
-result->expr = (gen_e) expr;
-return result;
-}
-
-argterm argterm_zero(void)
-{
- return flowrow_zero();
-}
-
-argterm argterm_one(void)
-{
- return flowrow_one();
-}
-
-argterm argterm_abs(void)
-{
-return flowrow_abs();
-}
-
-argterm argterm_wild(void)
-{
-return flowrow_wild();
-}
-
-argterm argterm_fresh(const char *name)
-{
-return flowrow_fresh(name);
-}
-
-static argterm argterm_fresh_small(const char *name)
-{
-return flowrow_fresh_small(name);
-}
-
-static argterm argterm_fresh_large(const char *name)
-{
-return flowrow_fresh_large(name);
-}
-
-argterm argterm_row(argterm_map fields,argterm rest) deletes
-{
-return flowrow_row(aterm_get_stamp,fields,rest);
-}
-
-aterm argterm_extract_field(const char *field_name, argterm row)
-{
-return flowrow_extract_field(field_name,row);
-}
-
-argterm argterm_extract_rest(argterm row)
-{
-return flowrow_extract_rest(row);
-}
-
-argterm_map argterm_extract_fields(argterm row)
-{
-return flowrow_extract_fields(row);
-}
-
-void argterm_inclusion(argterm row1, argterm row2) deletes
-{
-flowrow_inclusion(aterm_fresh,aterm_get_stamp,aterm_inclusion,aterm_zero(), row1,row2);
-}
-
-static void argterm_inclusion_contra(argterm row1, argterm row2) deletes
-{
-flowrow_inclusion(aterm_fresh,aterm_get_stamp,aterm_inclusion,aterm_zero(), row2,row1);
-}
-
-void argterm_unify(argterm row1, argterm row2) deletes
-{
-argterm_inclusion(row1,row2);
-argterm_inclusion(row2,row1);
-}
-
-void argterm_print(FILE *f,argterm row) deletes
-{
-flowrow_print(f,aterm_get_stamp,aterm_print,row);
-}
-
-stamp aterm_get_stamp(gen_e arg1) 
-{
-return setif_get_stamp((gen_e)arg1);
-}
-
-bool aterm_is_var(gen_e arg1) 
-{
-return setif_is_var((gen_e)arg1);
-}
-
-DEFINE_LIST(aterm_list,gen_e)
-aterm aterm_zero(void)
-{
- return setif_zero();
-}
-
-aterm aterm_one(void)
-{
- return setif_one();
-}
-
-aterm aterm_fresh(const char *name)
-{
- return setif_fresh(name);
-}
-
-static aterm aterm_fresh_small(const char *name)
-{
- return setif_fresh_small(name);
-}
-
-static aterm aterm_fresh_large(const char *name)
-{
- return setif_fresh_large(name);
-}
-
-aterm aterm_union(aterm_list exprs) deletes
-{
- return setif_union(exprs);
-}
-
-aterm aterm_inter(aterm_list exprs) deletes
-{
- return setif_inter(exprs);
-}
-
-aterm aterm_constant(const char *name) deletes
-{
- return setif_constant(name);
-}
-
-bool aterm_is_constant(aterm e, const char *name) 
-{
- if (setif_is_constant(e))
-return (! strcmp(name,setif_get_constant_name(e)));
-else return FALSE;
-}
-
-aterm_list aterm_tlb(aterm e) deletes
-{
- return setif_tlb(e);
-}
-
-void aterm_inclusion(aterm e1, aterm e2) deletes
-{
- setif_inclusion(aterm_con_match,aterm_res_proj,e1,e2);
-}
-
-static void aterm_inclusion_contra(aterm e1, aterm e2) deletes
-{
- setif_inclusion(aterm_con_match,aterm_res_proj,e2,e1);
-}
-
-void aterm_unify(aterm e1, aterm e2) deletes
-{
- setif_inclusion(aterm_con_match,aterm_res_proj,e1,e2);
-setif_inclusion(aterm_con_match,aterm_res_proj,e2,e1);
-}
-
-bool aterm_is_ref(aterm e)
-{
- return ((setif_term)e)->type == 11;
-}
-
-aterm ref(label_term arg1,aterm arg2,aterm arg3) deletes
-{
-struct ref_ *ret;
-stamp s[4];
-s[0] = REF_;
-s[1] = label_term_get_stamp((gen_e)arg1);
-s[2] = aterm_get_stamp((gen_e)arg2);
-s[3] = aterm_get_stamp((gen_e)arg3);
-if ((ret = (struct ref_ *)term_hash_find(setif_hash,s,4)) == NULL)
-{
-ret = ralloc(setif_region,struct ref_);
-ret->type = s[0];
-ret->st = stamp_fresh();
-ret->f0 = arg1;
-ret->f1 = arg2;
-ret->f2 = arg3;
-term_hash_insert(setif_hash,(gen_e)ret,s,4);
-}
-return (aterm)ret;
-}
-
-struct ref_decon ref_decon(aterm arg1) 
-{
-if (((setif_term)arg1)->type == REF_)
-{
-struct ref_* c = (struct ref_ *)arg1;
-return (struct ref_decon){c->f0,c->f1,c->f2};
-
-}
-else 
-return (struct ref_decon){NULL,NULL,NULL};
-}
-
-static gen_e get_ref_proj0_arg(gen_e_list arg1)
-{
-gen_e temp;
-gen_e_list_scanner scan;
-gen_e_list_scan(arg1,&scan);
-while (gen_e_list_next(&scan,&temp))
-{
-if (((setif_term)temp)->type == REFPROJ0_)
-return (gen_e)((struct refProj0_ * ) temp)->f0;
-} 
-return NULL;
-}
-
-label_term ref_proj0(aterm arg1) deletes
- {
-label_term c;
-if (setif_is_var(arg1))
-{
-setif_var v = (setif_var)arg1;
-c = (label_term)sv_get_ub_proj(v,get_ref_proj0_arg);
-if (c != NULL)
-return c;
-else
-{
-aterm e;
-gen_e lb; 
-gen_e_list_scanner scan; 
-c = label_term_fresh(NULL);
-e = ref_pat0(c);
-sv_add_ub_proj(v,e);
-gen_e_list_scan(sv_get_lbs(v),&scan);
-while (gen_e_list_next(&scan,&lb))
-{
-setif_inclusion(aterm_con_match,aterm_res_proj,lb,e);
-}
-return c;
-}
-}
-else if ( ((setif_term)arg1)->type == REF_)
-return ((struct ref_ * )arg1)->f0;
-else if ( setif_is_zero(arg1))
-return label_term_zero();
-else if ( setif_is_union(arg1))
-{
-c = get_ref_proj0_arg(setif_get_proj_cache(arg1));
-if (c != NULL)
-return c;
-else
-{
-aterm e;
-c = label_term_fresh(NULL);
-e = ref_pat0(c);
-setif_set_proj_cache(arg1,e);
-aterm_inclusion(arg1,e);
-return c;
-}
-}
-else
-{
-aterm e;
-c = label_term_fresh(NULL);
-e = ref_pat0(c);
-aterm_inclusion(arg1,e);
-return c;
-}
-}
-
-static gen_e ref_pat0_con(gen_e arg1) deletes
-{
-return (gen_e)ref_pat0((label_term)arg1);
-}
-
-aterm ref_pat0(label_term arg1) deletes
-{
-struct refProj0_* ret;
-stamp s[2];
-s[0] = REFPROJ0_;
-s[1] = label_term_get_stamp((gen_e)arg1);
-if ((ret = (struct refProj0_ *)term_hash_find(setif_hash,s,2)) == NULL) 
-{
-ret = ralloc(setif_region,struct refProj0_);
-ret->type = REFPROJ0_;
-ret->st = stamp_fresh();
-ret->f0 = arg1;
-term_hash_insert(setif_hash,(gen_e)ret,s,2);
-}
-return (aterm)ret;
-}
-
-static gen_e get_ref_proj1_arg(gen_e_list arg1)
-{
-gen_e temp;
-gen_e_list_scanner scan;
-gen_e_list_scan(arg1,&scan);
-while (gen_e_list_next(&scan,&temp))
-{
-if (((setif_term)temp)->type == REFPROJ1_)
-return (gen_e)((struct refProj1_ * ) temp)->f0;
-} 
-return NULL;
-}
-
-aterm ref_proj1(aterm arg1) deletes
- {
-aterm c;
-if (setif_is_var(arg1))
-{
-setif_var v = (setif_var)arg1;
-c = (aterm)sv_get_ub_proj(v,get_ref_proj1_arg);
-if (c != NULL)
-return c;
-else
-{
-aterm e;
-gen_e lb; 
-gen_e_list_scanner scan; 
-c = aterm_fresh(NULL);
-e = ref_pat1(c);
-sv_add_ub_proj(v,e);
-gen_e_list_scan(sv_get_lbs(v),&scan);
-while (gen_e_list_next(&scan,&lb))
-{
-setif_inclusion(aterm_con_match,aterm_res_proj,lb,e);
-}
-return c;
-}
-}
-else if ( ((setif_term)arg1)->type == REF_)
-return ((struct ref_ * )arg1)->f1;
-else if ( setif_is_zero(arg1))
-return aterm_zero();
-else if ( setif_is_union(arg1))
-{
-c = get_ref_proj1_arg(setif_get_proj_cache(arg1));
-if (c != NULL)
-return c;
-else
-{
-aterm e;
-c = aterm_fresh(NULL);
-e = ref_pat1(c);
-setif_set_proj_cache(arg1,e);
-aterm_inclusion(arg1,e);
-return c;
-}
-}
-else
-{
-aterm e;
-c = aterm_fresh(NULL);
-e = ref_pat1(c);
-aterm_inclusion(arg1,e);
-return c;
-}
-}
-
-static gen_e ref_pat1_con(gen_e arg1) deletes
-{
-return (gen_e)ref_pat1((aterm)arg1);
-}
-
-aterm ref_pat1(aterm arg1) deletes
-{
-struct refProj1_* ret;
-stamp s[2];
-s[0] = REFPROJ1_;
-s[1] = aterm_get_stamp((gen_e)arg1);
-if ((ret = (struct refProj1_ *)term_hash_find(setif_hash,s,2)) == NULL) 
-{
-ret = ralloc(setif_region,struct refProj1_);
-ret->type = REFPROJ1_;
-ret->st = stamp_fresh();
-ret->f0 = arg1;
-term_hash_insert(setif_hash,(gen_e)ret,s,2);
-}
-return (aterm)ret;
-}
-
-static gen_e get_ref_proj2_arg(gen_e_list arg1)
-{
-gen_e temp;
-gen_e_list_scanner scan;
-gen_e_list_scan(arg1,&scan);
-while (gen_e_list_next(&scan,&temp))
-{
-if (((setif_term)temp)->type == REFPROJ2_)
-return (gen_e)((struct refProj2_ * ) temp)->f0;
-} 
-return NULL;
-}
-
-aterm ref_proj2(aterm arg1) deletes
- {
-aterm c;
-if (setif_is_var(arg1))
-{
-setif_var v = (setif_var)arg1;
-c = (aterm)sv_get_ub_proj(v,get_ref_proj2_arg);
-if (c != NULL)
-return c;
-else
-{
-aterm e;
-gen_e lb; 
-gen_e_list_scanner scan; 
-c = aterm_fresh(NULL);
-e = ref_pat2(c);
-sv_add_ub_proj(v,e);
-gen_e_list_scan(sv_get_lbs(v),&scan);
-while (gen_e_list_next(&scan,&lb))
-{
-setif_inclusion(aterm_con_match,aterm_res_proj,lb,e);
-}
-return c;
-}
-}
-else if ( ((setif_term)arg1)->type == REF_)
-return ((struct ref_ * )arg1)->f2;
-else if ( setif_is_zero(arg1))
-return aterm_zero();
-else if ( setif_is_union(arg1))
-{
-c = get_ref_proj2_arg(setif_get_proj_cache(arg1));
-if (c != NULL)
-return c;
-else
-{
-aterm e;
-c = aterm_fresh(NULL);
-e = ref_pat2(c);
-setif_set_proj_cache(arg1,e);
-aterm_inclusion(arg1,e);
-return c;
-}
-}
-else
-{
-aterm e;
-c = aterm_fresh(NULL);
-e = ref_pat2(c);
-aterm_inclusion(arg1,e);
-return c;
-}
-}
-
-static gen_e ref_pat2_con(gen_e arg1) deletes
-{
-return (gen_e)ref_pat2((aterm)arg1);
-}
-
-aterm ref_pat2(aterm arg1) deletes
-{
-struct refProj2_* ret;
-stamp s[2];
-s[0] = REFPROJ2_;
-s[1] = aterm_get_stamp((gen_e)arg1);
-if ((ret = (struct refProj2_ *)term_hash_find(setif_hash,s,2)) == NULL) 
-{
-ret = ralloc(setif_region,struct refProj2_);
-ret->type = REFPROJ2_;
-ret->st = stamp_fresh();
-ret->f0 = arg1;
-term_hash_insert(setif_hash,(gen_e)ret,s,2);
-}
-return (aterm)ret;
-}
-
-bool aterm_is_lam(aterm e)
-{
- return ((setif_term)e)->type == 15;
-}
-
-aterm lam(label_term arg1,argterm arg2,aterm arg3) deletes
-{
-struct lam_ *ret;
-stamp s[4];
-s[0] = LAM_;
-s[1] = label_term_get_stamp((gen_e)arg1);
-s[2] = argterm_get_stamp((gen_e)arg2);
-s[3] = aterm_get_stamp((gen_e)arg3);
-if ((ret = (struct lam_ *)term_hash_find(setif_hash,s,4)) == NULL)
-{
-ret = ralloc(setif_region,struct lam_);
-ret->type = s[0];
-ret->st = stamp_fresh();
-ret->f0 = arg1;
-ret->f1 = arg2;
-ret->f2 = arg3;
-term_hash_insert(setif_hash,(gen_e)ret,s,4);
-}
-return (aterm)ret;
-}
-
-struct lam_decon lam_decon(aterm arg1) 
-{
-if (((setif_term)arg1)->type == LAM_)
-{
-struct lam_* c = (struct lam_ *)arg1;
-return (struct lam_decon){c->f0,c->f1,c->f2};
-
-}
-else 
-return (struct lam_decon){NULL,NULL,NULL};
-}
-
-static gen_e get_lam_proj0_arg(gen_e_list arg1)
-{
-gen_e temp;
-gen_e_list_scanner scan;
-gen_e_list_scan(arg1,&scan);
-while (gen_e_list_next(&scan,&temp))
-{
-if (((setif_term)temp)->type == LAMPROJ0_)
-return (gen_e)((struct lamProj0_ * ) temp)->f0;
-} 
-return NULL;
-}
-
-label_term lam_proj0(aterm arg1) deletes
- {
-label_term c;
-if (setif_is_var(arg1))
-{
-setif_var v = (setif_var)arg1;
-c = (label_term)sv_get_ub_proj(v,get_lam_proj0_arg);
-if (c != NULL)
-return c;
-else
-{
-aterm e;
-gen_e lb; 
-gen_e_list_scanner scan; 
-c = label_term_fresh(NULL);
-e = lam_pat0(c);
-sv_add_ub_proj(v,e);
-gen_e_list_scan(sv_get_lbs(v),&scan);
-while (gen_e_list_next(&scan,&lb))
-{
-setif_inclusion(aterm_con_match,aterm_res_proj,lb,e);
-}
-return c;
-}
-}
-else if ( ((setif_term)arg1)->type == LAM_)
-return ((struct lam_ * )arg1)->f0;
-else if ( setif_is_zero(arg1))
-return label_term_zero();
-else if ( setif_is_union(arg1))
-{
-c = get_lam_proj0_arg(setif_get_proj_cache(arg1));
-if (c != NULL)
-return c;
-else
-{
-aterm e;
-c = label_term_fresh(NULL);
-e = lam_pat0(c);
-setif_set_proj_cache(arg1,e);
-aterm_inclusion(arg1,e);
-return c;
-}
-}
-else
-{
-aterm e;
-c = label_term_fresh(NULL);
-e = lam_pat0(c);
-aterm_inclusion(arg1,e);
-return c;
-}
-}
-
-static gen_e lam_pat0_con(gen_e arg1) deletes
-{
-return (gen_e)lam_pat0((label_term)arg1);
-}
-
-aterm lam_pat0(label_term arg1) deletes
-{
-struct lamProj0_* ret;
-stamp s[2];
-s[0] = LAMPROJ0_;
-s[1] = label_term_get_stamp((gen_e)arg1);
-if ((ret = (struct lamProj0_ *)term_hash_find(setif_hash,s,2)) == NULL) 
-{
-ret = ralloc(setif_region,struct lamProj0_);
-ret->type = LAMPROJ0_;
-ret->st = stamp_fresh();
-ret->f0 = arg1;
-term_hash_insert(setif_hash,(gen_e)ret,s,2);
-}
-return (aterm)ret;
-}
-
-static gen_e get_lam_proj1_arg(gen_e_list arg1)
-{
-gen_e temp;
-gen_e_list_scanner scan;
-gen_e_list_scan(arg1,&scan);
-while (gen_e_list_next(&scan,&temp))
-{
-if (((setif_term)temp)->type == LAMPROJ1_)
-return (gen_e)((struct lamProj1_ * ) temp)->f0;
-} 
-return NULL;
-}
-
-argterm lam_proj1(aterm arg1) deletes
- {
-argterm c;
-if (setif_is_var(arg1))
-{
-setif_var v = (setif_var)arg1;
-c = (argterm)sv_get_ub_proj(v,get_lam_proj1_arg);
-if (c != NULL)
-return c;
-else
-{
-aterm e;
-gen_e lb; 
-gen_e_list_scanner scan; 
-c = argterm_fresh(NULL);
-e = lam_pat1(c);
-sv_add_ub_proj(v,e);
-gen_e_list_scan(sv_get_lbs(v),&scan);
-while (gen_e_list_next(&scan,&lb))
-{
-setif_inclusion(aterm_con_match,aterm_res_proj,lb,e);
-}
-return c;
-}
-}
-else if ( ((setif_term)arg1)->type == LAM_)
-return ((struct lam_ * )arg1)->f1;
-else if ( setif_is_zero(arg1))
-return argterm_zero();
-else if ( setif_is_union(arg1))
-{
-c = get_lam_proj1_arg(setif_get_proj_cache(arg1));
-if (c != NULL)
-return c;
-else
-{
-aterm e;
-c = argterm_fresh(NULL);
-e = lam_pat1(c);
-setif_set_proj_cache(arg1,e);
-aterm_inclusion(arg1,e);
-return c;
-}
-}
-else
-{
-aterm e;
-c = argterm_fresh(NULL);
-e = lam_pat1(c);
-aterm_inclusion(arg1,e);
-return c;
-}
-}
-
-static gen_e lam_pat1_con(gen_e arg1) deletes
-{
-return (gen_e)lam_pat1((argterm)arg1);
-}
-
-aterm lam_pat1(argterm arg1) deletes
-{
-struct lamProj1_* ret;
-stamp s[2];
-s[0] = LAMPROJ1_;
-s[1] = argterm_get_stamp((gen_e)arg1);
-if ((ret = (struct lamProj1_ *)term_hash_find(setif_hash,s,2)) == NULL) 
-{
-ret = ralloc(setif_region,struct lamProj1_);
-ret->type = LAMPROJ1_;
-ret->st = stamp_fresh();
-ret->f0 = arg1;
-term_hash_insert(setif_hash,(gen_e)ret,s,2);
-}
-return (aterm)ret;
-}
-
-static gen_e get_lam_proj2_arg(gen_e_list arg1)
-{
-gen_e temp;
-gen_e_list_scanner scan;
-gen_e_list_scan(arg1,&scan);
-while (gen_e_list_next(&scan,&temp))
-{
-if (((setif_term)temp)->type == LAMPROJ2_)
-return (gen_e)((struct lamProj2_ * ) temp)->f0;
-} 
-return NULL;
-}
-
-aterm lam_proj2(aterm arg1) deletes
- {
-aterm c;
-if (setif_is_var(arg1))
-{
-setif_var v = (setif_var)arg1;
-c = (aterm)sv_get_ub_proj(v,get_lam_proj2_arg);
-if (c != NULL)
-return c;
-else
-{
-aterm e;
-gen_e lb; 
-gen_e_list_scanner scan; 
-c = aterm_fresh(NULL);
-e = lam_pat2(c);
-sv_add_ub_proj(v,e);
-gen_e_list_scan(sv_get_lbs(v),&scan);
-while (gen_e_list_next(&scan,&lb))
-{
-setif_inclusion(aterm_con_match,aterm_res_proj,lb,e);
-}
-return c;
-}
-}
-else if ( ((setif_term)arg1)->type == LAM_)
-return ((struct lam_ * )arg1)->f2;
-else if ( setif_is_zero(arg1))
-return aterm_zero();
-else if ( setif_is_union(arg1))
-{
-c = get_lam_proj2_arg(setif_get_proj_cache(arg1));
-if (c != NULL)
-return c;
-else
-{
-aterm e;
-c = aterm_fresh(NULL);
-e = lam_pat2(c);
-setif_set_proj_cache(arg1,e);
-aterm_inclusion(arg1,e);
-return c;
-}
-}
-else
-{
-aterm e;
-c = aterm_fresh(NULL);
-e = lam_pat2(c);
-aterm_inclusion(arg1,e);
-return c;
-}
-}
-
-static gen_e lam_pat2_con(gen_e arg1) deletes
-{
-return (gen_e)lam_pat2((aterm)arg1);
-}
-
-aterm lam_pat2(aterm arg1) deletes
-{
-struct lamProj2_* ret;
-stamp s[2];
-s[0] = LAMPROJ2_;
-s[1] = aterm_get_stamp((gen_e)arg1);
-if ((ret = (struct lamProj2_ *)term_hash_find(setif_hash,s,2)) == NULL) 
-{
-ret = ralloc(setif_region,struct lamProj2_);
-ret->type = LAMPROJ2_;
-ret->st = stamp_fresh();
-ret->f0 = arg1;
-term_hash_insert(setif_hash,(gen_e)ret,s,2);
-}
-return (aterm)ret;
-}
-
-void aterm_print(FILE* arg1,aterm arg2) deletes
-{
-switch(((setif_term)arg2)->type)
-{
-case VAR_TYPE:
-fprintf(arg1,"%s",sv_get_name((setif_var)arg2));
-break;
-case ZERO_TYPE:
-fprintf(arg1,"0");
-break;
-case ONE_TYPE:
-fprintf(arg1,"1");
-break;
-case CONSTANT_TYPE:
-fprintf(arg1,setif_get_constant_name(arg2));
-break;
-case UNION_TYPE:
-{
-gen_e_list list = setif_get_union(arg2);
-gen_e_list_scanner scan;
-gen_e temp;
-gen_e_list_scan(list,&scan);
-if (gen_e_list_next(&scan,&temp))
-aterm_print(arg1,temp);
-while (gen_e_list_next(&scan,&temp))
-{
-fprintf(arg1," || ");
-aterm_print(arg1,temp);
-}
-
-}
-break;
-case INTER_TYPE:
-{
-gen_e_list list = setif_get_inter(arg2);
-gen_e_list_scanner scan;
-gen_e temp;
-gen_e_list_scan(list,&scan);
-if (gen_e_list_next(&scan,&temp))
-aterm_print(arg1,temp);
-while (gen_e_list_next(&scan,&temp))
-{
-fprintf(arg1," && ");
-aterm_print(arg1,temp);
-}
-
-}
-break;
-case REF_:
-{
-fprintf(arg1,"ref(");
-label_term_print(arg1,((struct ref_ *)arg2)->f0);
-fprintf(arg1,",");
-aterm_print(arg1,((struct ref_ *)arg2)->f1);
-fprintf(arg1,",");
-aterm_print(arg1,((struct ref_ *)arg2)->f2);
-fprintf(arg1,")");
-
-}
-break;
-case LAM_:
-{
-fprintf(arg1,"lam(");
-label_term_print(arg1,((struct lam_ *)arg2)->f0);
-fprintf(arg1,",");
-argterm_print(arg1,((struct lam_ *)arg2)->f1);
-fprintf(arg1,",");
-aterm_print(arg1,((struct lam_ *)arg2)->f2);
-fprintf(arg1,")");
-
-}
-break;
-case REFPROJ0_:
-{
-fprintf(arg1,"Proj[ref,0,");
-label_term_print(arg1,((struct refProj0_ *)arg2)->f0);
-fprintf(arg1,"]");
-
-}
-break;
-case REFPROJ1_:
-{
-fprintf(arg1,"Proj[ref,1,");
-aterm_print(arg1,((struct refProj1_ *)arg2)->f0);
-fprintf(arg1,"]");
-
-}
-break;
-case REFPROJ2_:
-{
-fprintf(arg1,"Proj[ref,2,");
-aterm_print(arg1,((struct refProj2_ *)arg2)->f0);
-fprintf(arg1,"]");
-
-}
-break;
-case LAMPROJ0_:
-{
-fprintf(arg1,"Proj[lam,0,");
-label_term_print(arg1,((struct lamProj0_ *)arg2)->f0);
-fprintf(arg1,"]");
-
-}
-break;
-case LAMPROJ1_:
-{
-fprintf(arg1,"Proj[lam,1,");
-argterm_print(arg1,((struct lamProj1_ *)arg2)->f0);
-fprintf(arg1,"]");
-
-}
-break;
-case LAMPROJ2_:
-{
-fprintf(arg1,"Proj[lam,2,");
-aterm_print(arg1,((struct lamProj2_ *)arg2)->f0);
-fprintf(arg1,"]");
-
-}
-break;
-
-default:
-return ;
-}
-
-}
-
-static bool aterm_res_proj(setif_var arg1,gen_e arg2) deletes
-{
-switch(((setif_term)arg2)->type)
-{
-case REFPROJ0_:
-return setif_proj_merge(arg1,(gen_e)((struct refProj0_ *)arg2)->f0,get_ref_proj0_arg,ref_pat0_con,(fresh_large_fn_ptr)label_term_fresh_large,(incl_fn_ptr)label_term_inclusion,aterm_inclusion);
-break;
-case REFPROJ1_:
-return setif_proj_merge(arg1,(gen_e)((struct refProj1_ *)arg2)->f0,get_ref_proj1_arg,ref_pat1_con,(fresh_large_fn_ptr)aterm_fresh_large,(incl_fn_ptr)aterm_inclusion_contra,aterm_inclusion);
-break;
-case REFPROJ2_:
-return setif_proj_merge(arg1,(gen_e)((struct refProj2_ *)arg2)->f0,get_ref_proj2_arg,ref_pat2_con,(fresh_large_fn_ptr)aterm_fresh_large,(incl_fn_ptr)aterm_inclusion,aterm_inclusion);
-break;
-case LAMPROJ0_:
-return setif_proj_merge(arg1,(gen_e)((struct lamProj0_ *)arg2)->f0,get_lam_proj0_arg,lam_pat0_con,(fresh_large_fn_ptr)label_term_fresh_large,(incl_fn_ptr)label_term_inclusion,aterm_inclusion);
-break;
-case LAMPROJ1_:
-return setif_proj_merge(arg1,(gen_e)((struct lamProj1_ *)arg2)->f0,get_lam_proj1_arg,lam_pat1_con,(fresh_large_fn_ptr)argterm_fresh_large,(incl_fn_ptr)argterm_inclusion_contra,aterm_inclusion);
-break;
-case LAMPROJ2_:
-return setif_proj_merge(arg1,(gen_e)((struct lamProj2_ *)arg2)->f0,get_lam_proj2_arg,lam_pat2_con,(fresh_large_fn_ptr)aterm_fresh_large,(incl_fn_ptr)aterm_inclusion,aterm_inclusion);
-break;
-
-default:
-return FALSE;
-}
-
-return FALSE;
-}
-
-static void aterm_con_match(gen_e arg1,gen_e arg2) deletes
-{
-switch(((setif_term)arg1)->type)
-{
-case REF_:
-switch(((setif_term)arg2)->type)
-{
-case REF_:
-{
-label_term_inclusion(((struct ref_ *)arg1)->f0,((struct ref_ *)arg2)->f0);
-aterm_inclusion_contra(((struct ref_ *)arg1)->f1,((struct ref_ *)arg2)->f1);
-aterm_inclusion(((struct ref_ *)arg1)->f2,((struct ref_ *)arg2)->f2);
-
-}
-break;
-case REFPROJ0_:
-label_term_inclusion(((struct ref_ *)arg1)->f0,((struct refProj0_ *)arg2)->f0);
-break;
-case REFPROJ1_:
-aterm_inclusion_contra(((struct ref_ *)arg1)->f1,((struct refProj1_ *)arg2)->f0);
-break;
-case REFPROJ2_:
-aterm_inclusion(((struct ref_ *)arg1)->f2,((struct refProj2_ *)arg2)->f0);
-break;
-case LAMPROJ0_:
-return ;
-break;
-case LAMPROJ1_:
-return ;
-break;
-case LAMPROJ2_:
-return ;
-break;
-
-default:
-failure("Inconsistent system of constraints\n");
-}
-
-break;
-case LAM_:
-switch(((setif_term)arg2)->type)
-{
-case LAM_:
-{
-label_term_inclusion(((struct lam_ *)arg1)->f0,((struct lam_ *)arg2)->f0);
-argterm_inclusion_contra(((struct lam_ *)arg1)->f1,((struct lam_ *)arg2)->f1);
-aterm_inclusion(((struct lam_ *)arg1)->f2,((struct lam_ *)arg2)->f2);
-
-}
-break;
-case LAMPROJ0_:
-label_term_inclusion(((struct lam_ *)arg1)->f0,((struct lamProj0_ *)arg2)->f0);
-break;
-case LAMPROJ1_:
-argterm_inclusion_contra(((struct lam_ *)arg1)->f1,((struct lamProj1_ *)arg2)->f0);
-break;
-case LAMPROJ2_:
-aterm_inclusion(((struct lam_ *)arg1)->f2,((struct lamProj2_ *)arg2)->f0);
-break;
-case REFPROJ0_:
-return ;
-break;
-case REFPROJ1_:
-return ;
-break;
-case REFPROJ2_:
-return ;
-break;
-
-default:
-failure("Inconsistent system of constraints\n");
-}
-
-break;
-
-default:
-failure("Inconsistent system of constraints\n");
-}
-
-return;
-}
-
-void andersen_terms_init(void) 
-{
-engine_init();
-setif_init();
-setif_init();
-flowrow_init();
-}
-
-void andersen_terms_reset(void) deletes
-{
-setif_reset();
-setif_reset();
-flowrow_reset();
-engine_reset();
-}
-
-void andersen_terms_stats(FILE * arg1) 
-{
-engine_stats(arg1);
-}
-
-void andersen_terms_print_graph(FILE * arg1) 
-{
-print_constraint_graphs(arg1);
-}
-