%T246 Any;T243 Any;s2 Any;module Any;e2 Any;T241 Any;fname String;e Any;f2 Any;l Any;run_ Any;s Any;T238 Any;t Any;generate_ Relation Any Any Any Functor String;generate_ Relation;generate_body_ Relation Any Any Functor String;generate_body_ Relation;run Relation Any Any Any Any Any Any;run Relation;eval Relation Any;eval Relation;generate Relation Functor String String Any Any Any;generate Relation;notblank Relation Any;notblank Relation;serialize_item Relation Functor String;serialize_item Relation;each3 Relation Any Any;each3 Relation;each2 Relation Any Any;each2 Relation;concat_if Relation Any Any Any;concat_if Relation;generate_stm Relation Any Any Functor String;generate_stm Relation;header Relation Any;header Relation;generate_body Relation Functor String Any Any;generate_body Relation;conversion_eq_str Relation;conversion_eq Relation Any Any Any Any;conversion_eq Relation;str_exp Relation Any Any;str_exp Relation;num_exp Relation Any Any;num_exp Relation;get_stm Relation Any Any Any Any Any;get_stm Relation;compare_types Relation Any Any Any Any Any;compare_types Relation;specialize_type Relation Any Any Any Any Any;specialize_type Relation;set_type Relation Any Any Any Any;set_type Relation;extract_type Relation Any Any Any;generate_rel Relation Any Any Functor String;generate_rel Relation;generate_fact Relation Any Any Functor String;generate_fact Relation;extract_type_information Relation String Functor;extract_type_information Relation;term Relation Functor String Any Any String;term Relation;pushid Relation;check_type Relation Any Any Any;check_type Relation;make_rel Relation Any Any Any Any Any Any Any;make_rel Relation;term_ Relation Functor String Any Any;term_ Relation;num_r Relation Any Any;num_r Relation;to_list Relation Any String Any Any Any;to_list Relation;to_table Relation Any Any Any String Any Any Any Any;to_table Relation;table_eq Relation Any Any Any Any Any Any;table_eq Relation;to_table_type Relation Any Any Any Any;to_table_type Relation;filter Relation Any Any;filter Relation;func Relation Functor String Any Any Any;func Relation;listify Relation Any Any Any Any Any;listify Relation;setup_pred Relation Any Any Any Any Any Any Any;setup_pred Relation;check_args Relation Any Any Any Any;check_args Relation;conversion Relation Any Any Any Any;conversion Relation;get_type Relation Any Any Any;get_type Relation;is_obj Relation Any;is_obj Relation;is_num Relation Any;is_num Relation;apply Relation Any Any Any;apply Relation;lambda5 Relation Any Any Any;lambda5 Relation;lambda4 Relation Any Any Any;lambda4 Relation;lambda6 Relation Any Any Any;lambda6 Relation;extract_args Relation Any Any Any Any Any;extract_args Relation;term Relation Any Any Any Any Any;compare_relation Relation Any Any Any Any Any;compare_relation Relation;eq2 Relation Any Any;eq2 Relation;eq3 Relation Any Any;eq3 Relation;setup_var Relation Any Any Any Any;setup_var Relation;setup_var2 Relation Any Any Any Any;setup_var2 Relation;var2 Relation Any Any Any Any;var2 Relation;map1 Relation Any Any Any;map1 Relation;new_env Relation Any;new_env Relation;env_from Relation Any Any;env_from Relation;env_make Relation Any Any;env_make Relation;varname Relation Any Any;varname Relation;generate_cond_normal Relation Any Any Any Any;generate_cond_normal Relation;generate_cond_nest Relation Any Any Any Any Any;generate_cond_nest Relation;neg Relation Any Any;neg Relation;generate_cond Relation Any Any Any Any;generate_cond Relation;generate_body Relation Functor String Functor Functor;push_var Relation Any Any Any Any;push_var Relation;push_types Relation Any Any Any Any;push_types Relation;extract_type_args Relation Any Any Any;extract_types Relation Any Any Any;send Relation Any Any;send Relation;extract_type Relation;extract_type_id Relation Any Any Any Any;extract_type_id Relation;extract_types Relation;extract_type_args Relation;is_functor Relation Any Any;is_functor Relation;sym Relation Any;sym Relation;genstr Relation Any Any;genstr Relation;genvar Relation Any;genvar Relation;gensym Relation Any Any;gensym Relation;double_string Relation Any Any;double_string Relation;remove_double_string Relation Any Any;remove_double_string Relation;str Relation Any Any;str Relation;double_quote Relation Any;double_quote Relation;single_quote Relation Any;single_quote Relation;has Any;get Any;set Any;custom_throw Relation Any Functor;custom_throw Relation;halt Any;debug_write Relation Any;debug_write Relation;debug Relation Any;debug Relation %Eq CWam;And CWam;Put Functor;Call Functor;Cur Functor;Lib Functor;Local Functor;Void Functor;Upvalue Functor Number;Const Functor Number;Val Functor Number;Var Functor;Var Functor String Number Functor;None Functor;Error Functor;TTable Functor;TList Functor;Func Functor;ObjGet2 Functor;ObjGet Functor;Id Functor;Str Functor String;Num Functor Number;Fact Functor;Rel Functor;Size Functor;Exclamation Functor;Declaration Functor;Once Functor;SoftCut Functor;Host Functor;Inequality Functor;Op Functor;Cond Functor;ObjData Functor;ObjPred Functor;Bracket Functor;Pred Functor;False Functor;True Functor Null;Or Functor Any Any;Mut Functor;Neq Functor Any Any;Eq Functor Any Any Any;F2 Functor;F1 Functor;F Functor;Tuple Functor;Pair Functor;Token Functor;Info Functor;Cons Functor;Stm Functor % module % generate_ gen4_generate_(_fname,_env,_env2,_f,_code,_upvals):-_upvals=[_generate],(call_cl(_generate,[_f,_code,_fname,_env,_env2,_module])). % generate_body_ gen4_generate_body_(_env,_env2,_f,_code,_upvals):-_upvals=[_generate_body],(call_cl(_generate_body,[_f,_code,_env,_env2])). % run gen4_run(_e,_e2,_module,_fname,_f2,_s2,_upvals):-_upvals=[_generate],(call_cl(_generate,[_f2,_s2,_fname,_e,_e2,_x]),_module = _x). % eval gen4_eval(_fname,_upvals):-_upvals=[_debug,_debug],(_module = _fname,call_cl(_debug,["--"]),ensure_loaded(_fname),atom_string(_X,_fname),call_cl(_debug,[_X]),call(_X,_)). % generate gen4_generate(_f,_code,_fname,_env,_env2,_module,_upvals):-_upvals=[_debug,_debug,_serialize_item,_list,_mutable,_each2,_list,_list,_notblank,_serialize_item,_list,_list,_list,_types,_debug,_debug,_types,_debug,_extract_type,_header,_gensym,_generate_stm,_set],(def(_fname),_module = _fname,call_cl(_set,[_env,"module",_fname,_env1]),call_cl(_generate_stm,[_env1,_env2,_f,_s]),!,call_cl(_gensym,["",_c]),call_cl(_header,[_s0]),((get_(_env2,"export",T200),T200 = _x)->(call_cl(_extract_type,[_env2,_x,_t2]),get_(_env2,"vars",T201),call_cl(_debug,['[|]'("t2",'[|]'(_x,'[|]'(_t2,'[|]'(T201,[]))))]),get_(_types,"to_string",T204),_T203 = T204,call_cl(_T203,[_t2,_T202]),call_cl(_debug,[_T202]));(_t2 = '[|]'("Null",[]),call_cl(_debug,['[|]'("no export",[])]))),get_(_types,"to_string",T207),_T206 = T207,call_cl(_T206,[_t2,_T205]),_info = "% "+_T205+"\n",get_(_list,"join",T210),_T209 = T210,get_(_list,"filter",T213),_T212 = T213,get_(_list,"map",T216),_T215 = T216,get_(_env2,"fcs",T217),call_cl(_T215,[T217,_serialize_item,_T214]),call_cl(_T212,[_T214,_notblank,_T211]),call_cl(_T209,[_T211,";",_T208]),_info2 = "%"+_T208+"\n",get_(_list,"join",T219),_T218 = T219,get_(_list,"map",T222),_T221 = T222,get_(_env2,"ids",T223),call_cl(_T221,[T223,_each2,_T220]),call_cl(_T218,[_T220,"",_s2]),((get_(_mutable,"get",T225),_T224 = T225,call_cl(_T224,["debug",1]))->(_smain = "% main\n"+_module+"(X):-nb_setval(call,0),"+_s+""+".");(_smain = "% main\n"+_module+"(X):-"+_s+""+".")),_code = _info+_info2+"% module\n"+_s0+_s2+_smain,get_(_list,"map",T228),_T227 = T228,get_(_env2,"fcs",T229),call_cl(_T227,[T229,_serialize_item,_T226]),call_cl(_debug,[_T226]),get_(_env2,"fcs",T230),call_cl(_debug,[T230]),!). % notblank gen4_notblank(_s,_upvals):-_upvals=[],(dif(_s,"")). % serialize_item gen4_serialize_item(_f,_s,_upvals):-_upvals=[_types],(((_f = fc_Var(_name,_,_type),get_(_types,"type_to_string",T199),_T198 = T199,call_cl(_T198,[_type,_T197]),_s = _name+" "+_T197);(dif(_f,fc_Var(_name,_,_type)),_s = ""))). % each3 gen4_each3(_e,_e2,_upvals):-_upvals=[_concat_if],(_e = '[|]'(_name,'[|]'(_n,'[|]'(_type,[]))),call_cl(_concat_if,[_sargs,"_upvals",_sargs3]),_s2 = "_upvals=["+_sargs2+"],",_e2 = "% "+_name+"\n"+_id+"("+_sargs3+"):-"+_s2+"("+_s+").\n"). % each2 gen4_each2(_e,_e2,_upvals):-_upvals=[_concat_if],(_e = '[|]'(_id,'[|]'(_name,'[|]'(_sargs,'[|]'(_sargs2,'[|]'(_s,[]))))),call_cl(_concat_if,[_sargs,"_upvals",_sargs3]),_s2 = "_upvals=["+_sargs2+"],",_e2 = "% "+_name+"\n"+_id+"("+_sargs3+"):-"+_s2+"("+_s+").\n"). % concat_if gen4_concat_if(_s1,_s,_s2,_upvals):-_upvals=[],(((_s1 = "",_s2 = _s);(dif(_s1,""),(_s = "",_s2 = _s1);(dif(_s,""),_s2 = _s1+","+_s)))). % generate_stm gen4_generate_stm(_env,_env2,_f,_code,_upvals):-_upvals=[_generate_body],(call_cl(_generate_body,[_f,_code,_env,_env2])). % header gen4_header(_s,_upvals):-_upvals=[],(_s = ""). % generate_body gen4_generate_body(_f,_code,_env,_env2,_upvals):-_upvals=[_custom_throw,_io,_io,_get_stm,_debug,_generate_rel,_generate_fact,_debug,_debug,_custom_throw,_io,_is_num,_is_num,_extract_type,_extract_type,_term,_term,_debug,_Env,_Env,_debug,_compare_types,_conversion_eq_str,_conversion_eq,_term,_term,_debug,_debug,_debug,_set,_io,_get_stm,_neg,_get_stm,_debug,_debug,_term,_term,_extract_args,_debug,_debug,_generate_cond_nest,_debug,_neg,_debug,_debug,_generate_cond_nest,_debug,_debug,_debug_write],(call_cl(_debug_write,["- "]),call_cl(_debug,[_f]),def(_f),!,((_f = fc_And(_a,_b,_line))->(call(gen4_generate_body(_a,_s1,_env,_temp),_upvals),!,call(gen4_generate_body(_b,_s2,_temp,_env2),_upvals),((_s1 = "true")->(_code = _s2);(_code = _s1+","+_s2)));((_f = fc_And(_a,_b))->(call(gen4_generate_body(_a,_s1,_env,_temp),_upvals),call(gen4_generate_body(_b,_s2,_temp,_env2),_upvals),_code = _s1+","+_s2);((_f = fc_Pair(_a,_b))->(call_cl(_debug,[_f]),call(gen4_generate_body(_a,_s1,_env,_temp),_upvals),call(gen4_generate_body(_b,_s2,_temp,_env2),_upvals),_code = "("+_s1+"),("+_s2+")");((_f = fc_Or(_a,_b))->(call(gen4_generate_body(_a,_s1,_env,_env_a),_upvals),call(gen4_generate_body(_b,_s2,_env_a,_env2),_upvals),_code = _s1+";"+_s2);((_f = fc_Cond(_a,_b,_l0))->(call(gen4_generate_body(_a,_sa,_env,_env_a),_upvals),call(gen4_generate_body(_b,_sb,_env_a,_env_b),_upvals),_code1 = "("+_sa+","+_sb+")",_l = '[|]'(fc_Pair(_a,_b),_l0),call_cl(_generate_cond_nest,[_l,_code2,_env_b,_env2,[]]),str(_code2,T175),call_cl(_debug,['[|]'("c",'[|]'(T175,[]))]),_code = "("+_code2+")");((_f = fc_Cond(_a,_b,_l0,_opts))->(get_(_env,"mode",T176),call_cl(_debug,['[|]'("mode",'[|]'(T176,[]))]),((_l0 = [],_opts = "if")->(call(gen4_generate_body(_b,_sb,_env,_env_b),_upvals),((get_(_env,"mode",T177),T177 = "fun")->(call(gen4_generate_body(_a,_sa,_env_b,_env2),_upvals),_code2 = "("+_sa+")->("+_sb+");(true)");(((call_cl(_neg,[_a,_na]))->(true);(throw("complex condition for if-else"))),call(gen4_generate_body(_na,_nsa,_env_b,_env2),_upvals),_code2 = "("+_nsa+");"+"("+_sb+")")));(_l = '[|]'(fc_Pair(_a,_b),_l0),call_cl(_debug,['[|]'("l",'[|]'(_l,[]))]),((get_(_env,"mode",T178),T178 = "fun")->(_opts1 = "choose");(_opts1 = _opts)),call_cl(_generate_cond_nest,[_l,_code2,_env,_env2,_opts1]),str(_code2,T179),call_cl(_debug,['[|]'("c",'[|]'(T179,'[|]'(_opts,[])))]))),_code = "("+_code2+")");((_f = fc_SoftCut(_a,_b,_l))->(call(gen4_generate_body(fc_Cond(_a,_b,_l,"!"),_code,_env,_env2),_upvals),call_cl(_debug,[fc_F1(_code)]));((_f = fc_Host(_host,_name,_args))->((("cut" = _name)->(_code = "!",_env2 = _env);(call_cl(_extract_args,[_args,_sargs,_env,_env2,_prefix]),((_args = [])->(_code = _prefix+_name);(_code = _prefix+_name+"("+_sargs+")")))));((_f = fc_Neq(_a,_b))->(call_cl(_term,[_a,_s1,_env,_env_a,_]),call_cl(_term,[_b,_s2,_env_a,_env_b,_]),_code = "dif("+_s1+","+_s2+")",_env2 = _env_b);((_f = fc_ObjData(_obj,_name,_args,_info))->(call_cl(_debug,["-"]),throw(231));((_f = fc_Stm(_name,_args,_body,_info))->(call_cl(_debug,['[|]'("stm",'[|]'(_f,[]))]),((_name = "once")->(((call_cl(_get_stm,[_env,_env2,_body,_prefix,_code0]))->(_code = _prefix+"once("+_code0+")");(throw("not valid code for once operator"))));((_name = "not")->(((call_cl(_neg,[_body,_na]))->(call(gen4_generate_body(_na,_code,_env,_env2),_upvals));(((call_cl(_get_stm,[_env,_env2,_body,_prefix,_sa]))->(_code = _prefix+"safeNot("+_sa+")");(throw("not valid code for not operator"))))));(get_(_io,"writeln",T181),_T180 = T181,call_cl(_T180,[_name]),throw("complex definition. not done")))));((_f = fc_Rel(_name,_args,_f1,_mode))->(_f2 = fc_Eq(fc_Id(_name,[]),fc_Rel(fc_Id(_name,_t1),_args,_f1),fc_Info(0,0)),call_cl(_set,[_env,"mode",_mode,X4]),call(gen4_generate_body(_f2,_code,X4,_env1),_upvals),_env2 = _env1,str(_code,T182),call_cl(_debug,['[|]'("->",'[|]'(_name,'[|]'(_sargs,'[|]'(T182,'[|]'(_t2,[])))))]),call_cl(_debug,[""]));((_f = fc_Rel(_name,_args,_f1))->(get_(_env,"mode",T183),call_cl(_debug,['[|]'("",'[|]'(T183,[]))]),call(gen4_generate_body(fc_Rel(_name,_args,_f1,"rel"),_code,_env,_env2),_upvals));((_f = fc_Eq(_a,_b,_info))->(call_cl(_term,[_a,_sa,_env,_env_a,_prefix1]),call_cl(_term,[_b,_sb,_env_a,_env_b,_prefix2]),((call_cl(_conversion_eq,[_a,_b,_env_b,_env_c]))->(_code1 = "{"+_sa+" = "+_sb+"}");((call_cl(_conversion_eq_str,[_a,_b,_sa,_sb,_code1,_env_b,_env_c]))->(true);(call_cl(_compare_types,[_a,_b,_env_b,_env_c,_info]),_code1 = _sa+" = "+_sb))),_code = _prefix1+""+_prefix2+_code1,_env2 = _env_c);((_f = fc_Declaration(_name,_type))->(call_cl(_debug,["declaration"]),((_type = '[|]'("Relation",_t))->(_t0 = '[|]'("Relation",_t));(_t0 = _type)),get_(_Env,"push",T185),_T184 = T185,call_cl(_T184,[_env,fc_Var(_name,"out",_t0),_env1]),_id = "_"+_name,_code = "true",_env2 = _env1,get_(_Env,"vars",T188),_T187 = T188,call_cl(_T187,[_env2,_T186]),call_cl(_debug,[_T186]));((_f = fc([],"True"))->(_env2 = _env,_code = "true");((_f = fc([],"False"))->(_env2 = _env,_code = "false",((get_(_env,"mode",T189),T189 = "fun")->(throw("boolean keyword outside of a conditional"));(true)));((_f = fc_Inequality(_a,_b,_op,_info))->(call_cl(_term,[_a,_sa,_env,_env1,_prefix1]),call_cl(_term,[_b,_sb,_env1,_env3,_prefix2]),_l = '[|]'(_a,'[|]'(_b,[])),((_op = "!=")->(_fn = "neq",throw("compiler error"));((_op = "<")->(_fn = "lt");((_op = "<=")->(_fn = "le");((_op = ">")->(_fn = "gt");((_op = ">="),(_fn = "ge")))))),call_cl(_extract_type,[_env,_a,_ta]),call_cl(_extract_type,[_env,_b,_tb]),((call_cl(_is_num,[_ta]);call_cl(_is_num,[_tb]))->(true);((_ta = '[|]'("String",[]);_tb = '[|]'("String",[]))->(true);((_ta = '[|]'("Any",[]);_tb = '[|]'("Any",[]))->(true);(get_(_io,"writeln",T191),_T190 = T191,call_cl(_T190,['[|]'(_ta,'[|]'(_tb,[]))]),call_cl(_custom_throw,["comparing non-Number type",_info]))))),call_cl(_debug,['[|]'("=ineq",'[|]'(_prefix1,'[|]'(_prefix2,[])))]),_code = _prefix1+_prefix2+""+""+_fn+"("+_sa+","+_sb+")",call_cl(_debug,[_code]),_env2 = _env3);((_f = fc_Fact(_name,_args,_info))->(call_cl(_generate_fact,[_env,_env2,_f,_code]));(((call_cl(_generate_rel,[_env,_env2,_f,_code]))->(str(_code,T192),call_cl(_debug,[T192]));((call_cl(_get_stm,[_env,_env2,_f,_prefix1,_code1]))->(_code = _prefix1+_code1);(get_(_io,"writeln",T194),_T193 = T194,call_cl(_T193,[_f]),get_(_io,"writeln",T196),_T195 = T196,call_cl(_T195,[""]),call_cl(_custom_throw,["cannot compile code (could not find the above term)",_info])))))))))))))))))))))))),!). % conversion_eq_str gen4_conversion_eq_str(_a,_b,_sa,_sb,_code,_env,_env2,_upvals):-_upvals=[_debug,_str_exp,_str_exp,_extract_type,_extract_type],(call_cl(_extract_type,[_env,_a,_ta]),call_cl(_extract_type,[_env,_b,_tb]),_env2 = _env,(((call_cl(_str_exp,[_ta,_tb]);call_cl(_str_exp,[_tb,_ta])),(call_cl(_debug,['[|]'("-",'[|]'(_ta,'[|]'(_tb,[])))]),_code = _sa+" = "+_sb);false))). % conversion_eq gen4_conversion_eq(_a,_b,_env,_env2,_upvals):-_upvals=[_debug,_num_exp,_num_exp,_extract_type,_extract_type],(call_cl(_extract_type,[_env,_a,_ta]),call_cl(_extract_type,[_env,_b,_tb]),_env2 = _env,(((call_cl(_num_exp,[_ta,_tb]);call_cl(_num_exp,[_tb,_ta])),(call_cl(_debug,['[|]'("-",'[|]'(_ta,'[|]'(_tb,[])))]));false))). % str_exp gen4_str_exp(_ta,_tb,_upvals):-_upvals=[],(_ta = '[|]'("String",[]),_tb = '[|]'("Math",_)). % num_exp gen4_num_exp(_ta,_tb,_upvals):-_upvals=[_is_num],(call_cl(_is_num,[_ta]),_tb = '[|]'("Math",_)). % get_stm gen4_get_stm(_env,_env2,_f,_prefix,_code,_upvals):-_upvals=[_generate_body,_genvar,_debug,_setup_pred,_debug],(call_cl(_debug,["- stm:"+_f]),def(_env),((_f = fc_Pred(_name,_args,_info),call_cl(_setup_pred,[_env,_env2,_name,_args,_prefix,_code,_info]),call_cl(_debug,['[|]'("p",'[|]'(_prefix,'[|]'(_code,[])))]));(dif(_f,fc_Pred(_name,_args,_info)),(_f = fc_ObjPred(_obj,_name,_args,_info),call_cl(_genvar,[_o]),_o = fc_Id(_name2,_),call_cl(_generate_body,[fc_Eq(_o,fc_ObjGet(_obj,_name,_info),_info),_prefix1,_env,_env1]),call(gen4_get_stm(_env1,_env2,fc_Pred(_name2,_args,_info),_prefix2,_code2),_upvals),_prefix = _prefix1+","+_prefix2,_code = _code2);(dif(_f,fc_ObjPred(_obj,_name,_args,_info)),false)))). % compare_types gen4_compare_types(_a,_b,_env,_env2,_info,_upvals):-_upvals=[_custom_throw,_io,_specialize_type,_debug,_types,_extract_type,_extract_type],(call_cl(_extract_type,[_env,_a,_ta]),call_cl(_extract_type,[_env,_b,_tb]),((get_(_types,"compare_types",T172),_T171 = T172,call_cl(_T171,[_ta,_tb]))->(call_cl(_debug,['[|]'("type",'[|]'(_ta,'[|]'(_tb,[])))]),call_cl(_specialize_type,[_env,_a,_ta,_tb,_env2]));(get_(_io,"writeln",T174),_T173 = T174,call_cl(_T173,['[|]'("type",'[|]'(_ta,'[|]'(_tb,[])))]),call_cl(_custom_throw,["cannot unify types",_info])))). % specialize_type gen4_specialize_type(_env,_a,_ta,_tb,_env2,_upvals):-_upvals=[_io,_debug,_types,_Env],(((_a = fc_Id(_name,_),(((get_(_Env,"update",T163),_T162 = T163,get_(_types,"strict_type",T166),_T165 = T166,call_cl(_T165,[_ta,_tb,_T164]),call_cl(_T162,[_env,_name,_T164,_env2])),(get_(_env,"vars",T167),get_(_env2,"vars",T168),call_cl(_debug,['[|]'(_name,'[|]'(T167,'[|]'(T168,[])))]),true);get_(_io,"writeln",T170),_T169 = T170,call_cl(_T169,['[|]'(_ta,'[|]'(_tb,[]))]),throw("no strict"))));(dif(_a,fc_Id(_name,_)),_env2 = _env))). % set_type gen4_set_type(_env,_env2,_name,_t,_upvals):-_upvals=[_Env],(get_(_Env,"update",T161),_T160 = T161,call_cl(_T160,[_env,_name,_t,_env2])). % extract_type gen4_extract_type(_env,_f,_type,_upvals):-_upvals=[_extract_types,_debug,_debug,_to_table_type,_table,_extract_type_id],(((_f = fc_Num(_s),_type = '[|]'("Number",[]));(dif(_f,fc_Num(_s)),(_f = fc_Str(_),_type = '[|]'("String",[]));(dif(_f,fc_Str(_)),(_f = fc_Id(_name,_t1),call_cl(_extract_type_id,[_env,_f,_type,_info]));(dif(_f,fc_Id(_name,_t1)),(_f = fc_TTable(_args),_type = '[|]'("Table",_t2),get_(_table,"new",T159),_T158 = T159,call_cl(_T158,[_t]),call_cl(_to_table_type,[_env,_args,_t,_t2]),call_cl(_debug,['[|]'("type-dict",'[|]'(_f,'[|]'(_type,[])))]));(dif(_f,fc_TTable(_args)),(_f = fc_TTable(_,_),_type = '[|]'("Table",[]));(dif(_f,fc_TTable(_,_)),(_f = fc_Rel(_,_,_),_type = '[|]'("Relation",[]));(dif(_f,fc_Rel(_,_,_)),(_f = fc_Rel(_args,_),call_cl(_debug,[_f]),call_cl(_extract_types,[_env,_args,_t]),_type = '[|]'("Relation",_t));(dif(_f,fc_Rel(_args,_)),(_f = fc_Op(_,_,_,_),_type = '[|]'("Math",[]));(dif(_f,fc_Op(_,_,_,_)),_type = '[|]'("Any",[]))))))))))). % generate_rel gen4_generate_rel(_env,_env2,_f,_code,_upvals):-_upvals=[_extract_args,_set,_debug,_debug,_list,_extract_type,_term,_debug,_string,_string,_Env,_term],(_f = fc_Pred(_name,_args,_info),((_name = "require")->(_args = '[|]'(_a,'[|]'(_b,[])),call_cl(_term,[_a,_s0,_env,_env_a,_]),_b = fc_Id(_sb,_t2),_s2 = "_"+_sb,get_(_env,"module",T143),_s = T143+"_"+_sb,get_(_Env,"push",T145),_T144 = T145,call_cl(_T144,[_env_a,fc_Var(_sb,"in",_t2),_env2]),!,get_(_string,"size",T147),_T146 = T147,str(_s0,T148),call_cl(_T146,[T148,_n]),get_(_string,"slice",T150),_T149 = T150,str(_s0,T151),call_cl(_T149,[T151,1,_n-1,_sa]),_module = _sa,_code = "creq(\""+_sa+"\","+"_"+_sb+")",str(_code,T152),call_cl(_debug,[T152]));((_name = "export")->(_args = '[|]'(_a,[]),call_cl(_term,[_a,_s1,_env,_env_a,_prefix_]),_code = "X="+_s1+"",call_cl(_extract_type,[_env,_a,_t]),(((_a = fc_Id(_name2,_),get_(_list,"has",T154),_T153 = T154,get_(_env,"vars",T155),call_cl(_T153,[T155,fc_Var(_name2,_n2,_t2)])),(get_(_env,"vars",T156),call_cl(_debug,['[|]'("export-fn",'[|]'(_a,'[|]'(_t,'[|]'(T156,[]))))]));get_(_env,"vars",T157),call_cl(_debug,[fc_Pair(T157)]))),call_cl(_set,[_env_a,"export",_a,_env2]));((_name = "print")->(call_cl(_extract_args,[_args,_sargs,_env,_env2,_prefix]),_code = _prefix+"writeln_("+_sargs+")");(false))))). % generate_fact gen4_generate_fact(_env,_env2,_f,_code,_upvals):-_upvals=[_generate_body,_Env,_table,_Env,_Env,_debug,_debug,_list,_debug],(_f = fc_Fact(_name,_args,_info),((_name = "functor",_code = "true",_c = fc_Var(_name2,0,_type),_args = '[|]'(fc_Id(_name2,_),'[|]'(fc_Id(_arg1,_arg2),[])),call_cl(_debug,[fc_F(_arg1,_arg2)]),((_arg2 = [],((_arg1 = "_",_type = '[|]'("Functor",[]));(dif(_arg1,"_"),_type = '[|]'(_arg1,[]))));(dif(_arg2,[]),get_(_list,"concat",T134),_T133 = T134,call_cl(_T133,[_arg2,'[|]'('[|]'(_arg1,[]),[]),_type]),call_cl(_debug,[_type]))),_type = [_first_type|_],call_cl(_debug,['[|]'("fc",'[|]'(_first_type,'[|]'(_arg1,'[|]'(_arg2,'[|]'(_type,[])))))]),get_(_Env,"push_on",T136),_T135 = T136,call_cl(_T135,[_env,"fcs",_c,_env1]),((dif(_first_type,"Functor"),get_(_Env,"get",T138),_T137 = T138,call_cl(_T137,[_env,"types",_o]),get_(_table,"set",T140),_T139 = T140,call_cl(_T139,[_o,_first_type,"Functor",_o2]),get_(_Env,"set",T142),_T141 = T142,call_cl(_T141,[_env1,"types",_o2,_env2]));(_first_type = "Functor",_env1 = _env2)));(dif(_name,"functor"),("cut" = _name,_code = "!",_env2 = _env);(dif("cut",_name),(_name = "throw",_f1 = fc_Host("c","throw",_args),call_cl(_generate_body,[_f1,_code,_env,_env2]),_args = '[|]'(_c,_));(dif(_name,"throw"),false))))). % extract_type_information gen4_extract_type_information(_fname,_x,_upvals):-_upvals=[_list,_string,_io,_io,_io,_io,_io,_io],(get_(_io,"open",T119),_T118 = T119,call_cl(_T118,[_fname,"read",_f]),get_(_io,"fileReadChar",T121),_T120 = T121,call_cl(_T120,[_f,_c]),((dif(_c,"%"),get_(_io,"writeln",T123),_T122 = T123,call_cl(_T122,["Warning: no type information on file "+_fname]),_x = []);(_c = "%",get_(_io,"fileReadLine",T125),_T124 = T125,call_cl(_T124,[_f,_line]),((_line = "",get_(_io,"writeln",T127),_T126 = T127,call_cl(_T126,["Warning: blank type information on file "+_fname]),_x = []);(dif(_line,""),get_(_io,"close",T129),_T128 = T129,call_cl(_T128,[_f]),get_(_string,"split",T130),_split = T130,once(call_cl(_split,[_line,";",_l])),get_(_list,"map",T132),_T131 = T132,call_cl(_T131,[_l,_extract,_l2]),_x = _l2))))). % term gen4_term(_f,_s2,_env,_env2,_prefix,_upvals):-_upvals=[_io,_term_,_debug,_generate_body,_genvar,_debug,_extract_type,_generate_body,_list,_genvar,_debug,_to_table,_set,_set,_table,_debug,_gensym,_gensym,_gensym,_filter,_to_list,_lambda6,_Env,_pushid,_set,_extract_args,_debug,_make_rel,_debug,_debug,_gensym,_setup_var,_sym,_custom_throw,_io,_setup_var,_is_obj,_check_type,_debug,_get_type,_debug,_sym,_func,_setup_var,_debug,_is_functor,_debug,_debug_write],(((dif(_f,fc_And(_,_)),dif(_f,fc_And(_,_,_)))->(call_cl(_debug_write,[":"]),call_cl(_debug,[_f]));(true)),def(_env),((_f = fc_Id(_name,_))->(_prefix = "",((_name = "Cons")->(_s2 = "[]",_env = _env2);((_name = "_")->(_s2 = "_",_env = _env2);((call_cl(_is_functor,[_name,_env]))->(call_cl(_debug,[";functor"]),_s2 = "fc([],\""+_name+"\")",_env2 = _env);(call_cl(_setup_var,[_env,_env2,_name,_s2]))))));((_f = fc_Func(_name,_args,_info))->(call_cl(_func,[_f,_s2,_env,_env2,_prefix]));((_f = fc_ObjGet(_a,_b))->(call(gen4_term(fc_ObjGet(_a,_b,_info),_s2,_env,_env2,_prefix),_upvals));((_f = fc_ObjGet(_a,_b,_info))->(call_cl(_sym,[_s2]),call_cl(_debug,['[|]'("get",'[|]'(_a,'[|]'(_b,[])))]),((call_cl(_get_type,[_env,_a,_t])),(call_cl(_debug,['[|]'("obj-type",'[|]'(_a,'[|]'(_b,'[|]'(_t,[]))))]),((call_cl(_check_type,[_env,_b,_t]))->(((call_cl(_is_obj,[_t]))->(throw("obj"));(call_cl(_setup_var,[_env,_env2,_a,_sa]),_prefix = "get_("+_sa+","+"\""+_b+"\","+_s2+"),")));(get_(_io,"writeln",T103),_T102 = T103,call_cl(_T102,[_t]),str("property "+_b+" not found in "+_a,T104),call_cl(_custom_throw,[T104,_info]))))));((_f = fc_ObjGet2(_a,_b))->(call(gen4_term(_b,_sb,_env,_,_),_upvals),call_cl(_sym,[_s2]),call_cl(_setup_var,[_env,_env2,_a,_sa]),_prefix = "get_("+_sa+","+""+_sb+","+_s2+"),");((_f = fc_Rel(_args,_body))->(call_cl(_gensym,["",_n]),_id = fc_Id(_n,[]),call(gen4_term(fc_Rel(_id,_args,_body),_s2,_env,_env2,_prefix),_upvals));((_f = fc_Rel(_id,_args,_body))->(_id = fc_Id(_name,_),call_cl(_debug,['[|]'(_id,'[|]'(_name,[]))]),get_(_env,"module",T105),_id2 = T105+"_"+_name,call_cl(_debug,[_id2]),call_cl(_make_rel,[_env,_fn,_f,_sargs,_s0,_id2,_t2]),str(_s0,T106),call_cl(_debug,['[|]'("bind",'[|]'(_id,'[|]'(T106,[])))]),get_(_fn,"upvals",T107),call_cl(_extract_args,[T107,_sargs2,_env,_,_]),get_(_fn,"ids",T108),call_cl(_set,[_env,"ids",T108,_env1]),call_cl(_pushid,[_env1,'[|]'(_id2,'[|]'(_name,'[|]'(_sargs,'[|]'(_sargs2,'[|]'(_s0,[]))))),_env3]),get_(_Env,"push",T110),_T109 = T110,call_cl(_T109,[_env3,fc_Var(_name,"out",_t2),_env2]),call_cl(_lambda6,["["+_sargs2+"]",_id2,_s2]),_prefix = "");((_f = fc_TList(_args))->(call_cl(_to_list,[_args,_sargs,_env,_env2,_prefix]),_s2 = _sargs);((_f = fc_TTable(_args))->(call_cl(_filter,[_args,_args2]),((_args2 = fc([],"True"))->(call_cl(_gensym,["T",_s2]),_prefix = "new("+_s2+"),",_env = _env2);(call_cl(_gensym,["T",_c]),call_cl(_gensym,["T",_s2]),call_cl(_debug,['[|]'("args-t",'[|]'(_args2,[]))]),get_(_table,"new",T112),_T111 = T112,call_cl(_T111,[_t]),call_cl(_set,[_env,"mode","obj",X2]),call_cl(_set,[X2,"this",_s2,X3]),call_cl(_to_table,[X3,_env1,_args2,_f2,_c,_s2,_t,_t2]),str(_f2,T113),call_cl(_debug,['[|]'("s",'[|]'(T113,[]))]),_env2 = _env1,_prefix = "new("+_c+"),"+_f2)));((_f = fc_ObjPred(_obj,_name,_args,_info))->(call_cl(_genvar,[_o]),get_(_list,"concat",T115),_T114 = T115,call_cl(_T114,[_args,'[|]'(_o,[]),_args2]),call_cl(_generate_body,[fc_ObjPred(_obj,_name,_args2,_info),_prefix1,_env,_env2]),_o = fc_Id(_s1,_),_s2 = "_"+_s1,_prefix = _prefix1+",");((_f = fc_Op(_a,_b,_op,_info))->(call_cl(_extract_type,[_env,_a,_ta]),call(gen4_term(_a,_sa,_env,_env1,_prefix1),_upvals),call(gen4_term(_b,_sb,_env1,_env3,_prefix2),_upvals),call_cl(_debug,['[|]'(_ta,'[|]'(_op,'[|]'(_sa,'[|]'(_sb,[]))))]),_prefix = _prefix1+_prefix2,_s2 = _sa+_op+_sb,_env2 = _env3);((_f = fc_Size(_a,_info))->(call_cl(_genvar,[_temp]),call_cl(_generate_body,[fc_ObjPred("string","size",'[|]'(_a,'[|]'(_temp,[])),_info),_prefix1,_env,_env2]),_temp = fc_Id(_s1,_),call_cl(_debug,['[|]'("=",'[|]'(_a,'[|]'(_temp,[])))]),_s2 = "_"+_s1,_prefix = _prefix1+",");((call_cl(_term_,[_f,_s2,_env,_env2]))->(_prefix = "");(get_(_io,"writeln",T117),_T116 = T117,call_cl(_T116,[_f]),throw("term not recognized"))))))))))))))),!). % pushid gen4_pushid(_env,_e,_env2,_upvals):-_upvals=[_set,_list],((((get_(_env,"ids",T99),T99 = _t),(get_(_list,"push",T101),_T100 = T101,call_cl(_T100,[_t,_e,_t1]),call_cl(_set,[_env,"ids",_t1,_env2]));throw("no ids")))). % check_type gen4_check_type(_env,_name,_type,_upvals):-_upvals=[_debug,_get_type,_debug],((((_type = [];_type = '[|]'("Any",[])),(true);_type = '[|]'("Table",_t),(((_t = []),(true);((get_(_t,_name,T98),T98 = _t0),(call_cl(_debug,['[|]'("chk",'[|]'(_name,'[|]'(_t,[])))]),call_cl(_get_type,[_env,_name,_t2]),call_cl(_debug,['[|]'("obj-get",'[|]'(_t0,'[|]'(_t2,[])))]),true);false)))))). % make_rel gen4_make_rel(_env,_fn,_f,_sargs,_body,_id2,_t2,_upvals):-_upvals=[_extract_types,_extract_args,_debug,_generate_body,_Env,_debug,_set,_set,_push_types,_debug,_env_make],(_f = fc_Rel(_id,_args,_code),call_cl(_env_make,[_env1,_env]),_args2 = _args,call_cl(_debug,["-setup"]),_t1 = ["Relation"|_type],call_cl(_push_types,[_env1,_env_fn2,_args2,_type]),_id = fc_Id(_name,_),call_cl(_set,[_env_fn2,"rec",_id2,X1]),call_cl(_set,[X1,"args",_args2,_env_fn3]),call_cl(_debug,['[|]'("make-rec",'[|]'(_id2,'[|]'(_id,[])))]),get_(_Env,"push",T97),_T96 = T97,call_cl(_T96,[_env_fn3,fc_Var(_name,"rec",'[|]'("Relation",[])),_env_fn]),call_cl(_generate_body,[_code,_body,_env_fn,_fn]),call_cl(_debug,["-"]),call_cl(_extract_args,[_args2,_sargs,_env1,_,_prefix]),_t2 = ["Relation"|_type2],call_cl(_extract_types,[_fn,_args,_type2])). % term_ gen4_term_(_f,_s2,_env,_env2,_upvals):-_upvals=[_io,_num_r,_double_string],(((_f = fc_Str(_s),_env = _env2,call_cl(_double_string,[_s,_s2]));(dif(_f,fc_Str(_s)),(_f = fc_Host(_a,_s),_env = _env2,_s2 = _s);(dif(_f,fc_Host(_a,_s)),(_f = fc_Num(_s),_env = _env2,call_cl(_num_r,[_s,_s2]));(dif(_f,fc_Num(_s)),get_(_io,"writeln",T95),_T94 = T95,call_cl(_T94,[_f]),throw("term not recognized")))))). % num_r gen4_num_r(_s,_s2,_upvals):-_upvals=[_string],(((get_(_string,"has",T92),_T91 = T92,call_cl(_T91,[_s,"."]))->(_s2 = _s);(str(_s+".0",T93),_s2 = T93))). % to_list gen4_to_list(_l,_s,_env,_env2,_prefix,_upvals):-_upvals=[_string,_term,_string,_term,_term],(((_l = [_a|[fc_Tuple(_l2)|[]]],call_cl(_term,[_a,_sa,_env,_env1,_prefix1]),call_cl(_term,[_l2,_sb,_env1,_env2,_prefix2]),get_(_string,"code",T88),_T87 = T88,call_cl(_T87,[_c,39]),_symbol = _c+"[|]"+_c,_s = ""+_symbol+"("+_sa+","+_sb+")",_prefix = _prefix1+_prefix2);(dif(_l,[_a|[fc_Tuple(_l2)|[]]]),(_l = [_a|_tail],call_cl(_term,[_a,_sa,_env,_env1,_prefix1]),call(gen4_to_list(_tail,_sb,_env1,_env2,_prefix2),_upvals),_prefix = _prefix1+_prefix2,get_(_string,"code",T90),_T89 = T90,call_cl(_T89,[_c,39]),_symbol = _c+"[|]"+_c,_s = ""+_symbol+"("+_sa+","+_sb+")");(dif(_l,[_a|_tail]),_l = [],_s = "[]",_env2 = _env,_prefix = "")))). % to_table gen4_to_table(_env,_env2,_l,_f,_c,_c2,_t,_t2,_upvals):-_upvals=[_debug,_set,_extract_type,_remove_double_string,_table_eq,_debug,_debug,_debug,_debug,_debug,_gensym,_debug],(call_cl(_debug,[";"+_l]),((_l = fc_And(_a,_b))->(call_cl(_gensym,["T",_c_]),call_cl(_debug,[";"]),call_cl(_debug,[_a]),call(gen4_to_table(_env,_temp,_a,_f1,_c,_c_,_t,_t0),_upvals),call_cl(_debug,[";"+_b]),call(gen4_to_table(_temp,_env2,_b,_f2,_c_,_c2,_t0,_t2),_upvals),call_cl(_debug,['[|]'(",",'[|]'(_a,'[|]'(_f1,'[|]'(_b,'[|]'(_f2,[])))))]),_f = _f1+""+_f2);((_l = fc_And(_a,_b,_))->(throw("-"));((_l = fc_Eq(_a,_b,_info))->(call_cl(_debug,['[|]'("set-t",'[|]'(_a,'[|]'(_b,[])))]),call_cl(_table_eq,[_env,_env2,_l,_f,_c,_c2]),def(_f),((_a = fc_Id(_sa,_))->(true);((_a = fc_Str(_s1))->(call_cl(_remove_double_string,[_s1,_sa]));(_sa = ""))),call_cl(_extract_type,[_env,_b,_tb]),call_cl(_set,[_t,_sa,_tb,_t2]));((_l = fc([],"True"))->(_f = "true,",_env2 = _env,_c2 = _c,_t2 = _t);((_f = fc_Host(_,_a,_b))->(_env = _env2,_s2 = _s,_t2 = _t);((_l = fc_Rel(_name,_args,_f1))->(throw("-"));(call_cl(_debug,[_l]),throw("cannot convert to table")))))))),!). % table_eq gen4_table_eq(_env,_env2,_l,_f,_c,_c2,_upvals):-_upvals=[_debug,_term,_debug,_term,_debug],(_l = fc_Eq(_a,_b,_info),call_cl(_debug,['[|]'("t-start",'[|]'(_l,[]))]),call_cl(_term,[_a,_sa,_env,_env_a,_prefix1]),call_cl(_debug,['[|]'("t",[])]),call_cl(_term,[_b,_sb,_env_a,_env_b,_prefix2]),((_a = fc_Id(_name,_))->(_f = "set_("+_c+",\""+_name+"\","+_sb+","+_c2+"),");(_f = "set_("+_c+","+_sa+","+_sb+","+_c2+"),")),_env2 = _env_b,call_cl(_debug,['[|]'("t-end",'[|]'(_b,'[|]'(_sb,[])))]),!). % to_table_type gen4_to_table_type(_env,_l,_t,_t2,_upvals):-_upvals=[_io,_debug,_set,_extract_type,_remove_double_string,_debug,_debug],(call_cl(_debug,['[|]'("set;",'[|]'(_l,[]))]),((_l = fc_And(_a,_b))->(throw("-"));((_l = fc_And(_a,_b,_))->(call(gen4_to_table_type(_env,_a,_t,_t0),_upvals),call(gen4_to_table_type(_env,_b,_t0,_t2),_upvals));((_l = fc_Eq(_a,_b,_info))->(call_cl(_debug,['[|]'("set;",'[|]'(_sa,'[|]'(_tb,[])))]),((_a = fc_Id(_sa,_))->(true);((_a = fc_Str(_s1))->(call_cl(_remove_double_string,[_s1,_sa]));(_sa = ""))),call_cl(_extract_type,[_env,_b,_tb]),call_cl(_set,[_t,_sa,_tb,_t2]),call_cl(_debug,['[|]'(_sa,'[|]'(_tb,[]))]));((_l = fc_Rel(_name,_args,_f1))->(call(gen4_to_table_type(_env,fc_Eq(fc_Id(_name,[]),fc_Rel(_args,_f1),_),_t,_t2),_upvals));((_l = fc([],"True"))->(_t2 = _t);(_t2 = _t,get_(_io,"writeln",T86),_T85 = T86,call_cl(_T85,[_l]),throw("unknown table type"))))))),!). % filter gen4_filter(_l,_f,_upvals):-_upvals=[],(((_l = fc_And(_a,_b),call(gen4_filter(_a,_f1),_upvals),call(gen4_filter(_b,_f2),_upvals),((_a = fc([],"True"),_f = _f2);(dif(_a,fc([],"True")),(_b = fc([],"True"),_f = _f1);(dif(_b,fc([],"True")),_f = fc_And(_f1,_f2)))));(dif(_l,fc_And(_a,_b)),(_l = fc_And(_a,_b,_),call(gen4_filter(fc_And(_a,_b),_f),_upvals));(dif(_l,fc_And(_a,_b,_)),(_l = fc_Rel(_name,_args,_f1),_f = fc_Eq(fc_Id(_name,[]),fc_Rel(_args,_f1),_));(dif(_l,fc_Rel(_name,_args,_f1)),_f = _l))))). % func gen4_func(_f,_s2,_env,_env2,_prefix,_upvals):-_upvals=[_debug,_setup_pred,_list,_genstr,_gensym,_term,_debug,_extract_type,_gensym,_term,_gensym,_term,_debug,_gensym,_term,_debug,_debug,_extract_args,_is_functor,_listify],(_f = fc_Func(_name,_args,_info),((_name = "Cons")->(call_cl(_listify,[_args,_s2,_prefix,_env,_env2]));((call_cl(_is_functor,[_name,_env]))->(call_cl(_extract_args,[_args,_sargs,_env,_env2,_prefix]),call_cl(_debug,[_name]),_s2 = "fc_"+_name+"("+_sargs+")",call_cl(_debug,[_s2]));((_name = "int")->(_args = '[|]'(_h,[]),call_cl(_term,[_h,_s,_env,_env2,_prefix1]),call_cl(_gensym,["X",_s2]),_prefix = _prefix1+"int("+_s+","+_s2+"),",call_cl(_debug,['[|]'("-",'[|]'(_prefix,'[|]'(_c,[])))]));((_name = "num";_name = "real")->(_args = '[|]'(_h,[]),call_cl(_term,[_h,_s,_env,_env2,_prefix1]),call_cl(_gensym,["X",_s2]),_prefix = _prefix1+"{"+_s2+" = "+_s+"},");((_name = "math")->(_args = '[|]'(_a,[]),call_cl(_term,[_a,_s,_env,_env2,_prefix1]),call_cl(_gensym,["X",_s2]),((call_cl(_extract_type,[_env,_a,'[|]'("String",[])]))->(_prefix = _prefix1+"str2("+_s2+", "+_s+"),");(_prefix = _prefix1+"freeze("+_s2+",{"+_s2+" = "+_s+"}),")),call_cl(_debug,['[|]'("-",'[|]'(_prefix,'[|]'(_s2,[])))]));((_name = "str")->(_args = '[|]'(_h,[]),call_cl(_term,[_h,_s,_env,_env2,_prefix1]),call_cl(_gensym,["T",_c]),_prefix = _prefix1+"str("+_s+","+_c+"),",_s2 = _c);(call_cl(_genstr,[_o,_s2]),get_(_list,"concat",T84),_T83 = T84,call_cl(_T83,[_args,'[|]'(_o,[]),_args2]),call_cl(_setup_pred,[_env,_env2,_name,_args2,_prefix1,_s,_info]),call_cl(_debug,['[|]'("p-",'[|]'(_s,'[|]'(_sargs,'[|]'(_s2,[]))))]),_prefix = _prefix1+_s+","))))))),!). % listify gen4_listify(_l,_s2,_prefix,_env,_env2,_upvals):-_upvals=[_term,_term],(((_l = '[|]'(_a,'[|]'(_b,[])),call_cl(_term,[_a,_sa,_env,_env1,_c1]),call_cl(_term,[_b,_sb,_env1,_env2,_c2]),_s2 = "["+_sa+"|"+_sb+"]",_prefix = _c1+_c2);(dif(_l,'[|]'(_a,'[|]'(_b,[]))),throw("incorrect number of parameters for Cons")))). % setup_pred gen4_setup_pred(_env,_env2,_name,_args,_prefix,_code,_info,_upvals):-_upvals=[_custom_throw,_io,_debug,_lambda5,_Env,_compare_relation,_debug,_extract_args,_check_args,_debug,_Env,_lambda5,_setup_var,_debug,_compare_relation,_debug,_extract_args,_check_args,_apply,_debug,_compare_relation,_extract_args,_debug,_check_args,_extract_types,_list,_debug],(_fc = fc_Var(_name,_obj,_type),call_cl(_debug,["-setup=call"]),((get_(_list,"find",T71),_T70 = T71,get_(_env,"vars",T72),call_cl(_T70,[T72,_fc,_]))->(((_obj = "rec")->(_type2 = ["Relation"|_t1],get_(_env,"args",T73),call_cl(_extract_types,[_env,T73,_t1]),call_cl(_check_args,[_env,_args,_t1,_args2]),call_cl(_debug,['[|]'("fn-",'[|]'(_args2,[]))]),call_cl(_extract_args,[_args2,_sargs,_env,_env1,_prefix]),call_cl(_compare_relation,[fc_Pair(_name,_type2),_args2,_env1,_env2,_info]),get_(_env,"rec",T74),call_cl(_debug,['[|]'("call-rec",'[|]'(_name,'[|]'(_args,'[|]'(_type2,'[|]'(T74,'[|]'(_t1,[]))))))]),get_(_env,"rec",T75),call_cl(_apply,[T75,_sargs,_code]));(_type = [_|_t1],((dif(_type,'[|]'("Any",[])))->(call_cl(_check_args,[_env,_args,_t1,_args2]));(_args2 = _args)),call_cl(_extract_args,[_args2,_sargs,_env,_env1,_prefix]),call_cl(_debug,['[|]'("fn2",'[|]'(_args,'[|]'(_args2,[])))]),call_cl(_compare_relation,[fc_Pair(_name,_type),_args2,_env1,_env2,_info]),call_cl(_debug,['[|]'("call",'[|]'(_name,[]))]),call_cl(_setup_var,[_env,_,_name,_name2]),call_cl(_lambda5,[_name,_sargs,_code]))));((get_(_Env,"prevs",T77),_T76 = T77,call_cl(_T76,[_env,_name,_fc]))->(call_cl(_debug,['[|]'("prev-var2=rel",'[|]'(_name,'[|]'(_fc,'[|]'(_id,[]))))]),_type = [_|_t1],((dif(_type,'[|]'("Any",[])))->(call_cl(_check_args,[_env,_args,_t1,_args2]));(_args2 = _args)),call_cl(_extract_args,[_args2,_sargs,_env,_env0,_prefix]),call_cl(_debug,['[|]'("fn2",'[|]'(_args,'[|]'(_args2,[])))]),call_cl(_compare_relation,[fc_Pair(_name,_type),_args2,_env0,_env1,_info]),get_(_Env,"push_on",T79),_T78 = T79,call_cl(_T78,[_env1,"upvals",fc_Id(_name,_type),_env2]),call_cl(_lambda5,[_name,_sargs,_code]),get_(_env2,"upvals",T80),call_cl(_debug,['[|]'("-",'[|]'(T80,[]))]));(get_(_io,"writeln",T82),_T81 = T82,call_cl(_T81,[_name]),call_cl(_custom_throw,["calling unknown relation "+_name,_info])))),!). % check_args gen4_check_args(_env,_l,_l2,_args2,_upvals):-_upvals=[_debug,_conversion,_extract_type],(((_l = [],_l2 = [],_args2 = []);(dif(_l,[]),_l = '[|]'(_a,_t1),_l2 = '[|]'(_tb,_t2),_args2 = '[|]'(_f1,_t4),call_cl(_extract_type,[_env,_a,_ta]),call_cl(_conversion,[_ta,_tb,_a,_f1]),call_cl(_debug,['[|]'("fn2",'[|]'(_ta,'[|]'(_tb,'[|]'(_f1,[]))))]),call(gen4_check_args(_env,_t1,_t2,_t4),_upvals)))). % conversion gen4_conversion(_ta,_tb,_f,_f1,_upvals):-_upvals=[_is_num,_is_num,_is_num],((((true),(call_cl(_is_num,[_ta]),_tb = '[|]'("Math",_),_f1 = fc_Func("math",'[|]'(_f,[]),_));(_ta = '[|]'("String",[]),_tb = '[|]'("Math",_),_f1 = fc_Func("math",'[|]'(_f,[]),_);(_ta = '[|]'("Math",_),call_cl(_is_num,[_tb]),_f1 = fc_Func("num",'[|]'(_f,[]),_);_f = _f1))))). % get_type gen4_get_type(_env,_name,_t,_upvals):-_upvals=[_has],((((get_(_env,"vars",T69),call_cl(_has,[T69,fc_Var(_name,_,_t)])),(true);_t = '[|]'("Table",[])))). % is_obj gen4_is_obj(_ta,_upvals):-_upvals=[],(_ta = '[|]'("Object",_)). % is_num gen4_is_num(_ta,_upvals):-_upvals=[],(_ta = '[|]'("Number",_);_ta = '[|]'("Integer",_);_ta = '[|]'("Real",_)). % apply gen4_apply(_name,_sargs,_s,_upvals):-_upvals=[],(((_sargs = "",_s = "call("+_name+",_upvals)");(dif(_sargs,""),_s = "call("+_name+"("+_sargs+"),_upvals)"))). % lambda5 gen4_lambda5(_name,_sargs,_s2,_upvals):-_upvals=[_lambda4,_mutable],(get_(_mutable,"get",T68),_T67 = T68,call_cl(_T67,["debug",_x]),((_x = 1,call_cl(_lambda4,[_name,_sargs,_s2]));(dif(_x,1),_s2 = "call_cl("+"_"+_name+",["+_sargs+"]"+""+")"))). % lambda4 gen4_lambda4(_name,_sargs,_s2,_upvals):-_upvals=[],(_s2 = "call_db("+"_"+_name+",["+_sargs+"],["+_name+"])"). % lambda6 gen4_lambda6(_sargs,_s0,_s2,_upvals):-_upvals=[],(_s2 = "clos("+_sargs+","+""+_s0+")"). % extract_args gen4_extract_args(_l,_s,_env,_env2,_prefix,_upvals):-_upvals=[_string,_term,_term],(((_l = [_f1|[]])->(call_cl(_term,[_f1,_s,_env,_env2,_prefix]));((_l = [_f1|_tail])->(call_cl(_term,[_f1,_s1,_env,_env_a,_prefix1]),call(gen4_extract_args(_tail,_s2,_env_a,_env2,_prefix2),_upvals),def(_prefix2),def(_prefix1),get_(_string,"concat",T66),_T65 = T66,call_cl(_T65,[_prefix1,_prefix2,_prefix]),_s = _s1+","+_s2);(_l = [],_s = "",_prefix = "",_env2 = _env)))). % compare_relation gen4_compare_relation(_f,_args,_env,_env2,_info,_upvals):-_upvals=[_custom_throw,_io,_io,_io,_debug,_types,_debug,_extract_type_args],(_f = fc_Pair(_name,_t1),_env = _env2,call_cl(_extract_type_args,[_env,_args,__args]),_t2 = ["Relation"|__args],call_cl(_debug,['[|]'("rel",'[|]'(_name,'[|]'(_t1,'[|]'(_t2,[]))))]),((get_(_types,"compare_types",T58),_T57 = T58,call_cl(_T57,[_t1,_t2]))->(call_cl(_debug,['[|]'("true",[])]));(get_(_io,"writeln",T60),_T59 = T60,call_cl(_T59,['[|]'("types",'[|]'(_args,[]))]),get_(_io,"writeln",T62),_T61 = T62,call_cl(_T61,[_t2]),get_(_io,"writeln",T64),_T63 = T64,call_cl(_T63,[_t1]),_msg = "calling relation "+_name+" with wrong type",call_cl(_custom_throw,[_msg,_info]))),!). % eq2 gen4_eq2(_t1,_t2,_upvals):-_upvals=[_eq3,_debug],(_n1 = _t1.length,_n2 = _t2.length,call_cl(_debug,['[|]'(_n1,'[|]'(_n2,[]))]),call_cl(_eq3,[_n1,_n2])). % eq3 gen4_eq3(_n1,_n2,_upvals):-_upvals=[],((((true),(_n1 = _n2);_n1 = 1))). % setup_var gen4_setup_var(_env,_env2,_name,_s2,_upvals):-_upvals=[_setup_var2,_debug,_list,_Env],(get_(_Env,"vars",T53),_T52 = T53,call_cl(_T52,[_env,_vars]),_fc = fc_Var(_name,_n,_tc,_id),(((get_(_list,"find",T55),_T54 = T55,get_(_env,"vars",T56),call_cl(_T54,[T56,_fc,_])),(_env2 = _env,_s2 = ""+_id,call_cl(_debug,['[|]'("alias",'[|]'(_s2,[]))]));call_cl(_setup_var2,[_env,_env2,_name,_s2])))). % setup_var2 gen4_setup_var2(_env,_env2,_name,_s2,_upvals):-_upvals=[_Env,_Env,_debug,_Env,_var2,_list],(_fc = fc_Var(_name,_n,_tc),(((get_(_list,"find",T44),_T43 = T44,get_(_env,"vars",T45),call_cl(_T43,[T45,_fc,_])),(call_cl(_var2,[_env,_env2,_fc,_s2]));((get_(_Env,"prevs",T47),_T46 = T47,call_cl(_T46,[_env,_name,_fc])),(call_cl(_debug,['[|]'("prev-var",'[|]'(_name,'[|]'(_n,'[|]'(_tc,[]))))]),get_(_Env,"push_on",T49),_T48 = T49,call_cl(_T48,[_env,"upvals",fc_Id(_name,_tc),_env2]),_s2 = "_"+_name);_n = "out",_s2 = "_"+_name,_tc = '[|]'("Any",[]),get_(_Env,"push",T51),_T50 = T51,call_cl(_T50,[_env,_fc,_env2]))))). % var2 gen4_var2(_env,_env2,_fc,_s2,_upvals):-_upvals=[],(_fc = fc_Var(_name,_obj,_type),_env = _env2,((_obj = "args",_s2 = "_"+_name);(dif(_obj,"args"),_s2 = "_"+_name))). % map1 gen4_map1(_env,_l,_l2,_upvals):-_upvals=[_debug],((((true),(_l = '[|]'(_e1,_e2),_l2 = '[|]'(_s,_e4),!,get_(_env,"module",T42),_s = "nb_getval("+T42+"_"+_e1+",_"+_e1+"),",call(gen4_map1(_env,_e2,_e4),_upvals));call_cl(_debug,['[|]'(2,'[|]'(_l,'[|]'(_l2,[])))]),_l = [],_l2 = []))). % new_env gen4_new_env(_e,_upvals):-_upvals=[_env_from],(call_cl(_env_from,[_e,[]])). % env_from gen4_env_from(_e,_prev,_upvals):-_upvals=[_set,_set,_set,_Env,_table],(get_(_table,"new",T38),_T37 = T38,call_cl(_T37,[_t1]),get_(_Env,"new",T40),_T39 = T40,call_cl(_T39,[_e1,_prev,_t1]),call_cl(_set,[_e1,"mode","fn",_e2]),call_cl(_set,[_e2,"ids",[],_e3]),call_cl(_set,[_e3,"g",[],_e])). % env_make gen4_env_make(_e,_e1,_upvals):-_upvals=[_set,_set],(call_cl(_set,[_e1,"vars",[],_e2]),call_cl(_set,[_e2,"prev",_e1,_e])). % varname gen4_varname(_l2,_sb,_upvals):-_upvals=[],(_l2 = fc_Id(_name,_),_sb = "_"+_name). % generate_cond_normal gen4_generate_cond_normal(_l,_code2,_env,_env2,_upvals):-_upvals=[_list,_generate_cond],(call_cl(_generate_cond,[_l,_l2,_env,_env2]),get_(_list,"join",T36),_T35 = T36,call_cl(_T35,[_l2,";",_code2])). % generate_cond_nest gen4_generate_cond_nest(_l,_s2,_env,_env2,_opt,_upvals):-_upvals=[_generate_body,_generate_body,_debug,_neg,_generate_body,_generate_body,_generate_body,_generate_body,_generate_body],(((_l = '[|]'(_c,[]))->(call_cl(_generate_body,[_c,_s2,_env,_env2]));((_l = '[|]'(_c,_tail))->(((_opt = "!";_opt = "choose")->(_c = fc_Pair(_a,_b),call_cl(_generate_body,[_a,_sa,_env,_env_a]),call_cl(_generate_body,[_b,_sb,_env_a,_env1]),_s2 = "("+_sa+")->"+"("+_sb+");"+"("+_sc+")");((_opt = "if")->(_c = fc_Pair(_a,_b),call_cl(_generate_body,[_a,_sa,_env,_env_a]),call_cl(_generate_body,[_b,_sb,_env_a,_env_b]),((call_cl(_neg,[_a,_na]))->(call_cl(_debug,['[|]'("n",'[|]'(_na,[]))]),call_cl(_generate_body,[_na,_nsa,_env_b,_env1]),_s2 = "("+_sa+","+_sb+");"+"("+_nsa+","+_sc+")");(_env1 = _env_b,_nsa = "safeNot("+_sa+")",_s2 = "("+_sa+","+_sb+");"+"("+_nsa+","+_sc+")")));(call_cl(_generate_body,[_c,_s,_env,_env1]),_s2 = "("+_s+";"+_sc+")"))),call(gen4_generate_cond_nest(_tail,_sc,_env1,_env2,_opt),_upvals));((_l = []),(str(_s2,T34),T34 = "",_env2 = _env)))),!). % neg gen4_neg(_f,_f2,_upvals):-_upvals=[_io],(((_f = fc_Eq(_a,_b,_info),_f2 = fc_Neq(_a,_b));(dif(_f,fc_Eq(_a,_b,_info)),(_f = fc_Neq(_a,_b),_f2 = fc_Eq(_a,_b,_info));(dif(_f,fc_Neq(_a,_b)),(_f = fc([],"True"),_f2 = fc([],"False"));(dif(_f,fc([],"True")),(_f = fc([],"False"),_f2 = fc([],"True"));(dif(_f,fc([],"False")),(_f = fc_Inequality(_a,_b,_op,_info),((_op = "!=",_fn = "=");(dif(_op,"!="),(_op = "<",_fn = ">=");(dif(_op,"<"),(_op = "<=",_fn = ">");(dif(_op,"<="),(_op = ">",_fn = "<=");(dif(_op,">"),(_op = ">=",_fn = "<");(dif(_op,">="),throw("compiler error"))))))),_f2 = fc_Inequality(_a,_b,_fn,_info));(dif(_f,fc_Inequality(_a,_b,_op,_info)),get_(_io,"writeln",T33),_T32 = T33,call_cl(_T32,[_f]),false))))))). % generate_cond gen4_generate_cond(_l,_l2,_env,_env2,_upvals):-_upvals=[_generate_body],(((_l = [_c|_tail],call_cl(_generate_body,[_c,_s,_env,_env1]),_l2 = '[|]'("("+_s+")",_tail2),call(gen4_generate_cond(_tail,_tail2,_env1,_env2),_upvals));(dif(_l,[_c|_tail]),(_l = []),(_l2 = [],_env2 = _env)))). % push_var gen4_push_var(_env,_env2,_name,_type,_upvals):-_upvals=[_Env],(get_(_Env,"push",T31),_T30 = T31,call_cl(_T30,[_env,fc_Var(_name,"out",_type),_env2])). % push_types gen4_push_types(_env,_env2,_l,_ts,_upvals):-_upvals=[_Env,_extract_type,_Env,_extract_type],((((true),(_l = '[|]'(_f1,_tail),_ts = '[|]'(_t1,_t2),call_cl(_extract_type,[_env,_f1,_t1]),call(gen4_push_types(_env,_env_a,_tail,_t2),_upvals),_f1 = fc_Id(_name,_),get_(_Env,"push",T29),_T28 = T29,call_cl(_T28,[_env_a,fc_Var(_name,"args",_t1),_env2]));_l = [],_ts = [],_env2 = _env))). % extract_type_args gen4_extract_type_args(_env,_l,_ts,_upvals):-_upvals=[_extract_types,_extract_type,_extract_type,_extract_type],((((true),(_l = '[|]'(_f1,[]),_ts = '[|]'(_t,[]),call_cl(_extract_type,[_env,_f1,_t]));(_l = '[|]'(_f1,_tail),_ts = '[|]'(_t1,_t2),call_cl(_extract_type,[_env,_f1,_t1]),call_cl(_extract_types,[_env,_tail,_t2]);_l = [],_ts = [])))). % extract_types gen4_extract_types(_env,_l,_ts,_upvals):-_upvals=[_extract_type,_extract_type],((((true),(_l = '[|]'(_f1,_tail),_ts = '[|]'(_t1,_t2),call_cl(_extract_type,[_env,_f1,_t1]),call(gen4_extract_types(_env,_tail,_t2),_upvals));_l = [],_ts = []))). % send gen4_send(_a,_type,_upvals):-_upvals=[],(_a = [_type|_]). % extract_type_id gen4_extract_type_id(_env,_f,_type,_info,_upvals):-_upvals=[_is_functor,_custom_throw,_debug,_debug,_has],(_f = fc_Id(_name,_t1),((get_(_env,"vars",T25),call_cl(_has,[T25,fc_Var(_name,_,_t2)]))->(((_t1 = [])->(_type1 = '[|]'("Any",[]));(_type1 = _t1)),((_t2 = [])->(_type2 = '[|]'("Any",[]));(_type2 = _t2)),((_type2 = '[|]'("Any",[]))->(_type = _type1);((_type1 = '[|]'("Any",[]))->(call_cl(_debug,['[|]'("any",[])]),_type = _type2);((_type2 = _type1)->(_type = _type2);(call_cl(_debug,['[|]'(_type2,'[|]'(_t1,[]))]),call_cl(_custom_throw,["Variable defined with different types",_info]))))));((call_cl(_is_functor,[_name,_env]))->(_type = '[|]'("Functor",[]));((_name = "Cons")->(_type = '[|]'("List",[]));(def(_t1),((_t1 = [])->(_type = '[|]'("Any",[]));(_type = _t1)))))),!). % is_functor gen4_is_functor(_name,_env,_upvals):-_upvals=[_list],(get_(_env,"fcs",T22),_fcs = T22,get_(_list,"find",T24),_T23 = T24,call_cl(_T23,[_fcs,fc_Var(_name,_n,_),_])). % sym gen4_sym(_c,_upvals):-_upvals=[_gensym],(call_cl(_gensym,["T",_c])). % genstr gen4_genstr(_o,_s2,_upvals):-_upvals=[_gensym],(call_cl(_gensym,["T",_s]),_o = fc_Id(_s,[]),_s2 = "_"+_s). % genvar gen4_genvar(_x,_upvals):-_upvals=[_gensym],(call_cl(_gensym,["T",_c]),_x = fc_Id(_c,[])). % gensym gen4_gensym(_prefix,_x,_upvals):-_upvals=[],(gensym(_prefix,_x)). % double_string gen4_double_string(_s1,_s2,_upvals):-_upvals=[_str,_string,_string],(get_(_string,"slice",T18),_T17 = T18,get_(_string,"size",T21),_T20 = T21,call_cl(_T20,[_s1,_T19]),call_cl(_T17,[_s1,1,_T19-1,_sa]),call_cl(_str,[_sa,_s2])). % remove_double_string gen4_remove_double_string(_s1,_sa,_upvals):-_upvals=[_string,_string],(get_(_string,"slice",T13),_T12 = T13,get_(_string,"size",T16),_T15 = T16,call_cl(_T15,[_s1,_T14]),call_cl(_T12,[_s1,1,_T14-1,_sa])). % str gen4_str(_s,_s1,_upvals):-_upvals=[_debug,_double_quote],(call_cl(_double_quote,[_c]),call_cl(_debug,['[|]'(_s,'[|]'(_c,[]))]),_s1 = _c+_s+_c). % double_quote gen4_double_quote(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T11),_T10 = T11,call_cl(_T10,[_c,34])). % single_quote gen4_single_quote(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T9),_T8 = T9,call_cl(_T8,[_c,39])). % custom_throw gen4_custom_throw(_msg,_info,_upvals):-_upvals=[],(((ground(_info))->(_info = fc_Info(_line,_col),str("(line "+_line+", col "+_col+") "+_msg,T4),throw(T4));(throw(_msg))),!). % debug_write gen4_debug_write(_x,_upvals):-_upvals=[_io],(get_(_io,"write",T2),_T1 = T2,call_cl(_T1,[_x]),true). % debug gen4_debug(_x,_upvals):-_upvals=[],(writeln_(_x),true). % main gen4(X):-creq("io",_io),_debug = clos([],gen4_debug),_debug_write = clos([_io],gen4_debug_write),creq("logic",_logic),creq("table",_table),creq("mutable",_mutable),get_(_logic,"halt",T3),_halt = T3,creq("env2",_Env),creq("types2",_types),creq("list",_list),creq("string",_string),_custom_throw = clos([],gen4_custom_throw),get_(_table,"set",T5),_set = T5,get_(_table,"get",T6),_get = T6,get_(_list,"has",T7),_has = T7,_single_quote = clos([_string],gen4_single_quote),_double_quote = clos([_string],gen4_double_quote),_str = clos([_debug,_double_quote],gen4_str),_remove_double_string = clos([_string,_string],gen4_remove_double_string),_double_string = clos([_str,_string,_string],gen4_double_string),_gensym = clos([],gen4_gensym),_genvar = clos([_gensym],gen4_genvar),_genstr = clos([_gensym],gen4_genstr),_sym = clos([_gensym],gen4_sym),_is_functor = clos([_list],gen4_is_functor),_extract_type_id = clos([_is_functor,_custom_throw,_debug,_debug,_has],gen4_extract_type_id),_send = clos([],gen4_send),_extract_types = clos([_extract_type,_extract_type],gen4_extract_types),_extract_type_args = clos([_extract_types,_extract_type,_extract_type,_extract_type],gen4_extract_type_args),_push_types = clos([_Env,_extract_type,_Env,_extract_type],gen4_push_types),_push_var = clos([_Env],gen4_push_var),_generate_cond = clos([_generate_body],gen4_generate_cond),_neg = clos([_io],gen4_neg),_generate_cond_nest = clos([_generate_body,_generate_body,_debug,_neg,_generate_body,_generate_body,_generate_body,_generate_body,_generate_body],gen4_generate_cond_nest),_generate_cond_normal = clos([_list,_generate_cond],gen4_generate_cond_normal),_varname = clos([],gen4_varname),_env_make = clos([_set,_set],gen4_env_make),_env_from = clos([_set,_set,_set,_Env,_table],gen4_env_from),_new_env = clos([_env_from],gen4_new_env),_map1 = clos([_debug],gen4_map1),_var2 = clos([],gen4_var2),_setup_var2 = clos([_Env,_Env,_debug,_Env,_var2,_list],gen4_setup_var2),_setup_var = clos([_setup_var2,_debug,_list,_Env],gen4_setup_var),_eq3 = clos([],gen4_eq3),_eq2 = clos([_eq3,_debug],gen4_eq2),_compare_relation = clos([_custom_throw,_io,_io,_io,_debug,_types,_debug,_extract_type_args],gen4_compare_relation),_extract_args = clos([_string,_term,_term],gen4_extract_args),_lambda6 = clos([],gen4_lambda6),_lambda4 = clos([],gen4_lambda4),_lambda5 = clos([_lambda4,_mutable],gen4_lambda5),_apply = clos([],gen4_apply),_is_num = clos([],gen4_is_num),_is_obj = clos([],gen4_is_obj),_get_type = clos([_has],gen4_get_type),_conversion = clos([_is_num,_is_num,_is_num],gen4_conversion),_check_args = clos([_debug,_conversion,_extract_type],gen4_check_args),_setup_pred = clos([_custom_throw,_io,_debug,_lambda5,_Env,_compare_relation,_debug,_extract_args,_check_args,_debug,_Env,_lambda5,_setup_var,_debug,_compare_relation,_debug,_extract_args,_check_args,_apply,_debug,_compare_relation,_extract_args,_debug,_check_args,_extract_types,_list,_debug],gen4_setup_pred),_listify = clos([_term,_term],gen4_listify),_func = clos([_debug,_setup_pred,_list,_genstr,_gensym,_term,_debug,_extract_type,_gensym,_term,_gensym,_term,_debug,_gensym,_term,_debug,_debug,_extract_args,_is_functor,_listify],gen4_func),_filter = clos([],gen4_filter),_to_table_type = clos([_io,_debug,_set,_extract_type,_remove_double_string,_debug,_debug],gen4_to_table_type),_table_eq = clos([_debug,_term,_debug,_term,_debug],gen4_table_eq),_to_table = clos([_debug,_set,_extract_type,_remove_double_string,_table_eq,_debug,_debug,_debug,_debug,_debug,_gensym,_debug],gen4_to_table),_to_list = clos([_string,_term,_string,_term,_term],gen4_to_list),_num_r = clos([_string],gen4_num_r),_term_ = clos([_io,_num_r,_double_string],gen4_term_),_make_rel = clos([_extract_types,_extract_args,_debug,_generate_body,_Env,_debug,_set,_set,_push_types,_debug,_env_make],gen4_make_rel),_check_type = clos([_debug,_get_type,_debug],gen4_check_type),_pushid = clos([_set,_list],gen4_pushid),_term = clos([_io,_term_,_debug,_generate_body,_genvar,_debug,_extract_type,_generate_body,_list,_genvar,_debug,_to_table,_set,_set,_table,_debug,_gensym,_gensym,_gensym,_filter,_to_list,_lambda6,_Env,_pushid,_set,_extract_args,_debug,_make_rel,_debug,_debug,_gensym,_setup_var,_sym,_custom_throw,_io,_setup_var,_is_obj,_check_type,_debug,_get_type,_debug,_sym,_func,_setup_var,_debug,_is_functor,_debug,_debug_write],gen4_term),_extract_type_information = clos([_list,_string,_io,_io,_io,_io,_io,_io],gen4_extract_type_information),_generate_fact = clos([_generate_body,_Env,_table,_Env,_Env,_debug,_debug,_list,_debug],gen4_generate_fact),_generate_rel = clos([_extract_args,_set,_debug,_debug,_list,_extract_type,_term,_debug,_string,_string,_Env,_term],gen4_generate_rel),_extract_type = clos([_extract_types,_debug,_debug,_to_table_type,_table,_extract_type_id],gen4_extract_type),_set_type = clos([_Env],gen4_set_type),_specialize_type = clos([_io,_debug,_types,_Env],gen4_specialize_type),_compare_types = clos([_custom_throw,_io,_specialize_type,_debug,_types,_extract_type,_extract_type],gen4_compare_types),_get_stm = clos([_generate_body,_genvar,_debug,_setup_pred,_debug],gen4_get_stm),_num_exp = clos([_is_num],gen4_num_exp),_str_exp = clos([],gen4_str_exp),_conversion_eq = clos([_debug,_num_exp,_num_exp,_extract_type,_extract_type],gen4_conversion_eq),_conversion_eq_str = clos([_debug,_str_exp,_str_exp,_extract_type,_extract_type],gen4_conversion_eq_str),_generate_body = clos([_custom_throw,_io,_io,_get_stm,_debug,_generate_rel,_generate_fact,_debug,_debug,_custom_throw,_io,_is_num,_is_num,_extract_type,_extract_type,_term,_term,_debug,_Env,_Env,_debug,_compare_types,_conversion_eq_str,_conversion_eq,_term,_term,_debug,_debug,_debug,_set,_io,_get_stm,_neg,_get_stm,_debug,_debug,_term,_term,_extract_args,_debug,_debug,_generate_cond_nest,_debug,_neg,_debug,_debug,_generate_cond_nest,_debug,_debug,_debug_write],gen4_generate_body),_header = clos([],gen4_header),_generate_stm = clos([_generate_body],gen4_generate_stm),_concat_if = clos([],gen4_concat_if),_each2 = clos([_concat_if],gen4_each2),_each3 = clos([_concat_if],gen4_each3),_serialize_item = clos([_types],gen4_serialize_item),_notblank = clos([],gen4_notblank),_generate = clos([_debug,_debug,_serialize_item,_list,_mutable,_each2,_list,_list,_notblank,_serialize_item,_list,_list,_list,_types,_debug,_debug,_types,_debug,_extract_type,_header,_gensym,_generate_stm,_set],gen4_generate),_eval = clos([_debug,_debug],gen4_eval),_run = clos([_generate],gen4_run),_generate_body_ = clos([_generate_body],gen4_generate_body_),_generate_ = clos([_generate],gen4_generate_),new(T231),set_(T231,"generate_body",_generate_body_,T233),set_(T233,"generate_world",_generate_world,T234),set_(T234,"run",_run,T235),set_(T235,"generate",_generate_,T236),set_(T236,"new_env",_new_env,T237),set_(T237,"header",_header,T232),_t = T232,call_cl(_debug,[_t]),X=_t,writeln_("-gen"),creq("mutable",_mutable),creq("parser3",_parser),get_(_io,"readFile",T239),_T238 = T239,call_cl(_T238,["gen5.co",_s]),get_(_parser,"run",T240),_run_ = T240,once(call_cl(_run_,[_s,_l])),writeln_('[|]'("l",'[|]'(_l,[]))),_f2 = _l,once(call_cl(_new_env,[_e])),!,writeln_(_e),writeln_("--"),_fname = "temp",get_(_t,"run",T242),_T241 = T242,call_cl(_T241,[_e,_e2,_module,_fname,_f2,_s2]),writeln_("--run"),!,get_(_io,"writeln",T244),_T243 = T244,str(_s2,T245),call_cl(_T243,[T245]),get_(_io,"writeToFile",T247),_T246 = T247,str(_s2,T248),call_cl(_T246,["temp.pl",T248]),writeln_("--"),writeln_(_e).