home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
sa104os2.zip
/
SATHR104.ZIP
/
SATHER
/
BOOT
/
CS.COD
/
CODE2.C
< prev
next >
Wrap
C/C++ Source or Header
|
1995-02-15
|
283KB
|
10,162 lines
/* C code generated by Sather 1.0 compiler */
#include "sather.h"
#include "strings.h"
TR_CLASS_DEF PROG_TR_TBL_get_(PROG_TR_TBL self, TUPIDENTINT q) {
TR_CLASS_DEF noname2035;
INT h = ((INT) 0);
TR_CLASS_DEF e_2036;
TR_CLASS_DEF e_2037;
INT local0;
INT local1;
INT local2;
INT local3;
if ((self==((PROG_TR_TBL) NULL))) {
return ((TR_CLASS_DEF) NULL);
}
local0 = PROG_TR_TBL_quer(self, q);
local1 = (self->asize);
h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
while (1) {
e_2036 = PROG_TR_TBL_aget(self, h);
if (PROG_TR_TBL_quer_2026(self, q, e_2036)) {
return e_2036;
}
else {
if (PROG_TR_TBL_elt__2031(self, e_2036, PROG_TR_TBL_elt_(self))) {
goto after_loop;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
local2 = (self->asize);
if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
h = 0;
while (1) {
e_2037 = PROG_TR_TBL_aget(self, h);
if (PROG_TR_TBL_quer_2026(self, q, e_2037)) {
return e_2037;
}
else {
if (PROG_TR_TBL_elt__2031(self, e_2037, PROG_TR_TBL_elt_(self))) {
goto after_loop_2039;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2039: ;
local3 = (self->asize);
if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fqset.sa:142:15\n");
exit(16);
}
}
return PROG_TR_TBL_elt_(self);
if (!PROG_TR_TBL_inva(self)) {
fprintf(stderr,"Failed invariant PROG_TR_TBL::invariant:BOOL ../Library/fqset.sa:128:12\n");
exit(16);
}
}
BOOL PROG_TR_TBL_test(PROG_TR_TBL self, TUPIDENTINT q) {
BOOL noname2041 = ((BOOL) 0);
TR_CLASS_DEF local0;
local0 = PROG_TR_TBL_get_(self, q);
if (PROG_TR_TBL_elt__2031(self, local0, PROG_TR_TBL_elt_(self))) {
return FALSE;
}
return TRUE;
if (!PROG_TR_TBL_inva(self)) {
fprintf(stderr,"Failed invariant PROG_TR_TBL::invariant:BOOL ../Library/fqset.sa:145:13\n");
exit(16);
}
}
void PROG_PARSE_dup_c(PROG_PARSE self, TR_CLASS_DEF tcd) {
PROG local0;
STR local1;
STR local2;
STR local3;
PROG_err_loc_PRO(self->prog, ((PROG_ERR) tcd));
local0 = self->prog;
local1 = STR_plus_STR_STR(((STR) &Therearetwoclass), tcd->name_19.str_4);
local2 = STR_plus_STR_STR(local1, ((STR) &and_2042));
local3 = STR_plus_INT_STR(local2, TR_PARAM_DEC_siz(tcd->params));
PROG_err_STR(local0, STR_plus_STR_STR(local3, ((STR) ¶meters_2043)));
}
PROG_TR_TBL PROG_TR_TBL_allo(PROG_TR_TBL self, INT n_2044) {
PROG_TR_TBL noname2045;
PROG_TR_TBL r_2046;
PROG_TR_TBL noname2047;
PROG_TR_TBL local0;
local0 = ((PROG_TR_TBL) sbi_arr_alloc(sizeof(struct PROG_TR_TBL_struct), PROG_TR_TBL_tag, sizeof(TR_CLASS_DEF) , n_2044));
local0->asize = n_2044;
r_2046 = local0;
if ((!((PROG_TR_TBL_elt_(self)==((TR_CLASS_DEF) NULL))))) {
{
struct PROG_TR_TBL_aset_frame_struct temp2048_0;
PROG_TR_TBL_aset_frame
noname2049 = &temp2048_0;
noname2049->state = 0;
while (1) {
if (noname2049->state == 0) {
noname2047 = r_2046;
noname2049->arg0 = noname2047;
}
noname2049->arg1 = PROG_TR_TBL_elt_(self);
PROG_TR_TBL_aset(noname2049);
if (noname2049->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
}
return r_2046;
}
PROG_TR_TBL PROG_TR_TBL_doub(PROG_TR_TBL self) {
PROG_TR_TBL noname2050;
PROG_TR_TBL r_2051;
PROG_TR_TBL noname2052;
INT local0;
INT local1;
INT local2;
TR_CLASS_DEF local3;
if (!((!((self==((PROG_TR_TBL) NULL)))))) {
fprintf(stderr,"Violation of precondition ../Library/fqset.sa:190:22\n");
exit(16);
}
local0 = (self->asize);
local1 = (c_INT_minus_INT_INT_chk(local0,1));
local2 = (c_INT_times_INT_INT_chk(local1,2));
r_2051 = PROG_TR_TBL_allo(self, (c_INT_plus_INT_INT_chk(local2,1)));
{
struct PROG_TR_TBL_elt__2054_frame_struct temp2053_0;
PROG_TR_TBL_elt__2054_frame
noname2055 = &temp2053_0;
noname2055->state = 0;
while (1) {
if (noname2055->state == 0) {
noname2052 = self;
noname2055->arg0 = noname2052;
}
local3 = PROG_TR_TBL_elt__2054(noname2055);
if (noname2055->state == -1) goto after_loop;
r_2051 = PROG_TR_TBL_inse(r_2051, local3);
}
}
after_loop: ;
return r_2051;
}
INT PROG_TR_TBL_elt__2056(PROG_TR_TBL self, TR_CLASS_DEF e_2057) {
INT noname2058 = ((INT) 0);
INT local0;
INT local1;
local0 = IDENT_hash_INT(e_2057->name_19);
local1 = 1111;
return (c_INT_plus_INT_INT_chk(local0,(c_INT_times_INT_INT_chk(local1,TR_PARAM_DEC_siz(e_2057->params)))));
if (!PROG_TR_TBL_inva(self)) {
fprintf(stderr,"Failed invariant PROG_TR_TBL::invariant:BOOL ./prog.sa:290:11\n");
exit(16);
}
}
void PROG_TR_TBL_aset_2059(PROG_TR_TBL self, INT ind_2060, TR_CLASS_DEF val_2061) {
BOOL local0;
INT local1;
INT local2;
if ((!((self==((PROG_TR_TBL) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2060, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
exit(16);
}
if (ind_2060<0||ind_2060>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
exit(16);
}
self->arr_part[ind_2060] = val_2061;
}
PROG_TR_TBL PROG_TR_TBL_inse(PROG_TR_TBL self, TR_CLASS_DEF e_2062) {
PROG_TR_TBL noname2063;
PROG_TR_TBL r_2064;
INT asz_2065 = ((INT) 0);
INT h = ((INT) 0);
TR_CLASS_DEF te;
TR_CLASS_DEF te_2066;
INT local0;
INT local1;
INT local2;
r_2064 = self;
if (PROG_TR_TBL_elt__2031(self, e_2062, PROG_TR_TBL_elt_(self))) {
return r_2064;
}
if ((r_2064==((PROG_TR_TBL) NULL))) {
r_2064 = PROG_TR_TBL_allo(self, 5);
}
else {
local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
local1 = (c_INT_times_INT_INT_chk(local0,2));
if ((local1>(self->asize))) {
r_2064 = PROG_TR_TBL_doub(r_2064);
}
}
asz_2065 = (r_2064->asize);
local2 = PROG_TR_TBL_elt__2056(r_2064, e_2062);
h = (local2&(c_INT_minus_INT_INT_chk(asz_2065,2)));
while (1) {
te = PROG_TR_TBL_aget(r_2064, h);
if (PROG_TR_TBL_elt__2031(self, te, PROG_TR_TBL_elt_(self))) {
goto after_loop;
}
else {
if (PROG_TR_TBL_elt__2031(self, te, e_2062)) {
PROG_TR_TBL_aset_2059(r_2064, h, e_2062);
return r_2064;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
if ((h==(c_INT_minus_INT_INT_chk(asz_2065,1)))) {
h = 0;
while (1) {
te_2066 = PROG_TR_TBL_aget(r_2064, h);
if (PROG_TR_TBL_elt__2031(self, te_2066, PROG_TR_TBL_elt_(self))) {
goto after_loop_2068;
}
else {
if (PROG_TR_TBL_elt__2031(self, te_2066, e_2062)) {
PROG_TR_TBL_aset_2059(r_2064, h, e_2062);
return r_2064;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2068: ;
if (!((h!=(c_INT_minus_INT_INT_chk(asz_2065,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fqset.sa:218:15\n");
exit(16);
}
}
PROG_TR_TBL_aset_2059(r_2064, h, e_2062);
r_2064->hsize = (c_INT_plus_INT_INT_chk(r_2064->hsize,1));
return r_2064;
if (!PROG_TR_TBL_inva(self)) {
fprintf(stderr,"Failed invariant PROG_TR_TBL::invariant:BOOL ../Library/fqset.sa:198:9\n");
exit(16);
}
}
void PROG_PARSE_parse_STR(PROG_PARSE self, STR f_2070) {
PARSER parser;
TR_CLASS_DEF tcd;
TR_CLASS_DEF ntcd;
STR hf;
OUT local0;
OUT local1;
OUT local2;
OUT local3;
OUT local4;
OUT local5;
BOOL local6;
PROG_TR_TBL local7;
TUPIDENTINT local8;
IDENT local9;
BOOL local10;
if (FSETSTR_test_STR(self->parsed, f_2070)) {
return;
}
self->parsed = FSETSTR_insert_S(self->parsed, f_2070);
if (self->prog->show_parse_file) {
local0 = OUT_create_OUT(((OUT) NULL));
local1 = OUT_plus_STR_OUT(local0, ((STR) &Parse));
local2 = OUT_plus_STR_OUT(local1, f_2070);
OUT_plus_STR(local2, ((STR) &name_2071));
}
parser = PARSER_create_PR(((PARSER) NULL), self->prog, f_2070, self->prog->options_55->psather);
if ((!((parser==((PARSER) NULL))))) {
tcd = PARSER_source_fi(parser);
while (1) {
if ((tcd==((TR_CLASS_DEF) NULL))) {
goto after_loop;
}
if (self->prog->show_tr_insert) {
local3 = OUT_create_OUT(((OUT) NULL));
local4 = OUT_plus_STR_OUT(local3, ((STR) &Treefor));
local5 = OUT_plus_STR_OUT(local4, tcd->name_19.str_4);
OUT_plus_STR(local5, ((STR) &name_2073));
}
ntcd = tcd->next_8;
tcd->next_8 = ((TR_CLASS_DEF) NULL);
hf = FMAPSTRSTR_get_S(self->prog->options_55->has_13, tcd->name_19.str_4);
local7 = self->tr_tbl;
local8 = TUPIDENTINT_zero;
local9 = tcd->name_19;
if (PROG_TR_TBL_test(local7, TUPIDENTINT_crea(local8, local9, TR_PARAM_DEC_siz(tcd->params)))) {
local6 = TRUE;
} else {
if ((!((hf==((STR) NULL))))) {
local10 = STR_is_neq_STR_BOOL(hf, f_2070);
} else {
local10 = FALSE;
}
local6 = local10;
}
if (local6) {
PROG_PARSE_dup_c(self, tcd);
}
else {
self->tr_tbl = PROG_TR_TBL_inse(self->tr_tbl, tcd);
}
tcd = ntcd;
}
after_loop: ;
}
}
BOOL FSETTP_test_TP_BOOL(FSETTP self, TP e_2074) {
BOOL noname2075 = ((BOOL) 0);
INT h = ((INT) 0);
TP te;
TP te_2076;
INT local0;
INT local1;
INT local2;
INT local3;
if ((self==((FSETTP) NULL))) {
return FALSE;
}
local0 = FSETTP_elt_hash_(self, e_2074);
local1 = (self->asize);
h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
while (1) {
te = FSETTP_aget_INT_TP(self, h);
if (FSETTP_elt_eq_TP(self, te, e_2074)) {
return TRUE;
}
else {
if (FSETTP_elt_eq_TP(self, te, FSETTP_elt_nil_TP(self))) {
goto after_loop;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
local2 = (self->asize);
if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
h = 0;
while (1) {
te_2076 = FSETTP_aget_INT_TP(self, h);
if (FSETTP_elt_eq_TP(self, te_2076, e_2074)) {
return TRUE;
}
else {
if (FSETTP_elt_eq_TP(self, te_2076, FSETTP_elt_nil_TP(self))) {
goto after_loop_2078;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2078: ;
local3 = (self->asize);
if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fset.sa:127:15\n");
exit(16);
}
}
return FALSE;
if (!FSETTP_invariant(self)) {
fprintf(stderr,"Failed invariant FSET{$TP}::invariant:BOOL ../Library/fset.sa:112:7\n");
exit(16);
}
}
TR_CLASS_DEF PROG_PARSE_tree_(PROG_PARSE self, IDENT nm_2080, INT num_2081) {
TR_CLASS_DEF noname2082;
TR_CLASS_DEF r_2083;
STR fn;
PROG_TR_TBL local0;
PROG_TR_TBL local1;
PROG local2;
STR local3;
STR local4;
STR local5;
local0 = self->tr_tbl;
r_2083 = PROG_TR_TBL_get_(local0, TUPIDENTINT_crea(TUPIDENTINT_zero, nm_2080, num_2081));
if ((r_2083==((TR_CLASS_DEF) NULL))) {
fn = FMAPSTRSTR_get_S(self->prog->options_55->has_13, nm_2080.str_4);
if ((!((fn==((STR) NULL))))) {
PROG_PARSE_parse_STR(self, fn);
local1 = self->tr_tbl;
r_2083 = PROG_TR_TBL_get_(local1, TUPIDENTINT_crea(TUPIDENTINT_zero, nm_2080, num_2081));
}
}
if ((r_2083==((TR_CLASS_DEF) NULL))) {
local2 = self->prog;
local3 = STR_plus_STR_STR(((STR) &Thereisnoclasswi), nm_2080.str_4);
local4 = STR_plus_STR_STR(local3, ((STR) &and_2084));
local5 = STR_plus_INT_STR(local4, num_2081);
PROG_err_STR(local2, STR_plus_STR_STR(local5, ((STR) ¶meters_2085)));
}
return r_2083;
}
TR_CLASS_DEF PROG_tree_for_ID(PROG self, IDENT nm_2086, INT num_2087) {
TR_CLASS_DEF noname2088;
return PROG_PARSE_tree_(self->prog_parse, nm_2086, num_2087);
}
ARRAYIDENT ARRAYIDENT_creat(ARRAYIDENT self, INT n_2089) {
ARRAYIDENT noname2090;
ARRAYIDENT local0;
if (!((n_2089>=0))) {
fprintf(stderr,"Violation of precondition ../Library/array.sa:56:9\n");
exit(16);
}
local0 = ((ARRAYIDENT) sbi_arr_alloc(sizeof(struct ARRAYIDENT_struct), ARRAYIDENT_tag, sizeof(IDENT) , n_2089));
local0->asize = n_2089;
return local0;
}
ARRAYIDENT PROG_pnames_for_(PROG self, TP_CLASS t_2091) {
ARRAYIDENT noname2092;
TR_CLASS_DEF tr_2093;
ARRAYIDENT r_2094;
TR_PARAM_DEC pd;
INT i = ((INT) 0);
ARRAYIDENT noname2095;
IDENT local0;
ARRAYIDENT local1;
if (!((!((t_2091==((TP_CLASS) NULL)))))) {
fprintf(stderr,"Violation of precondition ./prog.sa:135:13\n");
exit(16);
}
local0 = t_2091->name_19;
tr_2093 = PROG_tree_for_ID(self, local0, ARRAYTP_size_INT(t_2091->params));
if ((tr_2093==((TR_CLASS_DEF) NULL))) {
return ((ARRAYIDENT) NULL);
}
if ((tr_2093->params==((TR_PARAM_DEC) NULL))) {
return ((ARRAYIDENT) NULL);
}
local1 = ((ARRAYIDENT) NULL);
r_2094 = ARRAYIDENT_creat(local1, TR_PARAM_DEC_siz(tr_2093->params));
pd = tr_2093->params;
i = 0;
{
struct ARRAYIDENT_set_IDENT_frame_struct temp2096_0;
ARRAYIDENT_set_IDENT_frame
noname2097 = &temp2096_0;
noname2097->state = 0;
while (1) {
if ((pd==((TR_PARAM_DEC) NULL))) {
goto after_loop;
}
if (noname2097->state == 0) {
noname2095 = r_2094;
noname2097->arg0 = noname2095;
}
noname2097->arg1 = pd->name_19;
ARRAYIDENT_set_IDENT(noname2097);
if (noname2097->state == -1) goto after_loop;
0 /* No return value from iter call */;
pd = pd->next_8;
}
}
after_loop: ;
return r_2094;
}
INT ARRAYIDENT_asize_INT(ARRAYIDENT self) {
INT noname2098 = ((INT) 0);
return self->asize;
fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
exit(16);
}
TP_CONTEXT TP_CONTEXT_creat(TP_CONTEXT self, TP_CLASS same_2099, ARRAYIDENT pnames_2100, ARRAYTP ptypes_2101, PROG prog_2102) {
TP_CONTEXT noname2103;
TP_CONTEXT r_2104;
TP_CONTEXT local0;
local0 = ((TP_CONTEXT) sbi_alloc(sizeof(struct TP_CONTEXT_struct), TP_CONTEXT_tag));
r_2104 = local0;
r_2104->same_34 = same_2099;
r_2104->pnames = pnames_2100;
r_2104->ptypes = ptypes_2101;
r_2104->prog = prog_2102;
return r_2104;
}
BOOL TP_CLASS_is_abst(TP_CLASS self) {
BOOL noname2105 = ((BOOL) 0);
CHAR local0;
if ((self==((TP_CLASS) NULL))) {
return FALSE;
}
local0 = STR_aget_INT_CHAR(self->name_19.str_4, 0);
return (local0=='$');
}
TP_CONTEXT PROG_tp_context_(PROG self, TP_CLASS t_2106) {
TP_CONTEXT noname2107;
ARRAYIDENT pn;
INT ps = ((INT) 0);
TP_CONTEXT r_2108;
if (!((!((t_2106==((TP_CLASS) NULL)))))) {
fprintf(stderr,"Violation of precondition ./prog.sa:146:17\n");
exit(16);
}
pn = PROG_pnames_for_(self, t_2106);
if ((!((pn==((ARRAYIDENT) NULL))))) {
ps = (pn->asize);
}
if ((ps!=ARRAYTP_size_INT(t_2106->params))) {
return ((TP_CONTEXT) NULL);
}
r_2108 = TP_CONTEXT_creat(((TP_CONTEXT) NULL), t_2106, pn, t_2106->params, self);
if (TP_CLASS_is_abst(t_2106)) {
r_2108->is_abs = TRUE;
}
return r_2108;
}
IDENT ARRAYIDENT_aget_(ARRAYIDENT self, INT ind_2109) {
IDENT noname2110 = IDENT_zero;
BOOL local0;
INT local1;
INT local2;
if ((!((self==((ARRAYIDENT) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2109, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
exit(16);
}
if (ind_2109<0||ind_2109>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
exit(16);
}
return self->arr_part[ind_2109];
}
TP ARRAYTP_aget_INT_TP(ARRAYTP self, INT ind_2111) {
TP noname2112;
BOOL local0;
INT local1;
INT local2;
if ((!((self==((ARRAYTP) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2111, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
exit(16);
}
if (ind_2111<0||ind_2111>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
exit(16);
}
return self->arr_part[ind_2111];
}
TP TP_CONTEXT_value(TP_CONTEXT self, IDENT s_2113) {
TP noname2114;
ARRAYIDENT noname2115;
INT i = ((INT) 0);
INT local0;
if ((self->pnames==((ARRAYIDENT) NULL))) {
return ((TP) NULL);
}
{
struct ARRAYIDENT_ind_INT_frame_struct temp2116_0;
ARRAYIDENT_ind_INT_frame
noname2117 = &temp2116_0;
noname2117->state = 0;
while (1) {
if (noname2117->state == 0) {
noname2115 = self->pnames;
noname2117->arg0 = noname2115;
}
local0 = ARRAYIDENT_ind_INT(noname2117);
if (noname2117->state == -1) goto after_loop;
i = local0;
if (IDENT_is_eq_IDEN(s_2113, ARRAYIDENT_aget_(self->pnames, i))) {
return ARRAYTP_aget_INT_TP(self->ptypes, i);
}
}
}
after_loop: ;
return ((TP) NULL);
}
INT TR_TYPE_SPEC_siz(TR_TYPE_SPEC self) {
INT noname2118 = ((INT) 0);
INT r_2119 = ((INT) 0);
TR_TYPE_SPEC n_2120;
if ((self==((TR_TYPE_SPEC) NULL))) {
return 0;
}
r_2119 = 1;
n_2120 = self->next_8;
while (1) {
if ((n_2120==((TR_TYPE_SPEC) NULL))) {
goto after_loop;
}
r_2119 = (c_INT_plus_INT_INT_chk(r_2119,1));
n_2120 = n_2120->next_8;
}
after_loop: ;
return r_2119;
}
TP TP_CONTEXT_tp_cl(TP_CONTEXT self, TR_TYPE_SPEC t_2122) {
TP noname2123;
TP pv;
ARRAYTP ptps;
TR_TYPE_SPEC tpe;
ARRAYTP noname2124;
BOOL local0;
BOOL local1;
ARRAYTP local2;
if ((!((t_2122==((TR_TYPE_SPEC) NULL))))) {
local1 = (t_2122->kind==shared_TR_TYPE_S_1643);
} else {
local1 = FALSE;
}
if (local1) {
local0 = (t_2122->ret==((TR_TYPE_SPEC) NULL));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ./tp.sa:405:14\n");
exit(16);
}
if ((t_2122->params==((TR_TYPE_SPEC) NULL))) {
pv = TP_CONTEXT_value(self, t_2122->name_19);
if ((!((pv==((TP) NULL))))) {
return pv;
}
return ((TP) TP_TBL_tp_class_(self->prog->tp_tbl, t_2122->name_19, ((ARRAYTP) NULL)));
}
local2 = ((ARRAYTP) NULL);
ptps = ARRAYTP_create_I(local2, TR_TYPE_SPEC_siz(t_2122->params));
tpe = t_2122->params;
{
struct ARRAYTP_set_TP_frame_struct temp2125_0;
ARRAYTP_set_TP_frame
noname2126 = &temp2125_0;
noname2126->state = 0;
while (1) {
if ((tpe==((TR_TYPE_SPEC) NULL))) {
goto after_loop;
}
if (noname2126->state == 0) {
noname2124 = ptps;
noname2126->arg0 = noname2124;
}
noname2126->arg1 = TP_CONTEXT_tp_of(self, tpe);
ARRAYTP_set_TP(noname2126);
if (noname2126->state == -1) goto after_loop;
0 /* No return value from iter call */;
tpe = tpe->next_8;
}
}
after_loop: ;
return ((TP) TP_TBL_tp_class_(self->prog->tp_tbl, t_2122->name_19, ptps));
}
TP TP_CONTEXT_tp_ro(TP_CONTEXT self, TR_TYPE_SPEC t_2127) {
TP noname2128;
ARRAYTP args_2129;
TR_TYPE_SPEC tpe;
ARRAYTP noname2130;
BOOL local0;
TP_TBL local1;
ARRAYTP local2;
ARRAYTP local3;
TP_TBL local4;
if ((!((t_2127==((TR_TYPE_SPEC) NULL))))) {
local0 = (t_2127->kind==shared_TR_TYPE_S_1644);
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ./tp.sa:418:13\n");
exit(16);
}
if ((t_2127->params==((TR_TYPE_SPEC) NULL))) {
local1 = self->prog->tp_tbl;
local2 = ((ARRAYTP) NULL);
return ((TP) TP_TBL_tp_rout_f(local1, local2, TP_CONTEXT_tp_of(self, t_2127->ret)));
}
local3 = ((ARRAYTP) NULL);
args_2129 = ARRAYTP_create_I(local3, TR_TYPE_SPEC_siz(t_2127->params));
tpe = t_2127->params;
{
struct ARRAYTP_set_TP_frame_struct temp2131_0;
ARRAYTP_set_TP_frame
noname2132 = &temp2131_0;
noname2132->state = 0;
while (1) {
if ((tpe==((TR_TYPE_SPEC) NULL))) {
goto after_loop;
}
if (noname2132->state == 0) {
noname2130 = args_2129;
noname2132->arg0 = noname2130;
}
noname2132->arg1 = TP_CONTEXT_tp_of(self, tpe);
ARRAYTP_set_TP(noname2132);
if (noname2132->state == -1) goto after_loop;
0 /* No return value from iter call */;
tpe = tpe->next_8;
}
}
after_loop: ;
local4 = self->prog->tp_tbl;
return ((TP) TP_TBL_tp_rout_f(local4, args_2129, TP_CONTEXT_tp_of(self, t_2127->ret)));
}
TUPARRAYTPARRAYB TUPARRAYTPARRAYB_2133(TUPARRAYTPARRAYB self, ARRAYTP t1_2134) {
TUPARRAYTPARRAYB local0;
local0 = self;
local0.t1 = t1_2134;
return local0;
}
TUPARRAYTPARRAYB TUPARRAYTPARRAYB_2135(TUPARRAYTPARRAYB self, ARRAYBOOL t2_2136) {
TUPARRAYTPARRAYB local0;
local0 = self;
local0.t2 = t2_2136;
return local0;
}
TUPARRAYTPARRAYB TUPARRAYTPARRAYB_2137(TUPARRAYTPARRAYB self, TP t3_2138) {
TUPARRAYTPARRAYB local0;
local0 = self;
local0.t3 = t3_2138;
return local0;
}
TUPARRAYTPARRAYB TUPARRAYTPARRAYB_2139(TUPARRAYTPARRAYB self, ARRAYTP at1, ARRAYBOOL at2, TP at3) {
TUPARRAYTPARRAYB noname2140 = TUPARRAYTPARRAYB_zero;
TUPARRAYTPARRAYB local0;
TUPARRAYTPARRAYB local1;
local0 = TUPARRAYTPARRAYB_2133(self, at1);
local1 = TUPARRAYTPARRAYB_2135(local0, at2);
return TUPARRAYTPARRAYB_2137(local1, at3);
}
INT TP_ITER_TBL_quer(TP_ITER_TBL self, TUPARRAYTPARRAYB q) {
INT noname2141 = ((INT) 0);
INT s_2142 = ((INT) 0);
INT r_2143 = ((INT) 0);
ARRAYTP noname2144;
ARRAYBOOL noname2145;
SYS local0;
TP local1;
INT local2;
SYS local3;
BOOL local4;
OB local5;
INT local6;
s_2142 = 3;
r_2143 = (c_SYS_id_OB_INT(((SYS) NULL),((OB) q.t3)));
{
struct ARRAYTP_elt_TP_frame_struct temp2146_0;
ARRAYTP_elt_TP_frame
noname2147 = &temp2146_0;
noname2147->state = 0;
while (1) {
local0 = ((SYS) NULL);
if (noname2147->state == 0) {
noname2144 = q.t1;
noname2147->arg0 = noname2144;
}
local1 = ARRAYTP_elt_TP(noname2147);
if (noname2147->state == -1) goto after_loop;
local2 = (c_SYS_id_OB_INT(local0,((OB) local1)));
r_2143 = (r_2143^(c_INT_times_INT_INT_chk(local2,s_2142)));
s_2142 = (c_INT_plus_INT_INT_chk(s_2142,98));
}
}
after_loop: ;
{
struct ARRAYBOOL_elt_BOOL_frame_struct temp2149_0;
ARRAYBOOL_elt_BOOL_frame
noname2150 = &temp2149_0;
noname2150->state = 0;
while (1) {
local3 = ((SYS) NULL);
if (noname2150->state == 0) {
noname2145 = q.t2;
noname2150->arg0 = noname2145;
}
local4 = ARRAYBOOL_elt_BOOL(noname2150);
if (noname2150->state == -1) goto after_loop_2148;
local5 = (OB)((BOOL_boxed) sbi_alloc_atomic(sizeof(struct BOOL_boxed_struct), BOOL_tag));
((BOOL_boxed) local5)->value_part = local4;
local6 = (c_SYS_id_OB_INT(local3,local5));
r_2143 = (r_2143^(c_INT_times_INT_INT_chk(local6,s_2142)));
s_2142 = (c_INT_plus_INT_INT_chk(s_2142,98));
}
}
after_loop_2148: ;
return r_2143;
if (!TP_ITER_TBL_inva(self)) {
fprintf(stderr,"Failed invariant TP_ITER_TBL::invariant:BOOL ./tp.sa:631:13\n");
exit(16);
}
}
INT TP_ITER_TBL_asiz(TP_ITER_TBL self) {
INT noname2151 = ((INT) 0);
return self->asize;
fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
exit(16);
}
TP_ITER TP_ITER_TBL_aget(TP_ITER_TBL self, INT ind_2152) {
TP_ITER noname2153;
BOOL local0;
INT local1;
INT local2;
if ((!((self==((TP_ITER_TBL) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2152, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
exit(16);
}
if (ind_2152<0||ind_2152>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
exit(16);
}
return self->arr_part[ind_2152];
}
INT ARRAYBOOL_asize_INT(ARRAYBOOL self) {
INT noname2154 = ((INT) 0);
return self->asize;
fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
exit(16);
}
INT ARRAYBOOL_size_INT(ARRAYBOOL self) {
INT noname2155 = ((INT) 0);
if ((self==((ARRAYBOOL) NULL))) {
return 0;
}
return (self->asize);
}
BOOL TP_ITER_TBL_quer_2156(TP_ITER_TBL self, TUPARRAYTPARRAYB q, TP_ITER t_2157) {
BOOL noname2158 = ((BOOL) 0);
ARRAYTP noname2159;
ARRAYTP noname2160;
ARRAYBOOL noname2161;
ARRAYBOOL noname2162;
TP local0;
INT local1;
TP local2;
TP local3;
TP local4;
TP local5;
INT local6;
BOOL local7;
BOOL local8;
BOOL local9;
if ((t_2157==((TP_ITER) NULL))) {
return FALSE;
}
local0 = q.t3;
if ((*TP_is_neq_TP_BOOL[local0->header.tag+TP_is_neq_TP_BOOL_offset])(local0, t_2157->ret)) {
return FALSE;
}
local1 = ARRAYTP_size_INT(q.t1);
if ((local1!=ARRAYTP_size_INT(t_2157->args_7))) {
return FALSE;
}
{
struct ARRAYTP_elt_TP_frame_struct temp2163_0;
ARRAYTP_elt_TP_frame
noname2164 = &temp2163_0;
struct ARRAYTP_elt_TP_frame_struct temp2163_1;
ARRAYTP_elt_TP_frame
noname2165 = &temp2163_1;
noname2164->state = 0;
noname2165->state = 0;
while (1) {
if (noname2164->state == 0) {
noname2159 = q.t1;
noname2164->arg0 = noname2159;
}
local2 = ARRAYTP_elt_TP(noname2164);
if (noname2164->state == -1) goto after_loop;
local3 = local2;
if (noname2165->state == 0) {
noname2160 = t_2157->args_7;
noname2165->arg0 = noname2160;
}
local4 = ARRAYTP_elt_TP(noname2165);
if (noname2165->state == -1) goto after_loop;
local5 = local3;
if ((*TP_is_neq_TP_BOOL[local5->header.tag+TP_is_neq_TP_BOOL_offset])(local5, local4)) {
return FALSE;
}
}
}
after_loop: ;
local6 = ARRAYBOOL_size_INT(q.t2);
if ((local6!=ARRAYBOOL_size_INT(t_2157->hot))) {
return FALSE;
}
{
struct ARRAYBOOL_elt_BOOL_frame_struct temp2167_0;
ARRAYBOOL_elt_BOOL_frame
noname2168 = &temp2167_0;
struct ARRAYBOOL_elt_BOOL_frame_struct temp2167_1;
ARRAYBOOL_elt_BOOL_frame
noname2169 = &temp2167_1;
noname2168->state = 0;
noname2169->state = 0;
while (1) {
if (noname2168->state == 0) {
noname2161 = q.t2;
noname2168->arg0 = noname2161;
}
local7 = ARRAYBOOL_elt_BOOL(noname2168);
if (noname2168->state == -1) goto after_loop_2166;
local8 = local7;
if (noname2169->state == 0) {
noname2162 = t_2157->hot;
noname2169->arg0 = noname2162;
}
local9 = ARRAYBOOL_elt_BOOL(noname2169);
if (noname2169->state == -1) goto after_loop_2166;
if (((local8)!=(local9))) {
return FALSE;
}
}
}
after_loop_2166: ;
return TRUE;
if (!TP_ITER_TBL_inva(self)) {
fprintf(stderr,"Failed invariant TP_ITER_TBL::invariant:BOOL ./tp.sa:620:13\n");
exit(16);
}
}
TP_ITER TP_ITER_TBL_elt_(TP_ITER_TBL self) {
TP_ITER noname2170;
TP_ITER t_2171 = ((TP_ITER) NULL);
return ((TP_ITER) NULL);
if (!TP_ITER_TBL_inva(self)) {
fprintf(stderr,"Failed invariant TP_ITER_TBL::invariant:BOOL ../Library/fqset.sa:69:10\n");
exit(16);
}
}
BOOL TP_ITER_TBL_elt__2172(TP_ITER_TBL self, TP_ITER e1_2173, TP_ITER e2_2174) {
BOOL noname2175 = ((BOOL) 0);
return c_SYS_ob_eq_OB_OB_BOOL(((OB) e1_2173),((OB) e2_2174));
if (!TP_ITER_TBL_inva(self)) {
fprintf(stderr,"Failed invariant TP_ITER_TBL::invariant:BOOL ../Library/fqset.sa:62:9\n");
exit(16);
}
}
TP_ITER TP_ITER_TBL_get_(TP_ITER_TBL self, TUPARRAYTPARRAYB q) {
TP_ITER noname2176;
INT h = ((INT) 0);
TP_ITER e_2177;
TP_ITER e_2178;
INT local0;
INT local1;
INT local2;
INT local3;
if ((self==((TP_ITER_TBL) NULL))) {
return ((TP_ITER) NULL);
}
local0 = TP_ITER_TBL_quer(self, q);
local1 = (self->asize);
h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
while (1) {
e_2177 = TP_ITER_TBL_aget(self, h);
if (TP_ITER_TBL_quer_2156(self, q, e_2177)) {
return e_2177;
}
else {
if (TP_ITER_TBL_elt__2172(self, e_2177, TP_ITER_TBL_elt_(self))) {
goto after_loop;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
local2 = (self->asize);
if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
h = 0;
while (1) {
e_2178 = TP_ITER_TBL_aget(self, h);
if (TP_ITER_TBL_quer_2156(self, q, e_2178)) {
return e_2178;
}
else {
if (TP_ITER_TBL_elt__2172(self, e_2178, TP_ITER_TBL_elt_(self))) {
goto after_loop_2180;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2180: ;
local3 = (self->asize);
if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fqset.sa:142:15\n");
exit(16);
}
}
return TP_ITER_TBL_elt_(self);
if (!TP_ITER_TBL_inva(self)) {
fprintf(stderr,"Failed invariant TP_ITER_TBL::invariant:BOOL ../Library/fqset.sa:128:12\n");
exit(16);
}
}
TP_ITER TP_ITER_create_A(TP_ITER self, ARRAYTP args_2182, ARRAYBOOL hot_2183, TP ret_2184, PROG prog_2185) {
TP_ITER noname2186;
TP_ITER r_2187;
TP_ITER local0;
local0 = ((TP_ITER) sbi_alloc(sizeof(struct TP_ITER_struct), TP_ITER_tag));
r_2187 = local0;
r_2187->args_7 = args_2182;
r_2187->hot = hot_2183;
r_2187->ret = ret_2184;
r_2187->prog = prog_2185;
return r_2187;
}
TP_ITER_TBL TP_ITER_TBL_allo(TP_ITER_TBL self, INT n_2188) {
TP_ITER_TBL noname2189;
TP_ITER_TBL r_2190;
TP_ITER_TBL noname2191;
TP_ITER_TBL local0;
local0 = ((TP_ITER_TBL) sbi_arr_alloc(sizeof(struct TP_ITER_TBL_struct), TP_ITER_TBL_tag, sizeof(TP_ITER) , n_2188));
local0->asize = n_2188;
r_2190 = local0;
if ((!((TP_ITER_TBL_elt_(self)==((TP_ITER) NULL))))) {
{
struct TP_ITER_TBL_aset_frame_struct temp2192_0;
TP_ITER_TBL_aset_frame
noname2193 = &temp2192_0;
noname2193->state = 0;
while (1) {
if (noname2193->state == 0) {
noname2191 = r_2190;
noname2193->arg0 = noname2191;
}
noname2193->arg1 = TP_ITER_TBL_elt_(self);
TP_ITER_TBL_aset(noname2193);
if (noname2193->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
}
return r_2190;
}
TP_ITER_TBL TP_ITER_TBL_doub(TP_ITER_TBL self) {
TP_ITER_TBL noname2194;
TP_ITER_TBL r_2195;
TP_ITER_TBL noname2196;
INT local0;
INT local1;
INT local2;
TP_ITER local3;
if (!((!((self==((TP_ITER_TBL) NULL)))))) {
fprintf(stderr,"Violation of precondition ../Library/fqset.sa:190:22\n");
exit(16);
}
local0 = (self->asize);
local1 = (c_INT_minus_INT_INT_chk(local0,1));
local2 = (c_INT_times_INT_INT_chk(local1,2));
r_2195 = TP_ITER_TBL_allo(self, (c_INT_plus_INT_INT_chk(local2,1)));
{
struct TP_ITER_TBL_elt__2198_frame_struct temp2197_0;
TP_ITER_TBL_elt__2198_frame
noname2199 = &temp2197_0;
noname2199->state = 0;
while (1) {
if (noname2199->state == 0) {
noname2196 = self;
noname2199->arg0 = noname2196;
}
local3 = TP_ITER_TBL_elt__2198(noname2199);
if (noname2199->state == -1) goto after_loop;
r_2195 = TP_ITER_TBL_inse(r_2195, local3);
}
}
after_loop: ;
return r_2195;
}
INT TP_ITER_TBL_elt__2200(TP_ITER_TBL self, TP_ITER e_2201) {
INT noname2202 = ((INT) 0);
INT s_2203 = ((INT) 0);
INT r_2204 = ((INT) 0);
ARRAYTP noname2205;
ARRAYBOOL noname2206;
SYS local0;
TP local1;
INT local2;
SYS local3;
BOOL local4;
OB local5;
INT local6;
s_2203 = 3;
r_2204 = (c_SYS_id_OB_INT(((SYS) NULL),((OB) e_2201->ret)));
{
struct ARRAYTP_elt_TP_frame_struct temp2207_0;
ARRAYTP_elt_TP_frame
noname2208 = &temp2207_0;
noname2208->state = 0;
while (1) {
local0 = ((SYS) NULL);
if (noname2208->state == 0) {
noname2205 = e_2201->args_7;
noname2208->arg0 = noname2205;
}
local1 = ARRAYTP_elt_TP(noname2208);
if (noname2208->state == -1) goto after_loop;
local2 = (c_SYS_id_OB_INT(local0,((OB) local1)));
r_2204 = (r_2204^(c_INT_times_INT_INT_chk(local2,s_2203)));
s_2203 = (c_INT_plus_INT_INT_chk(s_2203,98));
}
}
after_loop: ;
{
struct ARRAYBOOL_elt_BOOL_frame_struct temp2210_0;
ARRAYBOOL_elt_BOOL_frame
noname2211 = &temp2210_0;
noname2211->state = 0;
while (1) {
local3 = ((SYS) NULL);
if (noname2211->state == 0) {
noname2206 = e_2201->hot;
noname2211->arg0 = noname2206;
}
local4 = ARRAYBOOL_elt_BOOL(noname2211);
if (noname2211->state == -1) goto after_loop_2209;
local5 = (OB)((BOOL_boxed) sbi_alloc_atomic(sizeof(struct BOOL_boxed_struct), BOOL_tag));
((BOOL_boxed) local5)->value_part = local4;
local6 = (c_SYS_id_OB_INT(local3,local5));
r_2204 = (r_2204^(c_INT_times_INT_INT_chk(local6,s_2203)));
s_2203 = (c_INT_plus_INT_INT_chk(s_2203,98));
}
}
after_loop_2209: ;
return r_2204;
if (!TP_ITER_TBL_inva(self)) {
fprintf(stderr,"Failed invariant TP_ITER_TBL::invariant:BOOL ./tp.sa:639:11\n");
exit(16);
}
}
void TP_ITER_TBL_aset_2212(TP_ITER_TBL self, INT ind_2213, TP_ITER val_2214) {
BOOL local0;
INT local1;
INT local2;
if ((!((self==((TP_ITER_TBL) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2213, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
exit(16);
}
if (ind_2213<0||ind_2213>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
exit(16);
}
self->arr_part[ind_2213] = val_2214;
}
TP_ITER_TBL TP_ITER_TBL_inse(TP_ITER_TBL self, TP_ITER e_2215) {
TP_ITER_TBL noname2216;
TP_ITER_TBL r_2217;
INT asz_2218 = ((INT) 0);
INT h = ((INT) 0);
TP_ITER te;
TP_ITER te_2219;
INT local0;
INT local1;
INT local2;
r_2217 = self;
if (TP_ITER_TBL_elt__2172(self, e_2215, TP_ITER_TBL_elt_(self))) {
return r_2217;
}
if ((r_2217==((TP_ITER_TBL) NULL))) {
r_2217 = TP_ITER_TBL_allo(self, 5);
}
else {
local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
local1 = (c_INT_times_INT_INT_chk(local0,2));
if ((local1>(self->asize))) {
r_2217 = TP_ITER_TBL_doub(r_2217);
}
}
asz_2218 = (r_2217->asize);
local2 = TP_ITER_TBL_elt__2200(r_2217, e_2215);
h = (local2&(c_INT_minus_INT_INT_chk(asz_2218,2)));
while (1) {
te = TP_ITER_TBL_aget(r_2217, h);
if (TP_ITER_TBL_elt__2172(self, te, TP_ITER_TBL_elt_(self))) {
goto after_loop;
}
else {
if (TP_ITER_TBL_elt__2172(self, te, e_2215)) {
TP_ITER_TBL_aset_2212(r_2217, h, e_2215);
return r_2217;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
if ((h==(c_INT_minus_INT_INT_chk(asz_2218,1)))) {
h = 0;
while (1) {
te_2219 = TP_ITER_TBL_aget(r_2217, h);
if (TP_ITER_TBL_elt__2172(self, te_2219, TP_ITER_TBL_elt_(self))) {
goto after_loop_2221;
}
else {
if (TP_ITER_TBL_elt__2172(self, te_2219, e_2215)) {
TP_ITER_TBL_aset_2212(r_2217, h, e_2215);
return r_2217;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2221: ;
if (!((h!=(c_INT_minus_INT_INT_chk(asz_2218,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fqset.sa:218:15\n");
exit(16);
}
}
TP_ITER_TBL_aset_2212(r_2217, h, e_2215);
r_2217->hsize = (c_INT_plus_INT_INT_chk(r_2217->hsize,1));
return r_2217;
if (!TP_ITER_TBL_inva(self)) {
fprintf(stderr,"Failed invariant TP_ITER_TBL::invariant:BOOL ../Library/fqset.sa:198:9\n");
exit(16);
}
}
TP_ITER TP_TBL_tp_iter_f(TP_TBL self, ARRAYTP args_2223, ARRAYBOOL hot_2224, TP ret_2225) {
TP_ITER noname2226;
TP_ITER r_2227;
TP_ITER_TBL local0;
local0 = self->iter_tbl;
r_2227 = TP_ITER_TBL_get_(local0, TUPARRAYTPARRAYB_2139(TUPARRAYTPARRAYB_zero, args_2223, hot_2224, ret_2225));
if ((r_2227==((TP_ITER) NULL))) {
r_2227 = TP_ITER_create_A(((TP_ITER) NULL), args_2223, hot_2224, ret_2225, self->prog);
self->iter_tbl = TP_ITER_TBL_inse(self->iter_tbl, r_2227);
}
return r_2227;
}
ARRAYBOOL ARRAYBOOL_create(ARRAYBOOL self, INT n_2228) {
ARRAYBOOL noname2229;
ARRAYBOOL local0;
if (!((n_2228>=0))) {
fprintf(stderr,"Violation of precondition ../Library/array.sa:56:9\n");
exit(16);
}
local0 = ((ARRAYBOOL) sbi_arr_alloc_atomic(sizeof(struct ARRAYBOOL_struct), ARRAYBOOL_tag, sizeof(BOOL) , n_2228));
local0->asize = n_2228;
return local0;
}
BOOL ARRAYBOOL_elt_eq(ARRAYBOOL self, BOOL e1_2230, BOOL e2_2231) {
BOOL noname2232 = ((BOOL) 0);
OB local0;
OB local1;
local0 = (OB)((BOOL_boxed) sbi_alloc_atomic(sizeof(struct BOOL_boxed_struct), BOOL_tag));
((BOOL_boxed) local0)->value_part = e1_2230;
local1 = (OB)((BOOL_boxed) sbi_alloc_atomic(sizeof(struct BOOL_boxed_struct), BOOL_tag));
((BOOL_boxed) local1)->value_part = e2_2231;
return c_SYS_ob_eq_OB_OB_BOOL(local0,local1);
}
BOOL ARRAYBOOL_contai(ARRAYBOOL self, BOOL e_2233) {
BOOL noname2234 = ((BOOL) 0);
ARRAYBOOL noname2235;
BOOL local0;
BOOL local1;
if ((self==((ARRAYBOOL) NULL))) {
return FALSE;
}
{
struct ARRAYBOOL_elt_BOOL_frame_struct temp2236_0;
ARRAYBOOL_elt_BOOL_frame
noname2237 = &temp2236_0;
noname2237->state = 0;
while (1) {
if (noname2237->state == 0) {
noname2235 = self;
noname2237->arg0 = noname2235;
}
local0 = ARRAYBOOL_elt_BOOL(noname2237);
if (noname2237->state == -1) goto after_loop;
local1 = local0;
if (ARRAYBOOL_elt_eq(self, local1, e_2233)) {
return TRUE;
}
}
}
after_loop: ;
return FALSE;
}
TP TP_CONTEXT_tp_it(TP_CONTEXT self, TR_TYPE_SPEC t_2238) {
TP noname2239;
ARRAYTP args_2240;
TR_TYPE_SPEC tpa;
ARRAYTP noname2241;
ARRAYBOOL hot_2242;
ARRAYBOOL noname2243;
BOOL local0;
TP_TBL local1;
ARRAYTP local2;
ARRAYBOOL local3;
ARRAYTP local4;
ARRAYBOOL local5;
TP_TBL local6;
if ((!((t_2238==((TR_TYPE_SPEC) NULL))))) {
local0 = (t_2238->kind==shared_TR_TYPE_S_1645);
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ./tp.sa:429:13\n");
exit(16);
}
if ((t_2238->params==((TR_TYPE_SPEC) NULL))) {
local1 = self->prog->tp_tbl;
local2 = ((ARRAYTP) NULL);
local3 = ((ARRAYBOOL) NULL);
return ((TP) TP_TBL_tp_iter_f(local1, local2, local3, TP_CONTEXT_tp_of(self, t_2238->ret)));
}
local4 = ((ARRAYTP) NULL);
args_2240 = ARRAYTP_create_I(local4, TR_TYPE_SPEC_siz(t_2238->params));
tpa = t_2238->params;
{
struct ARRAYTP_set_TP_frame_struct temp2244_0;
ARRAYTP_set_TP_frame
noname2245 = &temp2244_0;
noname2245->state = 0;
while (1) {
if ((tpa==((TR_TYPE_SPEC) NULL))) {
goto after_loop;
}
if (noname2245->state == 0) {
noname2241 = args_2240;
noname2245->arg0 = noname2241;
}
noname2245->arg1 = TP_CONTEXT_tp_of(self, tpa);
ARRAYTP_set_TP(noname2245);
if (noname2245->state == -1) goto after_loop;
0 /* No return value from iter call */;
tpa = tpa->next_8;
}
}
after_loop: ;
local5 = ((ARRAYBOOL) NULL);
hot_2242 = ARRAYBOOL_create(local5, ARRAYTP_size_INT(args_2240));
tpa = t_2238->params;
{
struct ARRAYBOOL_set_BOOL_frame_struct temp2247_0;
ARRAYBOOL_set_BOOL_frame
noname2248 = &temp2247_0;
noname2248->state = 0;
while (1) {
if ((tpa==((TR_TYPE_SPEC) NULL))) {
goto after_loop_2246;
}
if (noname2248->state == 0) {
noname2243 = hot_2242;
noname2248->arg0 = noname2243;
}
noname2248->arg1 = tpa->is_hot;
ARRAYBOOL_set_BOOL(noname2248);
if (noname2248->state == -1) goto after_loop_2246;
0 /* No return value from iter call */;
tpa = tpa->next_8;
}
}
after_loop_2246: ;
if ((!(ARRAYBOOL_contai(hot_2242, TRUE)))) {
hot_2242 = ((ARRAYBOOL) NULL);
}
local6 = self->prog->tp_tbl;
return ((TP) TP_TBL_tp_iter_f(local6, args_2240, hot_2242, TP_CONTEXT_tp_of(self, t_2238->ret)));
}
TP TP_CONTEXT_tp_of(TP_CONTEXT self, TR_TYPE_SPEC t_2249) {
TP noname2250;
INT noname2251 = ((INT) 0);
if ((t_2249==((TR_TYPE_SPEC) NULL))) {
return ((TP) NULL);
}
noname2251 = t_2249->kind;
switch (noname2251) {
case 0:
return TP_CONTEXT_tp_cl(self, t_2249);
break;
case 1:
return TP_CONTEXT_tp_ro(self, t_2249);
break;
case 2:
return TP_CONTEXT_tp_it(self, t_2249);
break;
case 3:
if (self->is_abs) {
PROG_err_loc_PRO(self->prog, ((PROG_ERR) t_2249));
PROG_err_STR(self->prog, ((STR) &SAMEisnotallowed));
}
return ((TP) self->same_34);
break;
default: ;
fprintf(stderr,"No applicable target in case statement ./tp.sa:396:23\n");
exit(16);
}
return ((TP) NULL);
}
TR_CLASS_DEF PROG_FIND_TYPES__2252(PROG_FIND_TYPES self, IDENT nm_2253, INT num_2254) {
TR_CLASS_DEF noname2255;
return PROG_PARSE_tree_(self->prog->prog_parse, nm_2253, num_2254);
}
INT FSETIDENT_elt_ha(FSETIDENT self, IDENT e_2256) {
INT noname2257 = ((INT) 0);
OB local0;
return IDENT_hash_INT(e_2256);
local0 = (OB)((IDENT_boxed) sbi_alloc(sizeof(struct IDENT_boxed_struct), IDENT_tag));
((IDENT_boxed) local0)->value_part = e_2256;
return (c_SYS_id_OB_INT(((SYS) NULL),local0));
if (!FSETIDENT_invari(self)) {
fprintf(stderr,"Failed invariant FSET{IDENT}::invariant:BOOL ../Library/fset.sa:63:11\n");
exit(16);
}
}
INT FSETIDENT_asize_INT(FSETIDENT self) {
INT noname2258 = ((INT) 0);
return self->asize;
fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
exit(16);
}
IDENT FSETIDENT_aget_I(FSETIDENT self, INT ind_2259) {
IDENT noname2260 = IDENT_zero;
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FSETIDENT) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2259, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
exit(16);
}
if (ind_2259<0||ind_2259>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
exit(16);
}
return self->arr_part[ind_2259];
if (!FSETIDENT_invari(self)) {
fprintf(stderr,"Failed invariant FSET{IDENT}::invariant:BOOL ../Library/aref.sa:33:7\n");
exit(16);
}
}
BOOL FSETIDENT_elt_eq(FSETIDENT self, IDENT e1_2261, IDENT e2_2262) {
BOOL noname2263 = ((BOOL) 0);
OB local0;
OB local1;
return IDENT_is_eq_IDEN(e1_2261, e2_2262);
local0 = (OB)((IDENT_boxed) sbi_alloc(sizeof(struct IDENT_boxed_struct), IDENT_tag));
((IDENT_boxed) local0)->value_part = e1_2261;
local1 = (OB)((IDENT_boxed) sbi_alloc(sizeof(struct IDENT_boxed_struct), IDENT_tag));
((IDENT_boxed) local1)->value_part = e2_2262;
return c_SYS_ob_eq_OB_OB_BOOL(local0,local1);
if (!FSETIDENT_invari(self)) {
fprintf(stderr,"Failed invariant FSET{IDENT}::invariant:BOOL ../Library/fset.sa:44:9\n");
exit(16);
}
}
IDENT FSETIDENT_elt_ni(FSETIDENT self) {
IDENT noname2264 = IDENT_zero;
IDENT t_2265 = IDENT_zero;
return IDENT_zero;
if (!FSETIDENT_invari(self)) {
fprintf(stderr,"Failed invariant FSET{IDENT}::invariant:BOOL ../Library/fset.sa:53:10\n");
exit(16);
}
}
BOOL FSETIDENT_test_I(FSETIDENT self, IDENT e_2266) {
BOOL noname2267 = ((BOOL) 0);
INT h = ((INT) 0);
IDENT te = IDENT_zero;
IDENT te_2268 = IDENT_zero;
INT local0;
INT local1;
INT local2;
INT local3;
if ((self==((FSETIDENT) NULL))) {
return FALSE;
}
local0 = FSETIDENT_elt_ha(self, e_2266);
local1 = (self->asize);
h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
while (1) {
te = FSETIDENT_aget_I(self, h);
if (FSETIDENT_elt_eq(self, te, e_2266)) {
return TRUE;
}
else {
if (FSETIDENT_elt_eq(self, te, FSETIDENT_elt_ni(self))) {
goto after_loop;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
local2 = (self->asize);
if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
h = 0;
while (1) {
te_2268 = FSETIDENT_aget_I(self, h);
if (FSETIDENT_elt_eq(self, te_2268, e_2266)) {
return TRUE;
}
else {
if (FSETIDENT_elt_eq(self, te_2268, FSETIDENT_elt_ni(self))) {
goto after_loop_2270;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2270: ;
local3 = (self->asize);
if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fset.sa:127:15\n");
exit(16);
}
}
return FALSE;
if (!FSETIDENT_invari(self)) {
fprintf(stderr,"Failed invariant FSET{IDENT}::invariant:BOOL ../Library/fset.sa:112:7\n");
exit(16);
}
}
STR TP_CLASS_str_STR(TP_CLASS self) {
STR noname2272;
FSTR s_2273;
ARRAYTP noname2274;
STR noname2275;
FSTR local0;
FSTR local1;
STR local2;
TP local3;
TP local4;
if ((!((self->str_cache==((STR) NULL))))) {
return self->str_cache;
}
if ((self==((TP_CLASS) NULL))) {
return ((STR) &void_2276);
}
if ((self->params==((ARRAYTP) NULL))) {
self->str_cache = self->name_19.str_4;
}
else {
local0 = FSTR_create_FSTR(((FSTR) NULL));
local1 = FSTR_plus_STR_FSTR(local0, self->name_19.str_4);
s_2273 = FSTR_plus_CHAR_FSTR(local1, '{');
{
struct ARRAYTP_elt_TP_frame_struct temp2277_0;
ARRAYTP_elt_TP_frame
noname2278 = &temp2277_0;
struct STR_separate_STR_STR_frame_struct temp2277_1;
STR_separate_STR_STR_frame
noname2279 = &temp2277_1;
noname2278->state = 0;
noname2279->state = 0;
while (1) {
if (noname2279->state == 0) {
noname2275 = ((STR) &name_2280);
noname2279->arg0 = noname2275;
}
if (noname2278->state == 0) {
noname2274 = self->params;
noname2278->arg0 = noname2274;
}
local3 = ARRAYTP_elt_TP(noname2278);
if (noname2278->state == -1) goto after_loop;
local4 = local3;
noname2279->arg1 = (*TP_str_STR[local4->header.tag+TP_str_STR_offset])(local4);
local2 = STR_separate_STR_STR(noname2279);
if (noname2279->state == -1) goto after_loop;
s_2273 = FSTR_plus_STR_FSTR(s_2273, local2);
}
}
after_loop: ;
s_2273 = FSTR_plus_CHAR_FSTR(s_2273, '}');
self->str_cache = FSTR_str_STR(s_2273);
}
return self->str_cache;
}
FSETIDENT FSETIDENT_alloca(FSETIDENT self, INT n_2281) {
FSETIDENT noname2282;
FSETIDENT r_2283;
FSETIDENT noname2284;
FSETIDENT local0;
local0 = ((FSETIDENT) sbi_arr_alloc(sizeof(struct FSETIDENT_struct), FSETIDENT_tag, sizeof(IDENT) , n_2281));
local0->asize = n_2281;
r_2283 = local0;
if ((!(((IDENT_blob=FSETIDENT_elt_ni(self)).str_4==(STR)0)))) {
{
struct FSETIDENT_aset_IDENT_frame_struct temp2285_0;
FSETIDENT_aset_IDENT_frame
noname2286 = &temp2285_0;
noname2286->state = 0;
while (1) {
if (noname2286->state == 0) {
noname2284 = r_2283;
noname2286->arg0 = noname2284;
}
noname2286->arg1 = FSETIDENT_elt_ni(self);
FSETIDENT_aset_IDENT(noname2286);
if (noname2286->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
}
return r_2283;
}
FSETIDENT FSETIDENT_double(FSETIDENT self) {
FSETIDENT noname2287;
FSETIDENT r_2288;
FSETIDENT noname2289;
INT local0;
INT local1;
INT local2;
IDENT local3;
if (!((!((self==((FSETIDENT) NULL)))))) {
fprintf(stderr,"Violation of precondition ../Library/fset.sa:150:22\n");
exit(16);
}
local0 = (self->asize);
local1 = (c_INT_minus_INT_INT_chk(local0,1));
local2 = (c_INT_times_INT_INT_chk(local1,2));
r_2288 = FSETIDENT_alloca(self, (c_INT_plus_INT_INT_chk(local2,1)));
{
struct FSETIDENT_elt_IDENT_frame_struct temp2290_0;
FSETIDENT_elt_IDENT_frame
noname2291 = &temp2290_0;
noname2291->state = 0;
while (1) {
if (noname2291->state == 0) {
noname2289 = self;
noname2291->arg0 = noname2289;
}
local3 = FSETIDENT_elt_IDENT(noname2291);
if (noname2291->state == -1) goto after_loop;
r_2288 = FSETIDENT_insert(r_2288, local3);
}
}
after_loop: ;
return r_2288;
}
void FSETIDENT_aset_I(FSETIDENT self, INT ind_2292, IDENT val_2293) {
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FSETIDENT) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2292, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
exit(16);
}
if (ind_2292<0||ind_2292>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
exit(16);
}
self->arr_part[ind_2292] = val_2293;
if (!FSETIDENT_invari(self)) {
fprintf(stderr,"Failed invariant FSET{IDENT}::invariant:BOOL ../Library/aref.sa:38:7\n");
exit(16);
}
}
FSETIDENT FSETIDENT_insert(FSETIDENT self, IDENT e_2294) {
FSETIDENT noname2295;
FSETIDENT r_2296;
INT asz_2297 = ((INT) 0);
INT h = ((INT) 0);
IDENT te = IDENT_zero;
IDENT te_2298 = IDENT_zero;
INT local0;
INT local1;
INT local2;
r_2296 = self;
if ((r_2296==((FSETIDENT) NULL))) {
r_2296 = FSETIDENT_alloca(self, 5);
}
else {
local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
local1 = (c_INT_times_INT_INT_chk(local0,2));
if ((local1>(self->asize))) {
r_2296 = FSETIDENT_double(self);
}
}
asz_2297 = (r_2296->asize);
local2 = FSETIDENT_elt_ha(r_2296, e_2294);
h = (local2&(c_INT_minus_INT_INT_chk(asz_2297,2)));
while (1) {
te = FSETIDENT_aget_I(r_2296, h);
if (FSETIDENT_elt_eq(self, te, FSETIDENT_elt_ni(self))) {
goto after_loop;
}
else {
if (FSETIDENT_elt_eq(self, te, e_2294)) {
FSETIDENT_aset_I(r_2296, h, e_2294);
return r_2296;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
if ((h==(c_INT_minus_INT_INT_chk(asz_2297,1)))) {
h = 0;
while (1) {
te_2298 = FSETIDENT_aget_I(r_2296, h);
if (FSETIDENT_elt_eq(self, te_2298, FSETIDENT_elt_ni(self))) {
goto after_loop_2300;
}
else {
if (FSETIDENT_elt_eq(self, te_2298, e_2294)) {
FSETIDENT_aset_I(r_2296, h, e_2294);
return r_2296;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2300: ;
if (!((h!=(c_INT_minus_INT_INT_chk(asz_2297,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fset.sa:177:15\n");
exit(16);
}
}
FSETIDENT_aset_I(r_2296, h, e_2294);
r_2296->hsize = (c_INT_plus_INT_INT_chk(r_2296->hsize,1));
return r_2296;
if (!FSETIDENT_invari(self)) {
fprintf(stderr,"Failed invariant FSET{IDENT}::invariant:BOOL ../Library/fset.sa:158:9\n");
exit(16);
}
}
void PROG_FIND_TYPES__2302(PROG_FIND_TYPES self, TP t_2303) {
IDENT nm_2304 = IDENT_zero;
INT pnum = ((INT) 0);
INT i = ((INT) 0);
INT i_2305 = ((INT) 0);
INT i_2306 = ((INT) 0);
PROG local0;
STR local1;
if (!((!((t_2303==((TP) NULL)))))) {
fprintf(stderr,"Violation of precondition ./prog.sa:430:13\n");
exit(16);
}
if (t_2303==NULL) {
} else
switch (t_2303->header.tag) {
case TP_CLASS_tag:
nm_2304 = ((TP_CLASS) t_2303)->name_19;
pnum = ARRAYTP_size_INT(((TP_CLASS) t_2303)->params);
if ((PROG_FIND_TYPES__2252(self, nm_2304, pnum)==((TR_CLASS_DEF) NULL))) {
if ((!(FSETIDENT_test_I(self->err_names, nm_2304)))) {
local0 = self->prog;
local1 = ((STR) &Thereisnosourcec);
PROG_err_STR(local0, STR_plus_STR_STR(local1, TP_CLASS_str_STR(((TP_CLASS) t_2303))));
self->err_names = FSETIDENT_insert(self->err_names, nm_2304);
}
}
else {
if ((pnum>0)) {
if ((!(FSETTP_test_TP_BOOL(self->tp_done, t_2303)))) {
self->tp_todo = FSETTP_insert_TP(self->tp_todo, t_2303);
i = 0;
while (1) {
if ((i<pnum)) {
}
else {
goto after_loop;
}
PROG_FIND_TYPES__2302(self, ARRAYTP_aget_INT_TP(((TP_CLASS) t_2303)->params, i));
i = (c_INT_plus_INT_INT_chk(i,1));
}
after_loop: ;
}
}
} break;
case TP_ROUT_tag:
if ((!(FSETTP_test_TP_BOOL(self->tp_done, t_2303)))) {
self->tp_done = FSETTP_insert_TP(self->tp_done, t_2303);
i_2305 = 0;
if ((!((((TP_ROUT) t_2303)->args_7==((ARRAYTP) NULL))))) {
while (1) {
if ((i_2305<ARRAYTP_size_INT(((TP_ROUT) t_2303)->args_7))) {
}
else {
goto after_loop_2308;
}
PROG_FIND_TYPES__2302(self, ARRAYTP_aget_INT_TP(((TP_ROUT) t_2303)->args_7, i_2305));
i_2305 = (c_INT_plus_INT_INT_chk(i_2305,1));
}
after_loop_2308: ;
}
if ((!((((TP_ROUT) t_2303)->ret==((TP) NULL))))) {
PROG_FIND_TYPES__2302(self, ((TP_ROUT) t_2303)->ret);
}
} break;
case TP_ITER_tag:
if ((!(FSETTP_test_TP_BOOL(self->tp_done, t_2303)))) {
self->tp_done = FSETTP_insert_TP(self->tp_done, t_2303);
i_2306 = 0;
if ((!((((TP_ITER) t_2303)->args_7==((ARRAYTP) NULL))))) {
while (1) {
if ((i_2306<ARRAYTP_size_INT(((TP_ITER) t_2303)->args_7))) {
}
else {
goto after_loop_2310;
}
PROG_FIND_TYPES__2302(self, ARRAYTP_aget_INT_TP(((TP_ITER) t_2303)->args_7, i_2306));
i_2306 = (c_INT_plus_INT_INT_chk(i_2306,1));
}
after_loop_2310: ;
}
if ((!((((TP_ITER) t_2303)->ret==((TP) NULL))))) {
PROG_FIND_TYPES__2302(self, ((TP_ITER) t_2303)->ret);
}
} break;
default: ;
fprintf(stderr,"No applicable type in typecase ./prog.sa:437:14\n");
exit(16);
}
}
void PROG_FIND_TYPES__2312(PROG_FIND_TYPES self, TR_NODE tr_2313) {
TR_CLASS_ELT b_2314;
TR_CLASS_ELT local0;
if ((tr_2313==((TR_NODE) NULL))) {
return;
}
PROG_err_loc_PRO(self->prog, ((PROG_ERR) tr_2313));
if (tr_2313==NULL) {
} else
switch (tr_2313->header.tag) {
case TR_CLASS_DEF_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CLASS_DEF) tr_2313)->params));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CLASS_DEF) tr_2313)->under));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CLASS_DEF) tr_2313)->over));
b_2314 = ((TR_CLASS_DEF) tr_2313)->body;
while (1) {
if ((!((b_2314==((TR_CLASS_ELT) NULL))))) {
}
else {
goto after_loop;
}
if (b_2314==NULL) {
} else
switch (b_2314->header.tag) {
case TR_INCLUDE_CLAUSE_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) b_2314)); break;
default: ;
}
local0 = b_2314;
b_2314 = (*TR_CLASS_ELT_nex[local0->header.tag+TR_CLASS_ELT_nex_offset])(local0);
}
after_loop: ; break;
case TR_PARAM_DEC_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_PARAM_DEC) tr_2313)->type_constraint));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_PARAM_DEC) tr_2313)->next_8)); break;
case TR_TYPE_SPEC_tag:
PROG_FIND_TYPES__2302(self, TP_CONTEXT_tp_of(self->con, ((TR_TYPE_SPEC) tr_2313)));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_TYPE_SPEC) tr_2313)->next_8)); break;
case TR_CONST_DEF_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CONST_DEF) tr_2313)->tp));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CONST_DEF) tr_2313)->init)); break;
case TR_SHARED_DEF_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_SHARED_DEF) tr_2313)->tp));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_SHARED_DEF) tr_2313)->init)); break;
case TR_ATTR_DEF_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ATTR_DEF) tr_2313)->tp)); break;
case TR_ROUT_DEF_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ROUT_DEF) tr_2313)->args_dec));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ROUT_DEF) tr_2313)->ret_dec));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ROUT_DEF) tr_2313)->pre_e));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ROUT_DEF) tr_2313)->post_e));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ROUT_DEF) tr_2313)->stmts)); break;
case TR_ARG_DEC_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ARG_DEC) tr_2313)->tp));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ARG_DEC) tr_2313)->next_8)); break;
case TR_INCLUDE_CLAUSE_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_INCLUDE_CLAUSE) tr_2313)->tp)); break;
case TR_DEC_STMT_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_DEC_STMT) tr_2313)->tp));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_DEC_STMT) tr_2313)->next_8)); break;
case TR_ASSIGN_STMT_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ASSIGN_STMT) tr_2313)->lhs_expr));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ASSIGN_STMT) tr_2313)->tp));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ASSIGN_STMT) tr_2313)->rhs));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ASSIGN_STMT) tr_2313)->next_8)); break;
case TR_IF_STMT_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_IF_STMT) tr_2313)->test_40));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_IF_STMT) tr_2313)->then_part));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_IF_STMT) tr_2313)->else_part));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_IF_STMT) tr_2313)->next_8)); break;
case TR_LOOP_STMT_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_LOOP_STMT) tr_2313)->body));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_LOOP_STMT) tr_2313)->next_8)); break;
case TR_RETURN_STMT_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_RETURN_STMT) tr_2313)->val_16));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_RETURN_STMT) tr_2313)->next_8)); break;
case TR_YIELD_STMT_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_YIELD_STMT) tr_2313)->val_16));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_YIELD_STMT) tr_2313)->next_8)); break;
case TR_QUIT_STMT_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_QUIT_STMT) tr_2313)->next_8)); break;
case TR_CASE_STMT_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CASE_STMT) tr_2313)->test_40));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CASE_STMT) tr_2313)->when_part));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CASE_STMT) tr_2313)->else_part));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CASE_STMT) tr_2313)->next_8)); break;
case TR_CASE_WHEN_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CASE_WHEN) tr_2313)->val_16));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CASE_WHEN) tr_2313)->then_part));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CASE_WHEN) tr_2313)->next_8)); break;
case TR_TYPECASE_STMT_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_TYPECASE_STMT) tr_2313)->when_part));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_TYPECASE_STMT) tr_2313)->else_part));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_TYPECASE_STMT) tr_2313)->next_8)); break;
case TR_TYPECASE_WHEN_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_TYPECASE_WHEN) tr_2313)->tp));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_TYPECASE_WHEN) tr_2313)->then_part));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_TYPECASE_WHEN) tr_2313)->next_8)); break;
case TR_ASSERT_STMT_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ASSERT_STMT) tr_2313)->test_40));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ASSERT_STMT) tr_2313)->next_8)); break;
case TR_PROTECT_STMT_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_PROTECT_STMT) tr_2313)->stmts));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_PROTECT_STMT) tr_2313)->when_part));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_PROTECT_STMT) tr_2313)->else_part));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_PROTECT_STMT) tr_2313)->next_8)); break;
case TR_PROTECT_WHEN_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_PROTECT_WHEN) tr_2313)->tp));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_PROTECT_WHEN) tr_2313)->then_part));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_PROTECT_WHEN) tr_2313)->next_8)); break;
case TR_RAISE_STMT_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_RAISE_STMT) tr_2313)->val_16));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_RAISE_STMT) tr_2313)->next_8)); break;
case TR_EXPR_STMT_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_EXPR_STMT) tr_2313)->e));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_EXPR_STMT) tr_2313)->next_8)); break;
case TR_SELF_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_SELF_EXPR) tr_2313)->next_8)); break;
case TR_CALL_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CALL_EXPR) tr_2313)->ob));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CALL_EXPR) tr_2313)->tp));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CALL_EXPR) tr_2313)->args_7));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CALL_EXPR) tr_2313)->next_8)); break;
case TR_VOID_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_VOID_EXPR) tr_2313)->next_8)); break;
case TR_IS_VOID_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_IS_VOID_EXPR) tr_2313)->arg_51)); break;
case TR_ARRAY_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ARRAY_EXPR) tr_2313)->elts));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_ARRAY_EXPR) tr_2313)->next_8)); break;
case TR_CREATE_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CREATE_EXPR) tr_2313)->tp));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CREATE_EXPR) tr_2313)->elts));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CREATE_EXPR) tr_2313)->next_8)); break;
case TR_BOUND_CREATE_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_BOUND_CREATE_EXPR) tr_2313)->call_43));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_BOUND_CREATE_EXPR) tr_2313)->ret));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_BOUND_CREATE_EXPR) tr_2313)->next_8)); break;
case TR_UNDERSCORE_ARG_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_UNDERSCORE_ARG) tr_2313)->tp));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_UNDERSCORE_ARG) tr_2313)->next_8)); break;
case TR_AND_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_AND_EXPR) tr_2313)->e1));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_AND_EXPR) tr_2313)->e2));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_AND_EXPR) tr_2313)->next_8)); break;
case TR_OR_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_OR_EXPR) tr_2313)->e1));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_OR_EXPR) tr_2313)->e2));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_OR_EXPR) tr_2313)->next_8)); break;
case TR_EXCEPT_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_EXCEPT_EXPR) tr_2313)->next_8)); break;
case TR_NEW_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_NEW_EXPR) tr_2313)->arg_51));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_NEW_EXPR) tr_2313)->next_8)); break;
case TR_INITIAL_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_INITIAL_EXPR) tr_2313)->e));
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_INITIAL_EXPR) tr_2313)->next_8)); break;
case TR_BREAK_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_BREAK_EXPR) tr_2313)->next_8)); break;
case TR_RESULT_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_RESULT_EXPR) tr_2313)->next_8)); break;
case TR_BOOL_LIT_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_BOOL_LIT_EXPR) tr_2313)->next_8)); break;
case TR_CHAR_LIT_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_CHAR_LIT_EXPR) tr_2313)->next_8)); break;
case TR_STR_LIT_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_STR_LIT_EXPR) tr_2313)->next_8)); break;
case TR_INT_LIT_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_INT_LIT_EXPR) tr_2313)->next_8)); break;
case TR_FLT_LIT_EXPR_tag:
PROG_FIND_TYPES__2312(self, ((TR_NODE) ((TR_FLT_LIT_EXPR) tr_2313)->next_8)); break;
default: ;
fprintf(stderr,"No applicable type in typecase ./prog.sa:480:14\n");
exit(16);
}
}
void PROG_FIND_TYPES__2316(PROG_FIND_TYPES self, TR_CLASS_DEF tcd) {
TR_CLASS_ELT tb;
TR_CLASS_ELT local0;
tb = tcd->body;
while (1) {
if ((tb==((TR_CLASS_ELT) NULL))) {
goto after_loop;
}
PROG_FIND_TYPES__2312(self, ((TR_NODE) tb));
local0 = tb;
tb = (*TR_CLASS_ELT_nex[local0->header.tag+TR_CLASS_ELT_nex_offset])(local0);
}
after_loop: ;
}
INT FMAPTPIMPL_key_h(FMAPTPIMPL self, TP k) {
INT noname2318 = ((INT) 0);
HASH local0;
if (k==NULL) {
} else
switch (k->header.tag) {
case TUPIMPL_INCLUDEI_tag:
case TUPAM_BND_CREATE_tag:
case TUPIFCIFC_tag:
case TUPSTRITER_INLINE_tag:
case TUPAM_GLOBAL_EXP_tag:
case FSTR_tag:
case TUPSIGSIG_tag:
case CHAR_tag:
case INT_tag:
case TUPTP_CLASSFSETTP_tag:
case TUPSTRSTR_tag:
case TUPINTINTINT_tag:
case STR_tag:
case TUPSFILE_IDSFILE_ID_tag:
case TUPAM_ITER_CALL__tag:
case TUPTR_EXPRTR_EXPR_tag:
case TUPTPFMAPIDENTAM_tag:
case TUPARRAYTPTP_tag:
case TUPAM_CONSTAM_CONST_tag:
case TUPSTRTUPSTRSTR_tag:
case TUPTPIMPL_tag:
case TUPSIGAM_ROUT_DEF_tag:
case TUPARRAYTPARRAYB_tag:
case TUPIDENTAM_GLOBA_tag:
case TUPAM_BND_ITER_C_tag:
case TUPAM_LOCAL_EXPR_tag:
case TUPSTRFSETSTR_tag:
case TUPAM_ROUT_DEFAM_tag:
case TUPTPTP_tag:
case IDENT_tag:
case TUPTPINT_tag:
case TUPIDENTINT_tag:
case TUPIDENTIDENT_tag:
case TUPTP_CLASSFSETT_tag:
case TUPCHARCHAR_tag:
case TUPIDENTTP_tag:
case TUPIDENTARRAYTP_tag:
case TUPAM_EXPRAM_EXPR_tag:
case TUPTPIFC_tag:
case TUPTP_CLASSTP_CLASS_tag:
case TUPAM_STMTAM_STMT_tag:
case TUPINTINT_tag:
case TUPOBSTR_tag:
case TUPFLISTAM_CONST_tag:
case TUPAM_EXPRTP_tag:
case TUPBOOLINTIINTBOOL_tag:
local0 = ((HASH) k);
return (*HASH_hash_INT[local0->header.tag+HASH_hash_INT_offset])(local0); break;
default: ;
}
return (c_SYS_id_OB_INT(((SYS) NULL),((OB) k)));
if (!FMAPTPIMPL_invar(self)) {
fprintf(stderr,"Failed invariant FMAP{$TP,IMPL}::invariant:BOOL ../Library/fmap.sa:64:11\n");
exit(16);
}
}
INT FMAPTPIMPL_asize_INT(FMAPTPIMPL self) {
INT noname2319 = ((INT) 0);
return self->asize;
fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
exit(16);
}
TUPTPIMPL FMAPTPIMPL_aget_(FMAPTPIMPL self, INT ind_2320) {
TUPTPIMPL noname2321 = TUPTPIMPL_zero;
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FMAPTPIMPL) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2320, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
exit(16);
}
if (ind_2320<0||ind_2320>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
exit(16);
}
return self->arr_part[ind_2320];
}
BOOL FMAPTPIMPL_key_e(FMAPTPIMPL self, TP k1, TP k2) {
BOOL noname2322 = ((BOOL) 0);
if (k1==NULL) {
} else
switch (k1->header.tag) {
default: ;
}
return c_SYS_ob_eq_OB_OB_BOOL(((OB) k1),((OB) k2));
if (!FMAPTPIMPL_invar(self)) {
fprintf(stderr,"Failed invariant FMAP{$TP,IMPL}::invariant:BOOL ../Library/fmap.sa:44:9\n");
exit(16);
}
}
TP FMAPTPIMPL_key_n(FMAPTPIMPL self) {
TP noname2323;
TP k = ((TP) NULL);
if (k==NULL) {
} else
switch (k->header.tag) {
default: ;
}
return ((TP) NULL);
if (!FMAPTPIMPL_invar(self)) {
fprintf(stderr,"Failed invariant FMAP{$TP,IMPL}::invariant:BOOL ../Library/fmap.sa:54:10\n");
exit(16);
}
}
IMPL FMAPTPIMPL_get_T(FMAPTPIMPL self, TP k) {
IMPL noname2324;
INT h = ((INT) 0);
TP tk;
TP tk_2325;
INT local0;
INT local1;
INT local2;
INT local3;
if ((self==((FMAPTPIMPL) NULL))) {
return ((IMPL) NULL);
}
local0 = FMAPTPIMPL_key_h(self, k);
local1 = (self->asize);
h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
while (1) {
tk = (TUPTPIMPL_blob=FMAPTPIMPL_aget_(self, h)).t1;
if (FMAPTPIMPL_key_e(self, tk, k)) {
return (TUPTPIMPL_blob=FMAPTPIMPL_aget_(self, h)).t2;
}
else {
if (FMAPTPIMPL_key_e(self, tk, FMAPTPIMPL_key_n(self))) {
goto after_loop;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
local2 = (self->asize);
if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
h = 0;
while (1) {
tk_2325 = (TUPTPIMPL_blob=FMAPTPIMPL_aget_(self, h)).t1;
if (FMAPTPIMPL_key_e(self, tk_2325, k)) {
return (TUPTPIMPL_blob=FMAPTPIMPL_aget_(self, h)).t2;
}
else {
if (FMAPTPIMPL_key_e(self, tk_2325, FMAPTPIMPL_key_n(self))) {
goto after_loop_2327;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2327: ;
local3 = (self->asize);
if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fmap.sa:150:15\n");
exit(16);
}
}
return ((IMPL) NULL);
if (!FMAPTPIMPL_invar(self)) {
fprintf(stderr,"Failed invariant FMAP{$TP,IMPL}::invariant:BOOL ../Library/fmap.sa:136:6\n");
exit(16);
}
}
INT INT_hash_INT(INT self) {
INT noname2329 = ((INT) 0);
return self;
}
INT TUPIDENTINT_hash_INT(TUPIDENTINT self) {
INT noname2330 = ((INT) 0);
INT h1 = ((INT) 0);
INT h2 = ((INT) 0);
IDENT lt1 = IDENT_zero;
INT lt2 = ((INT) 0);
lt1 = self.t1;
lt2 = self.t2;
h1 = IDENT_hash_INT(lt1);
h2 = INT_hash_INT(lt2);
return (h1^(h2<<2));
}
INT FSETTUPIDENTINT_(FSETTUPIDENTINT self, TUPIDENTINT e_2331) {
INT noname2332 = ((INT) 0);
OB local0;
return TUPIDENTINT_hash_INT(e_2331);
local0 = (OB)((TUPIDENTINT_boxed) sbi_alloc(sizeof(struct TUPIDENTINT_boxed_struct), TUPIDENTINT_tag));
((TUPIDENTINT_boxed) local0)->value_part = e_2331;
return (c_SYS_id_OB_INT(((SYS) NULL),local0));
if (!FSETTUPIDENTINT__2333(self)) {
fprintf(stderr,"Failed invariant FSET{TUP{IDENT,INT}}::invariant:BOOL ../Library/fset.sa:63:11\n");
exit(16);
}
}
INT FSETTUPIDENTINT__2334(FSETTUPIDENTINT self) {
INT noname2335 = ((INT) 0);
return self->asize;
fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
exit(16);
}
TUPIDENTINT FSETTUPIDENTINT__2336(FSETTUPIDENTINT self, INT ind_2337) {
TUPIDENTINT noname2338 = TUPIDENTINT_zero;
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FSETTUPIDENTINT) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2337, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
exit(16);
}
if (ind_2337<0||ind_2337>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
exit(16);
}
return self->arr_part[ind_2337];
if (!FSETTUPIDENTINT__2333(self)) {
fprintf(stderr,"Failed invariant FSET{TUP{IDENT,INT}}::invariant:BOOL ../Library/aref.sa:33:7\n");
exit(16);
}
}
BOOL TUPIDENTINT_is_e(TUPIDENTINT self, TUPIDENTINT e_2339) {
BOOL noname2340 = ((BOOL) 0);
IDENT lt1 = IDENT_zero;
INT lt2 = ((INT) 0);
lt1 = self.t1;
if ((!(IDENT_is_eq_IDEN(lt1, e_2339.t1)))) {
return FALSE;
}
lt2 = self.t2;
if ((!((lt2==e_2339.t2)))) {
return FALSE;
}
return TRUE;
}
BOOL FSETTUPIDENTINT__2341(FSETTUPIDENTINT self, TUPIDENTINT e1_2342, TUPIDENTINT e2_2343) {
BOOL noname2344 = ((BOOL) 0);
OB local0;
OB local1;
return TUPIDENTINT_is_e(e1_2342, e2_2343);
local0 = (OB)((TUPIDENTINT_boxed) sbi_alloc(sizeof(struct TUPIDENTINT_boxed_struct), TUPIDENTINT_tag));
((TUPIDENTINT_boxed) local0)->value_part = e1_2342;
local1 = (OB)((TUPIDENTINT_boxed) sbi_alloc(sizeof(struct TUPIDENTINT_boxed_struct), TUPIDENTINT_tag));
((TUPIDENTINT_boxed) local1)->value_part = e2_2343;
return c_SYS_ob_eq_OB_OB_BOOL(local0,local1);
if (!FSETTUPIDENTINT__2333(self)) {
fprintf(stderr,"Failed invariant FSET{TUP{IDENT,INT}}::invariant:BOOL ../Library/fset.sa:44:9\n");
exit(16);
}
}
TUPIDENTINT FSETTUPIDENTINT__2345(FSETTUPIDENTINT self) {
TUPIDENTINT noname2346 = TUPIDENTINT_zero;
TUPIDENTINT t_2347 = TUPIDENTINT_zero;
return TUPIDENTINT_zero;
if (!FSETTUPIDENTINT__2333(self)) {
fprintf(stderr,"Failed invariant FSET{TUP{IDENT,INT}}::invariant:BOOL ../Library/fset.sa:53:10\n");
exit(16);
}
}
BOOL FSETTUPIDENTINT__2348(FSETTUPIDENTINT self, TUPIDENTINT e_2349) {
BOOL noname2350 = ((BOOL) 0);
INT h = ((INT) 0);
TUPIDENTINT te = TUPIDENTINT_zero;
TUPIDENTINT te_2351 = TUPIDENTINT_zero;
INT local0;
INT local1;
INT local2;
INT local3;
if ((self==((FSETTUPIDENTINT) NULL))) {
return FALSE;
}
local0 = FSETTUPIDENTINT_(self, e_2349);
local1 = (self->asize);
h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
while (1) {
te = FSETTUPIDENTINT__2336(self, h);
if (FSETTUPIDENTINT__2341(self, te, e_2349)) {
return TRUE;
}
else {
if (FSETTUPIDENTINT__2341(self, te, FSETTUPIDENTINT__2345(self))) {
goto after_loop;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
local2 = (self->asize);
if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
h = 0;
while (1) {
te_2351 = FSETTUPIDENTINT__2336(self, h);
if (FSETTUPIDENTINT__2341(self, te_2351, e_2349)) {
return TRUE;
}
else {
if (FSETTUPIDENTINT__2341(self, te_2351, FSETTUPIDENTINT__2345(self))) {
goto after_loop_2353;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2353: ;
local3 = (self->asize);
if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fset.sa:127:15\n");
exit(16);
}
}
return FALSE;
if (!FSETTUPIDENTINT__2333(self)) {
fprintf(stderr,"Failed invariant FSET{TUP{IDENT,INT}}::invariant:BOOL ../Library/fset.sa:112:7\n");
exit(16);
}
}
STR IMPL_TBL_tup_str(IMPL_TBL self, TUPIDENTINT t_2355) {
STR noname2356;
STR r_2357;
INT noname2358 = ((INT) 0);
STR noname2359;
INT local0;
INT noname2362t;
STR local1;
r_2357 = t_2355.t1.str_4;
if ((t_2355.t2==0)) {
return r_2357;
}
r_2357 = STR_plus_STR_STR(r_2357, ((STR) &name_2360));
{
BOOL noname2362 = TRUE;
struct STR_separate_STR_STR_frame_struct temp2361_0;
STR_separate_STR_STR_frame
noname2363 = &temp2361_0;
noname2363->state = 0;
while (1) {
if (noname2362) {
noname2362 = FALSE;
noname2358 = t_2355.t2;
local0 = noname2358;
noname2362t = local0;
} else {
noname2362t--;
}
if (noname2362t<=0) goto after_loop;
0 /* no return value from inlined iter */;
if (noname2363->state == 0) {
noname2359 = ((STR) &name_2364);
noname2363->arg0 = noname2359;
}
noname2363->arg1 = ((STR) &S_);
local1 = STR_separate_STR_STR(noname2363);
if (noname2363->state == -1) goto after_loop;
r_2357 = STR_plus_STR_STR(r_2357, local1);
}
}
after_loop: ;
r_2357 = STR_plus_STR_STR(r_2357, ((STR) &name_2365));
return r_2357;
}
void IMPL_TBL_cycle_err(IMPL_TBL self) {
STR s_2366;
FSETTUPIDENTINT noname2367;
STR noname2368;
STR local0;
TUPIDENTINT local1;
s_2366 = ((STR) &Cycledetectedini);
{
struct FSETTUPIDENTINT__2370_frame_struct temp2369_0;
FSETTUPIDENTINT__2370_frame
noname2371 = &temp2369_0;
struct STR_separate_STR_STR_frame_struct temp2369_1;
STR_separate_STR_STR_frame
noname2372 = &temp2369_1;
noname2371->state = 0;
noname2372->state = 0;
while (1) {
if (noname2372->state == 0) {
noname2368 = ((STR) &name_2373);
noname2372->arg0 = noname2368;
}
if (noname2371->state == 0) {
noname2367 = self->cur;
noname2371->arg0 = noname2367;
}
local1 = FSETTUPIDENTINT__2370(noname2371);
if (noname2371->state == -1) goto after_loop;
noname2372->arg1 = IMPL_TBL_tup_str(self, local1);
local0 = STR_separate_STR_STR(noname2372);
if (noname2372->state == -1) goto after_loop;
s_2366 = STR_plus_STR_STR(s_2366, local0);
}
}
after_loop: ;
PROG_err_STR(self->prog, s_2366);
}
FSETTUPIDENTINT FSETTUPIDENTINT__2374(FSETTUPIDENTINT self) {
FSETTUPIDENTINT noname2375;
FSETTUPIDENTINT r_2376;
FSETTUPIDENTINT noname2377;
INT local0;
if ((self==((FSETTUPIDENTINT) NULL))) {
return ((FSETTUPIDENTINT) NULL);
}
local0 = (self->asize);
if ((local0<=17)) {
r_2376 = self;
r_2376->hsize = 0;
{
struct FSETTUPIDENTINT__2379_frame_struct temp2378_0;
FSETTUPIDENTINT__2379_frame
noname2380 = &temp2378_0;
noname2380->state = 0;
while (1) {
if (noname2380->state == 0) {
noname2377 = r_2376;
noname2380->arg0 = noname2377;
}
noname2380->arg1 = FSETTUPIDENTINT__2345(self);
FSETTUPIDENTINT__2379(noname2380);
if (noname2380->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
return r_2376;
}
return ((FSETTUPIDENTINT) NULL);
if (!FSETTUPIDENTINT__2333(self)) {
fprintf(stderr,"Failed invariant FSET{TUP{IDENT,INT}}::invariant:BOOL ../Library/fset.sa:216:8\n");
exit(16);
}
}
FSETTUPIDENTINT FSETTUPIDENTINT__2381(FSETTUPIDENTINT self, INT n_2382) {
FSETTUPIDENTINT noname2383;
FSETTUPIDENTINT r_2384;
FSETTUPIDENTINT noname2385;
FSETTUPIDENTINT local0;
local0 = ((FSETTUPIDENTINT) sbi_arr_alloc(sizeof(struct FSETTUPIDENTINT_struct), FSETTUPIDENTINT_tag, sizeof(TUPIDENTINT) , n_2382));
local0->asize = n_2382;
r_2384 = local0;
if ((!(((TUPIDENTINT_blob=FSETTUPIDENTINT__2345(self)).t1.str_4==(STR)0)&&((TUPIDENTINT_blob=FSETTUPIDENTINT__2345(self)).t2==(INT)0)))) {
{
struct FSETTUPIDENTINT__2379_frame_struct temp2386_0;
FSETTUPIDENTINT__2379_frame
noname2387 = &temp2386_0;
noname2387->state = 0;
while (1) {
if (noname2387->state == 0) {
noname2385 = r_2384;
noname2387->arg0 = noname2385;
}
noname2387->arg1 = FSETTUPIDENTINT__2345(self);
FSETTUPIDENTINT__2379(noname2387);
if (noname2387->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
}
return r_2384;
}
FSETTUPIDENTINT FSETTUPIDENTINT__2388(FSETTUPIDENTINT self) {
FSETTUPIDENTINT noname2389;
FSETTUPIDENTINT r_2390;
FSETTUPIDENTINT noname2391;
INT local0;
INT local1;
INT local2;
TUPIDENTINT local3;
if (!((!((self==((FSETTUPIDENTINT) NULL)))))) {
fprintf(stderr,"Violation of precondition ../Library/fset.sa:150:22\n");
exit(16);
}
local0 = (self->asize);
local1 = (c_INT_minus_INT_INT_chk(local0,1));
local2 = (c_INT_times_INT_INT_chk(local1,2));
r_2390 = FSETTUPIDENTINT__2381(self, (c_INT_plus_INT_INT_chk(local2,1)));
{
struct FSETTUPIDENTINT__2370_frame_struct temp2392_0;
FSETTUPIDENTINT__2370_frame
noname2393 = &temp2392_0;
noname2393->state = 0;
while (1) {
if (noname2393->state == 0) {
noname2391 = self;
noname2393->arg0 = noname2391;
}
local3 = FSETTUPIDENTINT__2370(noname2393);
if (noname2393->state == -1) goto after_loop;
r_2390 = FSETTUPIDENTINT__2394(r_2390, local3);
}
}
after_loop: ;
return r_2390;
}
void FSETTUPIDENTINT__2395(FSETTUPIDENTINT self, INT ind_2396, TUPIDENTINT val_2397) {
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FSETTUPIDENTINT) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2396, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
exit(16);
}
if (ind_2396<0||ind_2396>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
exit(16);
}
self->arr_part[ind_2396] = val_2397;
if (!FSETTUPIDENTINT__2333(self)) {
fprintf(stderr,"Failed invariant FSET{TUP{IDENT,INT}}::invariant:BOOL ../Library/aref.sa:38:7\n");
exit(16);
}
}
FSETTUPIDENTINT FSETTUPIDENTINT__2394(FSETTUPIDENTINT self, TUPIDENTINT e_2398) {
FSETTUPIDENTINT noname2399;
FSETTUPIDENTINT r_2400;
INT asz_2401 = ((INT) 0);
INT h = ((INT) 0);
TUPIDENTINT te = TUPIDENTINT_zero;
TUPIDENTINT te_2402 = TUPIDENTINT_zero;
INT local0;
INT local1;
INT local2;
r_2400 = self;
if ((r_2400==((FSETTUPIDENTINT) NULL))) {
r_2400 = FSETTUPIDENTINT__2381(self, 5);
}
else {
local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
local1 = (c_INT_times_INT_INT_chk(local0,2));
if ((local1>(self->asize))) {
r_2400 = FSETTUPIDENTINT__2388(self);
}
}
asz_2401 = (r_2400->asize);
local2 = FSETTUPIDENTINT_(r_2400, e_2398);
h = (local2&(c_INT_minus_INT_INT_chk(asz_2401,2)));
while (1) {
te = FSETTUPIDENTINT__2336(r_2400, h);
if (FSETTUPIDENTINT__2341(self, te, FSETTUPIDENTINT__2345(self))) {
goto after_loop;
}
else {
if (FSETTUPIDENTINT__2341(self, te, e_2398)) {
FSETTUPIDENTINT__2395(r_2400, h, e_2398);
return r_2400;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
if ((h==(c_INT_minus_INT_INT_chk(asz_2401,1)))) {
h = 0;
while (1) {
te_2402 = FSETTUPIDENTINT__2336(r_2400, h);
if (FSETTUPIDENTINT__2341(self, te_2402, FSETTUPIDENTINT__2345(self))) {
goto after_loop_2404;
}
else {
if (FSETTUPIDENTINT__2341(self, te_2402, e_2398)) {
FSETTUPIDENTINT__2395(r_2400, h, e_2398);
return r_2400;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2404: ;
if (!((h!=(c_INT_minus_INT_INT_chk(asz_2401,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fset.sa:177:15\n");
exit(16);
}
}
FSETTUPIDENTINT__2395(r_2400, h, e_2398);
r_2400->hsize = (c_INT_plus_INT_INT_chk(r_2400->hsize,1));
return r_2400;
if (!FSETTUPIDENTINT__2333(self)) {
fprintf(stderr,"Failed invariant FSET{TUP{IDENT,INT}}::invariant:BOOL ../Library/fset.sa:158:9\n");
exit(16);
}
}
PROG IMPL_prog_PROG(IMPL self) {
PROG noname2406;
TP local0;
local0 = self->tp;
return (*TP_prog_PROG[local0->header.tag+TP_prog_PROG_offset])(local0);
}
INT PROG_tp_kind_TP_INT(PROG self, TP t_2407) {
INT noname2408 = ((INT) 0);
TR_CLASS_DEF tr_2409;
PROG_PARSE local0;
IDENT local1;
if (t_2407==NULL) {
} else
switch (t_2407->header.tag) {
case TP_CLASS_tag:
local0 = self->prog_parse;
local1 = ((TP_CLASS) t_2407)->name_19;
tr_2409 = PROG_PARSE_tree_(local0, local1, ARRAYTP_size_INT(((TP_CLASS) t_2407)->params));
if ((tr_2409==((TR_CLASS_DEF) NULL))) {
return shared_TP_KIND_m;
}
return tr_2409->kind; break;
case TP_ROUT_tag:
return shared_TP_KIND_r; break;
case TP_ITER_tag:
return shared_TP_KIND_i; break;
default: ;
fprintf(stderr,"No applicable type in typecase ./prog.sa:163:14\n");
exit(16);
}
return 0;
}
PROG IMPL_CREATE_prog(IMPL_CREATE self) {
PROG noname2410;
return self->tp->prog;
}
PROG SIG_prog_PROG(SIG self) {
PROG noname2411;
TP local0;
local0 = self->tp;
return (*TP_prog_PROG[local0->header.tag+TP_prog_PROG_offset])(local0);
}
STR SIG_str_STR(SIG self) {
STR noname2412;
FSTR s_2413;
ARRAYTP noname2414;
STR noname2415;
ARRAYBOOL noname2416;
FSTR local0;
TP local1;
FSTR local2;
FSTR local3;
STR local4;
TP local5;
TP local6;
BOOL local7;
BOOL local8;
FSTR local9;
TP local10;
if ((self==((SIG) NULL))) {
return ((STR) &void_2417);
}
if ((!((self->string_47==((STR) NULL))))) {
return self->string_47;
}
local0 = FSTR_create_FSTR(((FSTR) NULL));
local1 = self->tp;
local2 = FSTR_plus_STR_FSTR(local0, (*TP_str_STR[local1->header.tag+TP_str_STR_offset])(local1));
local3 = FSTR_plus_STR_FSTR(local2, ((STR) &name_2418));
s_2413 = FSTR_plus_STR_FSTR(local3, self->name_19.str_4);
if ((!((self->args_7==((ARRAYTP) NULL))))) {
s_2413 = FSTR_plus_CHAR_FSTR(s_2413, '(');
{
struct ARRAYTP_elt_TP_frame_struct temp2419_0;
ARRAYTP_elt_TP_frame
noname2420 = &temp2419_0;
struct STR_separate_STR_STR_frame_struct temp2419_1;
STR_separate_STR_STR_frame
noname2421 = &temp2419_1;
struct ARRAYBOOL_elt_BOOL_frame_struct temp2419_2;
ARRAYBOOL_elt_BOOL_frame
noname2422 = &temp2419_2;
noname2420->state = 0;
noname2421->state = 0;
noname2422->state = 0;
while (1) {
if (noname2421->state == 0) {
noname2415 = ((STR) &name_2423);
noname2421->arg0 = noname2415;
}
if (noname2420->state == 0) {
noname2414 = self->args_7;
noname2420->arg0 = noname2414;
}
local5 = ARRAYTP_elt_TP(noname2420);
if (noname2420->state == -1) goto after_loop;
local6 = local5;
noname2421->arg1 = (*TP_str_STR[local6->header.tag+TP_str_STR_offset])(local6);
local4 = STR_separate_STR_STR(noname2421);
if (noname2421->state == -1) goto after_loop;
s_2413 = FSTR_plus_STR_FSTR(s_2413, local4);
if ((!((self->hot==((ARRAYBOOL) NULL))))) {
if (noname2422->state == 0) {
noname2416 = self->hot;
noname2422->arg0 = noname2416;
}
local8 = ARRAYBOOL_elt_BOOL(noname2422);
if (noname2422->state == -1) goto after_loop;
local7 = local8;
} else {
local7 = FALSE;
}
if (local7) {
s_2413 = FSTR_plus_CHAR_FSTR(s_2413, '!');
}
}
}
after_loop: ;
s_2413 = FSTR_plus_CHAR_FSTR(s_2413, ')');
}
if ((!((self->ret==((TP) NULL))))) {
local9 = FSTR_plus_CHAR_FSTR(s_2413, ':');
local10 = self->ret;
s_2413 = FSTR_plus_STR_FSTR(local9, (*TP_str_STR[local10->header.tag+TP_str_STR_offset])(local10));
}
self->string_47 = FSTR_str_STR(s_2413);
return FSTR_str_STR(s_2413);
}
BOOL FMAPSTRTUPSTRSTR_2424(FMAPSTRTUPSTRSTR self, STR k) {
BOOL noname2425 = ((BOOL) 0);
INT h = ((INT) 0);
STR tk;
STR tk_2426;
INT local0;
INT local1;
INT local2;
INT local3;
if ((self==((FMAPSTRTUPSTRSTR) NULL))) {
return FALSE;
}
local0 = FMAPSTRTUPSTRSTR_1082(self, k);
local1 = (self->asize);
h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
while (1) {
tk = (TUPSTRTUPSTRSTR_blob=FMAPSTRTUPSTRSTR_1084(self, h)).t1;
if (FMAPSTRTUPSTRSTR_1087(self, tk, k)) {
return TRUE;
}
else {
if (FMAPSTRTUPSTRSTR_1087(self, tk, FMAPSTRTUPSTRSTR_1055(self))) {
goto after_loop;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
local2 = (self->asize);
if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
h = 0;
while (1) {
tk_2426 = (TUPSTRTUPSTRSTR_blob=FMAPSTRTUPSTRSTR_1084(self, h)).t1;
if (FMAPSTRTUPSTRSTR_1087(self, tk_2426, k)) {
return TRUE;
}
else {
if (FMAPSTRTUPSTRSTR_1087(self, tk_2426, FMAPSTRTUPSTRSTR_1055(self))) {
goto after_loop_2428;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2428: ;
local3 = (self->asize);
if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fmap.sa:133:15\n");
exit(16);
}
}
return FALSE;
if (!FMAPSTRTUPSTRSTR_1035(self)) {
fprintf(stderr,"Failed invariant FMAP{STR,TUP{STR,STR}}::invariant:BOOL ../Library/fmap.sa:119:7\n");
exit(16);
}
}
BOOL BE_is_built_in_r(BE self, SIG s_2430) {
BOOL noname2431 = ((BOOL) 0);
FMAPSTRTUPSTRSTR local0;
local0 = self->built_in_routines;
return FMAPSTRTUPSTRSTR_2424(local0, SIG_str_STR(s_2430));
}
void SIG_do_is_builtin(SIG self) {
self->is_builtin = BE_is_built_in_r(SIG_prog_PROG(self)->back_end, self);
}
SIG SIG_const_reader(SIG self, TR_CONST_DEF tr_2432, IDENT nm_2433, TP_CONTEXT con_2434) {
SIG noname2435;
SIG r_2436;
BOOL local0;
BOOL local1;
SIG local2;
if ((!((tr_2432==((TR_CONST_DEF) NULL))))) {
local1 = (!((nm_2433.str_4==(STR)0)));
} else {
local1 = FALSE;
}
if (local1) {
local0 = (!((con_2434==((TP_CONTEXT) NULL))));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ./sig.sa:207:19\n");
exit(16);
}
local2 = ((SIG) sbi_alloc(sizeof(struct SIG_struct), SIG_tag));
r_2436 = local2;
r_2436->tp = ((TP) con_2434->same_34);
r_2436->name_19 = nm_2433;
if ((!((tr_2432->tp==((TR_TYPE_SPEC) NULL))))) {
r_2436->ret = TP_CONTEXT_tp_of(con_2434, tr_2432->tp);
}
else {
r_2436->ret = ((TP) con_2434->prog->tp_builtin->int_1);
}
SIG_do_is_builtin(r_2436);
return r_2436;
}
SIG SIG_shared_reade(SIG self, TR_SHARED_DEF tr_2437, IDENT nm_2438, TP_CONTEXT con_2439) {
SIG noname2440;
SIG r_2441;
BOOL local0;
BOOL local1;
SIG local2;
if ((!((tr_2437==((TR_SHARED_DEF) NULL))))) {
local1 = (!((nm_2438.str_4==(STR)0)));
} else {
local1 = FALSE;
}
if (local1) {
local0 = (!((con_2439==((TP_CONTEXT) NULL))));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ./sig.sa:219:20\n");
exit(16);
}
local2 = ((SIG) sbi_alloc(sizeof(struct SIG_struct), SIG_tag));
r_2441 = local2;
r_2441->tp = ((TP) con_2439->same_34);
r_2441->name_19 = nm_2438;
r_2441->ret = TP_CONTEXT_tp_of(con_2439, tr_2437->tp);
SIG_do_is_builtin(r_2441);
return r_2441;
}
SIG SIG_attr_reader_(SIG self, TR_ATTR_DEF tr_2442, IDENT nm_2443, TP_CONTEXT con_2444) {
SIG noname2445;
SIG r_2446;
BOOL local0;
BOOL local1;
SIG local2;
if ((!((tr_2442==((TR_ATTR_DEF) NULL))))) {
local1 = (!((nm_2443.str_4==(STR)0)));
} else {
local1 = FALSE;
}
if (local1) {
local0 = (!((con_2444==((TP_CONTEXT) NULL))));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ./sig.sa:236:18\n");
exit(16);
}
local2 = ((SIG) sbi_alloc(sizeof(struct SIG_struct), SIG_tag));
r_2446 = local2;
r_2446->tp = ((TP) con_2444->same_34);
r_2446->name_19 = nm_2443;
r_2446->ret = TP_CONTEXT_tp_of(con_2444, tr_2442->tp);
SIG_do_is_builtin(r_2446);
return r_2446;
}
INT TR_ARG_DEC_size_INT(TR_ARG_DEC self) {
INT noname2447 = ((INT) 0);
INT r_2448 = ((INT) 0);
TR_ARG_DEC n_2449;
if ((self==((TR_ARG_DEC) NULL))) {
return 0;
}
r_2448 = 1;
n_2449 = self->next_8;
while (1) {
if ((n_2449==((TR_ARG_DEC) NULL))) {
goto after_loop;
}
r_2448 = (c_INT_plus_INT_INT_chk(r_2448,1));
n_2449 = n_2449->next_8;
}
after_loop: ;
return r_2448;
}
SIG SIG_rout_sig_TR_(SIG self, TR_ROUT_DEF tr_2451, IDENT nm_2452, TP_CONTEXT con_2453) {
SIG noname2454;
SIG r_2455;
INT na = ((INT) 0);
TR_ARG_DEC ad;
ARRAYTP noname2456;
BOOL dohot = ((BOOL) 0);
TR_ARG_DEC tae;
TR_ARG_DEC ad_2457;
ARRAYBOOL noname2458;
BOOL local0;
BOOL local1;
SIG local2;
if ((!((tr_2451==((TR_ROUT_DEF) NULL))))) {
local1 = (!((nm_2452.str_4==(STR)0)));
} else {
local1 = FALSE;
}
if (local1) {
local0 = (!((con_2453==((TP_CONTEXT) NULL))));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ./sig.sa:186:11\n");
exit(16);
}
local2 = ((SIG) sbi_alloc(sizeof(struct SIG_struct), SIG_tag));
r_2455 = local2;
r_2455->tp = ((TP) con_2453->same_34);
r_2455->name_19 = nm_2452;
na = TR_ARG_DEC_size_INT(tr_2451->args_dec);
if ((na!=0)) {
r_2455->args_7 = ARRAYTP_create_I(((ARRAYTP) NULL), na);
ad = tr_2451->args_dec;
{
struct ARRAYTP_set_TP_frame_struct temp2459_0;
ARRAYTP_set_TP_frame
noname2460 = &temp2459_0;
noname2460->state = 0;
while (1) {
if ((ad==((TR_ARG_DEC) NULL))) {
goto after_loop;
}
if (noname2460->state == 0) {
noname2456 = r_2455->args_7;
noname2460->arg0 = noname2456;
}
noname2460->arg1 = TP_CONTEXT_tp_of(con_2453, ad->tp);
ARRAYTP_set_TP(noname2460);
if (noname2460->state == -1) goto after_loop;
0 /* No return value from iter call */;
ad = ad->next_8;
}
}
after_loop: ;
}
tae = tr_2451->args_dec;
while (1) {
if ((tae==((TR_ARG_DEC) NULL))) {
goto after_loop_2461;
}
if (tae->is_hot) {
dohot = TRUE;
}
tae = tae->next_8;
}
after_loop_2461: ;
if (dohot) {
r_2455->hot = ARRAYBOOL_create(((ARRAYBOOL) NULL), na);
ad_2457 = tr_2451->args_dec;
{
struct ARRAYBOOL_set_BOOL_frame_struct temp2464_0;
ARRAYBOOL_set_BOOL_frame
noname2465 = &temp2464_0;
noname2465->state = 0;
while (1) {
if ((ad_2457==((TR_ARG_DEC) NULL))) {
goto after_loop_2463;
}
if (noname2465->state == 0) {
noname2458 = r_2455->hot;
noname2465->arg0 = noname2458;
}
noname2465->arg1 = ad_2457->is_hot;
ARRAYBOOL_set_BOOL(noname2465);
if (noname2465->state == -1) goto after_loop_2463;
0 /* No return value from iter call */;
ad_2457 = ad_2457->next_8;
}
}
after_loop_2463: ;
}
r_2455->ret = TP_CONTEXT_tp_of(con_2453, tr_2451->ret_dec);
SIG_do_is_builtin(r_2455);
return r_2455;
}
BOOL SIG_is_base_type(SIG self, TP tp_2466) {
BOOL noname2467 = ((BOOL) 0);
TP noname2468;
TP local0;
TP local1;
TP local2;
TP local3;
TP local4;
TP local5;
TP local6;
TP local7;
noname2468 = tp_2466;
local0 = noname2468;
if ((*TP_is_eq_TP_BOOL[local0->header.tag+TP_is_eq_TP_BOOL_offset])(local0, ((TP) SIG_prog_PROG(self)->tp_builtin->bool_2))) {
return TRUE;
}
else {
local1 = noname2468;
if ((*TP_is_eq_TP_BOOL[local1->header.tag+TP_is_eq_TP_BOOL_offset])(local1, ((TP) SIG_prog_PROG(self)->tp_builtin->char_5))) {
return TRUE;
}
else {
local2 = noname2468;
if ((*TP_is_eq_TP_BOOL[local2->header.tag+TP_is_eq_TP_BOOL_offset])(local2, ((TP) SIG_prog_PROG(self)->tp_builtin->int_1))) {
return TRUE;
}
else {
local3 = noname2468;
if ((*TP_is_eq_TP_BOOL[local3->header.tag+TP_is_eq_TP_BOOL_offset])(local3, ((TP) SIG_prog_PROG(self)->tp_builtin->flt))) {
return TRUE;
}
else {
local4 = noname2468;
if ((*TP_is_eq_TP_BOOL[local4->header.tag+TP_is_eq_TP_BOOL_offset])(local4, ((TP) SIG_prog_PROG(self)->tp_builtin->fltd))) {
return TRUE;
}
else {
local5 = noname2468;
if ((*TP_is_eq_TP_BOOL[local5->header.tag+TP_is_eq_TP_BOOL_offset])(local5, ((TP) SIG_prog_PROG(self)->tp_builtin->fltx))) {
return TRUE;
}
else {
local6 = noname2468;
if ((*TP_is_eq_TP_BOOL[local6->header.tag+TP_is_eq_TP_BOOL_offset])(local6, ((TP) SIG_prog_PROG(self)->tp_builtin->fltdx))) {
return TRUE;
}
else {
local7 = noname2468;
if ((*TP_is_eq_TP_BOOL[local7->header.tag+TP_is_eq_TP_BOOL_offset])(local7, ((TP) SIG_prog_PROG(self)->tp_builtin->ext_ob))) {
return TRUE;
}
}
}
}
}
}
}
}
return FALSE;
}
BOOL SIG_is_base_aref(SIG self, TP tp_2469) {
BOOL noname2470 = ((BOOL) 0);
IMPL im;
TP_CLASS ar;
TP noname2471;
OUT local0;
INT local1;
OUT local2;
TP local3;
TP local4;
TP local5;
TP local6;
TP local7;
TP local8;
TP local9;
if (tp_2469==NULL) {
} else
switch (tp_2469->header.tag) {
case TP_CLASS_tag:
im = IMPL_TBL_impl_of(SIG_prog_PROG(self)->impl_tbl, tp_2469);
if ((im==((IMPL) NULL))) {
return FALSE;
}
ar = im->arr;
if ((ar==((TP_CLASS) NULL))) {
return FALSE;
}
if (IDENT_is_neq_IDE(ar->name_19, SIG_prog_PROG(self)->ident_builtin->AREF_ident)) {
return FALSE;
}
if ((ar->params==((ARRAYTP) NULL))) {
local0 = OUT_create_OUT(((OUT) NULL));
OUT_plus_STR(local0, ((STR) &CompilererrorSIG));
return FALSE;
}
local1 = ARRAYTP_size_INT(ar->params);
if ((local1!=1)) {
local2 = OUT_create_OUT(((OUT) NULL));
OUT_plus_STR(local2, ((STR) &CompilererrorSIG_2472));
return FALSE;
}
noname2471 = ARRAYTP_aget_INT_TP(ar->params, 0);
local3 = noname2471;
if ((*TP_is_eq_TP_BOOL[local3->header.tag+TP_is_eq_TP_BOOL_offset])(local3, ((TP) SIG_prog_PROG(self)->tp_builtin->char_5))) {
return TRUE;
}
else {
local4 = noname2471;
if ((*TP_is_eq_TP_BOOL[local4->header.tag+TP_is_eq_TP_BOOL_offset])(local4, ((TP) SIG_prog_PROG(self)->tp_builtin->int_1))) {
return TRUE;
}
else {
local5 = noname2471;
if ((*TP_is_eq_TP_BOOL[local5->header.tag+TP_is_eq_TP_BOOL_offset])(local5, ((TP) SIG_prog_PROG(self)->tp_builtin->flt))) {
return TRUE;
}
else {
local6 = noname2471;
if ((*TP_is_eq_TP_BOOL[local6->header.tag+TP_is_eq_TP_BOOL_offset])(local6, ((TP) SIG_prog_PROG(self)->tp_builtin->fltd))) {
return TRUE;
}
else {
local7 = noname2471;
if ((*TP_is_eq_TP_BOOL[local7->header.tag+TP_is_eq_TP_BOOL_offset])(local7, ((TP) SIG_prog_PROG(self)->tp_builtin->fltx))) {
return TRUE;
}
else {
local8 = noname2471;
if ((*TP_is_eq_TP_BOOL[local8->header.tag+TP_is_eq_TP_BOOL_offset])(local8, ((TP) SIG_prog_PROG(self)->tp_builtin->fltdx))) {
return TRUE;
}
else {
local9 = noname2471;
if ((*TP_is_eq_TP_BOOL[local9->header.tag+TP_is_eq_TP_BOOL_offset])(local9, ((TP) SIG_prog_PROG(self)->tp_builtin->ext_ob))) {
return TRUE;
}
else {
return FALSE;
}
}
}
}
}
}
} break;
default: ;
}
return FALSE;
}
BOOL SIG_is_legal_ext(SIG self) {
BOOL noname2473 = ((BOOL) 0);
ARRAYTP noname2474;
TP a_2475;
PROG local0;
STR local1;
STR local2;
TP local3;
PROG local4;
STR local5;
STR local6;
STR local7;
TP local8;
STR local9;
BOOL local10;
PROG local11;
STR local12;
STR local13;
STR local14;
TP local15;
STR local16;
if (!((!((self==((SIG) NULL)))))) {
fprintf(stderr,"Violation of precondition ./sig.sa:317:19\n");
exit(16);
}
if (IDENT_is_iter_BOOL(self->name_19)) {
local0 = SIG_prog_PROG(self);
local1 = ((STR) &Theitersignature);
local2 = STR_plus_STR_STR(local1, SIG_str_STR(self));
PROG_err_STR(local0, STR_plus_STR_STR(local2, ((STR) &isntallowedinane)));
return FALSE;
}
{
struct ARRAYTP_elt_TP_frame_struct temp2476_0;
ARRAYTP_elt_TP_frame
noname2477 = &temp2476_0;
noname2477->state = 0;
while (1) {
if (noname2477->state == 0) {
noname2474 = self->args_7;
noname2477->arg0 = noname2474;
}
local3 = ARRAYTP_elt_TP(noname2477);
if (noname2477->state == -1) goto after_loop;
a_2475 = local3;
if (SIG_is_base_type(self, a_2475)) {
}
else {
if (SIG_is_base_aref(self, a_2475)) {
}
else {
local4 = SIG_prog_PROG(self);
local5 = ((STR) &Thesignature);
local6 = STR_plus_STR_STR(local5, SIG_str_STR(self));
local7 = STR_plus_STR_STR(local6, ((STR) &isnotlegalforaro));
local8 = a_2475;
local9 = STR_plus_STR_STR(local7, (*TP_str_STR[local8->header.tag+TP_str_STR_offset])(local8));
PROG_err_STR(local4, STR_plus_STR_STR(local9, ((STR) &isnotoftherighttype)));
return FALSE;
}
}
}
}
after_loop: ;
if ((!((self->ret==((TP) NULL))))) {
local10 = (!(SIG_is_base_type(self, self->ret)));
} else {
local10 = FALSE;
}
if (local10) {
local11 = SIG_prog_PROG(self);
local12 = ((STR) &Thesignature_2478);
local13 = STR_plus_STR_STR(local12, SIG_str_STR(self));
local14 = STR_plus_STR_STR(local13, ((STR) &isnotlegalforaro_2479));
local15 = self->ret;
local16 = STR_plus_STR_STR(local14, (*TP_str_STR[local15->header.tag+TP_str_STR_offset])(local15));
PROG_err_STR(local11, STR_plus_STR_STR(local16, ((STR) &isnotoftherightt_2480)));
return FALSE;
}
return TRUE;
}
ELT ELT_create_SIG_S(ELT self, SIG sig_2481, SIG srcsig_2482, TR_CLASS_ELT tr_2483, TP_CONTEXT con_2484, BOOL is_private_2485) {
ELT noname2486;
ELT r_2487;
BOOL local0;
BOOL local1;
BOOL local2;
ELT local3;
if ((!((sig_2481==((SIG) NULL))))) {
local2 = (!((srcsig_2482==((SIG) NULL))));
} else {
local2 = FALSE;
}
if (local2) {
local1 = (!((tr_2483==((TR_CLASS_ELT) NULL))));
} else {
local1 = FALSE;
}
if (local1) {
local0 = (!((con_2484==((TP_CONTEXT) NULL))));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ./elt.sa:34:9\n");
exit(16);
}
local3 = ((ELT) sbi_alloc(sizeof(struct ELT_struct), ELT_tag));
r_2487 = local3;
r_2487->sig_6 = sig_2481;
r_2487->srcsig = srcsig_2482;
r_2487->tr = tr_2483;
r_2487->con = con_2484;
r_2487->is_private = is_private_2485;
return r_2487;
}
BOOL SIG_is_legal_ext_2488(SIG self) {
BOOL noname2489 = ((BOOL) 0);
ARRAYTP noname2490;
TP a_2491;
PROG local0;
STR local1;
STR local2;
TP local3;
PROG local4;
STR local5;
STR local6;
STR local7;
TP local8;
STR local9;
BOOL local10;
PROG local11;
STR local12;
STR local13;
STR local14;
TP local15;
STR local16;
if (!((!((self==((SIG) NULL)))))) {
fprintf(stderr,"Violation of precondition ./sig.sa:340:19\n");
exit(16);
}
if (IDENT_is_iter_BOOL(self->name_19)) {
local0 = SIG_prog_PROG(self);
local1 = ((STR) &Theitersignature_2492);
local2 = STR_plus_STR_STR(local1, SIG_str_STR(self));
PROG_err_STR(local0, STR_plus_STR_STR(local2, ((STR) &isntallowedinane_2493)));
return FALSE;
}
{
struct ARRAYTP_elt_TP_frame_struct temp2494_0;
ARRAYTP_elt_TP_frame
noname2495 = &temp2494_0;
noname2495->state = 0;
while (1) {
if (noname2495->state == 0) {
noname2490 = self->args_7;
noname2495->arg0 = noname2490;
}
local3 = ARRAYTP_elt_TP(noname2495);
if (noname2495->state == -1) goto after_loop;
a_2491 = local3;
if (SIG_is_base_type(self, a_2491)) {
}
else {
local4 = SIG_prog_PROG(self);
local5 = ((STR) &Thesignature_2496);
local6 = STR_plus_STR_STR(local5, SIG_str_STR(self));
local7 = STR_plus_STR_STR(local6, ((STR) &isnotlegalforaro_2497));
local8 = a_2491;
local9 = STR_plus_STR_STR(local7, (*TP_str_STR[local8->header.tag+TP_str_STR_offset])(local8));
PROG_err_STR(local4, STR_plus_STR_STR(local9, ((STR) &isnotoftherightt_2498)));
return FALSE;
}
}
}
after_loop: ;
if ((!((self->ret==((TP) NULL))))) {
local10 = (!(SIG_is_base_type(self, self->ret)));
} else {
local10 = FALSE;
}
if (local10) {
local11 = SIG_prog_PROG(self);
local12 = ((STR) &Thesignature_2499);
local13 = STR_plus_STR_STR(local12, SIG_str_STR(self));
local14 = STR_plus_STR_STR(local13, ((STR) &isnotlegalforaro_2500));
local15 = self->ret;
local16 = STR_plus_STR_STR(local14, (*TP_str_STR[local15->header.tag+TP_str_STR_offset])(local15));
PROG_err_STR(local11, STR_plus_STR_STR(local16, ((STR) &isnotoftherightt_2501)));
return FALSE;
}
return TRUE;
}
ELT IMPL_CREATE_read(IMPL_CREATE self, TR_CLASS_ELT t_2502) {
ELT noname2503;
SIG sig_2504 = ((SIG) NULL);
ELT r_2505 = ((ELT) NULL);
PROG local0;
PROG local1;
PROG local2;
PROG local3;
PROG local4;
PROG local5;
PROG local6;
PROG local7;
ELT local8;
TP_CONTEXT local9;
TR_CLASS_ELT local10;
if (!((!((t_2502==((TR_CLASS_ELT) NULL)))))) {
fprintf(stderr,"Violation of precondition ./impl.sa:492:17\n");
exit(16);
}
if (t_2502==NULL) {
return ((ELT) NULL);
} else
switch (t_2502->header.tag) {
case TR_CONST_DEF_tag:
if (self->is_external) {
local0 = IMPL_CREATE_prog(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) t_2502));
local1 = IMPL_CREATE_prog(self);
PROG_err_STR(local1, ((STR) &Externalclassesm));
return ((ELT) NULL);
}
sig_2504 = SIG_const_reader(((SIG) NULL), ((TR_CONST_DEF) t_2502), ((TR_CONST_DEF) t_2502)->name_19, self->con); break;
case TR_SHARED_DEF_tag:
if (self->is_external) {
local2 = IMPL_CREATE_prog(self);
PROG_err_loc_PRO(local2, ((PROG_ERR) t_2502));
local3 = IMPL_CREATE_prog(self);
PROG_err_STR(local3, ((STR) &Externalclassesm_2506));
return ((ELT) NULL);
}
sig_2504 = SIG_shared_reade(((SIG) NULL), ((TR_SHARED_DEF) t_2502), ((TR_SHARED_DEF) t_2502)->name_19, self->con); break;
case TR_ATTR_DEF_tag:
if (self->is_external) {
local4 = IMPL_CREATE_prog(self);
PROG_err_loc_PRO(local4, ((PROG_ERR) t_2502));
local5 = IMPL_CREATE_prog(self);
PROG_err_STR(local5, ((STR) &Externalclassesm_2507));
return ((ELT) NULL);
}
sig_2504 = SIG_attr_reader_(((SIG) NULL), ((TR_ATTR_DEF) t_2502), ((TR_ATTR_DEF) t_2502)->name_19, self->con); break;
case TR_ROUT_DEF_tag:
sig_2504 = SIG_rout_sig_TR_(((SIG) NULL), ((TR_ROUT_DEF) t_2502), ((TR_ROUT_DEF) t_2502)->name_19, self->con);
if (((TR_ROUT_DEF) t_2502)->is_abstract) {
if (self->is_external) {
if ((!(SIG_is_legal_ext(sig_2504)))) {
return ((ELT) NULL);
}
r_2505 = ELT_create_SIG_S(((ELT) NULL), sig_2504, sig_2504, t_2502, self->con, ((TR_ROUT_DEF) t_2502)->is_private);
r_2505->is_external = TRUE;
return r_2505;
}
else {
local6 = IMPL_CREATE_prog(self);
PROG_err_loc_PRO(local6, ((PROG_ERR) t_2502));
local7 = IMPL_CREATE_prog(self);
PROG_err_STR(local7, ((STR) &Onlyexternalclas));
return ((ELT) NULL);
}
}
else {
if (self->is_external) {
if ((!(SIG_is_legal_ext_2488(sig_2504)))) {
return ((ELT) NULL);
}
r_2505 = ELT_create_SIG_S(((ELT) NULL), sig_2504, sig_2504, t_2502, self->con, ((TR_ROUT_DEF) t_2502)->is_private);
r_2505->is_external = TRUE;
return r_2505;
}
} break;
default: ;
return ((ELT) NULL);
}
if ((sig_2504==((SIG) NULL))) {
return ((ELT) NULL);
}
local8 = ((ELT) NULL);
local9 = self->con;
local10 = t_2502;
r_2505 = ELT_create_SIG_S(local8, sig_2504, sig_2504, t_2502, local9, (*TR_CLASS_ELT_is_[local10->header.tag+TR_CLASS_ELT_is__offset])(local10));
return r_2505;
}
IDENT ELT_name_IDENT(ELT self) {
IDENT noname2508 = IDENT_zero;
if (!((!((self==((ELT) NULL)))))) {
fprintf(stderr,"Violation of precondition ./elt.sa:48:7\n");
exit(16);
}
return self->sig_6->name_19;
}
ELT ELT_TBL_elt_same(ELT_TBL self, ELT e_2509) {
ELT noname2510;
ELT_TBL noname2511;
IDENT noname2512 = IDENT_zero;
ELT local0;
if (!((!((e_2509==((ELT) NULL)))))) {
fprintf(stderr,"Violation of precondition ./elt.sa:187:19\n");
exit(16);
}
{
struct ELT_TBL_get_quer_frame_struct temp2513_0;
ELT_TBL_get_quer_frame
noname2514 = &temp2513_0;
noname2514->state = 0;
while (1) {
if (noname2514->state == 0) {
noname2511 = self;
noname2512 = ELT_name_IDENT(e_2509);
noname2514->arg0 = noname2511;
noname2514->arg1 = noname2512;
}
local0 = ELT_TBL_get_quer(noname2514);
if (noname2514->state == -1) goto after_loop;
return local0;
}
}
after_loop: ;
return ((ELT) NULL);
if (!ELT_TBL_invarian(self)) {
fprintf(stderr,"Failed invariant ELT_TBL::invariant:BOOL ./elt.sa:187:19\n");
exit(16);
}
}
void IMPL_CREATE_ext_(IMPL_CREATE self, ELT er, ELT f_2515) {
PROG local0;
PROG local1;
STR local2;
STR local3;
STR local4;
STR local5;
local0 = IMPL_CREATE_prog(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) er->tr));
local1 = IMPL_CREATE_prog(self);
local2 = ((STR) &Thesignature_2516);
local3 = STR_plus_STR_STR(local2, SIG_str_STR(er->sig_6));
local4 = STR_plus_STR_STR(local3, ((STR) &hasthesamenameas));
local5 = STR_plus_STR_STR(local4, SIG_str_STR(f_2515->sig_6));
PROG_err_STR(local1, STR_plus_STR_STR(local5, ((STR) &inanexternalclass)));
}
ELT ELT_TBL_elt_nil_ELT(ELT_TBL self) {
ELT noname2517;
ELT t_2518 = ((ELT) NULL);
return ((ELT) NULL);
if (!ELT_TBL_invarian(self)) {
fprintf(stderr,"Failed invariant ELT_TBL::invariant:BOOL ../Library/fqset.sa:69:10\n");
exit(16);
}
}
BOOL ELT_TBL_elt_eq_E(ELT_TBL self, ELT e1_2519, ELT e2_2520) {
BOOL noname2521 = ((BOOL) 0);
return c_SYS_ob_eq_OB_OB_BOOL(((OB) e1_2519),((OB) e2_2520));
if (!ELT_TBL_invarian(self)) {
fprintf(stderr,"Failed invariant ELT_TBL::invariant:BOOL ../Library/fqset.sa:62:9\n");
exit(16);
}
}
ELT_TBL ELT_TBL_allocate(ELT_TBL self, INT n_2522) {
ELT_TBL noname2523;
ELT_TBL r_2524;
ELT_TBL noname2525;
ELT_TBL local0;
local0 = ((ELT_TBL) sbi_arr_alloc(sizeof(struct ELT_TBL_struct), ELT_TBL_tag, sizeof(ELT) , n_2522));
local0->asize = n_2522;
r_2524 = local0;
if ((!((ELT_TBL_elt_nil_ELT(self)==((ELT) NULL))))) {
{
struct ELT_TBL_aset_ELT_frame_struct temp2526_0;
ELT_TBL_aset_ELT_frame
noname2527 = &temp2526_0;
noname2527->state = 0;
while (1) {
if (noname2527->state == 0) {
noname2525 = r_2524;
noname2527->arg0 = noname2525;
}
noname2527->arg1 = ELT_TBL_elt_nil_ELT(self);
ELT_TBL_aset_ELT(noname2527);
if (noname2527->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
}
return r_2524;
}
INT ELT_TBL_asize_INT(ELT_TBL self) {
INT noname2528 = ((INT) 0);
return self->asize;
fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
exit(16);
}
ELT_TBL ELT_TBL_double_s(ELT_TBL self) {
ELT_TBL noname2529;
ELT_TBL r_2530;
ELT_TBL noname2531;
INT local0;
INT local1;
INT local2;
ELT local3;
if (!((!((self==((ELT_TBL) NULL)))))) {
fprintf(stderr,"Violation of precondition ../Library/fqset.sa:190:22\n");
exit(16);
}
local0 = (self->asize);
local1 = (c_INT_minus_INT_INT_chk(local0,1));
local2 = (c_INT_times_INT_INT_chk(local1,2));
r_2530 = ELT_TBL_allocate(self, (c_INT_plus_INT_INT_chk(local2,1)));
{
struct ELT_TBL_elt_ELT_frame_struct temp2532_0;
ELT_TBL_elt_ELT_frame
noname2533 = &temp2532_0;
noname2533->state = 0;
while (1) {
if (noname2533->state == 0) {
noname2531 = self;
noname2533->arg0 = noname2531;
}
local3 = ELT_TBL_elt_ELT(noname2533);
if (noname2533->state == -1) goto after_loop;
r_2530 = ELT_TBL_insert_E(r_2530, local3);
}
}
after_loop: ;
return r_2530;
}
INT ELT_TBL_elt_hash(ELT_TBL self, ELT e_2534) {
INT noname2535 = ((INT) 0);
return IDENT_hash_INT(e_2534->sig_6->name_19);
if (!ELT_TBL_invarian(self)) {
fprintf(stderr,"Failed invariant ELT_TBL::invariant:BOOL ./elt.sa:174:11\n");
exit(16);
}
}
ELT ELT_TBL_aget_INT_ELT(ELT_TBL self, INT ind_2536) {
ELT noname2537;
BOOL local0;
INT local1;
INT local2;
if ((!((self==((ELT_TBL) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2536, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
exit(16);
}
if (ind_2536<0||ind_2536>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
exit(16);
}
return self->arr_part[ind_2536];
}
void ELT_TBL_aset_INT_ELT(ELT_TBL self, INT ind_2538, ELT val_2539) {
BOOL local0;
INT local1;
INT local2;
if ((!((self==((ELT_TBL) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2538, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
exit(16);
}
if (ind_2538<0||ind_2538>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
exit(16);
}
self->arr_part[ind_2538] = val_2539;
}
ELT_TBL ELT_TBL_insert_E(ELT_TBL self, ELT e_2540) {
ELT_TBL noname2541;
ELT_TBL r_2542;
INT asz_2543 = ((INT) 0);
INT h = ((INT) 0);
ELT te;
ELT te_2544;
INT local0;
INT local1;
INT local2;
r_2542 = self;
if (ELT_TBL_elt_eq_E(self, e_2540, ELT_TBL_elt_nil_ELT(self))) {
return r_2542;
}
if ((r_2542==((ELT_TBL) NULL))) {
r_2542 = ELT_TBL_allocate(self, 5);
}
else {
local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
local1 = (c_INT_times_INT_INT_chk(local0,2));
if ((local1>(self->asize))) {
r_2542 = ELT_TBL_double_s(r_2542);
}
}
asz_2543 = (r_2542->asize);
local2 = ELT_TBL_elt_hash(r_2542, e_2540);
h = (local2&(c_INT_minus_INT_INT_chk(asz_2543,2)));
while (1) {
te = ELT_TBL_aget_INT_ELT(r_2542, h);
if (ELT_TBL_elt_eq_E(self, te, ELT_TBL_elt_nil_ELT(self))) {
goto after_loop;
}
else {
if (ELT_TBL_elt_eq_E(self, te, e_2540)) {
ELT_TBL_aset_INT_ELT(r_2542, h, e_2540);
return r_2542;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
if ((h==(c_INT_minus_INT_INT_chk(asz_2543,1)))) {
h = 0;
while (1) {
te_2544 = ELT_TBL_aget_INT_ELT(r_2542, h);
if (ELT_TBL_elt_eq_E(self, te_2544, ELT_TBL_elt_nil_ELT(self))) {
goto after_loop_2546;
}
else {
if (ELT_TBL_elt_eq_E(self, te_2544, e_2540)) {
ELT_TBL_aset_INT_ELT(r_2542, h, e_2540);
return r_2542;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2546: ;
if (!((h!=(c_INT_minus_INT_INT_chk(asz_2543,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fqset.sa:218:15\n");
exit(16);
}
}
ELT_TBL_aset_INT_ELT(r_2542, h, e_2540);
r_2542->hsize = (c_INT_plus_INT_INT_chk(r_2542->hsize,1));
return r_2542;
if (!ELT_TBL_invarian(self)) {
fprintf(stderr,"Failed invariant ELT_TBL::invariant:BOOL ../Library/fqset.sa:198:9\n");
exit(16);
}
}
BOOL SIG_has_ret_BOOL(SIG self) {
BOOL noname2548 = ((BOOL) 0);
return (!((self->ret==((TP) NULL))));
}
BOOL SIG_conflicts_wi(SIG self, SIG s_2549) {
BOOL noname2550 = ((BOOL) 0);
ARRAYTP noname2551;
TP t_2552;
ARRAYTP noname2553;
TP st;
BOOL local0;
BOOL local1;
BOOL local2;
INT local3;
BOOL local4;
TP local5;
TP local6;
BOOL local7;
BOOL local8;
BOOL local9;
BOOL local10;
TP local11;
TP local12;
TP local13;
TP local14;
TP local15;
if ((!((self==((SIG) NULL))))) {
local0 = (!((s_2549==((SIG) NULL))));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ./sig.sa:107:17\n");
exit(16);
}
if (IDENT_is_neq_IDE(self->name_19, s_2549->name_19)) {
local2 = TRUE;
} else {
local3 = ARRAYTP_size_INT(self->args_7);
local2 = (local3!=ARRAYTP_size_INT(s_2549->args_7));
}
if (local2) {
local1 = TRUE;
} else {
local4 = SIG_has_ret_BOOL(self);
local1 = ((local4)!=(SIG_has_ret_BOOL(s_2549)));
}
if (local1) {
return FALSE;
}
{
struct ARRAYTP_elt_TP_frame_struct temp2554_0;
ARRAYTP_elt_TP_frame
noname2555 = &temp2554_0;
struct ARRAYTP_elt_TP_frame_struct temp2554_1;
ARRAYTP_elt_TP_frame
noname2556 = &temp2554_1;
noname2555->state = 0;
noname2556->state = 0;
while (1) {
if (noname2555->state == 0) {
noname2551 = self->args_7;
noname2555->arg0 = noname2551;
}
local5 = ARRAYTP_elt_TP(noname2555);
if (noname2555->state == -1) goto after_loop;
t_2552 = local5;
if (noname2556->state == 0) {
noname2553 = s_2549->args_7;
noname2556->arg0 = noname2553;
}
local6 = ARRAYTP_elt_TP(noname2556);
if (noname2556->state == -1) goto after_loop;
st = local6;
local11 = t_2552;
if ((*TP_is_neq_TP_BOOL[local11->header.tag+TP_is_neq_TP_BOOL_offset])(local11, st)) {
local12 = t_2552;
local10 = (!((*TP_is_abstract_BOOL[local12->header.tag+TP_is_abstract_BOOL_offset])(local12)));
} else {
local10 = FALSE;
}
if (local10) {
local13 = t_2552;
local9 = (!((*TP_is_bound_BOOL[local13->header.tag+TP_is_bound_BOOL_offset])(local13)));
} else {
local9 = FALSE;
}
if (local9) {
local14 = st;
local8 = (!((*TP_is_abstract_BOOL[local14->header.tag+TP_is_abstract_BOOL_offset])(local14)));
} else {
local8 = FALSE;
}
if (local8) {
local15 = st;
local7 = (!((*TP_is_bound_BOOL[local15->header.tag+TP_is_bound_BOOL_offset])(local15)));
} else {
local7 = FALSE;
}
if (local7) {
return FALSE;
}
}
}
after_loop: ;
return TRUE;
}
BOOL ELT_conflicts_wi(ELT self, ELT e_2557) {
BOOL noname2558 = ((BOOL) 0);
return SIG_conflicts_wi(self->sig_6, e_2557->sig_6);
}
ELT ELT_TBL_elt_conf(ELT_TBL self, ELT e_2559) {
ELT noname2560;
ELT_TBL noname2561;
IDENT noname2562 = IDENT_zero;
ELT r_2563;
ELT local0;
if (!((!((e_2559==((ELT) NULL)))))) {
fprintf(stderr,"Violation of precondition ./elt.sa:179:23\n");
exit(16);
}
{
struct ELT_TBL_get_quer_frame_struct temp2564_0;
ELT_TBL_get_quer_frame
noname2565 = &temp2564_0;
noname2565->state = 0;
while (1) {
if (noname2565->state == 0) {
noname2561 = self;
noname2562 = ELT_name_IDENT(e_2559);
noname2565->arg0 = noname2561;
noname2565->arg1 = noname2562;
}
local0 = ELT_TBL_get_quer(noname2565);
if (noname2565->state == -1) goto after_loop;
r_2563 = local0;
if (ELT_conflicts_wi(r_2563, e_2559)) {
return r_2563;
}
}
}
after_loop: ;
return ((ELT) NULL);
if (!ELT_TBL_invarian(self)) {
fprintf(stderr,"Failed invariant ELT_TBL::invariant:BOOL ./elt.sa:179:23\n");
exit(16);
}
}
void IMPL_CREATE_read_2566(IMPL_CREATE self, ELT er, ELT f_2567) {
PROG local0;
PROG local1;
STR local2;
STR local3;
STR local4;
STR local5;
local0 = IMPL_CREATE_prog(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) er->tr));
local1 = IMPL_CREATE_prog(self);
local2 = ((STR) &Thesignature_2568);
local3 = STR_plus_STR_STR(local2, SIG_str_STR(er->sig_6));
local4 = STR_plus_STR_STR(local3, ((STR) &ofthereaderrouti));
local5 = STR_plus_STR_STR(local4, SIG_str_STR(f_2567->sig_6));
PROG_err_STR(local1, STR_plus_CHAR_STR(local5, '.'));
}
SIG SIG_shared_write(SIG self, TR_SHARED_DEF tr_2569, IDENT nm_2570, TP_CONTEXT con_2571) {
SIG noname2572;
SIG r_2573;
BOOL local0;
BOOL local1;
SIG local2;
ARRAYTP local3;
INT local4;
if ((!((tr_2569==((TR_SHARED_DEF) NULL))))) {
local1 = (!((nm_2570.str_4==(STR)0)));
} else {
local1 = FALSE;
}
if (local1) {
local0 = (!((con_2571==((TP_CONTEXT) NULL))));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ./sig.sa:227:20\n");
exit(16);
}
local2 = ((SIG) sbi_alloc(sizeof(struct SIG_struct), SIG_tag));
r_2573 = local2;
r_2573->tp = ((TP) con_2571->same_34);
r_2573->name_19 = nm_2570;
r_2573->args_7 = ARRAYTP_create_I(((ARRAYTP) NULL), 1);
local3 = r_2573->args_7;
local4 = 0;
ARRAYTP_aset_INT_TP(local3, local4, TP_CONTEXT_tp_of(con_2571, tr_2569->tp));
SIG_do_is_builtin(r_2573);
return r_2573;
}
SIG SIG_attr_writer_(SIG self, TR_ATTR_DEF tr_2574, IDENT nm_2575, TP_CONTEXT con_2576) {
SIG noname2577;
SIG r_2578;
BOOL local0;
BOOL local1;
SIG local2;
ARRAYTP local3;
INT local4;
TP local5;
INT local6;
if ((!((tr_2574==((TR_ATTR_DEF) NULL))))) {
local1 = (!((nm_2575.str_4==(STR)0)));
} else {
local1 = FALSE;
}
if (local1) {
local0 = (!((con_2576==((TP_CONTEXT) NULL))));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ./sig.sa:244:18\n");
exit(16);
}
local2 = ((SIG) sbi_alloc(sizeof(struct SIG_struct), SIG_tag));
r_2578 = local2;
r_2578->tp = ((TP) con_2576->same_34);
r_2578->name_19 = nm_2575;
r_2578->args_7 = ARRAYTP_create_I(((ARRAYTP) NULL), 1);
local3 = r_2578->args_7;
local4 = 0;
ARRAYTP_aset_INT_TP(local3, local4, TP_CONTEXT_tp_of(con_2576, tr_2574->tp));
local5 = r_2578->tp;
local6 = (*TP_kind_INT[local5->header.tag+TP_kind_INT_offset])(local5);
if ((local6==shared_TP_KIND_v)) {
r_2578->ret = r_2578->tp;
}
SIG_do_is_builtin(r_2578);
return r_2578;
}
ELT IMPL_CREATE_writ(IMPL_CREATE self, TR_CLASS_ELT t_2579) {
ELT noname2580;
SIG sig_2581 = ((SIG) NULL);
BOOL pri_2582 = ((BOOL) 0);
BOOL local0;
BOOL local1;
if (self->is_external) {
return ((ELT) NULL);
}
if (t_2579==NULL) {
return ((ELT) NULL);
} else
switch (t_2579->header.tag) {
case TR_SHARED_DEF_tag:
sig_2581 = SIG_shared_write(((SIG) NULL), ((TR_SHARED_DEF) t_2579), ((TR_SHARED_DEF) t_2579)->name_19, self->con);
if (((TR_SHARED_DEF) t_2579)->is_private) {
local0 = TRUE;
} else {
local0 = ((TR_SHARED_DEF) t_2579)->is_readonly;
}
pri_2582 = local0; break;
case TR_ATTR_DEF_tag:
sig_2581 = SIG_attr_writer_(((SIG) NULL), ((TR_ATTR_DEF) t_2579), ((TR_ATTR_DEF) t_2579)->name_19, self->con);
if (((TR_ATTR_DEF) t_2579)->is_private) {
local1 = TRUE;
} else {
local1 = ((TR_ATTR_DEF) t_2579)->is_readonly;
}
pri_2582 = local1; break;
default: ;
return ((ELT) NULL);
}
if ((sig_2581==((SIG) NULL))) {
return ((ELT) NULL);
}
return ELT_create_SIG_S(((ELT) NULL), sig_2581, sig_2581, t_2579, self->con, pri_2582);
}
void IMPL_CREATE_writ_2583(IMPL_CREATE self, ELT ew, ELT f_2584) {
PROG local0;
PROG local1;
STR local2;
STR local3;
STR local4;
STR local5;
local0 = IMPL_CREATE_prog(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) ew->tr));
local1 = IMPL_CREATE_prog(self);
local2 = ((STR) &Thesignature_2585);
local3 = STR_plus_STR_STR(local2, SIG_str_STR(ew->sig_6));
local4 = STR_plus_STR_STR(local3, ((STR) &ofthewriterrouti));
local5 = STR_plus_STR_STR(local4, SIG_str_STR(f_2584->sig_6));
PROG_err_STR(local1, STR_plus_CHAR_STR(local5, '.'));
}
ELT_TBL IMPL_CREATE_expl(IMPL_CREATE self) {
ELT_TBL noname2586;
TR_CLASS_ELT t_2587;
ELT_TBL r_2588 = ((ELT_TBL) NULL);
ELT er;
ELT f_2589;
ELT f_2590;
ELT ew;
ELT f_2591;
TR_CLASS_ELT local0;
t_2587 = self->tr->body;
while (1) {
if ((!((t_2587==((TR_CLASS_ELT) NULL))))) {
}
else {
goto after_loop;
}
er = IMPL_CREATE_read(self, t_2587);
if ((!((er==((ELT) NULL))))) {
if (self->is_external) {
f_2589 = ELT_TBL_elt_same(r_2588, er);
if ((!((f_2589==((ELT) NULL))))) {
IMPL_CREATE_ext_(self, er, f_2589);
}
else {
r_2588 = ELT_TBL_insert_E(r_2588, er);
}
}
else {
f_2590 = ELT_TBL_elt_conf(r_2588, er);
if ((!((f_2590==((ELT) NULL))))) {
IMPL_CREATE_read_2566(self, er, f_2590);
}
else {
r_2588 = ELT_TBL_insert_E(r_2588, er);
}
}
}
ew = IMPL_CREATE_writ(self, t_2587);
if ((!((ew==((ELT) NULL))))) {
f_2591 = ELT_TBL_elt_conf(r_2588, ew);
if ((!((f_2591==((ELT) NULL))))) {
IMPL_CREATE_writ_2583(self, ew, f_2591);
}
else {
r_2588 = ELT_TBL_insert_E(r_2588, ew);
}
}
local0 = t_2587;
t_2587 = (*TR_CLASS_ELT_nex[local0->header.tag+TR_CLASS_ELT_nex_offset])(local0);
}
after_loop: ;
return r_2588;
}
PROG IMPL_INCLUDE_pro(IMPL_INCLUDE self) {
PROG noname2593;
return self->tp->prog;
}
BOOL ARRAYIDENT_elt_e(ARRAYIDENT self, IDENT e1_2594, IDENT e2_2595) {
BOOL noname2596 = ((BOOL) 0);
OB local0;
OB local1;
return IDENT_is_eq_IDEN(e1_2594, e2_2595);
local0 = (OB)((IDENT_boxed) sbi_alloc(sizeof(struct IDENT_boxed_struct), IDENT_tag));
((IDENT_boxed) local0)->value_part = e1_2594;
local1 = (OB)((IDENT_boxed) sbi_alloc(sizeof(struct IDENT_boxed_struct), IDENT_tag));
((IDENT_boxed) local1)->value_part = e2_2595;
return c_SYS_ob_eq_OB_OB_BOOL(local0,local1);
}
BOOL ARRAYIDENT_conta(ARRAYIDENT self, IDENT e_2597) {
BOOL noname2598 = ((BOOL) 0);
ARRAYIDENT noname2599;
IDENT local0;
IDENT local1;
if ((self==((ARRAYIDENT) NULL))) {
return FALSE;
}
{
struct ARRAYIDENT_elt_IDENT_frame_struct temp2600_0;
ARRAYIDENT_elt_IDENT_frame
noname2601 = &temp2600_0;
noname2601->state = 0;
while (1) {
if (noname2601->state == 0) {
noname2599 = self;
noname2601->arg0 = noname2599;
}
local0 = ARRAYIDENT_elt_IDENT(noname2601);
if (noname2601->state == -1) goto after_loop;
local1 = local0;
if (ARRAYIDENT_elt_e(self, local1, e_2597)) {
return TRUE;
}
}
}
after_loop: ;
return FALSE;
}
BOOL TP_CONTEXT_type_(TP_CONTEXT self, TR_TYPE_SPEC t_2602) {
BOOL noname2603 = ((BOOL) 0);
BOOL local0;
if (!((!((t_2602==((TR_TYPE_SPEC) NULL)))))) {
fprintf(stderr,"Violation of precondition ./tp.sa:455:21\n");
exit(16);
}
if ((t_2602->kind!=shared_TR_TYPE_S_1643)) {
local0 = TRUE;
} else {
local0 = (!((t_2602->params==((TR_TYPE_SPEC) NULL))));
}
if (local0) {
return FALSE;
}
return ARRAYIDENT_conta(self->pnames, t_2602->name_19);
}
void IMPL_INCLUDE_par(IMPL_INCLUDE self, TR_CLASS_ELT t_2604) {
PROG local0;
PROG local1;
local0 = IMPL_INCLUDE_pro(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) t_2604));
local1 = IMPL_INCLUDE_pro(self);
PROG_err_STR(local1, ((STR) &Typespecifiersin));
}
void IMPL_INCLUDE_inc(IMPL_INCLUDE self, TR_CLASS_ELT t_2605) {
PROG local0;
PROG local1;
local0 = IMPL_INCLUDE_pro(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) t_2605));
local1 = IMPL_INCLUDE_pro(self);
PROG_err_STR(local1, ((STR) &Classesmaynotinc));
}
void IMPL_INCLUDE_inc_2606(IMPL_INCLUDE self, TR_CLASS_ELT t_2607) {
PROG local0;
PROG local1;
local0 = IMPL_INCLUDE_pro(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) t_2607));
local1 = IMPL_INCLUDE_pro(self);
PROG_err_STR(local1, ((STR) &Classesmaynotinc_2608));
}
TP_CLASS IMPL_INCLUDE_inc_2609(IMPL_INCLUDE self) {
TP_CLASS noname2610;
TP_CONTEXT con_2611;
TP r_2612;
PROG local0;
PROG local1;
PROG local2;
PROG local3;
INT local4;
local0 = IMPL_INCLUDE_pro(self);
con_2611 = PROG_tp_context_(local0, self->tp);
if (TP_CONTEXT_type_(con_2611, self->tr->tp)) {
IMPL_INCLUDE_par(self, ((TR_CLASS_ELT) self->tr));
return ((TP_CLASS) NULL);
}
r_2612 = TP_CONTEXT_tp_of(con_2611, self->tr->tp);
if (r_2612==NULL) {
} else
switch (r_2612->header.tag) {
case TP_CLASS_tag:
if (TP_CLASS_is_abst(((TP_CLASS) r_2612))) {
local1 = IMPL_INCLUDE_pro(self);
PROG_err_loc_PRO(local1, ((PROG_ERR) self->tr));
local2 = IMPL_INCLUDE_pro(self);
PROG_err_STR(local2, ((STR) &Classesmaynotinc_2613));
return ((TP_CLASS) NULL);
}
local3 = IMPL_INCLUDE_pro(self);
local4 = PROG_tp_kind_TP_INT(local3, r_2612);
if ((local4==shared_TP_KIND_e)) {
IMPL_INCLUDE_inc(self, ((TR_CLASS_ELT) self->tr));
return ((TP_CLASS) NULL);
}
return ((TP_CLASS) r_2612); break;
case TP_ROUT_tag:
IMPL_INCLUDE_inc_2606(self, ((TR_CLASS_ELT) self->tr));
return ((TP_CLASS) NULL); break;
case TP_ITER_tag:
IMPL_INCLUDE_inc_2606(self, ((TR_CLASS_ELT) self->tr));
return ((TP_CLASS) NULL); break;
default: ;
fprintf(stderr,"No applicable type in typecase ./impl.sa:263:14\n");
exit(16);
}
return ((TP_CLASS) NULL);
}
IMPL IMPL_INCLUDE_inc_2614(IMPL_INCLUDE self) {
IMPL noname2615;
PROG local0;
local0 = IMPL_INCLUDE_pro(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) self->tr));
return IMPL_TBL_impl_of(IMPL_INCLUDE_pro(self)->impl_tbl, ((TP) self->itp));
}
BOOL IMPL_INCLUDE_tes(IMPL_INCLUDE self) {
BOOL noname2616 = ((BOOL) 0);
INT k = ((INT) 0);
PROG local0;
BOOL local1;
PROG local2;
PROG local3;
STR local4;
STR local5;
STR local6;
STR local7;
BOOL local8;
PROG local9;
PROG local10;
STR local11;
STR local12;
STR local13;
STR local14;
local0 = IMPL_INCLUDE_pro(self);
k = PROG_tp_kind_TP_INT(local0, ((TP) self->tp));
if ((self->impl->arr==((TP_CLASS) NULL))) {
return FALSE;
}
if ((k==shared_TP_KIND_v)) {
local1 = IDENT_is_eq_IDEN(self->impl->arr->name_19, IMPL_INCLUDE_pro(self)->ident_builtin->AREF_ident);
} else {
local1 = FALSE;
}
if (local1) {
local2 = IMPL_INCLUDE_pro(self);
PROG_err_loc_PRO(local2, ((PROG_ERR) self->tr));
local3 = IMPL_INCLUDE_pro(self);
local4 = ((STR) &Thevaluetype);
local5 = STR_plus_STR_STR(local4, TP_CLASS_str_STR(self->tp));
local6 = STR_plus_STR_STR(local5, ((STR) &maynothaveanincl));
local7 = STR_plus_STR_STR(local6, TP_CLASS_str_STR(self->impl->arr));
PROG_err_STR(local3, STR_plus_CHAR_STR(local7, '.'));
return TRUE;
}
else {
if ((k==shared_TP_KIND_r_2617)) {
local8 = IDENT_is_eq_IDEN(self->impl->arr->name_19, IMPL_INCLUDE_pro(self)->ident_builtin->AVAL_ident);
} else {
local8 = FALSE;
}
if (local8) {
local9 = IMPL_INCLUDE_pro(self);
PROG_err_loc_PRO(local9, ((PROG_ERR) self->tr));
local10 = IMPL_INCLUDE_pro(self);
local11 = ((STR) &Thereferencetype);
local12 = STR_plus_STR_STR(local11, TP_CLASS_str_STR(self->tp));
local13 = STR_plus_STR_STR(local12, ((STR) &maynothaveanincl_2618));
local14 = STR_plus_STR_STR(local13, TP_CLASS_str_STR(self->impl->arr));
PROG_err_STR(local10, STR_plus_CHAR_STR(local14, '.'));
return TRUE;
}
}
return FALSE;
}
BOOL IMPL_INCLUDE_tes_2619(IMPL_INCLUDE self) {
BOOL noname2620 = ((BOOL) 0);
TR_FEAT_MOD m1;
TR_FEAT_MOD m2;
BOOL local0;
PROG local1;
PROG local2;
STR local3;
m1 = self->tr->mods;
while (1) {
if ((m1==((TR_FEAT_MOD) NULL))) {
goto after_loop;
}
m2 = self->tr->mods;
while (1) {
if ((m2==((TR_FEAT_MOD) NULL))) {
goto after_loop_2622;
}
if ((!(c_SYS_ob_eq_OB_OB_BOOL(((OB) m1),((OB) m2))))) {
local0 = IDENT_is_eq_IDEN(m1->name_19, m2->name_19);
} else {
local0 = FALSE;
}
if (local0) {
local1 = IMPL_INCLUDE_pro(self);
PROG_err_loc_PRO(local1, ((PROG_ERR) m1));
local2 = IMPL_INCLUDE_pro(self);
local3 = STR_plus_STR_STR(((STR) &Therearetwofeatu), m1->name_19.str_4);
PROG_err_STR(local2, STR_plus_STR_STR(local3, ((STR) &name_2624)));
return TRUE;
}
m2 = m2->next_8;
}
after_loop_2622: ;
m1 = m1->next_8;
}
after_loop: ;
return FALSE;
}
TR_FEAT_MOD FSETTR_FEAT_MOD_(FSETTR_FEAT_MOD self) {
TR_FEAT_MOD noname2625;
TR_FEAT_MOD t_2626 = ((TR_FEAT_MOD) NULL);
return ((TR_FEAT_MOD) NULL);
if (!FSETTR_FEAT_MOD__2627(self)) {
fprintf(stderr,"Failed invariant FSET{TR_FEAT_MOD}::invariant:BOOL ../Library/fset.sa:53:10\n");
exit(16);
}
}
FSETTR_FEAT_MOD FSETTR_FEAT_MOD__2628(FSETTR_FEAT_MOD self, INT n_2629) {
FSETTR_FEAT_MOD noname2630;
FSETTR_FEAT_MOD r_2631;
FSETTR_FEAT_MOD noname2632;
FSETTR_FEAT_MOD local0;
local0 = ((FSETTR_FEAT_MOD) sbi_arr_alloc(sizeof(struct FSETTR_FEAT_MOD_struct), FSETTR_FEAT_MOD_tag, sizeof(TR_FEAT_MOD) , n_2629));
local0->asize = n_2629;
r_2631 = local0;
if ((!((FSETTR_FEAT_MOD_(self)==((TR_FEAT_MOD) NULL))))) {
{
struct FSETTR_FEAT_MOD__2634_frame_struct temp2633_0;
FSETTR_FEAT_MOD__2634_frame
noname2635 = &temp2633_0;
noname2635->state = 0;
while (1) {
if (noname2635->state == 0) {
noname2632 = r_2631;
noname2635->arg0 = noname2632;
}
noname2635->arg1 = FSETTR_FEAT_MOD_(self);
FSETTR_FEAT_MOD__2634(noname2635);
if (noname2635->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
}
return r_2631;
}
INT FSETTR_FEAT_MOD__2636(FSETTR_FEAT_MOD self) {
INT noname2637 = ((INT) 0);
return self->asize;
fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
exit(16);
}
FSETTR_FEAT_MOD FSETTR_FEAT_MOD__2638(FSETTR_FEAT_MOD self) {
FSETTR_FEAT_MOD noname2639;
FSETTR_FEAT_MOD r_2640;
FSETTR_FEAT_MOD noname2641;
INT local0;
INT local1;
INT local2;
TR_FEAT_MOD local3;
if (!((!((self==((FSETTR_FEAT_MOD) NULL)))))) {
fprintf(stderr,"Violation of precondition ../Library/fset.sa:150:22\n");
exit(16);
}
local0 = (self->asize);
local1 = (c_INT_minus_INT_INT_chk(local0,1));
local2 = (c_INT_times_INT_INT_chk(local1,2));
r_2640 = FSETTR_FEAT_MOD__2628(self, (c_INT_plus_INT_INT_chk(local2,1)));
{
struct FSETTR_FEAT_MOD__2643_frame_struct temp2642_0;
FSETTR_FEAT_MOD__2643_frame
noname2644 = &temp2642_0;
noname2644->state = 0;
while (1) {
if (noname2644->state == 0) {
noname2641 = self;
noname2644->arg0 = noname2641;
}
local3 = FSETTR_FEAT_MOD__2643(noname2644);
if (noname2644->state == -1) goto after_loop;
r_2640 = FSETTR_FEAT_MOD__2645(r_2640, local3);
}
}
after_loop: ;
return r_2640;
}
INT FSETTR_FEAT_MOD__2646(FSETTR_FEAT_MOD self, TR_FEAT_MOD e_2647) {
INT noname2648 = ((INT) 0);
return (c_SYS_id_OB_INT(((SYS) NULL),((OB) e_2647)));
if (!FSETTR_FEAT_MOD__2627(self)) {
fprintf(stderr,"Failed invariant FSET{TR_FEAT_MOD}::invariant:BOOL ../Library/fset.sa:63:11\n");
exit(16);
}
}
TR_FEAT_MOD FSETTR_FEAT_MOD__2649(FSETTR_FEAT_MOD self, INT ind_2650) {
TR_FEAT_MOD noname2651;
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FSETTR_FEAT_MOD) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2650, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
exit(16);
}
if (ind_2650<0||ind_2650>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
exit(16);
}
return self->arr_part[ind_2650];
if (!FSETTR_FEAT_MOD__2627(self)) {
fprintf(stderr,"Failed invariant FSET{TR_FEAT_MOD}::invariant:BOOL ../Library/aref.sa:33:7\n");
exit(16);
}
}
BOOL FSETTR_FEAT_MOD__2652(FSETTR_FEAT_MOD self, TR_FEAT_MOD e1_2653, TR_FEAT_MOD e2_2654) {
BOOL noname2655 = ((BOOL) 0);
return c_SYS_ob_eq_OB_OB_BOOL(((OB) e1_2653),((OB) e2_2654));
if (!FSETTR_FEAT_MOD__2627(self)) {
fprintf(stderr,"Failed invariant FSET{TR_FEAT_MOD}::invariant:BOOL ../Library/fset.sa:44:9\n");
exit(16);
}
}
void FSETTR_FEAT_MOD__2656(FSETTR_FEAT_MOD self, INT ind_2657, TR_FEAT_MOD val_2658) {
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FSETTR_FEAT_MOD) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2657, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
exit(16);
}
if (ind_2657<0||ind_2657>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
exit(16);
}
self->arr_part[ind_2657] = val_2658;
if (!FSETTR_FEAT_MOD__2627(self)) {
fprintf(stderr,"Failed invariant FSET{TR_FEAT_MOD}::invariant:BOOL ../Library/aref.sa:38:7\n");
exit(16);
}
}
FSETTR_FEAT_MOD FSETTR_FEAT_MOD__2645(FSETTR_FEAT_MOD self, TR_FEAT_MOD e_2659) {
FSETTR_FEAT_MOD noname2660;
FSETTR_FEAT_MOD r_2661;
INT asz_2662 = ((INT) 0);
INT h = ((INT) 0);
TR_FEAT_MOD te;
TR_FEAT_MOD te_2663;
INT local0;
INT local1;
INT local2;
r_2661 = self;
if ((r_2661==((FSETTR_FEAT_MOD) NULL))) {
r_2661 = FSETTR_FEAT_MOD__2628(self, 5);
}
else {
local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
local1 = (c_INT_times_INT_INT_chk(local0,2));
if ((local1>(self->asize))) {
r_2661 = FSETTR_FEAT_MOD__2638(self);
}
}
asz_2662 = (r_2661->asize);
local2 = FSETTR_FEAT_MOD__2646(r_2661, e_2659);
h = (local2&(c_INT_minus_INT_INT_chk(asz_2662,2)));
while (1) {
te = FSETTR_FEAT_MOD__2649(r_2661, h);
if (FSETTR_FEAT_MOD__2652(self, te, FSETTR_FEAT_MOD_(self))) {
goto after_loop;
}
else {
if (FSETTR_FEAT_MOD__2652(self, te, e_2659)) {
FSETTR_FEAT_MOD__2656(r_2661, h, e_2659);
return r_2661;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
if ((h==(c_INT_minus_INT_INT_chk(asz_2662,1)))) {
h = 0;
while (1) {
te_2663 = FSETTR_FEAT_MOD__2649(r_2661, h);
if (FSETTR_FEAT_MOD__2652(self, te_2663, FSETTR_FEAT_MOD_(self))) {
goto after_loop_2665;
}
else {
if (FSETTR_FEAT_MOD__2652(self, te_2663, e_2659)) {
FSETTR_FEAT_MOD__2656(r_2661, h, e_2659);
return r_2661;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2665: ;
if (!((h!=(c_INT_minus_INT_INT_chk(asz_2662,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fset.sa:177:15\n");
exit(16);
}
}
FSETTR_FEAT_MOD__2656(r_2661, h, e_2659);
r_2661->hsize = (c_INT_plus_INT_INT_chk(r_2661->hsize,1));
return r_2661;
if (!FSETTR_FEAT_MOD__2627(self)) {
fprintf(stderr,"Failed invariant FSET{TR_FEAT_MOD}::invariant:BOOL ../Library/fset.sa:158:9\n");
exit(16);
}
}
TR_FEAT_MOD IMPL_INCLUDE_mod(IMPL_INCLUDE self, IDENT i) {
TR_FEAT_MOD noname2667;
TR_FEAT_MOD e_2668;
e_2668 = self->tr->mods;
while (1) {
if ((e_2668==((TR_FEAT_MOD) NULL))) {
goto after_loop;
}
if (IDENT_is_eq_IDEN(e_2668->name_19, i)) {
self->used_mods = FSETTR_FEAT_MOD__2645(self->used_mods, e_2668);
return e_2668;
}
e_2668 = e_2668->next_8;
}
after_loop: ;
return ((TR_FEAT_MOD) NULL);
}
BOOL SIG_is_shared_wr(SIG self) {
BOOL noname2670 = ((BOOL) 0);
BOOL local0;
INT local1;
local1 = ARRAYTP_size_INT(self->args_7);
if ((local1==1)) {
local0 = (self->ret==((TP) NULL));
} else {
local0 = FALSE;
}
return local0;
}
BOOL ELT_is_shared_wr(ELT self) {
BOOL noname2671 = ((BOOL) 0);
TR_CLASS_ELT ltr;
if ((!(SIG_is_shared_wr(self->sig_6)))) {
return FALSE;
}
ltr = self->tr;
if (ltr==NULL) {
} else
switch (ltr->header.tag) {
case TR_SHARED_DEF_tag:
return TRUE; break;
default: ;
}
return FALSE;
}
BOOL SIG_is_attr_writ(SIG self) {
BOOL noname2672 = ((BOOL) 0);
TP local0;
INT local1;
BOOL local2;
INT local3;
TP local4;
BOOL local5;
INT local6;
local0 = self->tp;
local1 = (*TP_kind_INT[local0->header.tag+TP_kind_INT_offset])(local0);
if ((local1==shared_TP_KIND_v)) {
local3 = ARRAYTP_size_INT(self->args_7);
if ((local3==1)) {
local4 = self->tp;
local2 = (*TP_is_eq_TP_BOOL[local4->header.tag+TP_is_eq_TP_BOOL_offset])(local4, self->ret);
} else {
local2 = FALSE;
}
return local2;
}
local6 = ARRAYTP_size_INT(self->args_7);
if ((local6==1)) {
local5 = (self->ret==((TP) NULL));
} else {
local5 = FALSE;
}
return local5;
}
BOOL ELT_is_attr_writ(ELT self) {
BOOL noname2673 = ((BOOL) 0);
TR_CLASS_ELT ltr;
if ((!(SIG_is_attr_writ(self->sig_6)))) {
return FALSE;
}
ltr = self->tr;
if (ltr==NULL) {
} else
switch (ltr->header.tag) {
case TR_ATTR_DEF_tag:
return TRUE; break;
default: ;
}
return FALSE;
}
ELT IMPL_INCLUDE_mod_2674(IMPL_INCLUDE self, ELT e_2675) {
ELT noname2676;
TP_CONTEXT con_2677;
IDENT name_2678 = IDENT_zero;
BOOL read_pri = ((BOOL) 0);
BOOL write_pri = ((BOOL) 0);
TR_FEAT_MOD m;
SIG sig_2679 = ((SIG) NULL);
BOOL pri_2680 = ((BOOL) 0);
TR_CLASS_ELT etr;
TP_CONTEXT local0;
TP_CLASS local1;
ARRAYIDENT local2;
ARRAYTP local3;
IDENT local4;
BOOL local5;
BOOL local6;
if (!((!((e_2675==((ELT) NULL)))))) {
fprintf(stderr,"Violation of precondition ./impl.sa:371:13\n");
exit(16);
}
local0 = ((TP_CONTEXT) NULL);
local1 = self->tp;
local2 = e_2675->con->pnames;
local3 = e_2675->con->ptypes;
con_2677 = TP_CONTEXT_creat(local0, local1, local2, local3, IMPL_INCLUDE_pro(self));
if ((con_2677==((TP_CONTEXT) NULL))) {
return ((ELT) NULL);
}
m = IMPL_INCLUDE_mod(self, ELT_name_IDENT(e_2675));
if ((!((m==((TR_FEAT_MOD) NULL))))) {
local4 = m->new_name;
if (IDENT_is_eq_IDEN(local4, IDENT_create_STR(IDENT_zero, ((STR) NULL)))) {
return ((ELT) NULL);
}
name_2678 = m->new_name;
read_pri = m->is_private;
if (m->is_private) {
local5 = TRUE;
} else {
local5 = m->is_readonly;
}
write_pri = local5;
}
else {
name_2678 = ELT_name_IDENT(e_2675);
if (self->tr->is_private) {
local6 = TRUE;
} else {
local6 = e_2675->is_private;
}
read_pri = local6;
write_pri = read_pri;
}
etr = e_2675->tr;
if (etr==NULL) {
} else
switch (etr->header.tag) {
case TR_CONST_DEF_tag:
sig_2679 = SIG_const_reader(((SIG) NULL), ((TR_CONST_DEF) etr), name_2678, con_2677);
pri_2680 = read_pri; break;
case TR_SHARED_DEF_tag:
if (ELT_is_shared_wr(e_2675)) {
sig_2679 = SIG_shared_write(((SIG) NULL), ((TR_SHARED_DEF) etr), name_2678, con_2677);
pri_2680 = write_pri;
}
else {
sig_2679 = SIG_shared_reade(((SIG) NULL), ((TR_SHARED_DEF) etr), name_2678, con_2677);
pri_2680 = read_pri;
} break;
case TR_ATTR_DEF_tag:
if (ELT_is_attr_writ(e_2675)) {
sig_2679 = SIG_attr_writer_(((SIG) NULL), ((TR_ATTR_DEF) etr), name_2678, con_2677);
pri_2680 = write_pri;
}
else {
sig_2679 = SIG_attr_reader_(((SIG) NULL), ((TR_ATTR_DEF) etr), name_2678, con_2677);
pri_2680 = read_pri;
} break;
case TR_ROUT_DEF_tag:
sig_2679 = SIG_rout_sig_TR_(((SIG) NULL), ((TR_ROUT_DEF) etr), name_2678, con_2677);
pri_2680 = read_pri; break;
default: ;
fprintf(stderr,"No applicable type in typecase ./impl.sa:391:26\n");
exit(16);
}
if ((sig_2679==((SIG) NULL))) {
return ((ELT) NULL);
}
return ELT_create_SIG_S(((ELT) NULL), sig_2679, e_2675->srcsig, e_2675->tr, con_2677, pri_2680);
}
void IMPL_INCLUDE_inc_2681(IMPL_INCLUDE self, ELT en, ELT f_2682) {
PROG local0;
PROG local1;
STR local2;
STR local3;
STR local4;
STR local5;
local0 = IMPL_INCLUDE_pro(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) self->tr));
local1 = IMPL_INCLUDE_pro(self);
local2 = ((STR) &Twooftheincluded);
local3 = STR_plus_STR_STR(local2, SIG_str_STR(en->sig_6));
local4 = STR_plus_STR_STR(local3, ((STR) &and_2683));
local5 = STR_plus_STR_STR(local4, SIG_str_STR(f_2682->sig_6));
PROG_err_STR(local1, STR_plus_STR_STR(local5, ((STR) &name_2684)));
}
INT FSETTR_FEAT_MOD__2685(FSETTR_FEAT_MOD self) {
INT noname2686 = ((INT) 0);
if ((self==((FSETTR_FEAT_MOD) NULL))) {
return 0;
}
return self->hsize;
if (!FSETTR_FEAT_MOD__2627(self)) {
fprintf(stderr,"Failed invariant FSET{TR_FEAT_MOD}::invariant:BOOL ../Library/fset.sa:89:7\n");
exit(16);
}
}
INT TR_FEAT_MOD_size_INT(TR_FEAT_MOD self) {
INT noname2687 = ((INT) 0);
INT r_2688 = ((INT) 0);
TR_FEAT_MOD n_2689;
if ((self==((TR_FEAT_MOD) NULL))) {
return 0;
}
r_2688 = 1;
n_2689 = self->next_8;
while (1) {
if ((n_2689==((TR_FEAT_MOD) NULL))) {
goto after_loop;
}
r_2688 = (c_INT_plus_INT_INT_chk(r_2688,1));
n_2689 = n_2689->next_8;
}
after_loop: ;
return r_2688;
}
BOOL FSETTR_FEAT_MOD__2691(FSETTR_FEAT_MOD self, TR_FEAT_MOD e_2692) {
BOOL noname2693 = ((BOOL) 0);
INT h = ((INT) 0);
TR_FEAT_MOD te;
TR_FEAT_MOD te_2694;
INT local0;
INT local1;
INT local2;
INT local3;
if ((self==((FSETTR_FEAT_MOD) NULL))) {
return FALSE;
}
local0 = FSETTR_FEAT_MOD__2646(self, e_2692);
local1 = (self->asize);
h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
while (1) {
te = FSETTR_FEAT_MOD__2649(self, h);
if (FSETTR_FEAT_MOD__2652(self, te, e_2692)) {
return TRUE;
}
else {
if (FSETTR_FEAT_MOD__2652(self, te, FSETTR_FEAT_MOD_(self))) {
goto after_loop;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
local2 = (self->asize);
if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
h = 0;
while (1) {
te_2694 = FSETTR_FEAT_MOD__2649(self, h);
if (FSETTR_FEAT_MOD__2652(self, te_2694, e_2692)) {
return TRUE;
}
else {
if (FSETTR_FEAT_MOD__2652(self, te_2694, FSETTR_FEAT_MOD_(self))) {
goto after_loop_2696;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2696: ;
local3 = (self->asize);
if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fset.sa:127:15\n");
exit(16);
}
}
return FALSE;
if (!FSETTR_FEAT_MOD__2627(self)) {
fprintf(stderr,"Failed invariant FSET{TR_FEAT_MOD}::invariant:BOOL ../Library/fset.sa:112:7\n");
exit(16);
}
}
void IMPL_INCLUDE_unu(IMPL_INCLUDE self, TR_FEAT_MOD t_2698) {
PROG local0;
PROG local1;
STR local2;
local0 = IMPL_INCLUDE_pro(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) t_2698));
local1 = IMPL_INCLUDE_pro(self);
local2 = STR_plus_STR_STR(((STR) &Therearenofeatur), t_2698->name_19.str_4);
PROG_err_STR(local1, STR_plus_STR_STR(local2, ((STR) &name_2699)));
}
ELT_TBL IMPL_INCLUDE_inc_2700(IMPL_INCLUDE self) {
ELT_TBL noname2701;
ELT_TBL r_2702 = ((ELT_TBL) NULL);
ELT_TBL noname2703;
ELT e_2704;
ELT en;
ELT f_2705;
TR_FEAT_MOD m;
ELT local0;
INT local1;
{
struct ELT_TBL_elt_ELT_frame_struct temp2706_0;
ELT_TBL_elt_ELT_frame
noname2707 = &temp2706_0;
noname2707->state = 0;
while (1) {
if (noname2707->state == 0) {
noname2703 = self->impl->elts;
noname2707->arg0 = noname2703;
}
local0 = ELT_TBL_elt_ELT(noname2707);
if (noname2707->state == -1) goto after_loop;
e_2704 = local0;
en = IMPL_INCLUDE_mod_2674(self, e_2704);
if ((!((en==((ELT) NULL))))) {
f_2705 = ELT_TBL_elt_conf(r_2702, en);
if ((!((f_2705==((ELT) NULL))))) {
IMPL_INCLUDE_inc_2681(self, en, f_2705);
}
else {
r_2702 = ELT_TBL_insert_E(r_2702, en);
}
}
}
}
after_loop: ;
local1 = FSETTR_FEAT_MOD__2685(self->used_mods);
if ((local1!=TR_FEAT_MOD_size_INT(self->tr->mods))) {
m = self->tr->mods;
while (1) {
if ((m==((TR_FEAT_MOD) NULL))) {
goto after_loop_2708;
}
if ((!(FSETTR_FEAT_MOD__2691(self->used_mods, m)))) {
IMPL_INCLUDE_unu(self, m);
}
m = m->next_8;
}
after_loop_2708: ;
}
return r_2702;
}
IMPL_INCLUDE IMPL_INCLUDE_cre(IMPL_INCLUDE self, TP_CLASS tp_2710, TR_INCLUDE_CLAUSE tr_2711) {
IMPL_INCLUDE noname2712;
IMPL_INCLUDE r_2713;
BOOL local0;
IMPL_INCLUDE local1;
OUT local2;
OUT local3;
OUT local4;
OUT local5;
OUT local6;
if ((!((tp_2710==((TP_CLASS) NULL))))) {
local0 = (!((tr_2711==((TR_INCLUDE_CLAUSE) NULL))));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ./impl.sa:236:9\n");
exit(16);
}
local1 = ((IMPL_INCLUDE) sbi_alloc(sizeof(struct IMPL_INCLUDE_struct), IMPL_INCLUDE_tag));
r_2713 = local1;
r_2713->tp = tp_2710;
r_2713->tr = tr_2711;
r_2713->itp = IMPL_INCLUDE_inc_2609(r_2713);
if ((r_2713->itp==((TP_CLASS) NULL))) {
return ((IMPL_INCLUDE) NULL);
}
if (tp_2710->prog->show_include) {
local2 = OUT_create_OUT(((OUT) NULL));
local3 = OUT_plus_STR_OUT(local2, ((STR) &Including));
local4 = OUT_plus_STR_OUT(local3, TP_CLASS_str_STR(r_2713->itp));
local5 = OUT_plus_STR_OUT(local4, ((STR) &in_2714));
local6 = OUT_plus_STR_OUT(local5, TP_CLASS_str_STR(tp_2710));
OUT_plus_STR(local6, ((STR) &name_2715));
}
r_2713->impl = IMPL_INCLUDE_inc_2614(r_2713);
if ((r_2713->impl==((IMPL) NULL))) {
return ((IMPL_INCLUDE) NULL);
}
if (IMPL_INCLUDE_tes(r_2713)) {
return ((IMPL_INCLUDE) NULL);
}
if (IMPL_INCLUDE_tes_2619(r_2713)) {
return ((IMPL_INCLUDE) NULL);
}
r_2713->elt_tbl = IMPL_INCLUDE_inc_2700(r_2713);
if ((r_2713->elt_tbl==((ELT_TBL) NULL))) {
return ((IMPL_INCLUDE) NULL);
}
return r_2713;
}
INT FLISTIMPL_INCLUD(FLISTIMPL_INCLUDE self) {
INT noname2716 = ((INT) 0);
return self->asize;
fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
exit(16);
}
INT FLISTIMPL_INCLUD_2717(FLISTIMPL_INCLUDE self) {
INT noname2718 = ((INT) 0);
if ((self==((FLISTIMPL_INCLUDE) NULL))) {
return 0;
}
return self->loc_17;
if (!FLISTIMPL_INCLUD_2719(self)) {
fprintf(stderr,"Failed invariant FLIST{IMPL_INCLUDE}::invariant:BOOL ../Library/flist.sa:50:7\n");
exit(16);
}
}
BOOL FLISTIMPL_INCLUD_2720(FLISTIMPL_INCLUDE self) {
BOOL noname2721 = ((BOOL) 0);
INT local0;
local0 = FLISTIMPL_INCLUD_2717(self);
return (local0==0);
if (!FLISTIMPL_INCLUD_2719(self)) {
fprintf(stderr,"Failed invariant FLIST{IMPL_INCLUDE}::invariant:BOOL ../Library/flist.sa:113:11\n");
exit(16);
}
}
void FLISTIMPL_INCLUD_2722(FLISTIMPL_INCLUDE self) {
IMPL_INCLUDE nil = ((IMPL_INCLUDE) NULL);
FLISTIMPL_INCLUDE noname2723;
if (!((!((self==((FLISTIMPL_INCLUDE) NULL)))))) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:43:9\n");
exit(16);
}
{
struct FLISTIMPL_INCLUD_2725_frame_struct temp2724_0;
FLISTIMPL_INCLUD_2725_frame
noname2726 = &temp2724_0;
noname2726->state = 0;
while (1) {
if (noname2726->state == 0) {
noname2723 = self;
noname2726->arg0 = noname2723;
}
noname2726->arg1 = nil;
FLISTIMPL_INCLUD_2725(noname2726);
if (noname2726->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
}
void FLISTIMPL_INCLUD_2727(FLISTIMPL_INCLUDE self) {
if (FLISTIMPL_INCLUD_2720(self)) {
return;
}
else {
FLISTIMPL_INCLUD_2722(self);
self->loc_17 = 0;
}
if (!FLISTIMPL_INCLUD_2719(self)) {
fprintf(stderr,"Failed invariant FLIST{IMPL_INCLUDE}::invariant:BOOL ../Library/flist.sa:117:8\n");
exit(16);
}
}
void FLISTIMPL_INCLUD_2728(FLISTIMPL_INCLUDE self, INT ind_2729, IMPL_INCLUDE val_2730) {
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FLISTIMPL_INCLUDE) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2729, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
exit(16);
}
if (ind_2729<0||ind_2729>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
exit(16);
}
self->arr_part[ind_2729] = val_2730;
}
void FLISTIMPL_INCLUD_2731(FLISTIMPL_INCLUDE self, INT ind_2732, IMPL_INCLUDE val_2733) {
BOOL local0;
INT local1;
if ((!((self==((FLISTIMPL_INCLUDE) NULL))))) {
local1 = 0;
local0 = INT_is_bet_INT_I(ind_2732, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/flist.sa:73:7\n");
exit(16);
}
FLISTIMPL_INCLUD_2728(self, ind_2732, val_2733);
if (!FLISTIMPL_INCLUD_2719(self)) {
fprintf(stderr,"Failed invariant FLIST{IMPL_INCLUDE}::invariant:BOOL ../Library/flist.sa:73:7\n");
exit(16);
}
}
FLISTIMPL_INCLUDE FLISTIMPL_INCLUD_2734(FLISTIMPL_INCLUDE self, IMPL_INCLUDE e_2735) {
FLISTIMPL_INCLUDE noname2736;
FLISTIMPL_INCLUDE r_2737 = ((FLISTIMPL_INCLUDE) NULL);
FLISTIMPL_INCLUDE noname2738;
FLISTIMPL_INCLUDE noname2739;
FLISTIMPL_INCLUDE local0;
INT local1;
FLISTIMPL_INCLUDE local2;
INT local3;
IMPL_INCLUDE local4;
INT local5;
if ((self==((FLISTIMPL_INCLUDE) NULL))) {
local0 = ((FLISTIMPL_INCLUDE) sbi_arr_alloc(sizeof(struct FLISTIMPL_INCLUDE_struct), FLISTIMPL_INCLUDE_tag, sizeof(IMPL_INCLUDE) , 5));
local0->asize = 5;
r_2737 = local0;
}
else {
local1 = self->loc_17;
if ((local1<(self->asize))) {
r_2737 = self;
}
else {
local3 = 2;
local2 = ((FLISTIMPL_INCLUDE) sbi_arr_alloc(sizeof(struct FLISTIMPL_INCLUDE_struct), FLISTIMPL_INCLUDE_tag, sizeof(IMPL_INCLUDE) , (c_INT_times_INT_INT_chk(local3,(self->asize)))));
local2->asize = (c_INT_times_INT_INT_chk(local3,(self->asize)));
r_2737 = local2;
r_2737->loc_17 = self->loc_17;
{
struct FLISTIMPL_INCLUD_2741_frame_struct temp2740_0;
FLISTIMPL_INCLUD_2741_frame
noname2742 = &temp2740_0;
struct FLISTIMPL_INCLUD_2725_frame_struct temp2740_1;
FLISTIMPL_INCLUD_2725_frame
noname2743 = &temp2740_1;
noname2742->state = 0;
noname2743->state = 0;
while (1) {
if (noname2743->state == 0) {
noname2739 = r_2737;
noname2743->arg0 = noname2739;
}
if (noname2742->state == 0) {
noname2738 = self;
noname2742->arg0 = noname2738;
}
local4 = FLISTIMPL_INCLUD_2741(noname2742);
if (noname2742->state == -1) goto after_loop;
noname2743->arg1 = local4;
FLISTIMPL_INCLUD_2725(noname2743);
if (noname2743->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
FLISTIMPL_INCLUD_2727(self);
}
}
r_2737->loc_17 = (c_INT_plus_INT_INT_chk(r_2737->loc_17,1));
local5 = (c_INT_minus_INT_INT_chk(r_2737->loc_17,1));
FLISTIMPL_INCLUD_2731(r_2737, local5, e_2735);
return r_2737;
if (!FLISTIMPL_INCLUD_2719(self)) {
fprintf(stderr,"Failed invariant FLIST{IMPL_INCLUDE}::invariant:BOOL ../Library/flist.sa:79:7\n");
exit(16);
}
}
void IMPL_CREATE_do_incs(IMPL_CREATE self) {
TR_CLASS_ELT e_2744;
IMPL_INCLUDE ii;
PROG local0;
PROG local1;
TR_CLASS_ELT local2;
e_2744 = self->tr->body;
while (1) {
if ((!((e_2744==((TR_CLASS_ELT) NULL))))) {
}
else {
goto after_loop;
}
if (e_2744==NULL) {
} else
switch (e_2744->header.tag) {
case TR_INCLUDE_CLAUSE_tag:
if (self->is_external) {
local0 = IMPL_CREATE_prog(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) e_2744));
local1 = IMPL_CREATE_prog(self);
PROG_err_STR(local1, ((STR) &Externalclassesm_2746));
}
else {
ii = IMPL_INCLUDE_cre(((IMPL_INCLUDE) NULL), self->tp, ((TR_INCLUDE_CLAUSE) e_2744));
if ((!((ii==((IMPL_INCLUDE) NULL))))) {
self->incs = FLISTIMPL_INCLUD_2734(self->incs, ii);
}
} break;
default: ;
}
local2 = e_2744;
e_2744 = (*TR_CLASS_ELT_nex[local2->header.tag+TR_CLASS_ELT_nex_offset])(local2);
}
after_loop: ;
}
IMPL IMPL_create_IMPL(IMPL self) {
IMPL noname2747;
IMPL local0;
local0 = ((IMPL) sbi_alloc(sizeof(struct IMPL_struct), IMPL_tag));
return local0;
}
BOOL TP_CLASS_is_eq_T(TP_CLASS self, TP t_2748) {
BOOL noname2749 = ((BOOL) 0);
return c_SYS_ob_eq_OB_OB_BOOL(((OB) self),((OB) t_2748));
}
void IMPL_CREATE_arra(IMPL_CREATE self, IMPL_INCLUDE inc, TP_CLASS a1, TP_CLASS a2) {
PROG local0;
PROG local1;
STR local2;
STR local3;
STR local4;
STR local5;
local0 = IMPL_CREATE_prog(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) inc->tr));
local1 = IMPL_CREATE_prog(self);
local2 = ((STR) &Thisclasshasincl);
local3 = STR_plus_STR_STR(local2, TP_CLASS_str_STR(a1));
local4 = STR_plus_STR_STR(local3, ((STR) &and_2750));
local5 = STR_plus_STR_STR(local4, TP_CLASS_str_STR(a2));
PROG_err_STR(local1, STR_plus_CHAR_STR(local5, '.'));
}
TP_CLASS IMPL_CREATE_get_(IMPL_CREATE self) {
TP_CLASS noname2751;
TP_CLASS r_2752 = ((TP_CLASS) NULL);
FLISTIMPL_INCLUDE noname2753;
IMPL_INCLUDE inc;
TP_CLASS a_2754;
BOOL local0;
INT local1;
BOOL local2;
INT local3;
IMPL_INCLUDE local4;
if (IDENT_is_eq_IDEN(self->tp->name_19, IMPL_CREATE_prog(self)->ident_builtin->AREF_ident)) {
local1 = ARRAYTP_size_INT(self->tp->params);
local0 = (local1==1);
} else {
local0 = FALSE;
}
if (local0) {
return self->tp;
}
if (IDENT_is_eq_IDEN(self->tp->name_19, IMPL_CREATE_prog(self)->ident_builtin->AVAL_ident)) {
local3 = ARRAYTP_size_INT(self->tp->params);
local2 = (local3==1);
} else {
local2 = FALSE;
}
if (local2) {
return self->tp;
}
{
struct FLISTIMPL_INCLUD_2741_frame_struct temp2755_0;
FLISTIMPL_INCLUD_2741_frame
noname2756 = &temp2755_0;
noname2756->state = 0;
while (1) {
if (noname2756->state == 0) {
noname2753 = self->incs;
noname2756->arg0 = noname2753;
}
local4 = FLISTIMPL_INCLUD_2741(noname2756);
if (noname2756->state == -1) goto after_loop;
inc = local4;
a_2754 = inc->impl->arr;
if ((!((a_2754==((TP_CLASS) NULL))))) {
if ((r_2752==((TP_CLASS) NULL))) {
r_2752 = a_2754;
}
else {
if (TP_CLASS_is_eq_T(r_2752, ((TP) a_2754))) {
}
else {
IMPL_CREATE_arra(self, inc, r_2752, a_2754);
}
}
}
}
}
after_loop: ;
return r_2752;
}
IMPL_INCLUDE FLISTIMPL_INCLUD_2757(FLISTIMPL_INCLUDE self, INT ind_2758) {
IMPL_INCLUDE noname2759;
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FLISTIMPL_INCLUDE) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2758, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
exit(16);
}
if (ind_2758<0||ind_2758>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
exit(16);
}
return self->arr_part[ind_2758];
}
IMPL_INCLUDE FLISTIMPL_INCLUD_2760(FLISTIMPL_INCLUDE self, INT ind_2761) {
IMPL_INCLUDE noname2762;
BOOL local0;
INT local1;
if ((!((self==((FLISTIMPL_INCLUDE) NULL))))) {
local1 = 0;
local0 = INT_is_bet_INT_I(ind_2761, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
exit(16);
}
return FLISTIMPL_INCLUD_2757(self, ind_2761);
if (!FLISTIMPL_INCLUD_2719(self)) {
fprintf(stderr,"Failed invariant FLIST{IMPL_INCLUDE}::invariant:BOOL ../Library/flist.sa:68:7\n");
exit(16);
}
}
IMPL_INCLUDE FLISTIMPL_INCLUD_2763(FLISTIMPL_INCLUDE self) {
IMPL_INCLUDE noname2764;
IMPL_INCLUDE r_2765;
INT local0;
INT local1;
local0 = FLISTIMPL_INCLUD_2717(self);
if ((local0==0)) {
return ((IMPL_INCLUDE) NULL);
}
r_2765 = FLISTIMPL_INCLUD_2760(self, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
local1 = (c_INT_minus_INT_INT_chk(self->loc_17,1));
FLISTIMPL_INCLUD_2731(self, local1, ((IMPL_INCLUDE) NULL));
self->loc_17 = (c_INT_minus_INT_INT_chk(self->loc_17,1));
return r_2765;
if (!FLISTIMPL_INCLUD_2719(self)) {
fprintf(stderr,"Failed invariant FLIST{IMPL_INCLUDE}::invariant:BOOL ../Library/flist.sa:90:6\n");
exit(16);
}
}
BOOL ELT_is_attr_acce(ELT self) {
BOOL noname2766 = ((BOOL) 0);
TR_CLASS_ELT ltr;
ltr = self->tr;
if (ltr==NULL) {
} else
switch (ltr->header.tag) {
case TR_SHARED_DEF_tag:
return TRUE; break;
case TR_CONST_DEF_tag:
return TRUE; break;
case TR_ATTR_DEF_tag:
return TRUE; break;
default: ;
}
return FALSE;
}
void IMPL_CREATE_attr(IMPL_CREATE self, ELT e_2767, ELT f_2768, IMPL_INCLUDE inc) {
PROG local0;
PROG local1;
STR local2;
STR local3;
STR local4;
STR local5;
local0 = IMPL_CREATE_prog(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) f_2768->tr));
local1 = IMPL_CREATE_prog(self);
local2 = ((STR) &Thisexplicitlyde);
local3 = STR_plus_STR_STR(local2, SIG_str_STR(e_2767->sig_6));
local4 = STR_plus_STR_STR(local3, ((STR) &whichisincludedfrom));
local5 = STR_plus_STR_STR(local4, TP_CLASS_str_STR(inc->itp));
PROG_err_STR(local1, STR_plus_STR_STR(local5, ((STR) &name_2769)));
}
BOOL ELT_is_abstract_BOOL(ELT self) {
BOOL noname2770 = ((BOOL) 0);
TR_CLASS_ELT ltr;
ltr = self->tr;
if (ltr==NULL) {
} else
switch (ltr->header.tag) {
case TR_ROUT_DEF_tag:
return ((TR_ROUT_DEF) ltr)->is_abstract; break;
default: ;
}
return FALSE;
}
void IMPL_CREATE_incl(IMPL_CREATE self, IMPL_INCLUDE inc, IMPL_INCLUDE inc2, ELT e_2771, ELT g_2772) {
PROG local0;
PROG local1;
STR local2;
STR local3;
STR local4;
STR local5;
STR local6;
STR local7;
local0 = IMPL_CREATE_prog(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) inc->tr));
local1 = IMPL_CREATE_prog(self);
local2 = ((STR) &Thisincludesthef);
local3 = STR_plus_STR_STR(local2, SIG_str_STR(e_2771->sig_6));
local4 = STR_plus_STR_STR(local3, ((STR) &whichconflictswith));
local5 = STR_plus_STR_STR(local4, SIG_str_STR(g_2772->sig_6));
local6 = STR_plus_STR_STR(local5, ((STR) &whichisincludedf_2773));
local7 = STR_plus_STR_STR(local6, TP_CLASS_str_STR(inc2->itp));
PROG_err_STR(local1, STR_plus_STR_STR(local7, ((STR) &name_2774)));
}
ELT_TBL IMPL_CREATE_elt_(IMPL_CREATE self) {
ELT_TBL noname2775;
ELT_TBL r_2776 = ((ELT_TBL) NULL);
ELT_TBL noname2777;
IMPL_INCLUDE inc;
ELT_TBL noname2778;
ELT e_2779;
ELT f_2780;
FLISTIMPL_INCLUDE noname2781;
IMPL_INCLUDE inc2;
ELT g_2782;
ELT local0;
ELT local1;
BOOL local2;
BOOL local3;
BOOL local4;
BOOL local5;
IMPL_INCLUDE local6;
{
struct ELT_TBL_elt_ELT_frame_struct temp2783_0;
ELT_TBL_elt_ELT_frame
noname2784 = &temp2783_0;
noname2784->state = 0;
while (1) {
if (noname2784->state == 0) {
noname2777 = self->class_elts;
noname2784->arg0 = noname2777;
}
local0 = ELT_TBL_elt_ELT(noname2784);
if (noname2784->state == -1) goto after_loop;
r_2776 = ELT_TBL_insert_E(r_2776, local0);
}
}
after_loop: ;
while (1) {
if ((!(FLISTIMPL_INCLUD_2720(self->incs)))) {
}
else {
goto after_loop_2785;
}
inc = FLISTIMPL_INCLUD_2763(self->incs);
{
struct ELT_TBL_elt_ELT_frame_struct temp2788_0;
ELT_TBL_elt_ELT_frame
noname2789 = &temp2788_0;
noname2789->state = 0;
while (1) {
if (noname2789->state == 0) {
noname2778 = inc->elt_tbl;
noname2789->arg0 = noname2778;
}
local1 = ELT_TBL_elt_ELT(noname2789);
if (noname2789->state == -1) goto after_loop_2787;
e_2779 = local1;
f_2780 = ELT_TBL_elt_conf(r_2776, e_2779);
if ((!((f_2780==((ELT) NULL))))) {
local3 = ELT_is_attr_acce(e_2779);
} else {
local3 = FALSE;
}
if (local3) {
local2 = (!(ELT_is_attr_acce(f_2780)));
} else {
local2 = FALSE;
}
if (local2) {
IMPL_CREATE_attr(self, e_2779, f_2780, inc);
}
if ((f_2780==((ELT) NULL))) {
if ((!(ELT_is_abstract_BOOL(e_2779)))) {
local5 = TRUE;
} else {
local5 = TP_CLASS_is_abst(self->tp);
}
local4 = local5;
} else {
local4 = FALSE;
}
if (local4) {
{
struct FLISTIMPL_INCLUD_2741_frame_struct temp2791_0;
FLISTIMPL_INCLUD_2741_frame
noname2792 = &temp2791_0;
noname2792->state = 0;
while (1) {
if (noname2792->state == 0) {
noname2781 = self->incs;
noname2792->arg0 = noname2781;
}
local6 = FLISTIMPL_INCLUD_2741(noname2792);
if (noname2792->state == -1) goto after_loop_2790;
inc2 = local6;
g_2782 = ELT_TBL_elt_conf(inc2->elt_tbl, e_2779);
if ((!((g_2782==((ELT) NULL))))) {
IMPL_CREATE_incl(self, inc, inc2, e_2779, g_2782);
}
}
}
after_loop_2790: ;
r_2776 = ELT_TBL_insert_E(r_2776, e_2779);
}
}
}
after_loop_2787: ;
}
after_loop_2785: ;
return r_2776;
}
SIG SIG_TBL_elt_nil_SIG(SIG_TBL self) {
SIG noname2793;
SIG t_2794 = ((SIG) NULL);
return ((SIG) NULL);
if (!SIG_TBL_invarian(self)) {
fprintf(stderr,"Failed invariant SIG_TBL::invariant:BOOL ../Library/fqset.sa:69:10\n");
exit(16);
}
}
BOOL SIG_is_eq_SIG_BOOL(SIG self, SIG s_2795) {
BOOL noname2796 = ((BOOL) 0);
ARRAYTP noname2797;
ARRAYTP noname2798;
ARRAYBOOL noname2799;
ARRAYBOOL noname2800;
BOOL local0;
BOOL local1;
BOOL local2;
BOOL local3;
TP local4;
INT local5;
INT local6;
BOOL local7;
TP local8;
TP local9;
TP local10;
TP local11;
BOOL local12;
BOOL local13;
BOOL local14;
BOOL local15;
TP local16;
if ((self==((SIG) NULL))) {
return (s_2795==((SIG) NULL));
}
else {
if ((s_2795==((SIG) NULL))) {
return FALSE;
}
}
if (c_SYS_ob_eq_OB_OB_BOOL(((OB) self),((OB) s_2795))) {
return TRUE;
}
local4 = self->tp;
if ((*TP_is_neq_TP_BOOL[local4->header.tag+TP_is_neq_TP_BOOL_offset])(local4, s_2795->tp)) {
local3 = TRUE;
} else {
local3 = IDENT_is_neq_IDE(self->name_19, s_2795->name_19);
}
if (local3) {
local2 = TRUE;
} else {
local5 = ARRAYTP_size_INT(self->args_7);
local2 = (local5!=ARRAYTP_size_INT(s_2795->args_7));
}
if (local2) {
local1 = TRUE;
} else {
local6 = ARRAYBOOL_size_INT(self->hot);
local1 = (local6!=ARRAYBOOL_size_INT(s_2795->hot));
}
if (local1) {
local0 = TRUE;
} else {
local7 = SIG_has_ret_BOOL(self);
local0 = ((local7)!=(SIG_has_ret_BOOL(s_2795)));
}
if (local0) {
return FALSE;
}
{
struct ARRAYTP_elt_TP_frame_struct temp2801_0;
ARRAYTP_elt_TP_frame
noname2802 = &temp2801_0;
struct ARRAYTP_elt_TP_frame_struct temp2801_1;
ARRAYTP_elt_TP_frame
noname2803 = &temp2801_1;
noname2802->state = 0;
noname2803->state = 0;
while (1) {
if (noname2802->state == 0) {
noname2797 = self->args_7;
noname2802->arg0 = noname2797;
}
local8 = ARRAYTP_elt_TP(noname2802);
if (noname2802->state == -1) goto after_loop;
local9 = local8;
if (noname2803->state == 0) {
noname2798 = s_2795->args_7;
noname2803->arg0 = noname2798;
}
local10 = ARRAYTP_elt_TP(noname2803);
if (noname2803->state == -1) goto after_loop;
local11 = local9;
if ((*TP_is_neq_TP_BOOL[local11->header.tag+TP_is_neq_TP_BOOL_offset])(local11, local10)) {
return FALSE;
}
}
}
after_loop: ;
{
struct ARRAYBOOL_elt_BOOL_frame_struct temp2805_0;
ARRAYBOOL_elt_BOOL_frame
noname2806 = &temp2805_0;
struct ARRAYBOOL_elt_BOOL_frame_struct temp2805_1;
ARRAYBOOL_elt_BOOL_frame
noname2807 = &temp2805_1;
noname2806->state = 0;
noname2807->state = 0;
while (1) {
if (noname2806->state == 0) {
noname2799 = self->hot;
noname2806->arg0 = noname2799;
}
local12 = ARRAYBOOL_elt_BOOL(noname2806);
if (noname2806->state == -1) goto after_loop_2804;
local13 = local12;
if (noname2807->state == 0) {
noname2800 = s_2795->hot;
noname2807->arg0 = noname2800;
}
local14 = ARRAYBOOL_elt_BOOL(noname2807);
if (noname2807->state == -1) goto after_loop_2804;
if (((local13)!=(local14))) {
return FALSE;
}
}
}
after_loop_2804: ;
if (SIG_has_ret_BOOL(self)) {
local16 = self->ret;
local15 = (*TP_is_neq_TP_BOOL[local16->header.tag+TP_is_neq_TP_BOOL_offset])(local16, s_2795->ret);
} else {
local15 = FALSE;
}
if (local15) {
return FALSE;
}
return TRUE;
}
BOOL SIG_TBL_elt_eq_S(SIG_TBL self, SIG e1_2808, SIG e2_2809) {
BOOL noname2810 = ((BOOL) 0);
return SIG_is_eq_SIG_BOOL(e1_2808, e2_2809);
return c_SYS_ob_eq_OB_OB_BOOL(((OB) e1_2808),((OB) e2_2809));
if (!SIG_TBL_invarian(self)) {
fprintf(stderr,"Failed invariant SIG_TBL::invariant:BOOL ../Library/fqset.sa:62:9\n");
exit(16);
}
}
SIG_TBL SIG_TBL_allocate(SIG_TBL self, INT n_2811) {
SIG_TBL noname2812;
SIG_TBL r_2813;
SIG_TBL noname2814;
SIG_TBL local0;
local0 = ((SIG_TBL) sbi_arr_alloc(sizeof(struct SIG_TBL_struct), SIG_TBL_tag, sizeof(SIG) , n_2811));
local0->asize = n_2811;
r_2813 = local0;
if ((!((SIG_TBL_elt_nil_SIG(self)==((SIG) NULL))))) {
{
struct SIG_TBL_aset_SIG_frame_struct temp2815_0;
SIG_TBL_aset_SIG_frame
noname2816 = &temp2815_0;
noname2816->state = 0;
while (1) {
if (noname2816->state == 0) {
noname2814 = r_2813;
noname2816->arg0 = noname2814;
}
noname2816->arg1 = SIG_TBL_elt_nil_SIG(self);
SIG_TBL_aset_SIG(noname2816);
if (noname2816->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
}
return r_2813;
}
INT SIG_TBL_asize_INT(SIG_TBL self) {
INT noname2817 = ((INT) 0);
return self->asize;
fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
exit(16);
}
SIG_TBL SIG_TBL_double_s(SIG_TBL self) {
SIG_TBL noname2818;
SIG_TBL r_2819;
SIG_TBL noname2820;
INT local0;
INT local1;
INT local2;
SIG local3;
if (!((!((self==((SIG_TBL) NULL)))))) {
fprintf(stderr,"Violation of precondition ../Library/fqset.sa:190:22\n");
exit(16);
}
local0 = (self->asize);
local1 = (c_INT_minus_INT_INT_chk(local0,1));
local2 = (c_INT_times_INT_INT_chk(local1,2));
r_2819 = SIG_TBL_allocate(self, (c_INT_plus_INT_INT_chk(local2,1)));
{
struct SIG_TBL_elt_SIG_frame_struct temp2821_0;
SIG_TBL_elt_SIG_frame
noname2822 = &temp2821_0;
noname2822->state = 0;
while (1) {
if (noname2822->state == 0) {
noname2820 = self;
noname2822->arg0 = noname2820;
}
local3 = SIG_TBL_elt_SIG(noname2822);
if (noname2822->state == -1) goto after_loop;
r_2819 = SIG_TBL_insert_S(r_2819, local3);
}
}
after_loop: ;
return r_2819;
}
INT SIG_TBL_elt_hash(SIG_TBL self, SIG s_2823) {
INT noname2824 = ((INT) 0);
return IDENT_hash_INT(s_2823->name_19);
if (!SIG_TBL_invarian(self)) {
fprintf(stderr,"Failed invariant SIG_TBL::invariant:BOOL ./sig.sa:384:11\n");
exit(16);
}
}
SIG SIG_TBL_aget_INT_SIG(SIG_TBL self, INT ind_2825) {
SIG noname2826;
BOOL local0;
INT local1;
INT local2;
if ((!((self==((SIG_TBL) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2825, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
exit(16);
}
if (ind_2825<0||ind_2825>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
exit(16);
}
return self->arr_part[ind_2825];
}
void SIG_TBL_aset_INT_SIG(SIG_TBL self, INT ind_2827, SIG val_2828) {
BOOL local0;
INT local1;
INT local2;
if ((!((self==((SIG_TBL) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2827, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
exit(16);
}
if (ind_2827<0||ind_2827>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
exit(16);
}
self->arr_part[ind_2827] = val_2828;
}
SIG_TBL SIG_TBL_insert_S(SIG_TBL self, SIG e_2829) {
SIG_TBL noname2830;
SIG_TBL r_2831;
INT asz_2832 = ((INT) 0);
INT h = ((INT) 0);
SIG te;
SIG te_2833;
INT local0;
INT local1;
INT local2;
r_2831 = self;
if (SIG_TBL_elt_eq_S(self, e_2829, SIG_TBL_elt_nil_SIG(self))) {
return r_2831;
}
if ((r_2831==((SIG_TBL) NULL))) {
r_2831 = SIG_TBL_allocate(self, 5);
}
else {
local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
local1 = (c_INT_times_INT_INT_chk(local0,2));
if ((local1>(self->asize))) {
r_2831 = SIG_TBL_double_s(r_2831);
}
}
asz_2832 = (r_2831->asize);
local2 = SIG_TBL_elt_hash(r_2831, e_2829);
h = (local2&(c_INT_minus_INT_INT_chk(asz_2832,2)));
while (1) {
te = SIG_TBL_aget_INT_SIG(r_2831, h);
if (SIG_TBL_elt_eq_S(self, te, SIG_TBL_elt_nil_SIG(self))) {
goto after_loop;
}
else {
if (SIG_TBL_elt_eq_S(self, te, e_2829)) {
SIG_TBL_aset_INT_SIG(r_2831, h, e_2829);
return r_2831;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
if ((h==(c_INT_minus_INT_INT_chk(asz_2832,1)))) {
h = 0;
while (1) {
te_2833 = SIG_TBL_aget_INT_SIG(r_2831, h);
if (SIG_TBL_elt_eq_S(self, te_2833, SIG_TBL_elt_nil_SIG(self))) {
goto after_loop_2835;
}
else {
if (SIG_TBL_elt_eq_S(self, te_2833, e_2829)) {
SIG_TBL_aset_INT_SIG(r_2831, h, e_2829);
return r_2831;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2835: ;
if (!((h!=(c_INT_minus_INT_INT_chk(asz_2832,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fqset.sa:218:15\n");
exit(16);
}
}
SIG_TBL_aset_INT_SIG(r_2831, h, e_2829);
r_2831->hsize = (c_INT_plus_INT_INT_chk(r_2831->hsize,1));
return r_2831;
if (!SIG_TBL_invarian(self)) {
fprintf(stderr,"Failed invariant SIG_TBL::invariant:BOOL ../Library/fqset.sa:198:9\n");
exit(16);
}
}
IFC IFC_create_SIG_T(IFC self, SIG_TBL sigs_2837, TP tp_2838) {
IFC noname2839;
IFC r_2840;
IFC local0;
local0 = ((IFC) sbi_alloc(sizeof(struct IFC_struct), IFC_tag));
r_2840 = local0;
r_2840->sigs = sigs_2837;
r_2840->tp = tp_2838;
return r_2840;
}
IFC ELT_TBL_public_i(ELT_TBL self) {
IFC noname2841;
SIG_TBL st = ((SIG_TBL) NULL);
ELT e_2842 = ((ELT) NULL);
ELT_TBL noname2843;
BOOL local0;
ELT local1;
if ((self==((ELT_TBL) NULL))) {
local0 = TRUE;
} else {
local0 = (self->hsize==0);
}
if (local0) {
return ((IFC) NULL);
}
{
struct ELT_TBL_elt_ELT_frame_struct temp2844_0;
ELT_TBL_elt_ELT_frame
noname2845 = &temp2844_0;
noname2845->state = 0;
while (1) {
if (noname2845->state == 0) {
noname2843 = self;
noname2845->arg0 = noname2843;
}
local1 = ELT_TBL_elt_ELT(noname2845);
if (noname2845->state == -1) goto after_loop;
e_2842 = local1;
if ((!(e_2842->is_private))) {
st = SIG_TBL_insert_S(st, e_2842->sig_6);
}
}
}
after_loop: ;
return IFC_create_SIG_T(((IFC) NULL), st, e_2842->sig_6->tp);
if (!ELT_TBL_invarian(self)) {
fprintf(stderr,"Failed invariant ELT_TBL::invariant:BOOL ./elt.sa:201:13\n");
exit(16);
}
}
IMPL IMPL_CREATE_impl(IMPL_CREATE self, TP_CLASS t_2846) {
IMPL noname2847;
IMPL_CREATE ic;
IMPL r_2848;
OUT local0;
OUT local1;
OUT local2;
IMPL_CREATE local3;
INT local4;
PROG local5;
PROG local6;
IDENT local7;
if (!((!((t_2846==((TP_CLASS) NULL)))))) {
fprintf(stderr,"Violation of precondition ./impl.sa:425:10\n");
exit(16);
}
if (t_2846->prog->show_impl_create) {
local0 = OUT_create_OUT(((OUT) NULL));
local1 = OUT_plus_STR_OUT(local0, ((STR) &Implcreate));
local2 = OUT_plus_STR_OUT(local1, TP_CLASS_str_STR(t_2846));
OUT_plus_STR(local2, ((STR) &name_2849));
}
local3 = ((IMPL_CREATE) sbi_alloc(sizeof(struct IMPL_CREATE_struct), IMPL_CREATE_tag));
ic = local3;
ic->tp = t_2846;
local4 = PROG_tp_kind_TP_INT(t_2846->prog, ((TP) t_2846));
ic->is_external = (local4==shared_TP_KIND_e);
local5 = IMPL_CREATE_prog(ic);
ic->con = PROG_tp_context_(local5, t_2846);
if ((ic->con==((TP_CONTEXT) NULL))) {
return ((IMPL) NULL);
}
local6 = IMPL_CREATE_prog(ic);
local7 = t_2846->name_19;
ic->tr = PROG_tree_for_ID(local6, local7, ARRAYTP_size_INT(t_2846->params));
if ((ic->tr==((TR_CLASS_DEF) NULL))) {
return ((IMPL) NULL);
}
ic->class_elts = IMPL_CREATE_expl(ic);
IMPL_CREATE_do_incs(ic);
r_2848 = IMPL_create_IMPL(((IMPL) NULL));
r_2848->tp = ((TP) t_2846);
r_2848->arr = IMPL_CREATE_get_(ic);
r_2848->elts = IMPL_CREATE_elt_(ic);
r_2848->ifc = ELT_TBL_public_i(r_2848->elts);
if ((r_2848->ifc==((IFC) NULL))) {
r_2848->ifc = IFC_create_SIG_T(((IFC) NULL), ((SIG_TBL) NULL), ((TP) t_2846));
}
return r_2848;
}
IMPL IMPL_create_for_(IMPL self, TP t_2850) {
IMPL noname2851;
TP local0;
PROG local1;
PROG local2;
STR local3;
TP local4;
PROG local5;
if (!((!((t_2850==((TP) NULL)))))) {
fprintf(stderr,"Violation of precondition ./impl.sa:28:16\n");
exit(16);
}
if (t_2850==NULL) {
local0 = t_2850;
local1 = (*TP_prog_PROG[local0->header.tag+TP_prog_PROG_offset])(local0);
PROG_err_STR(local1, ((STR) &CompilererrorIMP));
} else
switch (t_2850->header.tag) {
case TP_CLASS_tag:
if (TP_CLASS_is_abst(((TP_CLASS) t_2850))) {
local2 = IMPL_prog_PROG(self);
local3 = ((STR) &CompilererrorImp);
PROG_err_STR(local2, STR_plus_STR_STR(local3, TP_CLASS_str_STR(((TP_CLASS) t_2850))));
return ((IMPL) NULL);
}
return IMPL_CREATE_impl(((IMPL_CREATE) NULL), ((TP_CLASS) t_2850)); break;
default: ;
local4 = t_2850;
local5 = (*TP_prog_PROG[local4->header.tag+TP_prog_PROG_offset])(local4);
PROG_err_STR(local5, ((STR) &CompilererrorIMP_2852));
}
return ((IMPL) NULL);
}
TUPTPIMPL TUPTPIMPL_t1_TP_(TUPTPIMPL self, TP t1_2853) {
TUPTPIMPL local0;
local0 = self;
local0.t1 = t1_2853;
return local0;
}
TUPTPIMPL TUPTPIMPL_t2_IMP(TUPTPIMPL self, IMPL t2_2854) {
TUPTPIMPL local0;
local0 = self;
local0.t2 = t2_2854;
return local0;
}
TUPTPIMPL TUPTPIMPL_create(TUPTPIMPL self, TP at1, IMPL at2) {
TUPTPIMPL noname2855 = TUPTPIMPL_zero;
TUPTPIMPL local0;
local0 = TUPTPIMPL_t1_TP_(self, at1);
return TUPTPIMPL_t2_IMP(local0, at2);
}
FMAPTPIMPL FMAPTPIMPL_alloc(FMAPTPIMPL self, INT n_2856) {
FMAPTPIMPL noname2857;
FMAPTPIMPL r_2858;
FMAPTPIMPL noname2859;
FMAPTPIMPL local0;
TUPTPIMPL local1;
TP local2;
local0 = ((FMAPTPIMPL) sbi_arr_alloc(sizeof(struct FMAPTPIMPL_struct), FMAPTPIMPL_tag, sizeof(TUPTPIMPL) , n_2856));
local0->asize = n_2856;
r_2858 = local0;
if ((!((FMAPTPIMPL_key_n(self)==((TP) NULL))))) {
{
struct FMAPTPIMPL_aset__frame_struct temp2860_0;
FMAPTPIMPL_aset__frame
noname2861 = &temp2860_0;
noname2861->state = 0;
while (1) {
if (noname2861->state == 0) {
noname2859 = r_2858;
noname2861->arg0 = noname2859;
}
local1 = TUPTPIMPL_zero;
local2 = FMAPTPIMPL_key_n(self);
noname2861->arg1 = TUPTPIMPL_create(local1, local2, ((IMPL) NULL));
FMAPTPIMPL_aset_(noname2861);
if (noname2861->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
}
return r_2858;
}
FMAPTPIMPL FMAPTPIMPL_inser(FMAPTPIMPL self, TUPTPIMPL p) {
FMAPTPIMPL noname2862;
return FMAPTPIMPL_inser_2863(self, p.t1, p.t2);
if (!FMAPTPIMPL_invar(self)) {
fprintf(stderr,"Failed invariant FMAP{$TP,IMPL}::invariant:BOOL ../Library/fmap.sa:202:14\n");
exit(16);
}
}
FMAPTPIMPL FMAPTPIMPL_doubl(FMAPTPIMPL self) {
FMAPTPIMPL noname2864;
INT ns = ((INT) 0);
FMAPTPIMPL r_2865;
FMAPTPIMPL noname2866;
INT local0;
INT local1;
INT local2;
TUPTPIMPL local3;
if (!((!((self==((FMAPTPIMPL) NULL)))))) {
fprintf(stderr,"Violation of precondition ../Library/fmap.sa:172:22\n");
exit(16);
}
local0 = (self->asize);
local1 = (c_INT_minus_INT_INT_chk(local0,1));
local2 = (c_INT_times_INT_INT_chk(local1,2));
ns = (c_INT_plus_INT_INT_chk(local2,1));
r_2865 = FMAPTPIMPL_alloc(self, ns);
{
struct FMAPTPIMPL_pairs_frame_struct temp2867_0;
FMAPTPIMPL_pairs_frame
noname2868 = &temp2867_0;
noname2868->state = 0;
while (1) {
if (noname2868->state == 0) {
noname2866 = self;
noname2868->arg0 = noname2866;
}
local3 = FMAPTPIMPL_pairs(noname2868);
if (noname2868->state == -1) goto after_loop;
r_2865 = FMAPTPIMPL_inser(r_2865, local3);
}
}
after_loop: ;
return r_2865;
}
void FMAPTPIMPL_aset__2869(FMAPTPIMPL self, INT ind_2870, TUPTPIMPL val_2871) {
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FMAPTPIMPL) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2870, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
exit(16);
}
if (ind_2870<0||ind_2870>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
exit(16);
}
self->arr_part[ind_2870] = val_2871;
}
FMAPTPIMPL FMAPTPIMPL_inser_2863(FMAPTPIMPL self, TP k, IMPL t_2872) {
FMAPTPIMPL noname2873;
FMAPTPIMPL r_2874;
INT h = ((INT) 0);
INT asm_2875 = ((INT) 0);
TP tk;
TP tk_2876;
INT local0;
INT local1;
INT local2;
INT local3;
INT local4;
r_2874 = self;
if ((r_2874==((FMAPTPIMPL) NULL))) {
r_2874 = FMAPTPIMPL_alloc(self, 5);
}
else {
local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
local1 = (c_INT_times_INT_INT_chk(local0,2));
if ((local1>(self->asize))) {
r_2874 = FMAPTPIMPL_doubl(self);
}
}
local2 = FMAPTPIMPL_key_h(r_2874, k);
local3 = (r_2874->asize);
h = (local2&(c_INT_minus_INT_INT_chk(local3,2)));
local4 = (r_2874->asize);
asm_2875 = (c_INT_minus_INT_INT_chk(local4,1));
while (1) {
tk = (TUPTPIMPL_blob=FMAPTPIMPL_aget_(r_2874, h)).t1;
if (FMAPTPIMPL_key_e(self, tk, FMAPTPIMPL_key_n(self))) {
goto after_loop;
}
if (FMAPTPIMPL_key_e(self, tk, k)) {
FMAPTPIMPL_aset__2869(r_2874, h, TUPTPIMPL_create(TUPTPIMPL_zero, k, t_2872));
return r_2874;
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
if ((h==asm_2875)) {
h = 0;
while (1) {
tk_2876 = (TUPTPIMPL_blob=FMAPTPIMPL_aget_(r_2874, h)).t1;
if (FMAPTPIMPL_key_e(self, tk_2876, FMAPTPIMPL_key_n(self))) {
goto after_loop_2878;
}
if (FMAPTPIMPL_key_e(self, tk_2876, k)) {
FMAPTPIMPL_aset__2869(r_2874, h, TUPTPIMPL_create(TUPTPIMPL_zero, k, t_2872));
return r_2874;
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2878: ;
if (!((h!=asm_2875))) {
fprintf(stderr,"Violation of assertion ../Library/fmap.sa:199:15\n");
exit(16);
}
}
FMAPTPIMPL_aset__2869(r_2874, h, TUPTPIMPL_create(TUPTPIMPL_zero, k, t_2872));
r_2874->hsize = (c_INT_plus_INT_INT_chk(r_2874->hsize,1));
return r_2874;
if (!FMAPTPIMPL_invar(self)) {
fprintf(stderr,"Failed invariant FMAP{$TP,IMPL}::invariant:BOOL ../Library/fmap.sa:180:9\n");
exit(16);
}
}
FSETTUPIDENTINT FSETTUPIDENTINT__2880(FSETTUPIDENTINT self) {
FSETTUPIDENTINT noname2881;
FSETTUPIDENTINT r_2882;
FSETTUPIDENTINT noname2883;
BOOL local0;
INT local1;
INT local2;
INT local3;
INT local4;
INT local5;
INT local6;
TUPIDENTINT local7;
if ((!((self==((FSETTUPIDENTINT) NULL))))) {
local1 = self->hsize;
local2 = (self->asize);
local3 = (c_INT_minus_INT_INT_chk(local2,1));
local0 = (local1<(c_INT_div_INT_INT_chk(local3,4)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/fset.sa:180:21\n");
exit(16);
}
local4 = (self->asize);
local5 = (c_INT_minus_INT_INT_chk(local4,1));
local6 = (c_INT_div_INT_INT_chk(local5,2));
r_2882 = FSETTUPIDENTINT__2381(self, (c_INT_plus_INT_INT_chk(local6,1)));
{
struct FSETTUPIDENTINT__2370_frame_struct temp2884_0;
FSETTUPIDENTINT__2370_frame
noname2885 = &temp2884_0;
noname2885->state = 0;
while (1) {
if (noname2885->state == 0) {
noname2883 = self;
noname2885->arg0 = noname2883;
}
local7 = FSETTUPIDENTINT__2370(noname2885);
if (noname2885->state == -1) goto after_loop;
r_2882 = FSETTUPIDENTINT__2394(r_2882, local7);
}
}
after_loop: ;
return r_2882;
}
FSETTUPIDENTINT FSETTUPIDENTINT__2886(FSETTUPIDENTINT self, TUPIDENTINT e_2887) {
FSETTUPIDENTINT noname2888;
INT h = ((INT) 0);
TUPIDENTINT te = TUPIDENTINT_zero;
INT i = ((INT) 0);
TUPIDENTINT te_2889 = TUPIDENTINT_zero;
INT hsh = ((INT) 0);
INT local0;
INT local1;
INT local2;
INT local3;
INT local4;
INT local5;
BOOL local6;
BOOL local7;
BOOL local8;
INT local9;
INT local10;
INT local11;
INT local12;
if ((self==((FSETTUPIDENTINT) NULL))) {
return ((FSETTUPIDENTINT) NULL);
}
local0 = FSETTUPIDENTINT_(self, e_2887);
local1 = (self->asize);
h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
while (1) {
te = FSETTUPIDENTINT__2336(self, h);
if (FSETTUPIDENTINT__2341(self, te, FSETTUPIDENTINT__2345(self))) {
return self;
}
else {
if (FSETTUPIDENTINT__2341(self, te, e_2887)) {
goto after_loop;
}
}
local2 = (self->asize);
if ((h==(c_INT_minus_INT_INT_chk(local2,2)))) {
h = 0;
}
else {
h = (c_INT_plus_INT_INT_chk(h,1));
}
}
after_loop: ;
FSETTUPIDENTINT__2395(self, h, FSETTUPIDENTINT__2345(self));
self->hsize = (c_INT_minus_INT_INT_chk(self->hsize,1));
i = h;
while (1) {
local3 = (self->asize);
if ((i==(c_INT_minus_INT_INT_chk(local3,2)))) {
i = 0;
}
else {
i = (c_INT_plus_INT_INT_chk(i,1));
}
te_2889 = FSETTUPIDENTINT__2336(self, i);
if (FSETTUPIDENTINT__2341(self, te_2889, FSETTUPIDENTINT__2345(self))) {
goto after_loop_2891;
}
local4 = FSETTUPIDENTINT_(self, te_2889);
local5 = (self->asize);
hsh = (local4&(c_INT_minus_INT_INT_chk(local5,2)));
if ((hsh<=i)) {
if ((h<i)) {
local6 = (h>=hsh);
} else {
local6 = FALSE;
}
if (local6) {
FSETTUPIDENTINT__2395(self, h, FSETTUPIDENTINT__2336(self, i));
h = i;
FSETTUPIDENTINT__2395(self, i, FSETTUPIDENTINT__2345(self));
}
}
else {
if ((h>=hsh)) {
local7 = TRUE;
} else {
local7 = (h<i);
}
if (local7) {
FSETTUPIDENTINT__2395(self, h, FSETTUPIDENTINT__2336(self, i));
h = i;
FSETTUPIDENTINT__2395(self, i, FSETTUPIDENTINT__2345(self));
}
}
}
after_loop_2891: ;
local9 = (self->asize);
if ((local9>=33)) {
local10 = self->hsize;
local11 = (self->asize);
local12 = (c_INT_minus_INT_INT_chk(local11,1));
local8 = (local10<(c_INT_div_INT_INT_chk(local12,4)));
} else {
local8 = FALSE;
}
if (local8) {
return FSETTUPIDENTINT__2880(self);
}
return self;
if (!FSETTUPIDENTINT__2333(self)) {
fprintf(stderr,"Failed invariant FSET{TUP{IDENT,INT}}::invariant:BOOL ../Library/fset.sa:188:9\n");
exit(16);
}
}
STR TP_ROUT_str_STR(TP_ROUT self) {
STR noname2893;
FSTR s_2894;
ARRAYTP noname2895;
STR noname2896;
BOOL local0;
FSTR local1;
STR local2;
TP local3;
TP local4;
FSTR local5;
TP local6;
if ((self==((TP_ROUT) NULL))) {
return ((STR) &void_2897);
}
if ((!((self->str_cache==((STR) NULL))))) {
}
else {
if ((self->args_7==((ARRAYTP) NULL))) {
local0 = (self->ret==((TP) NULL));
} else {
local0 = FALSE;
}
if (local0) {
self->str_cache = ((STR) &ROUT_2898);
}
else {
local1 = FSTR_create_FSTR(((FSTR) NULL));
s_2894 = FSTR_plus_STR_FSTR(local1, ((STR) &ROUT_2899));
if ((!((self->args_7==((ARRAYTP) NULL))))) {
s_2894 = FSTR_plus_CHAR_FSTR(s_2894, '{');
{
struct ARRAYTP_elt_TP_frame_struct temp2900_0;
ARRAYTP_elt_TP_frame
noname2901 = &temp2900_0;
struct STR_separate_STR_STR_frame_struct temp2900_1;
STR_separate_STR_STR_frame
noname2902 = &temp2900_1;
noname2901->state = 0;
noname2902->state = 0;
while (1) {
if (noname2902->state == 0) {
noname2896 = ((STR) &name_2903);
noname2902->arg0 = noname2896;
}
if (noname2901->state == 0) {
noname2895 = self->args_7;
noname2901->arg0 = noname2895;
}
local3 = ARRAYTP_elt_TP(noname2901);
if (noname2901->state == -1) goto after_loop;
local4 = local3;
noname2902->arg1 = (*TP_str_STR[local4->header.tag+TP_str_STR_offset])(local4);
local2 = STR_separate_STR_STR(noname2902);
if (noname2902->state == -1) goto after_loop;
s_2894 = FSTR_plus_STR_FSTR(s_2894, local2);
}
}
after_loop: ;
s_2894 = FSTR_plus_CHAR_FSTR(s_2894, '}');
}
if ((!((self->ret==((TP) NULL))))) {
local5 = FSTR_plus_CHAR_FSTR(s_2894, ':');
local6 = self->ret;
s_2894 = FSTR_plus_STR_FSTR(local5, (*TP_str_STR[local6->header.tag+TP_str_STR_offset])(local6));
}
self->str_cache = FSTR_str_STR(s_2894);
}
}
return self->str_cache;
}
STR TP_ITER_str_STR(TP_ITER self) {
STR noname2904;
FSTR s_2905;
ARRAYTP noname2906;
STR noname2907;
ARRAYBOOL noname2908;
BOOL local0;
FSTR local1;
STR local2;
TP local3;
TP local4;
BOOL local5;
BOOL local6;
FSTR local7;
TP local8;
if ((self==((TP_ITER) NULL))) {
return ((STR) &void_2909);
}
if ((!((self->str_cache==((STR) NULL))))) {
}
else {
if ((self->args_7==((ARRAYTP) NULL))) {
local0 = (self->ret==((TP) NULL));
} else {
local0 = FALSE;
}
if (local0) {
self->str_cache = ((STR) &ITER_2910);
}
else {
local1 = FSTR_create_FSTR(((FSTR) NULL));
s_2905 = FSTR_plus_STR_FSTR(local1, ((STR) &ITER_2911));
if ((!((self->args_7==((ARRAYTP) NULL))))) {
s_2905 = FSTR_plus_CHAR_FSTR(s_2905, '{');
{
struct ARRAYTP_elt_TP_frame_struct temp2912_0;
ARRAYTP_elt_TP_frame
noname2913 = &temp2912_0;
struct STR_separate_STR_STR_frame_struct temp2912_1;
STR_separate_STR_STR_frame
noname2914 = &temp2912_1;
struct ARRAYBOOL_elt_BOOL_frame_struct temp2912_2;
ARRAYBOOL_elt_BOOL_frame
noname2915 = &temp2912_2;
noname2913->state = 0;
noname2914->state = 0;
noname2915->state = 0;
while (1) {
if (noname2914->state == 0) {
noname2907 = ((STR) &name_2916);
noname2914->arg0 = noname2907;
}
if (noname2913->state == 0) {
noname2906 = self->args_7;
noname2913->arg0 = noname2906;
}
local3 = ARRAYTP_elt_TP(noname2913);
if (noname2913->state == -1) goto after_loop;
local4 = local3;
noname2914->arg1 = (*TP_str_STR[local4->header.tag+TP_str_STR_offset])(local4);
local2 = STR_separate_STR_STR(noname2914);
if (noname2914->state == -1) goto after_loop;
s_2905 = FSTR_plus_STR_FSTR(s_2905, local2);
if ((!((self->hot==((ARRAYBOOL) NULL))))) {
if (noname2915->state == 0) {
noname2908 = self->hot;
noname2915->arg0 = noname2908;
}
local6 = ARRAYBOOL_elt_BOOL(noname2915);
if (noname2915->state == -1) goto after_loop;
local5 = local6;
} else {
local5 = FALSE;
}
if (local5) {
s_2905 = FSTR_plus_CHAR_FSTR(s_2905, '!');
}
}
}
after_loop: ;
s_2905 = FSTR_plus_CHAR_FSTR(s_2905, '}');
}
if ((!((self->ret==((TP) NULL))))) {
local7 = FSTR_plus_CHAR_FSTR(s_2905, ':');
local8 = self->ret;
s_2905 = FSTR_plus_STR_FSTR(local7, (*TP_str_STR[local8->header.tag+TP_str_STR_offset])(local8));
}
self->str_cache = FSTR_str_STR(s_2905);
}
}
return self->str_cache;
}
IMPL IMPL_TBL_impl_of(IMPL_TBL self, TP t_2917) {
IMPL noname2918;
IMPL r_2919;
PROG local0;
STR local1;
STR local2;
FSETTUPIDENTINT local3;
TUPIDENTINT local4;
IDENT local5;
FSETTUPIDENTINT local6;
TUPIDENTINT local7;
IDENT local8;
FSETTUPIDENTINT local9;
TUPIDENTINT local10;
IDENT local11;
PROG local12;
STR local13;
STR local14;
PROG local15;
STR local16;
STR local17;
if (!((!((t_2917==((TP) NULL)))))) {
fprintf(stderr,"Violation of precondition ./impl.sa:182:10\n");
exit(16);
}
r_2919 = FMAPTPIMPL_get_T(self->tbl, t_2917);
if ((!((r_2919==((IMPL) NULL))))) {
return r_2919;
}
if (t_2917==NULL) {
} else
switch (t_2917->header.tag) {
case TP_CLASS_tag:
if (TP_CLASS_is_abst(((TP_CLASS) t_2917))) {
local0 = self->prog;
local1 = ((STR) &CompilererrorIMP_2920);
local2 = STR_plus_STR_STR(local1, TP_CLASS_str_STR(((TP_CLASS) t_2917)));
PROG_err_STR(local0, STR_plus_STR_STR(local2, ((STR) &name_2921)));
return ((IMPL) NULL);
}
local3 = self->cur;
local4 = TUPIDENTINT_zero;
local5 = ((TP_CLASS) t_2917)->name_19;
if (FSETTUPIDENTINT__2348(local3, TUPIDENTINT_crea(local4, local5, ARRAYTP_size_INT(((TP_CLASS) t_2917)->params)))) {
IMPL_TBL_cycle_err(self);
self->cur = FSETTUPIDENTINT__2374(self->cur);
return ((IMPL) NULL);
}
else {
local6 = self->cur;
local7 = TUPIDENTINT_zero;
local8 = ((TP_CLASS) t_2917)->name_19;
self->cur = FSETTUPIDENTINT__2394(local6, TUPIDENTINT_crea(local7, local8, ARRAYTP_size_INT(((TP_CLASS) t_2917)->params)));
r_2919 = IMPL_create_for_(((IMPL) NULL), t_2917);
self->tbl = FMAPTPIMPL_inser_2863(self->tbl, t_2917, r_2919);
local9 = self->cur;
local10 = TUPIDENTINT_zero;
local11 = ((TP_CLASS) t_2917)->name_19;
self->cur = FSETTUPIDENTINT__2886(local9, TUPIDENTINT_crea(local10, local11, ARRAYTP_size_INT(((TP_CLASS) t_2917)->params)));
return r_2919;
} break;
case TP_ROUT_tag:
local12 = self->prog;
local13 = ((STR) &CompilererrorIMP_2922);
local14 = STR_plus_STR_STR(local13, TP_ROUT_str_STR(((TP_ROUT) t_2917)));
PROG_err_STR(local12, STR_plus_STR_STR(local14, ((STR) &name_2923)));
return ((IMPL) NULL); break;
case TP_ITER_tag:
local15 = self->prog;
local16 = ((STR) &CompilererrorIMP_2924);
local17 = STR_plus_STR_STR(local16, TP_ITER_str_STR(((TP_ITER) t_2917)));
PROG_err_STR(local15, STR_plus_STR_STR(local17, ((STR) &name_2925)));
return ((IMPL) NULL); break;
default: ;
fprintf(stderr,"No applicable type in typecase ./impl.sa:187:14\n");
exit(16);
}
return ((IMPL) NULL);
}
void PROG_FIND_TYPES__2926(PROG_FIND_TYPES self, IMPL im) {
ELT e_2927;
ELT_TBL noname2928;
ELT local0;
if ((im==((IMPL) NULL))) {
return;
}
{
struct ELT_TBL_elt_ELT_frame_struct temp2929_0;
ELT_TBL_elt_ELT_frame
noname2930 = &temp2929_0;
noname2930->state = 0;
while (1) {
if (noname2930->state == 0) {
noname2928 = im->elts;
noname2930->arg0 = noname2928;
}
local0 = ELT_TBL_elt_ELT(noname2930);
if (noname2930->state == -1) goto after_loop;
e_2927 = local0;
self->con = e_2927->con;
PROG_FIND_TYPES__2312(self, ((TR_NODE) e_2927->tr));
}
}
after_loop: ;
}
TP FSETTP_first_elt_TP(FSETTP self) {
TP noname2931;
FSETTP noname2932;
TP r_2933;
TP local0;
if ((!((self==((FSETTP) NULL))))) {
{
struct FSETTP_aelt_TP_frame_struct temp2934_0;
FSETTP_aelt_TP_frame
noname2935 = &temp2934_0;
noname2935->state = 0;
while (1) {
if (noname2935->state == 0) {
noname2932 = self;
noname2935->arg0 = noname2932;
}
local0 = FSETTP_aelt_TP(noname2935);
if (noname2935->state == -1) goto after_loop;
r_2933 = local0;
if ((!(FSETTP_elt_eq_TP(self, r_2933, FSETTP_elt_nil_TP(self))))) {
return r_2933;
}
}
}
after_loop: ;
}
return FSETTP_elt_nil_TP(self);
if (!FSETTP_invariant(self)) {
fprintf(stderr,"Failed invariant FSET{$TP}::invariant:BOOL ../Library/fset.sa:105:12\n");
exit(16);
}
}
FSETTP FSETTP_halve_siz(FSETTP self) {
FSETTP noname2936;
FSETTP r_2937;
FSETTP noname2938;
BOOL local0;
INT local1;
INT local2;
INT local3;
INT local4;
INT local5;
INT local6;
TP local7;
if ((!((self==((FSETTP) NULL))))) {
local1 = self->hsize;
local2 = (self->asize);
local3 = (c_INT_minus_INT_INT_chk(local2,1));
local0 = (local1<(c_INT_div_INT_INT_chk(local3,4)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/fset.sa:180:21\n");
exit(16);
}
local4 = (self->asize);
local5 = (c_INT_minus_INT_INT_chk(local4,1));
local6 = (c_INT_div_INT_INT_chk(local5,2));
r_2937 = FSETTP_allocate_(self, (c_INT_plus_INT_INT_chk(local6,1)));
{
struct FSETTP_elt_TP_frame_struct temp2939_0;
FSETTP_elt_TP_frame
noname2940 = &temp2939_0;
noname2940->state = 0;
while (1) {
if (noname2940->state == 0) {
noname2938 = self;
noname2940->arg0 = noname2938;
}
local7 = FSETTP_elt_TP(noname2940);
if (noname2940->state == -1) goto after_loop;
r_2937 = FSETTP_insert_TP(r_2937, local7);
}
}
after_loop: ;
return r_2937;
}
FSETTP FSETTP_delete_TP(FSETTP self, TP e_2941) {
FSETTP noname2942;
INT h = ((INT) 0);
TP te;
INT i = ((INT) 0);
TP te_2943;
INT hsh = ((INT) 0);
INT local0;
INT local1;
INT local2;
INT local3;
INT local4;
INT local5;
BOOL local6;
BOOL local7;
BOOL local8;
INT local9;
INT local10;
INT local11;
INT local12;
if ((self==((FSETTP) NULL))) {
return ((FSETTP) NULL);
}
local0 = FSETTP_elt_hash_(self, e_2941);
local1 = (self->asize);
h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
while (1) {
te = FSETTP_aget_INT_TP(self, h);
if (FSETTP_elt_eq_TP(self, te, FSETTP_elt_nil_TP(self))) {
return self;
}
else {
if (FSETTP_elt_eq_TP(self, te, e_2941)) {
goto after_loop;
}
}
local2 = (self->asize);
if ((h==(c_INT_minus_INT_INT_chk(local2,2)))) {
h = 0;
}
else {
h = (c_INT_plus_INT_INT_chk(h,1));
}
}
after_loop: ;
FSETTP_aset_INT_TP(self, h, FSETTP_elt_nil_TP(self));
self->hsize = (c_INT_minus_INT_INT_chk(self->hsize,1));
i = h;
while (1) {
local3 = (self->asize);
if ((i==(c_INT_minus_INT_INT_chk(local3,2)))) {
i = 0;
}
else {
i = (c_INT_plus_INT_INT_chk(i,1));
}
te_2943 = FSETTP_aget_INT_TP(self, i);
if (FSETTP_elt_eq_TP(self, te_2943, FSETTP_elt_nil_TP(self))) {
goto after_loop_2945;
}
local4 = FSETTP_elt_hash_(self, te_2943);
local5 = (self->asize);
hsh = (local4&(c_INT_minus_INT_INT_chk(local5,2)));
if ((hsh<=i)) {
if ((h<i)) {
local6 = (h>=hsh);
} else {
local6 = FALSE;
}
if (local6) {
FSETTP_aset_INT_TP(self, h, FSETTP_aget_INT_TP(self, i));
h = i;
FSETTP_aset_INT_TP(self, i, FSETTP_elt_nil_TP(self));
}
}
else {
if ((h>=hsh)) {
local7 = TRUE;
} else {
local7 = (h<i);
}
if (local7) {
FSETTP_aset_INT_TP(self, h, FSETTP_aget_INT_TP(self, i));
h = i;
FSETTP_aset_INT_TP(self, i, FSETTP_elt_nil_TP(self));
}
}
}
after_loop_2945: ;
local9 = (self->asize);
if ((local9>=33)) {
local10 = self->hsize;
local11 = (self->asize);
local12 = (c_INT_minus_INT_INT_chk(local11,1));
local8 = (local10<(c_INT_div_INT_INT_chk(local12,4)));
} else {
local8 = FALSE;
}
if (local8) {
return FSETTP_halve_siz(self);
}
return self;
if (!FSETTP_invariant(self)) {
fprintf(stderr,"Failed invariant FSET{$TP}::invariant:BOOL ../Library/fset.sa:188:9\n");
exit(16);
}
}
void PROG_FIND_TYPES__2947(PROG_FIND_TYPES self) {
FSETTP noname2948;
STR noname2949;
OUT local0;
OUT local1;
STR local2;
TP local3;
TP local4;
OUT local5;
local0 = OUT_create_OUT(((OUT) NULL));
OUT_plus_STR(local0, ((STR) &PROG_FIND_TYPES_2950));
if ((!((self->tp_done==((FSETTP) NULL))))) {
{
struct FSETTP_elt_TP_frame_struct temp2951_0;
FSETTP_elt_TP_frame
noname2952 = &temp2951_0;
struct STR_separate_STR_STR_frame_struct temp2951_1;
STR_separate_STR_STR_frame
noname2953 = &temp2951_1;
noname2952->state = 0;
noname2953->state = 0;
while (1) {
local1 = OUT_create_OUT(((OUT) NULL));
if (noname2953->state == 0) {
noname2949 = ((STR) &name_2954);
noname2953->arg0 = noname2949;
}
if (noname2952->state == 0) {
noname2948 = self->tp_done;
noname2952->arg0 = noname2948;
}
local3 = FSETTP_elt_TP(noname2952);
if (noname2952->state == -1) goto after_loop;
local4 = local3;
noname2953->arg1 = (*TP_str_STR[local4->header.tag+TP_str_STR_offset])(local4);
local2 = STR_separate_STR_STR(noname2953);
if (noname2953->state == -1) goto after_loop;
OUT_plus_STR(local1, local2);
}
}
after_loop: ;
}
local5 = OUT_create_OUT(((OUT) NULL));
OUT_plus_STR(local5, ((STR) &name_2955));
}
void PROG_FIND_TYPES__2956(PROG_FIND_TYPES self) {
BOOL got_all = ((BOOL) 0);
TR_CLASS_DEF tcd;
PROG_TR_TBL noname2957;
TP_CLASS tp_2958;
TP fe;
TP_CLASS ctp = ((TP_CLASS) NULL);
TR_CLASS_DEF tcd_2959;
TR_CLASS_DEF local0;
INT local1;
IDENT local2;
while (1) {
got_all = TRUE;
{
struct PROG_TR_TBL_elt__2054_frame_struct temp2962_0;
PROG_TR_TBL_elt__2054_frame
noname2963 = &temp2962_0;
noname2963->state = 0;
while (1) {
if (noname2963->state == 0) {
noname2957 = self->prog->prog_parse->tr_tbl;
noname2963->arg0 = noname2957;
}
local0 = PROG_TR_TBL_elt__2054(noname2963);
if (noname2963->state == -1) goto after_loop_2961;
tcd = local0;
local1 = TR_PARAM_DEC_siz(tcd->params);
if ((local1==0)) {
tp_2958 = TP_TBL_tp_class_(self->prog->tp_tbl, tcd->name_19, ((ARRAYTP) NULL));
if ((!(FSETTP_test_TP_BOOL(self->tp_done, ((TP) tp_2958))))) {
got_all = FALSE;
self->con = PROG_tp_context_(self->prog, tp_2958);
self->tp_done = FSETTP_insert_TP(self->tp_done, ((TP) tp_2958));
PROG_FIND_TYPES__2312(self, ((TR_NODE) tcd));
if (TP_CLASS_is_abst(tp_2958)) {
PROG_FIND_TYPES__2316(self, tcd);
}
else {
PROG_FIND_TYPES__2926(self, IMPL_TBL_impl_of(self->prog->impl_tbl, ((TP) tp_2958)));
}
}
}
}
}
after_loop_2961: ;
if (got_all) {
goto after_loop;
}
}
after_loop: ;
fe = FSETTP_first_elt_TP(self->tp_todo);
while (1) {
if ((!((fe==((TP) NULL))))) {
}
else {
goto after_loop_2964;
}
self->tp_todo = FSETTP_delete_TP(self->tp_todo, fe);
if ((!(FSETTP_test_TP_BOOL(self->tp_done, fe)))) {
if (fe==NULL) {
} else
switch (fe->header.tag) {
case TP_CLASS_tag:
ctp = ((TP_CLASS) fe); break;
default: ;
fprintf(stderr,"No applicable type in typecase ./prog.sa:414:20\n");
exit(16);
}
local2 = ctp->name_19;
tcd_2959 = PROG_FIND_TYPES__2252(self, local2, ARRAYTP_size_INT(ctp->params));
self->con = PROG_tp_context_(self->prog, ctp);
self->tp_done = FSETTP_insert_TP(self->tp_done, ((TP) ctp));
if ((!((tcd_2959==((TR_CLASS_DEF) NULL))))) {
PROG_FIND_TYPES__2312(self, ((TR_NODE) tcd_2959));
if (TP_CLASS_is_abst(ctp)) {
PROG_FIND_TYPES__2316(self, tcd_2959);
}
else {
PROG_FIND_TYPES__2926(self, IMPL_TBL_impl_of(self->prog->impl_tbl, ((TP) ctp)));
}
}
}
fe = FSETTP_first_elt_TP(self->tp_todo);
}
after_loop_2964: ;
if (self->prog->show_types) {
PROG_FIND_TYPES__2947(self);
}
}
void PROG_do_find_typ(PROG self) {
PROG_FIND_TYPES__2956(self->prog_find_types);
}
TP_CLASS FMAPTP_CLASSFSET_2966(FMAPTP_CLASSFSET self) {
TP_CLASS noname2967;
TP_CLASS k = ((TP_CLASS) NULL);
return ((TP_CLASS) NULL);
if (!FMAPTP_CLASSFSET_2968(self)) {
fprintf(stderr,"Failed invariant FMAP{TP_CLASS,FSET{TP_CLASS}}::invariant:BOOL ../Library/fmap.sa:54:10\n");
exit(16);
}
}
TUPTP_CLASSFSETT TUPTP_CLASSFSETT_2969(TUPTP_CLASSFSETT self, TP_CLASS t1_2970) {
TUPTP_CLASSFSETT local0;
local0 = self;
local0.t1 = t1_2970;
return local0;
}
TUPTP_CLASSFSETT TUPTP_CLASSFSETT_2971(TUPTP_CLASSFSETT self, FSETTP_CLASS t2_2972) {
TUPTP_CLASSFSETT local0;
local0 = self;
local0.t2 = t2_2972;
return local0;
}
TUPTP_CLASSFSETT TUPTP_CLASSFSETT_2973(TUPTP_CLASSFSETT self, TP_CLASS at1, FSETTP_CLASS at2) {
TUPTP_CLASSFSETT noname2974 = TUPTP_CLASSFSETT_zero;
TUPTP_CLASSFSETT local0;
local0 = TUPTP_CLASSFSETT_2969(self, at1);
return TUPTP_CLASSFSETT_2971(local0, at2);
}
INT FMAPTP_CLASSFSET_2975(FMAPTP_CLASSFSET self, TP_CLASS k) {
INT noname2976 = ((INT) 0);
return (c_SYS_id_OB_INT(((SYS) NULL),((OB) k)));
if (!FMAPTP_CLASSFSET_2968(self)) {
fprintf(stderr,"Failed invariant FMAP{TP_CLASS,FSET{TP_CLASS}}::invariant:BOOL ../Library/fmap.sa:64:11\n");
exit(16);
}
}
INT FMAPTP_CLASSFSET_2977(FMAPTP_CLASSFSET self) {
INT noname2978 = ((INT) 0);
return self->asize;
fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
exit(16);
}
TUPTP_CLASSFSETT FMAPTP_CLASSFSET_2979(FMAPTP_CLASSFSET self, INT ind_2980) {
TUPTP_CLASSFSETT noname2981 = TUPTP_CLASSFSETT_zero;
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FMAPTP_CLASSFSET) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_2980, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
exit(16);
}
if (ind_2980<0||ind_2980>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
exit(16);
}
return self->arr_part[ind_2980];
}
BOOL FMAPTP_CLASSFSET_2982(FMAPTP_CLASSFSET self, TP_CLASS k1, TP_CLASS k2) {
BOOL noname2983 = ((BOOL) 0);
return c_SYS_ob_eq_OB_OB_BOOL(((OB) k1),((OB) k2));
if (!FMAPTP_CLASSFSET_2968(self)) {
fprintf(stderr,"Failed invariant FMAP{TP_CLASS,FSET{TP_CLASS}}::invariant:BOOL ../Library/fmap.sa:44:9\n");
exit(16);
}
}
TUPTP_CLASSFSETT FMAPTP_CLASSFSET_2984(FMAPTP_CLASSFSET self, TP_CLASS k) {
TUPTP_CLASSFSETT noname2985 = TUPTP_CLASSFSETT_zero;
INT h = ((INT) 0);
TP_CLASS tk;
TP_CLASS tk_2986;
TUPTP_CLASSFSETT local0;
TP_CLASS local1;
INT local2;
INT local3;
INT local4;
INT local5;
TUPTP_CLASSFSETT local6;
TP_CLASS local7;
if ((self==((FMAPTP_CLASSFSET) NULL))) {
local0 = TUPTP_CLASSFSETT_zero;
local1 = FMAPTP_CLASSFSET_2966(self);
return TUPTP_CLASSFSETT_2973(local0, local1, ((FSETTP_CLASS) NULL));
}
local2 = FMAPTP_CLASSFSET_2975(self, k);
local3 = (self->asize);
h = (local2&(c_INT_minus_INT_INT_chk(local3,2)));
while (1) {
tk = (TUPTP_CLASSFSETT_blob=FMAPTP_CLASSFSET_2979(self, h)).t1;
if (FMAPTP_CLASSFSET_2982(self, tk, k)) {
return FMAPTP_CLASSFSET_2979(self, h);
}
else {
if (FMAPTP_CLASSFSET_2982(self, tk, FMAPTP_CLASSFSET_2966(self))) {
goto after_loop;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
local4 = (self->asize);
if ((h==(c_INT_minus_INT_INT_chk(local4,1)))) {
h = 0;
while (1) {
tk_2986 = (TUPTP_CLASSFSETT_blob=FMAPTP_CLASSFSET_2979(self, h)).t1;
if (FMAPTP_CLASSFSET_2982(self, tk_2986, k)) {
return FMAPTP_CLASSFSET_2979(self, h);
}
else {
if (FMAPTP_CLASSFSET_2982(self, tk_2986, FMAPTP_CLASSFSET_2966(self))) {
goto after_loop_2988;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_2988: ;
local5 = (self->asize);
if (!((h!=(c_INT_minus_INT_INT_chk(local5,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fmap.sa:169:15\n");
exit(16);
}
}
local6 = TUPTP_CLASSFSETT_zero;
local7 = FMAPTP_CLASSFSET_2966(self);
return TUPTP_CLASSFSETT_2973(local6, local7, ((FSETTP_CLASS) NULL));
if (!FMAPTP_CLASSFSET_2968(self)) {
fprintf(stderr,"Failed invariant FMAP{TP_CLASS,FSET{TP_CLASS}}::invariant:BOOL ../Library/fmap.sa:153:11\n");
exit(16);
}
}
TR_CLASS_DEF PROG_tree_head_f(PROG self, IDENT nm_2990, INT num_2991) {
TR_CLASS_DEF noname2992;
return PROG_PARSE_tree_(self->prog_parse, nm_2990, num_2991);
}
TP_CLASS FSETTP_CLASS_elt(FSETTP_CLASS self) {
TP_CLASS noname2993;
TP_CLASS t_2994 = ((TP_CLASS) NULL);
return ((TP_CLASS) NULL);
if (!FSETTP_CLASS_inv(self)) {
fprintf(stderr,"Failed invariant FSET{TP_CLASS}::invariant:BOOL ../Library/fset.sa:53:10\n");
exit(16);
}
}
FSETTP_CLASS FSETTP_CLASS_all(FSETTP_CLASS self, INT n_2995) {
FSETTP_CLASS noname2996;
FSETTP_CLASS r_2997;
FSETTP_CLASS noname2998;
FSETTP_CLASS local0;
local0 = ((FSETTP_CLASS) sbi_arr_alloc(sizeof(struct FSETTP_CLASS_struct), FSETTP_CLASS_tag, sizeof(TP_CLASS) , n_2995));
local0->asize = n_2995;
r_2997 = local0;
if ((!((FSETTP_CLASS_elt(self)==((TP_CLASS) NULL))))) {
{
struct FSETTP_CLASS_ase_frame_struct temp2999_0;
FSETTP_CLASS_ase_frame
noname3000 = &temp2999_0;
noname3000->state = 0;
while (1) {
if (noname3000->state == 0) {
noname2998 = r_2997;
noname3000->arg0 = noname2998;
}
noname3000->arg1 = FSETTP_CLASS_elt(self);
FSETTP_CLASS_ase(noname3000);
if (noname3000->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
}
return r_2997;
}
INT FSETTP_CLASS_asi(FSETTP_CLASS self) {
INT noname3001 = ((INT) 0);
return self->asize;
fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
exit(16);
}
FSETTP_CLASS FSETTP_CLASS_dou(FSETTP_CLASS self) {
FSETTP_CLASS noname3002;
FSETTP_CLASS r_3003;
FSETTP_CLASS noname3004;
INT local0;
INT local1;
INT local2;
TP_CLASS local3;
if (!((!((self==((FSETTP_CLASS) NULL)))))) {
fprintf(stderr,"Violation of precondition ../Library/fset.sa:150:22\n");
exit(16);
}
local0 = (self->asize);
local1 = (c_INT_minus_INT_INT_chk(local0,1));
local2 = (c_INT_times_INT_INT_chk(local1,2));
r_3003 = FSETTP_CLASS_all(self, (c_INT_plus_INT_INT_chk(local2,1)));
{
struct FSETTP_CLASS_elt_3006_frame_struct temp3005_0;
FSETTP_CLASS_elt_3006_frame
noname3007 = &temp3005_0;
noname3007->state = 0;
while (1) {
if (noname3007->state == 0) {
noname3004 = self;
noname3007->arg0 = noname3004;
}
local3 = FSETTP_CLASS_elt_3006(noname3007);
if (noname3007->state == -1) goto after_loop;
r_3003 = FSETTP_CLASS_ins(r_3003, local3);
}
}
after_loop: ;
return r_3003;
}
INT FSETTP_CLASS_elt_3008(FSETTP_CLASS self, TP_CLASS e_3009) {
INT noname3010 = ((INT) 0);
return (c_SYS_id_OB_INT(((SYS) NULL),((OB) e_3009)));
if (!FSETTP_CLASS_inv(self)) {
fprintf(stderr,"Failed invariant FSET{TP_CLASS}::invariant:BOOL ../Library/fset.sa:63:11\n");
exit(16);
}
}
TP_CLASS FSETTP_CLASS_age(FSETTP_CLASS self, INT ind_3011) {
TP_CLASS noname3012;
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FSETTP_CLASS) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_3011, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
exit(16);
}
if (ind_3011<0||ind_3011>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
exit(16);
}
return self->arr_part[ind_3011];
if (!FSETTP_CLASS_inv(self)) {
fprintf(stderr,"Failed invariant FSET{TP_CLASS}::invariant:BOOL ../Library/aref.sa:33:7\n");
exit(16);
}
}
BOOL FSETTP_CLASS_elt_3013(FSETTP_CLASS self, TP_CLASS e1_3014, TP_CLASS e2_3015) {
BOOL noname3016 = ((BOOL) 0);
return c_SYS_ob_eq_OB_OB_BOOL(((OB) e1_3014),((OB) e2_3015));
if (!FSETTP_CLASS_inv(self)) {
fprintf(stderr,"Failed invariant FSET{TP_CLASS}::invariant:BOOL ../Library/fset.sa:44:9\n");
exit(16);
}
}
void FSETTP_CLASS_ase_3017(FSETTP_CLASS self, INT ind_3018, TP_CLASS val_3019) {
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FSETTP_CLASS) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_3018, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
exit(16);
}
if (ind_3018<0||ind_3018>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
exit(16);
}
self->arr_part[ind_3018] = val_3019;
if (!FSETTP_CLASS_inv(self)) {
fprintf(stderr,"Failed invariant FSET{TP_CLASS}::invariant:BOOL ../Library/aref.sa:38:7\n");
exit(16);
}
}
FSETTP_CLASS FSETTP_CLASS_ins(FSETTP_CLASS self, TP_CLASS e_3020) {
FSETTP_CLASS noname3021;
FSETTP_CLASS r_3022;
INT asz_3023 = ((INT) 0);
INT h = ((INT) 0);
TP_CLASS te;
TP_CLASS te_3024;
INT local0;
INT local1;
INT local2;
r_3022 = self;
if ((r_3022==((FSETTP_CLASS) NULL))) {
r_3022 = FSETTP_CLASS_all(self, 5);
}
else {
local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
local1 = (c_INT_times_INT_INT_chk(local0,2));
if ((local1>(self->asize))) {
r_3022 = FSETTP_CLASS_dou(self);
}
}
asz_3023 = (r_3022->asize);
local2 = FSETTP_CLASS_elt_3008(r_3022, e_3020);
h = (local2&(c_INT_minus_INT_INT_chk(asz_3023,2)));
while (1) {
te = FSETTP_CLASS_age(r_3022, h);
if (FSETTP_CLASS_elt_3013(self, te, FSETTP_CLASS_elt(self))) {
goto after_loop;
}
else {
if (FSETTP_CLASS_elt_3013(self, te, e_3020)) {
FSETTP_CLASS_ase_3017(r_3022, h, e_3020);
return r_3022;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
if ((h==(c_INT_minus_INT_INT_chk(asz_3023,1)))) {
h = 0;
while (1) {
te_3024 = FSETTP_CLASS_age(r_3022, h);
if (FSETTP_CLASS_elt_3013(self, te_3024, FSETTP_CLASS_elt(self))) {
goto after_loop_3026;
}
else {
if (FSETTP_CLASS_elt_3013(self, te_3024, e_3020)) {
FSETTP_CLASS_ase_3017(r_3022, h, e_3020);
return r_3022;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_3026: ;
if (!((h!=(c_INT_minus_INT_INT_chk(asz_3023,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fset.sa:177:15\n");
exit(16);
}
}
FSETTP_CLASS_ase_3017(r_3022, h, e_3020);
r_3022->hsize = (c_INT_plus_INT_INT_chk(r_3022->hsize,1));
return r_3022;
if (!FSETTP_CLASS_inv(self)) {
fprintf(stderr,"Failed invariant FSET{TP_CLASS}::invariant:BOOL ../Library/fset.sa:158:9\n");
exit(16);
}
}
FMAPTP_CLASSFSET FMAPTP_CLASSFSET_3028(FMAPTP_CLASSFSET self, INT n_3029) {
FMAPTP_CLASSFSET noname3030;
FMAPTP_CLASSFSET r_3031;
FMAPTP_CLASSFSET noname3032;
FMAPTP_CLASSFSET local0;
TUPTP_CLASSFSETT local1;
TP_CLASS local2;
local0 = ((FMAPTP_CLASSFSET) sbi_arr_alloc(sizeof(struct FMAPTP_CLASSFSET_struct), FMAPTP_CLASSFSET_tag, sizeof(TUPTP_CLASSFSETT) , n_3029));
local0->asize = n_3029;
r_3031 = local0;
if ((!((FMAPTP_CLASSFSET_2966(self)==((TP_CLASS) NULL))))) {
{
struct FMAPTP_CLASSFSET_3034_frame_struct temp3033_0;
FMAPTP_CLASSFSET_3034_frame
noname3035 = &temp3033_0;
noname3035->state = 0;
while (1) {
if (noname3035->state == 0) {
noname3032 = r_3031;
noname3035->arg0 = noname3032;
}
local1 = TUPTP_CLASSFSETT_zero;
local2 = FMAPTP_CLASSFSET_2966(self);
noname3035->arg1 = TUPTP_CLASSFSETT_2973(local1, local2, ((FSETTP_CLASS) NULL));
FMAPTP_CLASSFSET_3034(noname3035);
if (noname3035->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
}
return r_3031;
}
FMAPTP_CLASSFSET FMAPTP_CLASSFSET_3036(FMAPTP_CLASSFSET self, TUPTP_CLASSFSETT p) {
FMAPTP_CLASSFSET noname3037;
return FMAPTP_CLASSFSET_3038(self, p.t1, p.t2);
if (!FMAPTP_CLASSFSET_2968(self)) {
fprintf(stderr,"Failed invariant FMAP{TP_CLASS,FSET{TP_CLASS}}::invariant:BOOL ../Library/fmap.sa:202:14\n");
exit(16);
}
}
FMAPTP_CLASSFSET FMAPTP_CLASSFSET_3039(FMAPTP_CLASSFSET self) {
FMAPTP_CLASSFSET noname3040;
INT ns = ((INT) 0);
FMAPTP_CLASSFSET r_3041;
FMAPTP_CLASSFSET noname3042;
INT local0;
INT local1;
INT local2;
TUPTP_CLASSFSETT local3;
if (!((!((self==((FMAPTP_CLASSFSET) NULL)))))) {
fprintf(stderr,"Violation of precondition ../Library/fmap.sa:172:22\n");
exit(16);
}
local0 = (self->asize);
local1 = (c_INT_minus_INT_INT_chk(local0,1));
local2 = (c_INT_times_INT_INT_chk(local1,2));
ns = (c_INT_plus_INT_INT_chk(local2,1));
r_3041 = FMAPTP_CLASSFSET_3028(self, ns);
{
struct FMAPTP_CLASSFSET_3044_frame_struct temp3043_0;
FMAPTP_CLASSFSET_3044_frame
noname3045 = &temp3043_0;
noname3045->state = 0;
while (1) {
if (noname3045->state == 0) {
noname3042 = self;
noname3045->arg0 = noname3042;
}
local3 = FMAPTP_CLASSFSET_3044(noname3045);
if (noname3045->state == -1) goto after_loop;
r_3041 = FMAPTP_CLASSFSET_3036(r_3041, local3);
}
}
after_loop: ;
return r_3041;
}
void FMAPTP_CLASSFSET_3046(FMAPTP_CLASSFSET self, INT ind_3047, TUPTP_CLASSFSETT val_3048) {
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FMAPTP_CLASSFSET) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_3047, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
exit(16);
}
if (ind_3047<0||ind_3047>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
exit(16);
}
self->arr_part[ind_3047] = val_3048;
}
FMAPTP_CLASSFSET FMAPTP_CLASSFSET_3038(FMAPTP_CLASSFSET self, TP_CLASS k, FSETTP_CLASS t_3049) {
FMAPTP_CLASSFSET noname3050;
FMAPTP_CLASSFSET r_3051;
INT h = ((INT) 0);
INT asm_3052 = ((INT) 0);
TP_CLASS tk;
TP_CLASS tk_3053;
INT local0;
INT local1;
INT local2;
INT local3;
INT local4;
r_3051 = self;
if ((r_3051==((FMAPTP_CLASSFSET) NULL))) {
r_3051 = FMAPTP_CLASSFSET_3028(self, 5);
}
else {
local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
local1 = (c_INT_times_INT_INT_chk(local0,2));
if ((local1>(self->asize))) {
r_3051 = FMAPTP_CLASSFSET_3039(self);
}
}
local2 = FMAPTP_CLASSFSET_2975(r_3051, k);
local3 = (r_3051->asize);
h = (local2&(c_INT_minus_INT_INT_chk(local3,2)));
local4 = (r_3051->asize);
asm_3052 = (c_INT_minus_INT_INT_chk(local4,1));
while (1) {
tk = (TUPTP_CLASSFSETT_blob=FMAPTP_CLASSFSET_2979(r_3051, h)).t1;
if (FMAPTP_CLASSFSET_2982(self, tk, FMAPTP_CLASSFSET_2966(self))) {
goto after_loop;
}
if (FMAPTP_CLASSFSET_2982(self, tk, k)) {
FMAPTP_CLASSFSET_3046(r_3051, h, TUPTP_CLASSFSETT_2973(TUPTP_CLASSFSETT_zero, k, t_3049));
return r_3051;
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
if ((h==asm_3052)) {
h = 0;
while (1) {
tk_3053 = (TUPTP_CLASSFSETT_blob=FMAPTP_CLASSFSET_2979(r_3051, h)).t1;
if (FMAPTP_CLASSFSET_2982(self, tk_3053, FMAPTP_CLASSFSET_2966(self))) {
goto after_loop_3055;
}
if (FMAPTP_CLASSFSET_2982(self, tk_3053, k)) {
FMAPTP_CLASSFSET_3046(r_3051, h, TUPTP_CLASSFSETT_2973(TUPTP_CLASSFSETT_zero, k, t_3049));
return r_3051;
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_3055: ;
if (!((h!=asm_3052))) {
fprintf(stderr,"Violation of assertion ../Library/fmap.sa:199:15\n");
exit(16);
}
}
FMAPTP_CLASSFSET_3046(r_3051, h, TUPTP_CLASSFSETT_2973(TUPTP_CLASSFSETT_zero, k, t_3049));
r_3051->hsize = (c_INT_plus_INT_INT_chk(r_3051->hsize,1));
return r_3051;
if (!FMAPTP_CLASSFSET_2968(self)) {
fprintf(stderr,"Failed invariant FMAP{TP_CLASS,FSET{TP_CLASS}}::invariant:BOOL ../Library/fmap.sa:180:9\n");
exit(16);
}
}
FSETTP_CLASS TP_GRAPH_ANC_get(TP_GRAPH_ANC self, TP_CLASS t_3057) {
FSETTP_CLASS noname3058;
TUPTP_CLASSFSETT p = TUPTP_CLASSFSETT_zero;
TR_CLASS_DEF tr_3059;
TP_CONTEXT con_3060;
FSETTP_CLASS r_3061 = ((FSETTP_CLASS) NULL);
TR_TYPE_SPEC ts;
TP tp_3062;
PROG local0;
IDENT local1;
BOOL local2;
PROG local3;
STR local4;
STR local5;
STR local6;
TP local7;
STR local8;
PROG local9;
STR local10;
STR local11;
STR local12;
STR local13;
PROG local14;
STR local15;
STR local16;
STR local17;
TP local18;
STR local19;
p = FMAPTP_CLASSFSET_2984(self->par_tbl, t_3057);
if ((!((p.t1==((TP_CLASS) NULL))))) {
return p.t2;
}
local0 = self->prog;
local1 = t_3057->name_19;
tr_3059 = PROG_tree_head_f(local0, local1, ARRAYTP_size_INT(t_3057->params));
if ((tr_3059==((TR_CLASS_DEF) NULL))) {
local2 = TRUE;
} else {
local2 = (tr_3059->under==((TR_TYPE_SPEC) NULL));
}
if (local2) {
return ((FSETTP_CLASS) NULL);
}
con_3060 = PROG_tp_context_(self->prog, t_3057);
ts = tr_3059->under;
while (1) {
if ((ts==((TR_TYPE_SPEC) NULL))) {
goto after_loop;
}
PROG_err_loc_PRO(self->prog, ((PROG_ERR) ts));
tp_3062 = TP_CONTEXT_tp_of(con_3060, ts);
if (tp_3062==NULL) {
local3 = self->prog;
local4 = ((STR) &Intype);
local5 = STR_plus_STR_STR(local4, TP_CLASS_str_STR(t_3057));
local6 = STR_plus_STR_STR(local5, ((STR) &thetype));
local7 = tp_3062;
local8 = STR_plus_STR_STR(local6, (*TP_str_STR[local7->header.tag+TP_str_STR_offset])(local7));
PROG_err_STR(local3, STR_plus_STR_STR(local8, ((STR) &appearsinthesupe)));
} else
switch (tp_3062->header.tag) {
case TP_CLASS_tag:
if ((!(TP_CLASS_is_abst(((TP_CLASS) tp_3062))))) {
local9 = self->prog;
local10 = ((STR) &Intype_3064);
local11 = STR_plus_STR_STR(local10, TP_CLASS_str_STR(t_3057));
local12 = STR_plus_STR_STR(local11, ((STR) &thetype_3065));
local13 = STR_plus_STR_STR(local12, TP_CLASS_str_STR(((TP_CLASS) tp_3062)));
PROG_err_STR(local9, STR_plus_STR_STR(local13, ((STR) &appearsinthesupe_3066)));
}
else {
r_3061 = FSETTP_CLASS_ins(r_3061, ((TP_CLASS) tp_3062));
} break;
default: ;
local14 = self->prog;
local15 = ((STR) &Intype_3067);
local16 = STR_plus_STR_STR(local15, TP_CLASS_str_STR(t_3057));
local17 = STR_plus_STR_STR(local16, ((STR) &thetype_3068));
local18 = tp_3062;
local19 = STR_plus_STR_STR(local17, (*TP_str_STR[local18->header.tag+TP_str_STR_offset])(local18));
PROG_err_STR(local14, STR_plus_STR_STR(local19, ((STR) &appearsinthesupe_3069)));
}
ts = ts->next_8;
}
after_loop: ;
self->par_tbl = FMAPTP_CLASSFSET_3038(self->par_tbl, t_3057, r_3061);
return r_3061;
}
STR TP_GRAPH_ANC_tup(TP_GRAPH_ANC self, TUPIDENTINT t_3070) {
STR noname3071;
STR r_3072;
INT noname3073 = ((INT) 0);
STR noname3074;
INT local0;
INT noname3077t;
STR local1;
r_3072 = t_3070.t1.str_4;
if ((t_3070.t2==0)) {
return r_3072;
}
r_3072 = STR_plus_STR_STR(r_3072, ((STR) &name_3075));
{
BOOL noname3077 = TRUE;
struct STR_separate_STR_STR_frame_struct temp3076_0;
STR_separate_STR_STR_frame
noname3078 = &temp3076_0;
noname3078->state = 0;
while (1) {
if (noname3077) {
noname3077 = FALSE;
noname3073 = t_3070.t2;
local0 = noname3073;
noname3077t = local0;
} else {
noname3077t--;
}
if (noname3077t<=0) goto after_loop;
0 /* no return value from inlined iter */;
if (noname3078->state == 0) {
noname3074 = ((STR) &name_3079);
noname3078->arg0 = noname3074;
}
noname3078->arg1 = ((STR) &S__3080);
local1 = STR_separate_STR_STR(noname3078);
if (noname3078->state == -1) goto after_loop;
r_3072 = STR_plus_STR_STR(r_3072, local1);
}
}
after_loop: ;
r_3072 = STR_plus_STR_STR(r_3072, ((STR) &name_3081));
return r_3072;
}
FSETTP_CLASS FSETTP_CLASS_to_(FSETTP_CLASS self, FSETTP_CLASS s_3082) {
FSETTP_CLASS noname3083;
FSETTP_CLASS r_3084;
FSETTP_CLASS noname3085;
TP_CLASS local0;
r_3084 = self;
{
struct FSETTP_CLASS_elt_3006_frame_struct temp3086_0;
FSETTP_CLASS_elt_3006_frame
noname3087 = &temp3086_0;
noname3087->state = 0;
while (1) {
if (noname3087->state == 0) {
noname3085 = s_3082;
noname3087->arg0 = noname3085;
}
local0 = FSETTP_CLASS_elt_3006(noname3087);
if (noname3087->state == -1) goto after_loop;
r_3084 = FSETTP_CLASS_ins(r_3084, local0);
}
}
after_loop: ;
return r_3084;
if (!FSETTP_CLASS_inv(self)) {
fprintf(stderr,"Failed invariant FSET{TP_CLASS}::invariant:BOOL ../Library/fset.sa:252:11\n");
exit(16);
}
}
FSETTP_CLASS TP_GRAPH_ANC_get_3088(TP_GRAPH_ANC self, TP_CLASS t_3089) {
FSETTP_CLASS noname3090;
TUPTP_CLASSFSETT p = TUPTP_CLASSFSETT_zero;
FSETTP_CLASS par;
TUPIDENTINT cq = TUPIDENTINT_zero;
TR_CLASS_DEF tr_3091;
FSTR s_3092;
FSETTUPIDENTINT noname3093;
STR noname3094;
FSETTP_CLASS r_3095 = ((FSETTP_CLASS) NULL);
FSETTP_CLASS noname3096;
TP_CLASS t2_3097;
TUPIDENTINT local0;
IDENT local1;
PROG local2;
IDENT local3;
FSTR local4;
STR local5;
TUPIDENTINT local6;
PROG local7;
TP_CLASS local8;
p = FMAPTP_CLASSFSET_2984(self->anc_tbl, t_3089);
if ((!((p.t1==((TP_CLASS) NULL))))) {
return p.t2;
}
par = TP_GRAPH_ANC_get(self, t_3089);
if ((par==((FSETTP_CLASS) NULL))) {
return ((FSETTP_CLASS) NULL);
}
local0 = TUPIDENTINT_zero;
local1 = t_3089->name_19;
cq = TUPIDENTINT_crea(local0, local1, ARRAYTP_size_INT(t_3089->params));
if (FSETTUPIDENTINT__2348(self->cur, cq)) {
local2 = self->prog;
local3 = t_3089->name_19;
tr_3091 = PROG_tree_head_f(local2, local3, ARRAYTP_size_INT(t_3089->params));
PROG_err_loc_PRO(self->prog, ((PROG_ERR) tr_3091));
local4 = FSTR_create_FSTR(((FSTR) NULL));
s_3092 = FSTR_plus_STR_FSTR(local4, ((STR) &Subtypecycledete));
{
struct FSETTUPIDENTINT__2370_frame_struct temp3098_0;
FSETTUPIDENTINT__2370_frame
noname3099 = &temp3098_0;
struct STR_separate_STR_STR_frame_struct temp3098_1;
STR_separate_STR_STR_frame
noname3100 = &temp3098_1;
noname3099->state = 0;
noname3100->state = 0;
while (1) {
if (noname3100->state == 0) {
noname3094 = ((STR) &name_3101);
noname3100->arg0 = noname3094;
}
if (noname3099->state == 0) {
noname3093 = self->cur;
noname3099->arg0 = noname3093;
}
local6 = FSETTUPIDENTINT__2370(noname3099);
if (noname3099->state == -1) goto after_loop;
noname3100->arg1 = TP_GRAPH_ANC_tup(self, local6);
local5 = STR_separate_STR_STR(noname3100);
if (noname3100->state == -1) goto after_loop;
s_3092 = FSTR_plus_STR_FSTR(s_3092, local5);
}
}
after_loop: ;
local7 = self->prog;
PROG_err_STR(local7, FSTR_str_STR(s_3092));
self->anc_tbl = FMAPTP_CLASSFSET_3038(self->anc_tbl, t_3089, ((FSETTP_CLASS) NULL));
self->cur = FSETTUPIDENTINT__2886(self->cur, cq);
return ((FSETTP_CLASS) NULL);
}
self->cur = FSETTUPIDENTINT__2394(self->cur, cq);
{
struct FSETTP_CLASS_elt_3006_frame_struct temp3103_0;
FSETTP_CLASS_elt_3006_frame
noname3104 = &temp3103_0;
noname3104->state = 0;
while (1) {
if (noname3104->state == 0) {
noname3096 = par;
noname3104->arg0 = noname3096;
}
local8 = FSETTP_CLASS_elt_3006(noname3104);
if (noname3104->state == -1) goto after_loop_3102;
t2_3097 = local8;
r_3095 = FSETTP_CLASS_ins(r_3095, t2_3097);
r_3095 = FSETTP_CLASS_to_(r_3095, TP_GRAPH_ANC_get_3088(self, t2_3097));
}
}
after_loop_3102: ;
self->anc_tbl = FMAPTP_CLASSFSET_3038(self->anc_tbl, t_3089, r_3095);
self->cur = FSETTUPIDENTINT__2886(self->cur, cq);
return r_3095;
}
TP_CLASS FMAPTP_CLASSFSET_3105(FMAPTP_CLASSFSETTP self) {
TP_CLASS noname3106;
TP_CLASS k = ((TP_CLASS) NULL);
return ((TP_CLASS) NULL);
if (!FMAPTP_CLASSFSET_3107(self)) {
fprintf(stderr,"Failed invariant FMAP{TP_CLASS,FSET{$TP}}::invariant:BOOL ../Library/fmap.sa:54:10\n");
exit(16);
}
}
TUPTP_CLASSFSETTP TUPTP_CLASSFSETT_3108(TUPTP_CLASSFSETTP self, TP_CLASS t1_3109) {
TUPTP_CLASSFSETTP local0;
local0 = self;
local0.t1 = t1_3109;
return local0;
}
TUPTP_CLASSFSETTP TUPTP_CLASSFSETT_3110(TUPTP_CLASSFSETTP self, FSETTP t2_3111) {
TUPTP_CLASSFSETTP local0;
local0 = self;
local0.t2 = t2_3111;
return local0;
}
TUPTP_CLASSFSETTP TUPTP_CLASSFSETT_3112(TUPTP_CLASSFSETTP self, TP_CLASS at1, FSETTP at2) {
TUPTP_CLASSFSETTP noname3113 = TUPTP_CLASSFSETTP_zero;
TUPTP_CLASSFSETTP local0;
local0 = TUPTP_CLASSFSETT_3108(self, at1);
return TUPTP_CLASSFSETT_3110(local0, at2);
}
INT FMAPTP_CLASSFSET_3114(FMAPTP_CLASSFSETTP self, TP_CLASS k) {
INT noname3115 = ((INT) 0);
return (c_SYS_id_OB_INT(((SYS) NULL),((OB) k)));
if (!FMAPTP_CLASSFSET_3107(self)) {
fprintf(stderr,"Failed invariant FMAP{TP_CLASS,FSET{$TP}}::invariant:BOOL ../Library/fmap.sa:64:11\n");
exit(16);
}
}
INT FMAPTP_CLASSFSET_3116(FMAPTP_CLASSFSETTP self) {
INT noname3117 = ((INT) 0);
return self->asize;
fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
exit(16);
}
TUPTP_CLASSFSETTP FMAPTP_CLASSFSET_3118(FMAPTP_CLASSFSETTP self, INT ind_3119) {
TUPTP_CLASSFSETTP noname3120 = TUPTP_CLASSFSETTP_zero;
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FMAPTP_CLASSFSETTP) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_3119, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
exit(16);
}
if (ind_3119<0||ind_3119>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
exit(16);
}
return self->arr_part[ind_3119];
}
BOOL FMAPTP_CLASSFSET_3121(FMAPTP_CLASSFSETTP self, TP_CLASS k1, TP_CLASS k2) {
BOOL noname3122 = ((BOOL) 0);
return c_SYS_ob_eq_OB_OB_BOOL(((OB) k1),((OB) k2));
if (!FMAPTP_CLASSFSET_3107(self)) {
fprintf(stderr,"Failed invariant FMAP{TP_CLASS,FSET{$TP}}::invariant:BOOL ../Library/fmap.sa:44:9\n");
exit(16);
}
}
TUPTP_CLASSFSETTP FMAPTP_CLASSFSET_3123(FMAPTP_CLASSFSETTP self, TP_CLASS k) {
TUPTP_CLASSFSETTP noname3124 = TUPTP_CLASSFSETTP_zero;
INT h = ((INT) 0);
TP_CLASS tk;
TP_CLASS tk_3125;
TUPTP_CLASSFSETTP local0;
TP_CLASS local1;
INT local2;
INT local3;
INT local4;
INT local5;
TUPTP_CLASSFSETTP local6;
TP_CLASS local7;
if ((self==((FMAPTP_CLASSFSETTP) NULL))) {
local0 = TUPTP_CLASSFSETTP_zero;
local1 = FMAPTP_CLASSFSET_3105(self);
return TUPTP_CLASSFSETT_3112(local0, local1, ((FSETTP) NULL));
}
local2 = FMAPTP_CLASSFSET_3114(self, k);
local3 = (self->asize);
h = (local2&(c_INT_minus_INT_INT_chk(local3,2)));
while (1) {
tk = (TUPTP_CLASSFSETTP_blob=FMAPTP_CLASSFSET_3118(self, h)).t1;
if (FMAPTP_CLASSFSET_3121(self, tk, k)) {
return FMAPTP_CLASSFSET_3118(self, h);
}
else {
if (FMAPTP_CLASSFSET_3121(self, tk, FMAPTP_CLASSFSET_3105(self))) {
goto after_loop;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
local4 = (self->asize);
if ((h==(c_INT_minus_INT_INT_chk(local4,1)))) {
h = 0;
while (1) {
tk_3125 = (TUPTP_CLASSFSETTP_blob=FMAPTP_CLASSFSET_3118(self, h)).t1;
if (FMAPTP_CLASSFSET_3121(self, tk_3125, k)) {
return FMAPTP_CLASSFSET_3118(self, h);
}
else {
if (FMAPTP_CLASSFSET_3121(self, tk_3125, FMAPTP_CLASSFSET_3105(self))) {
goto after_loop_3127;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_3127: ;
local5 = (self->asize);
if (!((h!=(c_INT_minus_INT_INT_chk(local5,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fmap.sa:169:15\n");
exit(16);
}
}
local6 = TUPTP_CLASSFSETTP_zero;
local7 = FMAPTP_CLASSFSET_3105(self);
return TUPTP_CLASSFSETT_3112(local6, local7, ((FSETTP) NULL));
if (!FMAPTP_CLASSFSET_3107(self)) {
fprintf(stderr,"Failed invariant FMAP{TP_CLASS,FSET{$TP}}::invariant:BOOL ../Library/fmap.sa:153:11\n");
exit(16);
}
}
FMAPTP_CLASSFSETTP FMAPTP_CLASSFSET_3129(FMAPTP_CLASSFSETTP self, INT n_3130) {
FMAPTP_CLASSFSETTP noname3131;
FMAPTP_CLASSFSETTP r_3132;
FMAPTP_CLASSFSETTP noname3133;
FMAPTP_CLASSFSETTP local0;
TUPTP_CLASSFSETTP local1;
TP_CLASS local2;
local0 = ((FMAPTP_CLASSFSETTP) sbi_arr_alloc(sizeof(struct FMAPTP_CLASSFSETTP_struct), FMAPTP_CLASSFSETTP_tag, sizeof(TUPTP_CLASSFSETTP) , n_3130));
local0->asize = n_3130;
r_3132 = local0;
if ((!((FMAPTP_CLASSFSET_3105(self)==((TP_CLASS) NULL))))) {
{
struct FMAPTP_CLASSFSET_3135_frame_struct temp3134_0;
FMAPTP_CLASSFSET_3135_frame
noname3136 = &temp3134_0;
noname3136->state = 0;
while (1) {
if (noname3136->state == 0) {
noname3133 = r_3132;
noname3136->arg0 = noname3133;
}
local1 = TUPTP_CLASSFSETTP_zero;
local2 = FMAPTP_CLASSFSET_3105(self);
noname3136->arg1 = TUPTP_CLASSFSETT_3112(local1, local2, ((FSETTP) NULL));
FMAPTP_CLASSFSET_3135(noname3136);
if (noname3136->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
}
return r_3132;
}
FMAPTP_CLASSFSETTP FMAPTP_CLASSFSET_3137(FMAPTP_CLASSFSETTP self, TUPTP_CLASSFSETTP p) {
FMAPTP_CLASSFSETTP noname3138;
return FMAPTP_CLASSFSET_3139(self, p.t1, p.t2);
if (!FMAPTP_CLASSFSET_3107(self)) {
fprintf(stderr,"Failed invariant FMAP{TP_CLASS,FSET{$TP}}::invariant:BOOL ../Library/fmap.sa:202:14\n");
exit(16);
}
}
FMAPTP_CLASSFSETTP FMAPTP_CLASSFSET_3140(FMAPTP_CLASSFSETTP self) {
FMAPTP_CLASSFSETTP noname3141;
INT ns = ((INT) 0);
FMAPTP_CLASSFSETTP r_3142;
FMAPTP_CLASSFSETTP noname3143;
INT local0;
INT local1;
INT local2;
TUPTP_CLASSFSETTP local3;
if (!((!((self==((FMAPTP_CLASSFSETTP) NULL)))))) {
fprintf(stderr,"Violation of precondition ../Library/fmap.sa:172:22\n");
exit(16);
}
local0 = (self->asize);
local1 = (c_INT_minus_INT_INT_chk(local0,1));
local2 = (c_INT_times_INT_INT_chk(local1,2));
ns = (c_INT_plus_INT_INT_chk(local2,1));
r_3142 = FMAPTP_CLASSFSET_3129(self, ns);
{
struct FMAPTP_CLASSFSET_3145_frame_struct temp3144_0;
FMAPTP_CLASSFSET_3145_frame
noname3146 = &temp3144_0;
noname3146->state = 0;
while (1) {
if (noname3146->state == 0) {
noname3143 = self;
noname3146->arg0 = noname3143;
}
local3 = FMAPTP_CLASSFSET_3145(noname3146);
if (noname3146->state == -1) goto after_loop;
r_3142 = FMAPTP_CLASSFSET_3137(r_3142, local3);
}
}
after_loop: ;
return r_3142;
}
void FMAPTP_CLASSFSET_3147(FMAPTP_CLASSFSETTP self, INT ind_3148, TUPTP_CLASSFSETTP val_3149) {
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FMAPTP_CLASSFSETTP) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_3148, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
exit(16);
}
if (ind_3148<0||ind_3148>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
exit(16);
}
self->arr_part[ind_3148] = val_3149;
}
FMAPTP_CLASSFSETTP FMAPTP_CLASSFSET_3139(FMAPTP_CLASSFSETTP self, TP_CLASS k, FSETTP t_3150) {
FMAPTP_CLASSFSETTP noname3151;
FMAPTP_CLASSFSETTP r_3152;
INT h = ((INT) 0);
INT asm_3153 = ((INT) 0);
TP_CLASS tk;
TP_CLASS tk_3154;
INT local0;
INT local1;
INT local2;
INT local3;
INT local4;
r_3152 = self;
if ((r_3152==((FMAPTP_CLASSFSETTP) NULL))) {
r_3152 = FMAPTP_CLASSFSET_3129(self, 5);
}
else {
local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
local1 = (c_INT_times_INT_INT_chk(local0,2));
if ((local1>(self->asize))) {
r_3152 = FMAPTP_CLASSFSET_3140(self);
}
}
local2 = FMAPTP_CLASSFSET_3114(r_3152, k);
local3 = (r_3152->asize);
h = (local2&(c_INT_minus_INT_INT_chk(local3,2)));
local4 = (r_3152->asize);
asm_3153 = (c_INT_minus_INT_INT_chk(local4,1));
while (1) {
tk = (TUPTP_CLASSFSETTP_blob=FMAPTP_CLASSFSET_3118(r_3152, h)).t1;
if (FMAPTP_CLASSFSET_3121(self, tk, FMAPTP_CLASSFSET_3105(self))) {
goto after_loop;
}
if (FMAPTP_CLASSFSET_3121(self, tk, k)) {
FMAPTP_CLASSFSET_3147(r_3152, h, TUPTP_CLASSFSETT_3112(TUPTP_CLASSFSETTP_zero, k, t_3150));
return r_3152;
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
if ((h==asm_3153)) {
h = 0;
while (1) {
tk_3154 = (TUPTP_CLASSFSETTP_blob=FMAPTP_CLASSFSET_3118(r_3152, h)).t1;
if (FMAPTP_CLASSFSET_3121(self, tk_3154, FMAPTP_CLASSFSET_3105(self))) {
goto after_loop_3156;
}
if (FMAPTP_CLASSFSET_3121(self, tk_3154, k)) {
FMAPTP_CLASSFSET_3147(r_3152, h, TUPTP_CLASSFSETT_3112(TUPTP_CLASSFSETTP_zero, k, t_3150));
return r_3152;
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_3156: ;
if (!((h!=asm_3153))) {
fprintf(stderr,"Violation of assertion ../Library/fmap.sa:199:15\n");
exit(16);
}
}
FMAPTP_CLASSFSET_3147(r_3152, h, TUPTP_CLASSFSETT_3112(TUPTP_CLASSFSETTP_zero, k, t_3150));
r_3152->hsize = (c_INT_plus_INT_INT_chk(r_3152->hsize,1));
return r_3152;
if (!FMAPTP_CLASSFSET_3107(self)) {
fprintf(stderr,"Failed invariant FMAP{TP_CLASS,FSET{$TP}}::invariant:BOOL ../Library/fmap.sa:180:9\n");
exit(16);
}
}
FSETTP TP_GRAPH_DES_get(TP_GRAPH_DES self, TP_CLASS t_3158) {
FSETTP noname3159;
FSETTP r_3160 = ((FSETTP) NULL);
TUPTP_CLASSFSETTP p = TUPTP_CLASSFSETTP_zero;
TR_CLASS_DEF tr_3161;
TP_CONTEXT con_3162;
TR_TYPE_SPEC ts;
TP tp_3163;
PROG local0;
IDENT local1;
BOOL local2;
INT local3;
PROG local4;
STR local5;
STR local6;
STR local7;
STR local8;
if ((!(TP_CLASS_is_abst(t_3158)))) {
return ((FSETTP) NULL);
}
p = FMAPTP_CLASSFSET_3123(self->child_tbl, t_3158);
if ((!((p.t1==((TP_CLASS) NULL))))) {
return p.t2;
}
local0 = self->prog;
local1 = t_3158->name_19;
tr_3161 = PROG_tree_head_f(local0, local1, ARRAYTP_size_INT(t_3158->params));
if ((tr_3161==((TR_CLASS_DEF) NULL))) {
local2 = TRUE;
} else {
local2 = (tr_3161->over==((TR_TYPE_SPEC) NULL));
}
if (local2) {
return ((FSETTP) NULL);
}
con_3162 = PROG_tp_context_(self->prog, t_3158);
ts = tr_3161->over;
while (1) {
if ((ts==((TR_TYPE_SPEC) NULL))) {
goto after_loop;
}
PROG_err_loc_PRO(self->prog, ((PROG_ERR) ts));
tp_3163 = TP_CONTEXT_tp_of(con_3162, ts);
if (tp_3163==NULL) {
r_3160 = FSETTP_insert_TP(r_3160, tp_3163);
} else
switch (tp_3163->header.tag) {
case TP_CLASS_tag:
local3 = PROG_tp_kind_TP_INT(self->prog, tp_3163);
if ((local3==shared_TP_KIND_e)) {
local4 = self->prog;
local5 = ((STR) &Thetype);
local6 = STR_plus_STR_STR(local5, TP_CLASS_str_STR(t_3158));
local7 = STR_plus_STR_STR(local6, ((STR) &liststheexternaltype));
local8 = STR_plus_STR_STR(local7, TP_CLASS_str_STR(((TP_CLASS) tp_3163)));
PROG_err_STR(local4, STR_plus_STR_STR(local8, ((STR) &initssubtypelist)));
}
else {
r_3160 = FSETTP_insert_TP(r_3160, tp_3163);
} break;
default: ;
r_3160 = FSETTP_insert_TP(r_3160, tp_3163);
}
ts = ts->next_8;
}
after_loop: ;
self->child_tbl = FMAPTP_CLASSFSET_3139(self->child_tbl, t_3158, r_3160);
return r_3160;
}
STR TP_GRAPH_DES_tup(TP_GRAPH_DES self, TUPIDENTINT t_3165) {
STR noname3166;
STR r_3167;
INT noname3168 = ((INT) 0);
STR noname3169;
INT local0;
INT noname3172t;
STR local1;
r_3167 = t_3165.t1.str_4;
if ((t_3165.t2==0)) {
return r_3167;
}
r_3167 = STR_plus_STR_STR(r_3167, ((STR) &name_3170));
{
BOOL noname3172 = TRUE;
struct STR_separate_STR_STR_frame_struct temp3171_0;
STR_separate_STR_STR_frame
noname3173 = &temp3171_0;
noname3173->state = 0;
while (1) {
if (noname3172) {
noname3172 = FALSE;
noname3168 = t_3165.t2;
local0 = noname3168;
noname3172t = local0;
} else {
noname3172t--;
}
if (noname3172t<=0) goto after_loop;
0 /* no return value from inlined iter */;
if (noname3173->state == 0) {
noname3169 = ((STR) &name_3174);
noname3173->arg0 = noname3169;
}
noname3173->arg1 = ((STR) &S__3175);
local1 = STR_separate_STR_STR(noname3173);
if (noname3173->state == -1) goto after_loop;
r_3167 = STR_plus_STR_STR(r_3167, local1);
}
}
after_loop: ;
r_3167 = STR_plus_STR_STR(r_3167, ((STR) &name_3176));
return r_3167;
}
FSETTP FSETTP_to_union_(FSETTP self, FSETTP s_3177) {
FSETTP noname3178;
FSETTP r_3179;
FSETTP noname3180;
TP local0;
r_3179 = self;
{
struct FSETTP_elt_TP_frame_struct temp3181_0;
FSETTP_elt_TP_frame
noname3182 = &temp3181_0;
noname3182->state = 0;
while (1) {
if (noname3182->state == 0) {
noname3180 = s_3177;
noname3182->arg0 = noname3180;
}
local0 = FSETTP_elt_TP(noname3182);
if (noname3182->state == -1) goto after_loop;
r_3179 = FSETTP_insert_TP(r_3179, local0);
}
}
after_loop: ;
return r_3179;
if (!FSETTP_invariant(self)) {
fprintf(stderr,"Failed invariant FSET{$TP}::invariant:BOOL ../Library/fset.sa:252:11\n");
exit(16);
}
}
FSETTP TP_GRAPH_DES_get_3183(TP_GRAPH_DES self, TP_CLASS t_3184) {
FSETTP noname3185;
TUPTP_CLASSFSETTP p = TUPTP_CLASSFSETTP_zero;
FSETTP cld;
TUPIDENTINT cq = TUPIDENTINT_zero;
TR_CLASS_DEF tr_3186;
FSTR s_3187;
FSETTUPIDENTINT noname3188;
STR noname3189;
FSETTP r_3190 = ((FSETTP) NULL);
FSETTP noname3191;
TP t2_3192;
TUPIDENTINT local0;
IDENT local1;
PROG local2;
IDENT local3;
FSTR local4;
STR local5;
TUPIDENTINT local6;
PROG local7;
TP local8;
p = FMAPTP_CLASSFSET_3123(self->des_tbl, t_3184);
if ((!((p.t1==((TP_CLASS) NULL))))) {
return p.t2;
}
cld = TP_GRAPH_DES_get(self, t_3184);
if ((cld==((FSETTP) NULL))) {
return ((FSETTP) NULL);
}
local0 = TUPIDENTINT_zero;
local1 = t_3184->name_19;
cq = TUPIDENTINT_crea(local0, local1, ARRAYTP_size_INT(t_3184->params));
if (FSETTUPIDENTINT__2348(self->cur, cq)) {
local2 = self->prog;
local3 = t_3184->name_19;
tr_3186 = PROG_tree_head_f(local2, local3, ARRAYTP_size_INT(t_3184->params));
PROG_err_loc_PRO(self->prog, ((PROG_ERR) tr_3186));
local4 = FSTR_create_FSTR(((FSTR) NULL));
s_3187 = FSTR_plus_STR_FSTR(local4, ((STR) &Supertypecyclede));
{
struct FSETTUPIDENTINT__2370_frame_struct temp3193_0;
FSETTUPIDENTINT__2370_frame
noname3194 = &temp3193_0;
struct STR_separate_STR_STR_frame_struct temp3193_1;
STR_separate_STR_STR_frame
noname3195 = &temp3193_1;
noname3194->state = 0;
noname3195->state = 0;
while (1) {
if (noname3195->state == 0) {
noname3189 = ((STR) &name_3196);
noname3195->arg0 = noname3189;
}
if (noname3194->state == 0) {
noname3188 = self->cur;
noname3194->arg0 = noname3188;
}
local6 = FSETTUPIDENTINT__2370(noname3194);
if (noname3194->state == -1) goto after_loop;
noname3195->arg1 = TP_GRAPH_DES_tup(self, local6);
local5 = STR_separate_STR_STR(noname3195);
if (noname3195->state == -1) goto after_loop;
s_3187 = FSTR_plus_STR_FSTR(s_3187, local5);
}
}
after_loop: ;
local7 = self->prog;
PROG_err_STR(local7, FSTR_str_STR(s_3187));
self->des_tbl = FMAPTP_CLASSFSET_3139(self->des_tbl, t_3184, ((FSETTP) NULL));
self->cur = FSETTUPIDENTINT__2886(self->cur, cq);
return ((FSETTP) NULL);
}
self->cur = FSETTUPIDENTINT__2394(self->cur, cq);
{
struct FSETTP_elt_TP_frame_struct temp3198_0;
FSETTP_elt_TP_frame
noname3199 = &temp3198_0;
noname3199->state = 0;
while (1) {
if (noname3199->state == 0) {
noname3191 = cld;
noname3199->arg0 = noname3191;
}
local8 = FSETTP_elt_TP(noname3199);
if (noname3199->state == -1) goto after_loop_3197;
t2_3192 = local8;
r_3190 = FSETTP_insert_TP(r_3190, t2_3192);
if (t2_3192==NULL) {
} else
switch (t2_3192->header.tag) {
case TP_CLASS_tag:
r_3190 = FSETTP_to_union_(r_3190, TP_GRAPH_DES_get_3183(self, ((TP_CLASS) t2_3192))); break;
default: ;
}
}
}
after_loop_3197: ;
self->des_tbl = FMAPTP_CLASSFSET_3139(self->des_tbl, t_3184, r_3190);
self->cur = FSETTUPIDENTINT__2886(self->cur, cq);
return r_3190;
}
FSETTP FMAPTP_CLASSFSET_3200(FMAPTP_CLASSFSETTP self, TP_CLASS k) {
FSETTP noname3201;
INT h = ((INT) 0);
TP_CLASS tk;
TP_CLASS tk_3202;
INT local0;
INT local1;
INT local2;
INT local3;
if ((self==((FMAPTP_CLASSFSETTP) NULL))) {
return ((FSETTP) NULL);
}
local0 = FMAPTP_CLASSFSET_3114(self, k);
local1 = (self->asize);
h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
while (1) {
tk = (TUPTP_CLASSFSETTP_blob=FMAPTP_CLASSFSET_3118(self, h)).t1;
if (FMAPTP_CLASSFSET_3121(self, tk, k)) {
return (TUPTP_CLASSFSETTP_blob=FMAPTP_CLASSFSET_3118(self, h)).t2;
}
else {
if (FMAPTP_CLASSFSET_3121(self, tk, FMAPTP_CLASSFSET_3105(self))) {
goto after_loop;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
local2 = (self->asize);
if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
h = 0;
while (1) {
tk_3202 = (TUPTP_CLASSFSETTP_blob=FMAPTP_CLASSFSET_3118(self, h)).t1;
if (FMAPTP_CLASSFSET_3121(self, tk_3202, k)) {
return (TUPTP_CLASSFSETTP_blob=FMAPTP_CLASSFSET_3118(self, h)).t2;
}
else {
if (FMAPTP_CLASSFSET_3121(self, tk_3202, FMAPTP_CLASSFSET_3105(self))) {
goto after_loop_3204;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_3204: ;
local3 = (self->asize);
if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fmap.sa:150:15\n");
exit(16);
}
}
return ((FSETTP) NULL);
if (!FMAPTP_CLASSFSET_3107(self)) {
fprintf(stderr,"Failed invariant FMAP{TP_CLASS,FSET{$TP}}::invariant:BOOL ../Library/fmap.sa:136:6\n");
exit(16);
}
}
void TP_GRAPH_ABS_DES_3206(TP_GRAPH_ABS_DES self, TP_CLASS at_3207, TP ct) {
FSETTP s_3208;
s_3208 = FMAPTP_CLASSFSET_3200(self->tbl, at_3207);
s_3208 = FSETTP_insert_TP(s_3208, ct);
self->tbl = FMAPTP_CLASSFSET_3139(self->tbl, at_3207, s_3208);
}
void TP_GRAPH_ABS_DES_3209(TP_GRAPH_ABS_DES self) {
TP_CLASS dob;
FSETTP tt;
FSETTP noname3210;
TP tp_3211;
TP local0;
TP local1;
dob = self->prog->tp_builtin->dollar_ob;
tt = self->prog->prog_find_types->tp_done;
if ((tt==((FSETTP) NULL))) {
return;
}
{
struct FSETTP_elt_TP_frame_struct temp3212_0;
FSETTP_elt_TP_frame
noname3213 = &temp3212_0;
noname3213->state = 0;
while (1) {
if (noname3213->state == 0) {
noname3210 = tt;
noname3213->arg0 = noname3210;
}
local0 = FSETTP_elt_TP(noname3213);
if (noname3213->state == -1) goto after_loop;
tp_3211 = local0;
local1 = tp_3211;
if ((!((*TP_is_abstract_BOOL[local1->header.tag+TP_is_abstract_BOOL_offset])(local1)))) {
TP_GRAPH_ABS_DES_3206(self, dob, tp_3211);
}
}
}
after_loop: ;
}
void TP_GRAPH_ABS_DES_3214(TP_GRAPH_ABS_DES self) {
FMAPTP_CLASSFSET noname3215;
TUPTP_CLASSFSETT p = TUPTP_CLASSFSETT_zero;
FSETTP_CLASS noname3216;
TUPTP_CLASSFSETT local0;
TP_CLASS local1;
TP_CLASS local2;
{
struct FMAPTP_CLASSFSET_3044_frame_struct temp3217_0;
FMAPTP_CLASSFSET_3044_frame
noname3218 = &temp3217_0;
noname3218->state = 0;
while (1) {
if (noname3218->state == 0) {
noname3215 = self->prog->tp_graph->anc->anc_tbl;
noname3218->arg0 = noname3215;
}
local0 = FMAPTP_CLASSFSET_3044(noname3218);
if (noname3218->state == -1) goto after_loop;
p = local0;
if ((!(TP_CLASS_is_abst(p.t1)))) {
{
struct FSETTP_CLASS_elt_3006_frame_struct temp3220_0;
FSETTP_CLASS_elt_3006_frame
noname3221 = &temp3220_0;
noname3221->state = 0;
while (1) {
if (noname3221->state == 0) {
noname3216 = p.t2;
noname3221->arg0 = noname3216;
}
local1 = FSETTP_CLASS_elt_3006(noname3221);
if (noname3221->state == -1) goto after_loop_3219;
local2 = local1;
TP_GRAPH_ABS_DES_3206(self, local2, ((TP) p.t1));
}
}
after_loop_3219: ;
}
}
}
after_loop: ;
}
void TP_GRAPH_ABS_DES_3222(TP_GRAPH_ABS_DES self) {
FMAPTP_CLASSFSETTP noname3223;
TUPTP_CLASSFSETTP p = TUPTP_CLASSFSETTP_zero;
FSETTP noname3224;
TP ct;
TUPTP_CLASSFSETTP local0;
TP local1;
TP local2;
{
struct FMAPTP_CLASSFSET_3145_frame_struct temp3225_0;
FMAPTP_CLASSFSET_3145_frame
noname3226 = &temp3225_0;
noname3226->state = 0;
while (1) {
if (noname3226->state == 0) {
noname3223 = self->prog->tp_graph->des_15->des_tbl;
noname3226->arg0 = noname3223;
}
local0 = FMAPTP_CLASSFSET_3145(noname3226);
if (noname3226->state == -1) goto after_loop;
p = local0;
{
struct FSETTP_elt_TP_frame_struct temp3228_0;
FSETTP_elt_TP_frame
noname3229 = &temp3228_0;
noname3229->state = 0;
while (1) {
if (noname3229->state == 0) {
noname3224 = p.t2;
noname3229->arg0 = noname3224;
}
local1 = FSETTP_elt_TP(noname3229);
if (noname3229->state == -1) goto after_loop_3227;
ct = local1;
local2 = ct;
if ((!((*TP_is_abstract_BOOL[local2->header.tag+TP_is_abstract_BOOL_offset])(local2)))) {
TP_GRAPH_ABS_DES_3206(self, p.t1, ct);
}
}
}
after_loop_3227: ;
}
}
after_loop: ;
}
void TP_GRAPH_ABS_DES_3230(TP_GRAPH_ABS_DES self) {
TP_GRAPH_ABS_DES_3209(self);
TP_GRAPH_ABS_DES_3214(self);
TP_GRAPH_ABS_DES_3222(self);
}
void PROG_TYPE_GRAPH__3231(PROG_TYPE_GRAPH self) {
TP tp_3232;
FSETTP noname3233;
FSETTP_CLASS at_3234;
FSETTP_CLASS noname3235;
STR noname3236;
TP local0;
OUT local1;
OUT local2;
TP local3;
OUT local4;
OUT local5;
STR local6;
TP_CLASS local7;
OUT local8;
OUT local9;
{
struct FSETTP_elt_TP_frame_struct temp3237_0;
FSETTP_elt_TP_frame
noname3238 = &temp3237_0;
noname3238->state = 0;
while (1) {
if (noname3238->state == 0) {
noname3233 = self->prog->prog_find_types->tp_done;
noname3238->arg0 = noname3233;
}
local0 = FSETTP_elt_TP(noname3238);
if (noname3238->state == -1) goto after_loop;
tp_3232 = local0;
at_3234 = ((FSETTP_CLASS) NULL);
if (tp_3232==NULL) {
} else
switch (tp_3232->header.tag) {
case TP_CLASS_tag:
at_3234 = TP_GRAPH_ANC_get_3088(self->prog->tp_graph->anc, ((TP_CLASS) tp_3232)); break;
default: ;
}
if ((!((at_3234==((FSETTP_CLASS) NULL))))) {
local1 = OUT_create_OUT(((OUT) NULL));
local2 = OUT_plus_STR_OUT(local1, ((STR) &Ancestorsof));
local3 = tp_3232;
local4 = OUT_plus_STR_OUT(local2, (*TP_str_STR[local3->header.tag+TP_str_STR_offset])(local3));
OUT_plus_STR(local4, ((STR) &name_3239));
{
struct FSETTP_CLASS_elt_3006_frame_struct temp3241_0;
FSETTP_CLASS_elt_3006_frame
noname3242 = &temp3241_0;
struct STR_separate_STR_STR_frame_struct temp3241_1;
STR_separate_STR_STR_frame
noname3243 = &temp3241_1;
noname3242->state = 0;
noname3243->state = 0;
while (1) {
local5 = OUT_create_OUT(((OUT) NULL));
if (noname3243->state == 0) {
noname3236 = ((STR) &name_3244);
noname3243->arg0 = noname3236;
}
if (noname3242->state == 0) {
noname3235 = at_3234;
noname3242->arg0 = noname3235;
}
local7 = FSETTP_CLASS_elt_3006(noname3242);
if (noname3242->state == -1) goto after_loop_3240;
noname3243->arg1 = TP_CLASS_str_STR(local7);
local6 = STR_separate_STR_STR(noname3243);
if (noname3243->state == -1) goto after_loop_3240;
OUT_plus_STR(local5, local6);
}
}
after_loop_3240: ;
local8 = OUT_create_OUT(((OUT) NULL));
OUT_plus_STR(local8, ((STR) &name_3245));
}
}
}
after_loop: ;
local9 = OUT_create_OUT(((OUT) NULL));
OUT_plus_STR(local9, ((STR) &name_3246));
}
void PROG_TYPE_GRAPH__3247(PROG_TYPE_GRAPH self) {
TP tp_3248;
FSETTP noname3249;
FSETTP at_3250;
FSETTP noname3251;
STR noname3252;
TP local0;
OUT local1;
OUT local2;
TP local3;
OUT local4;
OUT local5;
STR local6;
TP local7;
TP local8;
OUT local9;
OUT local10;
{
struct FSETTP_elt_TP_frame_struct temp3253_0;
FSETTP_elt_TP_frame
noname3254 = &temp3253_0;
noname3254->state = 0;
while (1) {
if (noname3254->state == 0) {
noname3249 = self->prog->prog_find_types->tp_done;
noname3254->arg0 = noname3249;
}
local0 = FSETTP_elt_TP(noname3254);
if (noname3254->state == -1) goto after_loop;
tp_3248 = local0;
at_3250 = ((FSETTP) NULL);
if (tp_3248==NULL) {
} else
switch (tp_3248->header.tag) {
case TP_CLASS_tag:
at_3250 = TP_GRAPH_DES_get_3183(self->prog->tp_graph->des_15, ((TP_CLASS) tp_3248)); break;
default: ;
}
if ((!((at_3250==((FSETTP) NULL))))) {
local1 = OUT_create_OUT(((OUT) NULL));
local2 = OUT_plus_STR_OUT(local1, ((STR) &Descendantsof));
local3 = tp_3248;
local4 = OUT_plus_STR_OUT(local2, (*TP_str_STR[local3->header.tag+TP_str_STR_offset])(local3));
OUT_plus_STR(local4, ((STR) &name_3255));
{
struct FSETTP_elt_TP_frame_struct temp3257_0;
FSETTP_elt_TP_frame
noname3258 = &temp3257_0;
struct STR_separate_STR_STR_frame_struct temp3257_1;
STR_separate_STR_STR_frame
noname3259 = &temp3257_1;
noname3258->state = 0;
noname3259->state = 0;
while (1) {
local5 = OUT_create_OUT(((OUT) NULL));
if (noname3259->state == 0) {
noname3252 = ((STR) &name_3260);
noname3259->arg0 = noname3252;
}
if (noname3258->state == 0) {
noname3251 = at_3250;
noname3258->arg0 = noname3251;
}
local7 = FSETTP_elt_TP(noname3258);
if (noname3258->state == -1) goto after_loop_3256;
local8 = local7;
noname3259->arg1 = (*TP_str_STR[local8->header.tag+TP_str_STR_offset])(local8);
local6 = STR_separate_STR_STR(noname3259);
if (noname3259->state == -1) goto after_loop_3256;
OUT_plus_STR(local5, local6);
}
}
after_loop_3256: ;
local9 = OUT_create_OUT(((OUT) NULL));
OUT_plus_STR(local9, ((STR) &name_3261));
}
}
}
after_loop: ;
local10 = OUT_create_OUT(((OUT) NULL));
OUT_plus_STR(local10, ((STR) &name_3262));
}
void PROG_TYPE_GRAPH__3263(PROG_TYPE_GRAPH self) {
FMAPTP_CLASSFSETTP noname3264;
TUPTP_CLASSFSETTP p = TUPTP_CLASSFSETTP_zero;
FSETTP noname3265;
STR noname3266;
TUPTP_CLASSFSETTP local0;
OUT local1;
OUT local2;
OUT local3;
OUT local4;
STR local5;
TP local6;
TP local7;
OUT local8;
OUT local9;
{
struct FMAPTP_CLASSFSET_3145_frame_struct temp3267_0;
FMAPTP_CLASSFSET_3145_frame
noname3268 = &temp3267_0;
noname3268->state = 0;
while (1) {
if (noname3268->state == 0) {
noname3264 = self->prog->tp_graph_abs_des->tbl;
noname3268->arg0 = noname3264;
}
local0 = FMAPTP_CLASSFSET_3145(noname3268);
if (noname3268->state == -1) goto after_loop;
p = local0;
local1 = OUT_create_OUT(((OUT) NULL));
local2 = OUT_plus_STR_OUT(local1, ((STR) &Theabstracttype));
local3 = OUT_plus_STR_OUT(local2, TP_CLASS_str_STR(p.t1));
OUT_plus_STR(local3, ((STR) &hasconcretedesce));
{
struct FSETTP_elt_TP_frame_struct temp3270_0;
FSETTP_elt_TP_frame
noname3271 = &temp3270_0;
struct STR_separate_STR_STR_frame_struct temp3270_1;
STR_separate_STR_STR_frame
noname3272 = &temp3270_1;
noname3271->state = 0;
noname3272->state = 0;
while (1) {
local4 = OUT_create_OUT(((OUT) NULL));
if (noname3272->state == 0) {
noname3266 = ((STR) &name_3273);
noname3272->arg0 = noname3266;
}
if (noname3271->state == 0) {
noname3265 = p.t2;
noname3271->arg0 = noname3265;
}
local6 = FSETTP_elt_TP(noname3271);
if (noname3271->state == -1) goto after_loop_3269;
local7 = local6;
noname3272->arg1 = (*TP_str_STR[local7->header.tag+TP_str_STR_offset])(local7);
local5 = STR_separate_STR_STR(noname3272);
if (noname3272->state == -1) goto after_loop_3269;
OUT_plus_STR(local4, local5);
}
}
after_loop_3269: ;
local8 = OUT_create_OUT(((OUT) NULL));
OUT_plus_STR(local8, ((STR) &name_3274));
}
}
after_loop: ;
local9 = OUT_create_OUT(((OUT) NULL));
OUT_plus_STR(local9, ((STR) &name_3275));
}
void PROG_TYPE_GRAPH__3276(PROG_TYPE_GRAPH self) {
TP tp_3277;
FSETTP noname3278;
FSETTP_CLASS ig1;
FSETTP ig2;
TP local0;
{
struct FSETTP_elt_TP_frame_struct temp3279_0;
FSETTP_elt_TP_frame
noname3280 = &temp3279_0;
noname3280->state = 0;
while (1) {
if (noname3280->state == 0) {
noname3278 = self->prog->prog_find_types->tp_done;
noname3280->arg0 = noname3278;
}
local0 = FSETTP_elt_TP(noname3280);
if (noname3280->state == -1) goto after_loop;
tp_3277 = local0;
if (tp_3277==NULL) {
} else
switch (tp_3277->header.tag) {
case TP_CLASS_tag:
ig1 = TP_GRAPH_ANC_get_3088(self->prog->tp_graph->anc, ((TP_CLASS) tp_3277));
ig2 = TP_GRAPH_DES_get_3183(self->prog->tp_graph->des_15, ((TP_CLASS) tp_3277)); break;
default: ;
}
}
}
after_loop: ;
TP_GRAPH_ABS_DES_3230(self->prog->tp_graph_abs_des);
if (self->prog->show_graphs) {
PROG_TYPE_GRAPH__3231(self);
PROG_TYPE_GRAPH__3247(self);
PROG_TYPE_GRAPH__3263(self);
}
}
void PROG_do_type_gra(PROG self) {
PROG_TYPE_GRAPH__3276(self->prog_type_graph);
}
INT FMAPTPIFC_key_ha(FMAPTPIFC self, TP k) {
INT noname3281 = ((INT) 0);
HASH local0;
if (k==NULL) {
} else
switch (k->header.tag) {
case TUPIMPL_INCLUDEI_tag:
case TUPAM_BND_CREATE_tag:
case TUPIFCIFC_tag:
case TUPSTRITER_INLINE_tag:
case TUPAM_GLOBAL_EXP_tag:
case FSTR_tag:
case TUPSIGSIG_tag:
case CHAR_tag:
case INT_tag:
case TUPTP_CLASSFSETTP_tag:
case TUPSTRSTR_tag:
case TUPINTINTINT_tag:
case STR_tag:
case TUPSFILE_IDSFILE_ID_tag:
case TUPAM_ITER_CALL__tag:
case TUPTR_EXPRTR_EXPR_tag:
case TUPTPFMAPIDENTAM_tag:
case TUPARRAYTPTP_tag:
case TUPAM_CONSTAM_CONST_tag:
case TUPSTRTUPSTRSTR_tag:
case TUPTPIMPL_tag:
case TUPSIGAM_ROUT_DEF_tag:
case TUPARRAYTPARRAYB_tag:
case TUPIDENTAM_GLOBA_tag:
case TUPAM_BND_ITER_C_tag:
case TUPAM_LOCAL_EXPR_tag:
case TUPSTRFSETSTR_tag:
case TUPAM_ROUT_DEFAM_tag:
case TUPTPTP_tag:
case IDENT_tag:
case TUPTPINT_tag:
case TUPIDENTINT_tag:
case TUPIDENTIDENT_tag:
case TUPTP_CLASSFSETT_tag:
case TUPCHARCHAR_tag:
case TUPIDENTTP_tag:
case TUPIDENTARRAYTP_tag:
case TUPAM_EXPRAM_EXPR_tag:
case TUPTPIFC_tag:
case TUPTP_CLASSTP_CLASS_tag:
case TUPAM_STMTAM_STMT_tag:
case TUPINTINT_tag:
case TUPOBSTR_tag:
case TUPFLISTAM_CONST_tag:
case TUPAM_EXPRTP_tag:
case TUPBOOLINTIINTBOOL_tag:
local0 = ((HASH) k);
return (*HASH_hash_INT[local0->header.tag+HASH_hash_INT_offset])(local0); break;
default: ;
}
return (c_SYS_id_OB_INT(((SYS) NULL),((OB) k)));
if (!FMAPTPIFC_invari(self)) {
fprintf(stderr,"Failed invariant FMAP{$TP,IFC}::invariant:BOOL ../Library/fmap.sa:64:11\n");
exit(16);
}
}
INT FMAPTPIFC_asize_INT(FMAPTPIFC self) {
INT noname3282 = ((INT) 0);
return self->asize;
fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
exit(16);
}
TUPTPIFC FMAPTPIFC_aget_I(FMAPTPIFC self, INT ind_3283) {
TUPTPIFC noname3284 = TUPTPIFC_zero;
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FMAPTPIFC) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_3283, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
exit(16);
}
if (ind_3283<0||ind_3283>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
exit(16);
}
return self->arr_part[ind_3283];
}
BOOL FMAPTPIFC_key_eq(FMAPTPIFC self, TP k1, TP k2) {
BOOL noname3285 = ((BOOL) 0);
if (k1==NULL) {
} else
switch (k1->header.tag) {
default: ;
}
return c_SYS_ob_eq_OB_OB_BOOL(((OB) k1),((OB) k2));
if (!FMAPTPIFC_invari(self)) {
fprintf(stderr,"Failed invariant FMAP{$TP,IFC}::invariant:BOOL ../Library/fmap.sa:44:9\n");
exit(16);
}
}
TP FMAPTPIFC_key_nil_TP(FMAPTPIFC self) {
TP noname3286;
TP k = ((TP) NULL);
if (k==NULL) {
} else
switch (k->header.tag) {
default: ;
}
return ((TP) NULL);
if (!FMAPTPIFC_invari(self)) {
fprintf(stderr,"Failed invariant FMAP{$TP,IFC}::invariant:BOOL ../Library/fmap.sa:54:10\n");
exit(16);
}
}
IFC FMAPTPIFC_get_TP_IFC(FMAPTPIFC self, TP k) {
IFC noname3287;
INT h = ((INT) 0);
TP tk;
TP tk_3288;
INT local0;
INT local1;
INT local2;
INT local3;
if ((self==((FMAPTPIFC) NULL))) {
return ((IFC) NULL);
}
local0 = FMAPTPIFC_key_ha(self, k);
local1 = (self->asize);
h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
while (1) {
tk = (TUPTPIFC_blob=FMAPTPIFC_aget_I(self, h)).t1;
if (FMAPTPIFC_key_eq(self, tk, k)) {
return (TUPTPIFC_blob=FMAPTPIFC_aget_I(self, h)).t2;
}
else {
if (FMAPTPIFC_key_eq(self, tk, FMAPTPIFC_key_nil_TP(self))) {
goto after_loop;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop: ;
local2 = (self->asize);
if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
h = 0;
while (1) {
tk_3288 = (TUPTPIFC_blob=FMAPTPIFC_aget_I(self, h)).t1;
if (FMAPTPIFC_key_eq(self, tk_3288, k)) {
return (TUPTPIFC_blob=FMAPTPIFC_aget_I(self, h)).t2;
}
else {
if (FMAPTPIFC_key_eq(self, tk_3288, FMAPTPIFC_key_nil_TP(self))) {
goto after_loop_3290;
}
}
h = (c_INT_plus_INT_INT_chk(h,1));
}
after_loop_3290: ;
local3 = (self->asize);
if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
fprintf(stderr,"Violation of assertion ../Library/fmap.sa:150:15\n");
exit(16);
}
}
return ((IFC) NULL);
if (!FMAPTPIFC_invari(self)) {
fprintf(stderr,"Failed invariant FMAP{$TP,IFC}::invariant:BOOL ../Library/fmap.sa:136:6\n");
exit(16);
}
}
STR IFC_TBL_tup_str_(IFC_TBL self, TUPIDENTINT t_3292) {
STR noname3293;
STR r_3294;
INT noname3295 = ((INT) 0);
STR noname3296;
INT local0;
INT noname3299t;
STR local1;
r_3294 = t_3292.t1.str_4;
if ((t_3292.t2==0)) {
return r_3294;
}
r_3294 = STR_plus_STR_STR(r_3294, ((STR) &name_3297));
{
BOOL noname3299 = TRUE;
struct STR_separate_STR_STR_frame_struct temp3298_0;
STR_separate_STR_STR_frame
noname3300 = &temp3298_0;
noname3300->state = 0;
while (1) {
if (noname3299) {
noname3299 = FALSE;
noname3295 = t_3292.t2;
local0 = noname3295;
noname3299t = local0;
} else {
noname3299t--;
}
if (noname3299t<=0) goto after_loop;
0 /* no return value from inlined iter */;
if (noname3300->state == 0) {
noname3296 = ((STR) &name_3301);
noname3300->arg0 = noname3296;
}
noname3300->arg1 = ((STR) &S__3302);
local1 = STR_separate_STR_STR(noname3300);
if (noname3300->state == -1) goto after_loop;
r_3294 = STR_plus_STR_STR(r_3294, local1);
}
}
after_loop: ;
r_3294 = STR_plus_STR_STR(r_3294, ((STR) &name_3303));
return r_3294;
}
void IFC_TBL_cycle_err(IFC_TBL self) {
STR s_3304;
FSETTUPIDENTINT noname3305;
STR noname3306;
STR local0;
TUPIDENTINT local1;
s_3304 = ((STR) &Cycledetectedins);
{
struct FSETTUPIDENTINT__2370_frame_struct temp3307_0;
FSETTUPIDENTINT__2370_frame
noname3308 = &temp3307_0;
struct STR_separate_STR_STR_frame_struct temp3307_1;
STR_separate_STR_STR_frame
noname3309 = &temp3307_1;
noname3308->state = 0;
noname3309->state = 0;
while (1) {
if (noname3309->state == 0) {
noname3306 = ((STR) &name_3310);
noname3309->arg0 = noname3306;
}
if (noname3308->state == 0) {
noname3305 = self->abs_cur;
noname3308->arg0 = noname3305;
}
local1 = FSETTUPIDENTINT__2370(noname3308);
if (noname3308->state == -1) goto after_loop;
noname3309->arg1 = IFC_TBL_tup_str_(self, local1);
local0 = STR_separate_STR_STR(noname3309);
if (noname3309->state == -1) goto after_loop;
s_3304 = STR_plus_STR_STR(s_3304, local0);
}
}
after_loop: ;
PROG_err_STR(self->prog, s_3304);
}
PROG IFC_ABS_CREATE_p(IFC_ABS_CREATE self) {
PROG noname3311;
return self->tp->prog;
}
SIG SIG_TBL_sig_conf(SIG_TBL self, SIG s_3312) {
SIG noname3313;
SIG_TBL noname3314;
IDENT noname3315 = IDENT_zero;
SIG r_3316;
SIG local0;
if (!((!((s_3312==((SIG) NULL)))))) {
fprintf(stderr,"Violation of precondition ./sig.sa:409:23\n");
exit(16);
}
{
struct SIG_TBL_get_quer_frame_struct temp3317_0;
SIG_TBL_get_quer_frame
noname3318 = &temp3317_0;
noname3318->state = 0;
while (1) {
if (noname3318->state == 0) {
noname3314 = self;
noname3315 = s_3312->name_19;
noname3318->arg0 = noname3314;
noname3318->arg1 = noname3315;
}
local0 = SIG_TBL_get_quer(noname3318);
if (noname3318->state == -1) goto after_loop;
r_3316 = local0;
if (SIG_conflicts_wi(r_3316, s_3312)) {
return r_3316;
}
}
}
after_loop: ;
return ((SIG) NULL);
if (!SIG_TBL_invarian(self)) {
fprintf(stderr,"Failed invariant SIG_TBL::invariant:BOOL ./sig.sa:409:23\n");
exit(16);
}
}
void IFC_ABS_CREATE_d(IFC_ABS_CREATE self) {
TR_CLASS_ELT be;
SIG ns;
SIG cs;
PROG local0;
PROG local1;
PROG local2;
PROG local3;
PROG local4;
PROG local5;
STR local6;
STR local7;
STR local8;
STR local9;
PROG local10;
TR_CLASS_ELT local11;
be = self->tr->body;
while (1) {
if ((be==((TR_CLASS_ELT) NULL))) {
goto after_loop;
}
local0 = IFC_ABS_CREATE_p(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) be));
if (be==NULL) {
} else
switch (be->header.tag) {
case TR_CONST_DEF_tag:
local1 = IFC_ABS_CREATE_p(self);
PROG_err_STR(local1, ((STR) &Abstractclassesm)); break;
case TR_SHARED_DEF_tag:
local2 = IFC_ABS_CREATE_p(self);
PROG_err_STR(local2, ((STR) &Abstractclassesm_3320)); break;
case TR_ATTR_DEF_tag:
local3 = IFC_ABS_CREATE_p(self);
PROG_err_STR(local3, ((STR) &Abstractclassesm_3321)); break;
case TR_ROUT_DEF_tag:
if ((!(((TR_ROUT_DEF) be)->is_abstract))) {
local4 = IFC_ABS_CREATE_p(self);
PROG_err_STR(local4, ((STR) &Abstractclassesm_3322));
}
ns = SIG_rout_sig_TR_(((SIG) NULL), ((TR_ROUT_DEF) be), ((TR_ROUT_DEF) be)->name_19, self->con);
cs = SIG_TBL_sig_conf(self->class_sigs, ns);
if ((!((cs==((SIG) NULL))))) {
local5 = IFC_ABS_CREATE_p(self);
local6 = ((STR) &Thetwoexplicitly);
local7 = STR_plus_STR_STR(local6, SIG_str_STR(ns));
local8 = STR_plus_STR_STR(local7, ((STR) &and_3323));
local9 = STR_plus_STR_STR(local8, SIG_str_STR(cs));
PROG_err_STR(local5, STR_plus_STR_STR(local9, ((STR) &conflict)));
}
else {
self->class_sigs = SIG_TBL_insert_S(self->class_sigs, ns);
} break;
case TR_INCLUDE_CLAUSE_tag:
local10 = IFC_ABS_CREATE_p(self);
PROG_err_STR(local10, ((STR) &Abstractclassesm_3324)); break;
default: ;
fprintf(stderr,"No applicable type in typecase ./ifc.sa:214:17\n");
exit(16);
}
local11 = be;
be = (*TR_CLASS_ELT_nex[local11->header.tag+TR_CLASS_ELT_nex_offset])(local11);
}
after_loop: ;
}
INT FLISTIFC_asize_INT(FLISTIFC self) {
INT noname3325 = ((INT) 0);
return self->asize;
fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
exit(16);
}
INT FLISTIFC_size_INT(FLISTIFC self) {
INT noname3326 = ((INT) 0);
if ((self==((FLISTIFC) NULL))) {
return 0;
}
return self->loc_17;
if (!FLISTIFC_invaria(self)) {
fprintf(stderr,"Failed invariant FLIST{IFC}::invariant:BOOL ../Library/flist.sa:50:7\n");
exit(16);
}
}
BOOL FLISTIFC_is_empt(FLISTIFC self) {
BOOL noname3327 = ((BOOL) 0);
INT local0;
local0 = FLISTIFC_size_INT(self);
return (local0==0);
if (!FLISTIFC_invaria(self)) {
fprintf(stderr,"Failed invariant FLIST{IFC}::invariant:BOOL ../Library/flist.sa:113:11\n");
exit(16);
}
}
void FLISTIFC_aclear(FLISTIFC self) {
IFC nil = ((IFC) NULL);
FLISTIFC noname3328;
if (!((!((self==((FLISTIFC) NULL)))))) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:43:9\n");
exit(16);
}
{
struct FLISTIFC_aset_IFC_frame_struct temp3329_0;
FLISTIFC_aset_IFC_frame
noname3330 = &temp3329_0;
noname3330->state = 0;
while (1) {
if (noname3330->state == 0) {
noname3328 = self;
noname3330->arg0 = noname3328;
}
noname3330->arg1 = nil;
FLISTIFC_aset_IFC(noname3330);
if (noname3330->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
}
void FLISTIFC_clear(FLISTIFC self) {
if (FLISTIFC_is_empt(self)) {
return;
}
else {
FLISTIFC_aclear(self);
self->loc_17 = 0;
}
if (!FLISTIFC_invaria(self)) {
fprintf(stderr,"Failed invariant FLIST{IFC}::invariant:BOOL ../Library/flist.sa:117:8\n");
exit(16);
}
}
void FLISTIFC_aref_as(FLISTIFC self, INT ind_3331, IFC val_3332) {
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FLISTIFC) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_3331, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
exit(16);
}
if (ind_3331<0||ind_3331>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
exit(16);
}
self->arr_part[ind_3331] = val_3332;
}
void FLISTIFC_aset_IN(FLISTIFC self, INT ind_3333, IFC val_3334) {
BOOL local0;
INT local1;
if ((!((self==((FLISTIFC) NULL))))) {
local1 = 0;
local0 = INT_is_bet_INT_I(ind_3333, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/flist.sa:73:7\n");
exit(16);
}
FLISTIFC_aref_as(self, ind_3333, val_3334);
if (!FLISTIFC_invaria(self)) {
fprintf(stderr,"Failed invariant FLIST{IFC}::invariant:BOOL ../Library/flist.sa:73:7\n");
exit(16);
}
}
FLISTIFC FLISTIFC_push_IF(FLISTIFC self, IFC e_3335) {
FLISTIFC noname3336;
FLISTIFC r_3337 = ((FLISTIFC) NULL);
FLISTIFC noname3338;
FLISTIFC noname3339;
FLISTIFC local0;
INT local1;
FLISTIFC local2;
INT local3;
IFC local4;
INT local5;
if ((self==((FLISTIFC) NULL))) {
local0 = ((FLISTIFC) sbi_arr_alloc(sizeof(struct FLISTIFC_struct), FLISTIFC_tag, sizeof(IFC) , 5));
local0->asize = 5;
r_3337 = local0;
}
else {
local1 = self->loc_17;
if ((local1<(self->asize))) {
r_3337 = self;
}
else {
local3 = 2;
local2 = ((FLISTIFC) sbi_arr_alloc(sizeof(struct FLISTIFC_struct), FLISTIFC_tag, sizeof(IFC) , (c_INT_times_INT_INT_chk(local3,(self->asize)))));
local2->asize = (c_INT_times_INT_INT_chk(local3,(self->asize)));
r_3337 = local2;
r_3337->loc_17 = self->loc_17;
{
struct FLISTIFC_elt_IFC_frame_struct temp3340_0;
FLISTIFC_elt_IFC_frame
noname3341 = &temp3340_0;
struct FLISTIFC_aset_IFC_frame_struct temp3340_1;
FLISTIFC_aset_IFC_frame
noname3342 = &temp3340_1;
noname3341->state = 0;
noname3342->state = 0;
while (1) {
if (noname3342->state == 0) {
noname3339 = r_3337;
noname3342->arg0 = noname3339;
}
if (noname3341->state == 0) {
noname3338 = self;
noname3341->arg0 = noname3338;
}
local4 = FLISTIFC_elt_IFC(noname3341);
if (noname3341->state == -1) goto after_loop;
noname3342->arg1 = local4;
FLISTIFC_aset_IFC(noname3342);
if (noname3342->state == -1) goto after_loop;
0 /* No return value from iter call */;
}
}
after_loop: ;
FLISTIFC_clear(self);
}
}
r_3337->loc_17 = (c_INT_plus_INT_INT_chk(r_3337->loc_17,1));
local5 = (c_INT_minus_INT_INT_chk(r_3337->loc_17,1));
FLISTIFC_aset_IN(r_3337, local5, e_3335);
return r_3337;
if (!FLISTIFC_invaria(self)) {
fprintf(stderr,"Failed invariant FLIST{IFC}::invariant:BOOL ../Library/flist.sa:79:7\n");
exit(16);
}
}
void IFC_ABS_CREATE_d_3343(IFC_ABS_CREATE self) {
TR_TYPE_SPEC ut;
TP tp_3344;
IFC itp_3345;
PROG local0;
PROG local1;
PROG local2;
PROG local3;
ut = self->tr->under;
while (1) {
if ((ut==((TR_TYPE_SPEC) NULL))) {
goto after_loop;
}
tp_3344 = TP_CONTEXT_tp_of(self->con, ut);
local0 = IFC_ABS_CREATE_p(self);
PROG_err_loc_PRO(local0, ((PROG_ERR) ut));
if (tp_3344==NULL) {
local1 = IFC_ABS_CREATE_p(self);
PROG_err_STR(local1, ((STR) &Abstracttypesmus));
} else
switch (tp_3344->header.tag) {
case TP_CLASS_tag:
if ((!(TP_CLASS_is_abst(((TP_CLASS) tp_3344))))) {
local2 = IFC_ABS_CREATE_p(self);
PROG_err_STR(local2, ((STR) &Abstracttypesmus_3347));
}
else {
itp_3345 = IFC_TBL_ifc_of_T(IFC_ABS_CREATE_p(self)->ifc_tbl, tp_3344);
self->supers = FLISTIFC_push_IF(self->supers, itp_3345);
} break;
default: ;
local3 = IFC_ABS_CREATE_p(self);
PROG_err_STR(local3, ((STR) &Abstracttypesmus_3348));
}
ut = ut->next_8;
}
after_loop: ;
}
IFC FLISTIFC_aref_ag(FLISTIFC self, INT ind_3349) {
IFC noname3350;
BOOL local0;
INT local1;
INT local2;
if ((!((self==((FLISTIFC) NULL))))) {
local1 = 0;
local2 = (self->asize);
local0 = INT_is_bet_INT_I(ind_3349, local1, (c_INT_minus_INT_INT_chk(local2,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
exit(16);
}
if (ind_3349<0||ind_3349>=self->asize) {
fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
exit(16);
}
return self->arr_part[ind_3349];
}
IFC FLISTIFC_aget_IN(FLISTIFC self, INT ind_3351) {
IFC noname3352;
BOOL local0;
INT local1;
if ((!((self==((FLISTIFC) NULL))))) {
local1 = 0;
local0 = INT_is_bet_INT_I(ind_3351, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
exit(16);
}
return FLISTIFC_aref_ag(self, ind_3351);
if (!FLISTIFC_invaria(self)) {
fprintf(stderr,"Failed invariant FLIST{IFC}::invariant:BOOL ../Library/flist.sa:68:7\n");
exit(16);
}
}
IFC FLISTIFC_pop_IFC(FLISTIFC self) {
IFC noname3353;
IFC r_3354;
INT local0;
INT local1;
local0 = FLISTIFC_size_INT(self);
if ((local0==0)) {
return ((IFC) NULL);
}
r_3354 = FLISTIFC_aget_IN(self, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
local1 = (c_INT_minus_INT_INT_chk(self->loc_17,1));
FLISTIFC_aset_IN(self, local1, ((IFC) NULL));
self->loc_17 = (c_INT_minus_INT_INT_chk(self->loc_17,1));
return r_3354;
if (!FLISTIFC_invaria(self)) {
fprintf(stderr,"Failed invariant FLIST{IFC}::invariant:BOOL ../Library/flist.sa:90:6\n");
exit(16);
}
}
BOOL SIG_is_eq_but_tp(SIG self, SIG s_3355) {
BOOL noname3356 = ((BOOL) 0);
ARRAYTP noname3357;
ARRAYTP noname3358;
ARRAYBOOL noname3359;
ARRAYBOOL noname3360;
BOOL local0;
BOOL local1;
BOOL local2;
INT local3;
INT local4;
BOOL local5;
TP local6;
TP local7;
TP local8;
TP local9;
BOOL local10;
BOOL local11;
BOOL local12;
BOOL local13;
TP local14;
if ((self==((SIG) NULL))) {
return (s_3355==((SIG) NULL));
}
else {
if ((s_3355==((SIG) NULL))) {
return FALSE;
}
}
if (c_SYS_ob_eq_OB_OB_BOOL(((OB) self),((OB) s_3355))) {
return TRUE;
}
if (IDENT_is_neq_IDE(self->name_19, s_3355->name_19)) {
local2 = TRUE;
} else {
local3 = ARRAYTP_size_INT(self->args_7);
local2 = (local3!=ARRAYTP_size_INT(s_3355->args_7));
}
if (local2) {
local1 = TRUE;
} else {
local4 = ARRAYBOOL_size_INT(self->hot);
local1 = (local4!=ARRAYBOOL_size_INT(s_3355->hot));
}
if (local1) {
local0 = TRUE;
} else {
local5 = SIG_has_ret_BOOL(self);
local0 = ((local5)!=(SIG_has_ret_BOOL(s_3355)));
}
if (local0) {
return FALSE;
}
{
struct ARRAYTP_elt_TP_frame_struct temp3361_0;
ARRAYTP_elt_TP_frame
noname3362 = &temp3361_0;
struct ARRAYTP_elt_TP_frame_struct temp3361_1;
ARRAYTP_elt_TP_frame
noname3363 = &temp3361_1;
noname3362->state = 0;
noname3363->state = 0;
while (1) {
if (noname3362->state == 0) {
noname3357 = self->args_7;
noname3362->arg0 = noname3357;
}
local6 = ARRAYTP_elt_TP(noname3362);
if (noname3362->state == -1) goto after_loop;
local7 = local6;
if (noname3363->state == 0) {
noname3358 = s_3355->args_7;
noname3363->arg0 = noname3358;
}
local8 = ARRAYTP_elt_TP(noname3363);
if (noname3363->state == -1) goto after_loop;
local9 = local7;
if ((*TP_is_neq_TP_BOOL[local9->header.tag+TP_is_neq_TP_BOOL_offset])(local9, local8)) {
return FALSE;
}
}
}
after_loop: ;
{
struct ARRAYBOOL_elt_BOOL_frame_struct temp3365_0;
ARRAYBOOL_elt_BOOL_frame
noname3366 = &temp3365_0;
struct ARRAYBOOL_elt_BOOL_frame_struct temp3365_1;
ARRAYBOOL_elt_BOOL_frame
noname3367 = &temp3365_1;
noname3366->state = 0;
noname3367->state = 0;
while (1) {
if (noname3366->state == 0) {
noname3359 = self->hot;
noname3366->arg0 = noname3359;
}
local10 = ARRAYBOOL_elt_BOOL(noname3366);
if (noname3366->state == -1) goto after_loop_3364;
local11 = local10;
if (noname3367->state == 0) {
noname3360 = s_3355->hot;
noname3367->arg0 = noname3360;
}
local12 = ARRAYBOOL_elt_BOOL(noname3367);
if (noname3367->state == -1) goto after_loop_3364;
if (((local11)!=(local12))) {
return FALSE;
}
}
}
after_loop_3364: ;
if (SIG_has_ret_BOOL(self)) {
local14 = self->ret;
local13 = (*TP_is_neq_TP_BOOL[local14->header.tag+TP_is_neq_TP_BOOL_offset])(local14, s_3355->ret);
} else {
local13 = FALSE;
}
if (local13) {
return FALSE;
}
return TRUE;
}
SIG SIG_with_new_typ(SIG self, TP t_3368) {
SIG noname3369;
SIG r_3370;
BOOL local0;
SIG local1;
if ((!((self==((SIG) NULL))))) {
local0 = (!((t_3368==((TP) NULL))));
} else {
local0 = FALSE;
}
if (!(local0)) {
fprintf(stderr,"Violation of precondition ./sig.sa:270:16\n");
exit(16);
}
local1 = ((SIG) sbi_alloc(sizeof(struct SIG_struct), SIG_tag));
r_3370 = local1;
r_3370->tp = t_3368;
r_3370->name_19 = self->name_19;
r_3370->args_7 = self->args_7;
r_3370->hot = self->hot;
r_3370->ret = self->ret;
SIG_do_is_builtin(r_3370);
return r_3370;
}
SIG_TBL IFC_ABS_CREATE_d_3371(IFC_ABS_CREATE self) {
SIG_TBL noname3372;
SIG_TBL r_3373 = ((SIG_TBL) NULL);
SIG_TBL noname3374;
IFC si;
SIG_TBL noname3375;
SIG sig_3376;
INT i = ((INT) 0);
SIG cs;
SIG local0;
SIG local1;
PROG local2;
PROG local3;
STR local4;
STR local5;
STR local6;
STR local7;
{
struct SIG_TBL_elt_SIG_frame_struct temp3377_0;
SIG_TBL_elt_SIG_frame
noname3378 = &temp3377_0;
noname3378->state = 0;
while (1) {
if (noname3378->state == 0) {
noname3374 = self->class_sigs;
noname3378->arg0 = noname3374;
}
local0 = SIG_TBL_elt_SIG(noname3378);
if (noname3378->state == -1) goto after_loop;
r_3373 = SIG_TBL_insert_S(r_3373, local0);
}
}
after_loop: ;
while (1) {
if (FLISTIFC_is_empt(self->supers)) {
goto after_loop_3379;
}
else {
si = FLISTIFC_pop_IFC(self->supers);
{
struct SIG_TBL_elt_SIG_frame_struct temp3382_0;
SIG_TBL_elt_SIG_frame
noname3383 = &temp3382_0;
noname3383->state = 0;
while (1) {
if (noname3383->state == 0) {
noname3375 = si->sigs;
noname3383->arg0 = noname3375;
}
local1 = SIG_TBL_elt_SIG(noname3383);
if (noname3383->state == -1) goto after_loop_3381;
sig_3376 = local1;
if ((!((SIG_TBL_sig_conf(r_3373, sig_3376)==((SIG) NULL))))) {
}
else {
i = 0;
while (1) {
if ((i<FLISTIFC_size_INT(self->supers))) {
}
else {
goto after_loop_3384;
}
cs = SIG_TBL_sig_conf(FLISTIFC_aget_IN(self->supers, i)->sigs, sig_3376);
if ((!((cs==((SIG) NULL))))) {
if ((!(SIG_is_eq_but_tp(cs, sig_3376)))) {
local2 = IFC_ABS_CREATE_p(self);
PROG_err_loc_PRO(local2, ((PROG_ERR) self->tr));
local3 = IFC_ABS_CREATE_p(self);
local4 = ((STR) &Thesignatures);
local5 = STR_plus_STR_STR(local4, SIG_str_STR(sig_3376));
local6 = STR_plus_STR_STR(local5, ((STR) &and_3386));
local7 = STR_plus_STR_STR(local6, SIG_str_STR(cs));
PROG_err_STR(local3, STR_plus_STR_STR(local7, ((STR) &mustbedisambigua)));
}
}
i = (c_INT_plus_INT_INT_chk(i,1));
}
after_loop_3384: ;
r_3373 = SIG_TBL_insert_S(r_3373, SIG_with_new_typ(sig_3376, ((TP) self->tp)));
}
}
}
after_loop_3381: ;
}
}
after_loop_3379: ;
return r_3373;
}
IFC IFC_ABS_CREATE_i(IFC_ABS_CREATE self, TP_CLASS t_3387) {
IFC noname3388;
IFC_ABS_CREATE ic;
OUT local0;
OUT local1;
OUT local2;
IFC_ABS_CREATE local3;
PROG local4;
PROG local5;
IDENT local6;
PROG local7;
STR local8;
STR local9;
IFC local10;
SIG_TBL local11;
if (!((!((t_3387==((TP_CLASS) NULL)))))) {
fprintf(stderr,"Violation of precondition ./ifc.sa:190:9\n");
exit(16);
}
if (t_3387->prog->show_ifc_abs_create) {
local0 = OUT_create_OUT(((OUT) NULL));
local1 = OUT_plus_STR_OUT(local0, ((STR) &Abstractifccreate));
local2 = OUT_plus_STR_OUT(local1, TP_CLASS_str_STR(t_3387));
OUT_plus_STR(local2, ((STR) &name_3389));
}
local3 = ((IFC_ABS_CREATE) sbi_alloc(sizeof(struct IFC_ABS_CREATE_struct), IFC_ABS_CREATE_tag));
ic = local3;
ic->tp = t_3387;
local4 = IFC_ABS_CREATE_p(ic);
ic->con = PROG_tp_context_(local4, t_3387);
if ((ic->con==((TP_CONTEXT) NULL))) {
return ((IFC) NULL);
}
local5 = IFC_ABS_CREATE_p(ic);
local6 = t_3387->name_19;
ic->tr = PROG_tree_for_ID(local5, local6, ARRAYTP_size_INT(t_3387->params));
if ((ic->tr==((TR_CLASS_DEF) NULL))) {
local7 = t_3387->prog;
local8 = ((STR) &CompilererrorIFC);
local9 = STR_plus_STR_STR(local8, TP_CLASS_str_STR(t_3387));
PROG_err_STR(local7, STR_plus_STR_STR(local9, ((STR) &name_3390)));
return ((IFC) NULL);
}
IFC_ABS_CREATE_d(ic);
IFC_ABS_CREATE_d_3343(ic);
local10 = ((IFC) NULL);
local11 = IFC_ABS_CREATE_d_3371(ic);
return IFC_create_SIG_T(local10, local11, ((TP) t_3387));
}
SIG SIG_bound_routin(SIG self, TP_ROUT tp_3391) {
SIG noname3392;
SIG r_3393;
SIG local0;
if (!((!((tp_3391==((TP_ROUT) NULL)))))) {
fprintf(stderr,"Violation of precondition ./sig.sa:254:21\n");
exit(16);
}
local0 = ((SIG) sbi_alloc(sizeof(struct SIG_struct), SIG_tag));
r_3393 = local0;
r_3393->tp = ((TP) tp_3391);
r_3393->name_19 = PROG_ident_for_S(tp_3391->prog, ((STR) &call_3394));
r_3393->args_7 = tp_3391->args_7;
r_3393->ret = tp_3391->ret;
SIG_do_is_builtin(r_3393);
return r_3393;
}
IFC IFC_ifc_for_rout(IFC self, TP_ROUT t_3395) {
IFC noname3396;
IFC r_3397;
IFC local0;
SIG_TBL local1;
if (!((!((t_3395==((TP_ROUT) NULL)))))) {
fprintf(stderr,"Violation of precondition ./ifc.sa:96:15\n");
exit(16);
}
local0 = ((IFC) sbi_alloc(sizeof(struct IFC_struct), IFC_tag));
r_3397 = local0;
r_3397->tp = ((TP) t_3395);
local1 = r_3397->sigs;
r_3397->sigs = SIG_TBL_insert_S(local1, SIG_bound_routin(((SIG) NULL), t_3395));
return r_3397;
}