% Table {generate.Relation Any Any Any Functor String;generate_body.Relation Any Any Functor String;generate_world.Any;header.Relation String;new_env.Relation Any;run.Relation Any Any Any Any Any Any} % 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;TCond 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;Mutable Functor;Neq Functor Any Any;Eq Functor Any Any Any;TRec Functor;F2 Functor;F1 Functor;F Functor;Tuple Functor;Pair Functor;Token Functor;Info Functor;Cons Functor;Stm Functor;TArray Functor % gen % generate_ gen_generate_(_fname,_env,_env2,_f,_code,_upvals):-_upvals=[_generate],(call_cl(_generate,[_f,_code,_fname,_env,_env2,_module])). % generate_body_ gen_generate_body_(_env,_env2,_f,_code,_upvals):-_upvals=[_generate_body],(call_cl(_generate_body,[_f,_code,_env,_env2])). % run gen_run(_e,_e2,_module,_fname,_f2,_s2,_upvals):-_upvals=[_generate],(call_cl(_generate,[_f2,_s2,_fname,_e,_e2,_x]),_module = _x). % eval gen_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 gen_generate(_f,_code,_fname,_env,_env2,_module,_upvals):-_upvals=[_debug,_types,_mutable,_each2,_list,_list,_notblank,_serialize_item,_list,_list,_list,_types,_header,_gensym,_debug,_generate_stm,_set],(def(_fname),_module = _fname,call_cl(_set,[_env,"module",_fname,_env1]),call_cl(_generate_stm,[_env1,_env2,_f,_s]),!,call_cl(_debug,["- export"]),call_cl(_gensym,["",_c]),call_cl(_header,[_s0]),((get_(_env2,"export",T808),T808 = _x)->(get_(_env,"extract_type",T810),_T809 = T810,call_cl(_T809,[_env2,_x,_t2]));(_t2 = '[|]'("Null",[]))),get_(_types,"toString",T813),_T812 = T813,call_cl(_T812,[_t2,_T811]),calc("% "+_T811,T814),calc(T814+"\n",T815),_info = T815,get_(_list,"join",T818),_T817 = T818,get_(_list,"filter",T821),_T820 = T821,get_(_list,"map",T824),_T823 = T824,get_(_env2,"fcs",T825),call_cl(_T823,[T825,_serialize_item,_T822]),call_cl(_T820,[_T822,_notblank,_T819]),call_cl(_T817,[_T819,";",_T816]),calc("% "+_T816,T826),calc(T826+"\n",T827),_info2 = T827,get_(_list,"join",T829),_T828 = T829,get_(_list,"map",T832),_T831 = T832,get_(_env2,"ids",T833),call_cl(_T831,[T833,_each2,_T830]),call_cl(_T828,[_T830,"",_s2]),((get_(_mutable,"get",T835),_T834 = T835,call_cl(_T834,["debug",1.0]))->(calc("% main\n"+_module,T836),calc(T836+"(X):-nb_setval(call,0),",T837),calc(T837+_s,T838),calc(T838+"",T839),calc(T839+".",T840),_smain = T840);(calc("% main\n"+_module,T841),calc(T841+"(X):-",T842),calc(T842+_s,T843),calc(T843+"",T844),calc(T844+".",T845),_smain = T845)),calc(_info+_info2,T846),calc(T846+"% ",T847),calc(T847+_module,T848),calc(T848+"\n",T849),calc(T849+_s0,T850),calc(T850+_s2,T851),calc(T851+_smain,T852),_code = T852,get_(_types,"toString",T855),_T854 = T855,call_cl(_T854,[_t2,_T853]),call_cl(_debug,[_T853]),_t2 = '[|]'(_,_type)). % notblank gen_notblank(_s,_upvals):-_upvals=[],(dif(_s,"")). % serialize_item gen_serialize_item(_f,_s,_upvals):-_upvals=[_types],(((_f = fc_Var(_name,_,_type),calc(_name+" ",T803),get_(_types,"type_to_string",T806),_T805 = T806,call_cl(_T805,[_type,_T804]),calc(T803+_T804,T807),_s = T807);(dif(_f,fc_Var(_name,_,_type)),_s = ""))). % each3 gen_each3(_e,_e2,_upvals):-_upvals=[_concat_if],(_e = '[|]'(_name,'[|]'(_n,'[|]'(_type,[]))),call_cl(_concat_if,[_sargs,"_upvals",_sargs3]),calc("_upvals=["+_sargs2,T791),calc(T791+"],",T792),_s2 = T792,calc("% "+_name,T793),calc(T793+"\n",T794),calc(T794+_id,T795),calc(T795+"(",T796),calc(T796+_sargs3,T797),calc(T797+"):-",T798),calc(T798+_s2,T799),calc(T799+"(",T800),calc(T800+_s,T801),calc(T801+").\n",T802),_e2 = T802). % each2 gen_each2(_e,_e2,_upvals):-_upvals=[_concat_if],(_e = '[|]'(_id,'[|]'(_name,'[|]'(_sargs,'[|]'(_sargs2,'[|]'(_s,[]))))),call_cl(_concat_if,[_sargs,"_upvals",_sargs3]),calc("_upvals=["+_sargs2,T779),calc(T779+"],",T780),_s2 = T780,calc("% "+_name,T781),calc(T781+"\n",T782),calc(T782+_id,T783),calc(T783+"(",T784),calc(T784+_sargs3,T785),calc(T785+"):-",T786),calc(T786+_s2,T787),calc(T787+"(",T788),calc(T788+_s,T789),calc(T789+").\n",T790),_e2 = T790). % concat_if gen_concat_if(_s1,_s,_s2,_upvals):-_upvals=[],(((_s1 = "",_s2 = _s);(dif(_s1,""),(_s = "",_s2 = _s1);(dif(_s,""),calc(_s1+",",T777),calc(T777+_s,T778),_s2 = T778)))). % generate_stm gen_generate_stm(_env,_env2,_f,_code,_upvals):-_upvals=[_generate_body],(call_cl(_generate_body,[_f,_code,_env,_env2])). % header gen_header(_s,_upvals):-_upvals=[],(_s = ""). % generate_body gen_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,_term,_term,_debug,_Env,_debug,_compare_types,_term,_term,_debug,_debug,_halt,_debug,_term,_debug,_debug,_debug,_debug,_remove_tvar,_push_next,_term,_debug,_debug,_term,_genvar,_debug,_push_init,_debug,_debug,_debug,_set,_io,_halt,_debug,_debug,_debug,_halt,_debug,_debug,_debug,_debug,_debug,_debug,_debug,_twhile,_debug,_debug,_debug,_debug,_get_stm,_debug,_debug,_term,_term,_extract_args,_debug,_debug,_generate_cond_nest,_debug,_neg,_debug,_debug,_generate_cond_nest,_apply,_list,_list,_debug,_debug,_list,_list,_debug,_generate_cond_t,_list_t,_debug,_debug,_next_tvar2,_update_tvar,_update_tvar,_tseq,_tseq,_next_tvar,_debug,_has_tvar,_debug,_debug,_debug_write],(call_cl(_debug_write,["- "]),call_cl(_debug,[_f]),def(_f),!,((_f = fc_And(_a,_b,_line))->(call(gen_generate_body(_a,_s1,_env,_temp),_upvals),!,call(gen_generate_body(_b,_s2,_temp,_env2),_upvals),((_s1 = "true")->(_code = _s2);(calc(_s1+",",T653),calc(T653+_s2,T654),_code = T654)));((_f = fc_And(_a,_b))->(call(gen_generate_body(_a,_s1,_env,_temp),_upvals),call(gen_generate_body(_b,_s2,_temp,_env2),_upvals),calc(_s1+",",T655),calc(T655+_s2,T656),_code = T656);((_f = fc_Pair(_a,_b))->(call_cl(_debug,[_f]),call(gen_generate_body(_a,_s1,_env,_temp),_upvals),call(gen_generate_body(_b,_s2,_temp,_env2),_upvals),calc("("+_s1,T657),calc(T657+"),(",T658),calc(T658+_s2,T659),calc(T659+")",T660),_code = T660);((_f = fc_Or(_a,_b))->(((call_cl(_has_tvar,[_env]))->(call_cl(_debug,["--cond"]),call_cl(_next_tvar,[_env,_env0]),call_cl(_tseq,[_a,_s1,_env0,_env1]),call_cl(_tseq,[_b,_s2,_env0,_env_a]),calc("\n\t("+_sa,T661),calc(T661+";",T662),calc(T662+_sb,T663),calc(T663+")",T664),_code = T664,call_cl(_update_tvar,[_env1,_s1,_T665]),_sa = _T665,call_cl(_update_tvar,[_env_a,_s2,_T666]),_sb = _T666,call_cl(_next_tvar2,[_env0,_env2]),call_cl(_debug,["--end"]));(call(gen_generate_body(_a,_s1,_env,_env_a),_upvals),call(gen_generate_body(_b,_s2,_env_a,_env2),_upvals),calc("("+_s1,T667),calc(T667+";",T668),calc(T668+_s2,T669),calc(T669+")",T670),_code = T670)));((_f = fc_TCond(_name,_a,_b,_c,_args_in,_args_out))->(get_(_env,"mode",T671),call_cl(_debug,['[|]'("mode",'[|]'(T671,[]))]),((get_(_env,"mode",T672),T672 = "fun")->(_opt = "choose");(_opt = "if")),call_cl(_list_t,[_args_in,_args_out,_sc]),call_cl(_generate_cond_t,[_a,_b,_sc,_code,_env,_env2,_opt]));((_f = fc_TRec(_name,_args_in,_args_out,_info))->(call_cl(_debug,["-rec"]),get_(_env,"initial",T673),T673 = _t,get_(_list,"map",T675),_T674 = T675,call_cl(_T674,[_args_in,clos([_t,_list,_debug,_generate_cond_t,_list_t,_debug,_debug,_next_tvar2,_update_tvar,_update_tvar,_tseq,_tseq,_next_tvar,_debug,_has_tvar,_debug,_debug,_debug_write],gen_11),_l]),get_(_list,"map",T680),_T679 = T680,call_cl(_T679,[_args_out,clos([_list,_list,_debug,_generate_cond_t,_list_t,_debug,_debug,_next_tvar2,_update_tvar,_update_tvar,_tseq,_tseq,_next_tvar,_debug,_has_tvar,_debug,_debug,_debug_write],gen_12),_l2]),call_cl(_debug,[_l]),call_cl(_debug,[_l2]),get_(_list,"join",T685),_T684 = T685,get_(_list,"concat",T688),_T687 = T688,call_cl(_T687,[_l,_l2,_T686]),call_cl(_T684,[_T686,",",_T683]),get_(_env,"rec",T682),call_cl(_apply,[T682,_T683,_code]),_env2 = _env);((_f = fc_Cond(_a,_b,_l0))->(call(gen_generate_body(_a,_sa,_env,_env_a),_upvals),call(gen_generate_body(_b,_sb,_env_a,_env_b),_upvals),calc("("+_sa,T689),calc(T689+",",T690),calc(T690+_sb,T691),calc(T691+")",T692),_code1 = T692,_l = '[|]'(fc_Pair(_a,_b),_l0),call_cl(_generate_cond_nest,[_l,_code2,_env_b,_env2,[]]),str(_code2,T693),call_cl(_debug,['[|]'("c",'[|]'(T693,[]))]),calc("("+_code2,T694),calc(T694+")",T695),_code = T695);((_f = fc_Cond(_a,_b,_l0,_opts))->(get_(_env,"mode",T696),call_cl(_debug,['[|]'("mode",'[|]'(T696,[]))]),((_l0 = [],_opts = "if")->(call(gen_generate_body(_b,_sb,_env,_env_b),_upvals),((get_(_env,"mode",T697),T697 = "fun")->(call(gen_generate_body(_a,_sa,_env_b,_env2),_upvals),calc("("+_sa,T698),calc(T698+")->(",T699),calc(T699+_sb,T700),calc(T700+");(true)",T701),_code2 = T701);(((call_cl(_neg,[_a,_na]))->(true);(throw("complex condition for if-else"))),call(gen_generate_body(_na,_nsa,_env_b,_env2),_upvals),calc("("+_nsa,T702),calc(T702+");",T703),calc(T703+"(",T704),calc(T704+_sb,T705),calc(T705+")",T706),_code2 = T706)));(_l = '[|]'(fc_Pair(_a,_b),_l0),call_cl(_debug,['[|]'("l",'[|]'(_l,[]))]),((get_(_env,"mode",T707),T707 = "fun")->(_opts1 = "choose");(_opts1 = _opts)),call_cl(_generate_cond_nest,[_l,_code2,_env,_env2,_opts1]),str(_code2,T708),call_cl(_debug,['[|]'("c",'[|]'(T708,'[|]'(_opts,[])))]))),calc("("+_code2,T709),calc(T709+")",T710),_code = T710);((_f = fc_SoftCut(_a,_b,_l))->(call(gen_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 = [])->(calc(_prefix+_name,T711),_code = T711);(calc(_prefix+_name,T712),calc(T712+"(",T713),calc(T713+_sargs,T714),calc(T714+")",T715),_code = T715)))));((_f = fc_Neq(_a,_b))->(call_cl(_term,[_a,_s1,_env,_env_a,_]),call_cl(_term,[_b,_s2,_env_a,_env_b,_]),calc("dif("+_s1,T716),calc(T716+",",T717),calc(T717+_s2,T718),calc(T718+")",T719),_code = T719,_env2 = _env_b);((_f = fc_ObjData(_obj,_name,_args,_info))->(call_cl(_debug,["-"]),throw(231.0));((_f = fc_Stm(_name,_c1,_body,_info))->(call_cl(_debug,['[|]'("stm",'[|]'(_f,[]))]),((_name = "once")->(((call_cl(_get_stm,[_env,_env2,_body,_prefix,_code0]))->(calc(_prefix+"once(",T720),calc(T720+_code0,T721),calc(T721+")",T722),_code = T722);(throw("not valid code for once operator"))));((_name = "for")->(call_cl(_debug,[_c1]),_c1 = '[|]'(_a,'[|]'(_b,'[|]'(_c,[]))),call_cl(_debug,['[|]'(_a,'[|]'(_b,'[|]'(_c,[])))]),call_cl(_debug,["--"]),call(gen_generate_body(fc_And(_a,fc_Stm("while",_b,fc_And(_body,_c),_info)),_code,_env,_env2),_upvals));((_name = "while")->(call_cl(_debug,['[|]'(_c1,'[|]'(_body,[]))]),call_cl(_twhile,[_env,_env2,_body,_c1,_closure,_sargs,_prefix]),calc(_prefix+"call_cl(",T723),calc(T723+_closure,T724),calc(T724+",[",T725),str(_sargs,T726),calc(T725+T726,T727),calc(T727+"])",T728),_code = T728,call_cl(_debug,[_code]),call_cl(_debug,['[|]'(_code,'[|]'(_prefix,[]))]),!);(((_name = "in")->(_c1 = '[|]'(_a,'[|]'(_b,[])),call(gen_generate_body(fc_Host("c","has_",'[|]'(_b,'[|]'(_a,[]))),_code,_env,_env2),_upvals),call_cl(_debug,[_code]));((_name = "for-in")->(call_cl(_debug,[_c1]),call_cl(_debug,[_body]),_c1 = '[|]'(_a,'[|]'(_b,'[|]'(_c,[]))),call_cl(_debug,["--"]),call(gen_generate_body(fc_Stm("for",'[|]'(_a,'[|]'(_b,'[|]'(_c,[]))),_body,_info),_code,_env,_env2),_upvals),call_cl(_debug,[_code]),call_cl(_halt,[]));((_name = "foreach")->(call_cl(_debug,[_c1]),_c1 = '[|]'(_a,'[|]'(_b,'[|]'(_fn,[]))),call_cl(_debug,["--"]),call(gen_generate_body(fc_Stm("for",'[|]'(_a,'[|]'(_b,'[|]'(_c,[]))),_body,_info),_code,_env,_env2),_upvals),call_cl(_debug,[_code]),call_cl(_halt,[]));(get_(_io,"writeln",T730),_T729 = T730,call_cl(_T729,[_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,0.0)),call_cl(_set,[_env,"mode",_mode,_T731]),call(gen_generate_body(_f2,_code,_T731,_env1),_upvals),_env2 = _env1,str(_code,T732),call_cl(_debug,['[|]'("->",'[|]'(_name,'[|]'(_sargs,'[|]'(T732,'[|]'(_t2,[])))))]),call_cl(_debug,[""]));((_f = fc_Rel(_name,_args,_f1))->(get_(_env,"mode",T733),call_cl(_debug,['[|]'("",'[|]'(T733,[]))]),call(gen_generate_body(fc_Rel(_name,_args,_f1,"rel"),_code,_env,_env2),_upvals));((_f = fc_Eq(_a,_b,_info))->(((_a = fc_Id(_a1,'[|]'("init",[])))->(call_cl(_push_init,[_env,_env1,_a1,_name]),call_cl(_debug,['[|]'("-init",'[|]'(_a1,[]))]),call_cl(_genvar,[fc_Id(_name,_)]),call_cl(_term,[_b,_sb,_env1,_env2,_prefix]),calc(_prefix+"_",T734),calc(T734+_name,T735),calc(T735+"=",T736),calc(T736+_sb,T737),_code = T737,get_(_env2,"label",T738),call_cl(_debug,[T738]));((_a = fc_Id(_a1,'[|]'("next",[])))->(call_cl(_debug,[":next"]),call_cl(_term,[_b,_sb,_env,_env1,_prefix]),call_cl(_push_next,[_env1,_a1,_sb,_code1]),call_cl(_remove_tvar,[_env1,_env2,_a1]),calc(_prefix+_code1,T739),_code = T739,call_cl(_debug,[_code]),get_(_env2,"initial",T740),call_cl(_debug,[T740]));((_a = fc_Mutable(_i))->(_fc = fc_Var(_i,_n,_ta),get_(_env,"vars",T741),call_cl(_debug,[T741]),get_(_env,"alias",T742),call_cl(_debug,[T742]),call_cl(_term,[_b,_sb,_env,_env_a,_prefix]),((_sb = fc_Id(_,_))->(call_cl(_debug,[_sb]),call_cl(_halt,[]));(true)),get_(_env,"push_alias",T744),_T743 = T744,call_cl(_T743,[_env_a,_i,_sb,_env2]),calc(_prefix+"true",T745),_code = T745,_s2 = _sb,call_cl(_debug,["###"]),call_cl(_debug,['[|]'(_i,'[|]'(_sb,[]))]));(call_cl(_term,[_a,_sa,_env,_env_a,_prefix1]),call_cl(_term,[_b,_sb,_env_a,_env_b,_prefix2]),call_cl(_compare_types,[_a,_b,_env_b,_env_c,_info]),calc(_sa+" = ",T746),calc(T746+_sb,T747),_code1 = T747,calc(_prefix1+"",T748),calc(T748+_prefix2,T749),calc(T749+_code1,T750),_code = T750,_env2 = _env_c)))));((_f = fc_Declaration(_name,_type))->(call_cl(_debug,["declaration"]),((_type = '[|]'("Relation",_t))->(_t0 = '[|]'("Relation",_t));(_t0 = _type)),get_(_Env,"push",T752),_T751 = T752,call_cl(_T751,[_env,fc_Var(_name,"out",_t0),_env1]),calc("_"+_name,T753),_id = T753,_code = "true",_env2 = _env1,get_(_env2,"vars",T754),call_cl(_debug,[T754]));((_f = fc([],"True"))->(_env2 = _env,_code = "true");((_f = fc([],"False"))->(_env2 = _env,_code = "false",((get_(_env,"mode",T755),T755 = "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")))))),get_(_env,"extract_type",T757),_T756 = T757,call_cl(_T756,[_env,_a,_ta]),get_(_env,"extract_type",T759),_T758 = T759,call_cl(_T758,[_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",T761),_T760 = T761,call_cl(_T760,['[|]'(_ta,'[|]'(_tb,[]))]),call_cl(_custom_throw,["comparing non-Number type",_info]))))),call_cl(_debug,['[|]'("=ineq",'[|]'(_prefix1,'[|]'(_prefix2,[])))]),calc(_prefix1+_prefix2,T762),calc(T762+"",T763),calc(T763+"",T764),calc(T764+_fn,T765),calc(T765+"(",T766),calc(T766+_sa,T767),calc(T767+",",T768),calc(T768+_sb,T769),calc(T769+")",T770),_code = T770,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,T771),call_cl(_debug,[T771]));((call_cl(_get_stm,[_env,_env2,_f,_prefix1,_code1]))->(calc(_prefix1+_code1,T772),_code = T772);(get_(_io,"writeln",T774),_T773 = T774,call_cl(_T773,[_f]),get_(_io,"writeln",T776),_T775 = T776,call_cl(_T775,[""]),call_cl(_custom_throw,["cannot compile code (could not find the above term)",_info]))))))))))))))))))))))))))). % 12 gen_12(_x,_y,_upvals):-_upvals=[_list,_list,_debug,_generate_cond_t,_list_t,_debug,_debug,_next_tvar2,_update_tvar,_update_tvar,_tseq,_tseq,_next_tvar,_debug,_has_tvar,_debug,_debug,_debug_write],(_x = fc_Id(_y1,_),calc("_"+_y1,T681),_y = T681). % 11 gen_11(_x,_y,_upvals):-_upvals=[_t,_list,_debug,_generate_cond_t,_list_t,_debug,_debug,_next_tvar2,_update_tvar,_update_tvar,_tseq,_tseq,_next_tvar,_debug,_has_tvar,_debug,_debug,_debug_write],(_x = fc_Id(_name1,_),((get_(_t,_name1,T676),T676 = fc_Var(_,_y1))->(calc("_"+_y1,T677),_y = T677);(calc("_"+_name1,T678),_y = T678))). % twhile gen_twhile(_env,_env2,_body,_condition,_closure,_sargs3,_prefix,_upvals):-_upvals=[_extract_args,_list,_debug,_make_clos,_debug,_extract_args,_debug,_debug,_debug,_debug,_debug,_make_rel,_gensym,_set,_set,_nil,_set,_debug,_table,_debug,_debug,_debug,_list,_list,_tmap,_targs,_tmap,_halt,_genvar,_gensym,_debug,_debug],(get_(_env,"label",T622),_t = T622,_label = _t,call_cl(_debug,["--while"]),call_cl(_debug,[_t]),_gensym_ = _gensym,_genvar_ = _genvar,_halt_ = _halt,call_cl(_gensym_,["T",_T623]),_temp_ = _T623,call_cl(_tmap,[_t,clos([_halt,_genvar,_gensym,_debug,_debug],gen_8),_T624]),_tvars = _T624,call_cl(_targs,[_label,_args_in,_args_out,_args_temp,_temp_,_tvars]),call_cl(_tmap,[_t,clos([_gensym_,_targs,_tmap,_halt,_genvar,_gensym,_debug,_debug],gen_9),_T626]),_tvars2 = _T626,get_(_list,"concat",T631),_T630 = T631,call_cl(_T630,[_args_in,_args_out,_T629]),_args = _T629,get_(_list,"concat",T634),_T633 = T634,call_cl(_T633,[_args_temp,_args_out,_T632]),_args2 = _T632,call_cl(_debug,["--args"]),call_cl(_debug,[_args]),call_cl(_debug,[_tvars2]),get_(_table,"map",T637),_T636 = T637,call_cl(_T636,[_t,clos([_table,_debug,_debug,_debug,_list,_list,_tmap,_targs,_tmap,_halt,_genvar,_gensym,_debug,_debug],gen_10),_T635]),_next_ = _T635,call_cl(_debug,[_next_]),call_cl(_set,[_env,"next_",_next_,_T639]),call_cl(_set,[_T639,"next",_nil,_T638]),call_cl(_set,[_T638,"initial",_tvars2,_env_label]),get_(_env,"module",T640),calc(T640+"_",T641),call_cl(_gensym,["_label",_T642]),calc(T641+_T642,T643),str(T643,T644),_id2 = T644,_f2 = fc_Rel(fc_Id(_id2,[]),_args,fc_TCond(_id2,_condition,fc_And(_body,fc_TRec(_id2,_args_in,_args_out,_info)),fc([],"True"),_args_in,_args_out)),call_cl(_make_rel,[_env_label,_fn,_f2,_,_code_clos,_id2,_type2]),call_cl(_debug,["---------------"]),call_cl(_debug,[_args]),get_(_fn,"vars",T645),call_cl(_debug,[T645]),calc("code:"+_code_clos,T646),str(T646,T647),call_cl(_debug,[T647]),call_cl(_debug,["--"]),call_cl(_extract_args,[_args,_sargs,_env,_,_prefix]),call_cl(_debug,['[|]'("bind",'[|]'(_id2,'[|]'(_code_clos,'[|]'(_sargs,[]))))]),str(_sargs,T648),_sargs2 = T648,get_(_fn,"upvals",T649),call_cl(_make_clos,[_env,_env2,T649,_fn,_id2,_sargs2,_code_clos,_id2,_type2,_closure]),call_cl(_debug,['[|]'("closure",'[|]'(_closure,[]))]),get_(_list,"concat",T652),_T651 = T652,call_cl(_T651,[_args_out,_args_in,_T650]),_args3 = _T650,call_cl(_extract_args,[_args3,_sargs3,_env,_,_prefix])). % 10 gen_10(_i,_x,_y,_upvals):-_upvals=[_table,_debug,_debug,_debug,_list,_list,_tmap,_targs,_tmap,_halt,_genvar,_gensym,_debug,_debug],(_y = fc_Var(_i,_x)). % 9 gen_9(_i,_x,_i2,_y,_upvals):-_upvals=[_gensym_,_targs,_tmap,_halt,_genvar,_gensym,_debug,_debug],(call_cl(_gensym_,["T",_T628]),calc(""+_i,T627),_y = fc_Var(T627,_T628),_i2 = _i). % 8 gen_8(_i,_x,_i2,_y,_upvals):-_upvals=[_halt,_genvar,_gensym,_debug,_debug],(calc(""+_i,T625),_y = fc_Var(T625,_x),_i2 = _i). % label_ gen_label_(_e,_upvals):-_upvals=[],(get_(_env,"label",T621),_t = T621). % tseq gen_tseq(_a,_s1,_env,_env2,_upvals):-_upvals=[_generate_body],(call_cl(_generate_body,[_a,_s1,_env,_env2])). % targs gen_targs(_t,_args_in,_args_out,_args_temp,_temp_,_tvars,_upvals):-_upvals=[_table,_table,_table],(get_(_table,"map",T614),_T613 = T614,call_cl(_T613,[_t,clos([_table],gen_5),_T612]),_args_in = _T612,get_(_table,"map",T617),_T616 = T617,call_cl(_T616,[_t,clos([_table,_table],gen_6),_T615]),_args_out = _T615,get_(_table,"map",T620),_T619 = T620,call_cl(_T619,[_tvars,clos([_temp_,_table,_table,_table],gen_7),_T618]),_args_temp = _T618). % 7 gen_7(_i,_x,_y,_upvals):-_upvals=[_temp_,_table,_table,_table],(_y = fc_Id(_temp_,[])). % 6 gen_6(_i,_x,_y,_upvals):-_upvals=[_table,_table],(_y = fc_Id(_x,[])). % 5 gen_5(_i,_x,_y,_upvals):-_upvals=[_table],(_y = fc_Id(_i,[])). % getalias gen_getalias(_alias,_l,_l2,_upvals):-_upvals=[],(((_l = [],_l2 = []);(dif(_l,[]),_l = '[|]'(_h,_t),_l2 = '[|]'(_a,'[|]'(_b,_t2)),_a = fc_Id(_h,[]),get_(_alias,_h,T611),_b = fc_Id(T611,'[|]'("NonAlias",[])),call(gen_getalias(_alias,_t,_t2),_upvals)))). % getalias2 gen_getalias2(_alias,_l,_l2,_upvals):-_upvals=[_debug,_debug,_debug],(((_l = [])->(_l2 = []);(_l = '[|]'(_val,_t),_l2 = '[|]'(_a,_t2),call_cl(_debug,['[|]'(_l,'[|]'(_l2,[]))]),call_cl(_debug,["$$"]),call_cl(_debug,['[|]'("getalias",'[|]'(_val,[]))]),_a = fc_Id(_val,_),call(gen_getalias2(_alias,_t,_t2),_upvals)))). % to_ids gen_to_ids(_e,_e2,_l,_upvals):-_upvals=[],(((_l = [],_e2 = _e);(dif(_l,[]),_l = '[|]'(_a,'[|]'(_b,_t)),_a = fc_Id(_x,_),_b = fc_Id(_x2,_),get_(_e,"push_alias",T610),_T609 = T610,call_cl(_T609,[_e,_x,_x2,_e1]),call(gen_to_ids(_e1,_e2,_t),_upvals)))). % to_fc gen_to_fc(_e,_l,_f,_upvals):-_upvals=[],(((_l = [],_f = fc([],"True"),_e2 = _e);(dif(_l,[]),_l = '[|]'(_a,'[|]'(_b,_t)),_a = fc_Id(_x,_),_b = fc_Id(_x2,_),_f = fc_And(fc_Eq(fc_Id(_x,'[|]'("NonAlias",[])),_b,_info),_f2),call(gen_to_fc(_e1,_t,_f2),_upvals)))). % subtract_list gen_subtract_list(_l,_ls,_l2,_upvals):-_upvals=[_sub_has],(((_l = [])->(_l2 = []);((_l = '[|]'(_h,_t),call_cl(_sub_has,[_ls,_h]))->(call(gen_subtract_list(_t,_ls,_l2),_upvals));(_l = '[|]'(_h,_t),_l2 = '[|]'(_h,_t2),call(gen_subtract_list(_t,_ls,_t2),_upvals))))). % sub_has gen_sub_has(_ls,_x,_upvals):-_upvals=[_list],(get_(_list,"has",T608),_T607 = T608,call_cl(_T607,[_ls,_x]),true). % generate_cond_normal gen_generate_cond_normal(_l,_code2,_env,_env2,_upvals):-_upvals=[_list,_generate_cond],(call_cl(_generate_cond,[_l,_l2,_env,_env2]),get_(_list,"join",T606),_T605 = T606,call_cl(_T605,[_l2,";",_code2])). % generate_cond_nest gen_generate_cond_nest(_l,_s2,_env,_env2,_opt,_upvals):-_upvals=[_generate_body,_generate_body,_get_stm,_generate_body,_generate_body,_generate_body,_debug,_neg,_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]),calc("("+_sa,T569),calc(T569+")->",T570),calc(T570+"(",T571),calc(T571+_sb,T572),calc(T572+");",T573),calc(T573+"(",T574),calc(T574+_sc,T575),calc(T575+")",T576),_s2 = T576);((_opt = "if")->(_c = fc_Pair(_a,_b),((call_cl(_neg,[_a,_na]))->(call_cl(_debug,['[|]'("n",'[|]'(_na,[]))]),call_cl(_generate_body,[_a,_sa,_env,_env_a]),call_cl(_generate_body,[_b,_sb,_env_a,_env_b]),call_cl(_generate_body,[_na,_nsa,_env_b,_env1]),calc("("+_sa,T577),calc(T577+",",T578),calc(T578+_sb,T579),calc(T579+");",T580),calc(T580+"(",T581),calc(T581+_nsa,T582),calc(T582+",",T583),calc(T583+_sc,T584),calc(T584+")",T585),_s2 = T585);(call_cl(_get_stm,[_env,_env_a,_a,_prefix,_sa]),call_cl(_generate_body,[_b,_sb,_env_a,_env_b]),_env1 = _env_b,calc("safeNot("+_sa,T586),calc(T586+")",T587),_nsa = T587,calc(""+_prefix,T588),calc(T588+"",T589),calc(T589+"(",T590),calc(T590+_sa,T591),calc(T591+",",T592),calc(T592+_sb,T593),calc(T593+");",T594),calc(T594+"(",T595),calc(T595+_nsa,T596),calc(T596+",",T597),calc(T597+_sc,T598),calc(T598+")",T599),_s2 = T599)));(call_cl(_generate_body,[_c,_s,_env,_env1]),calc("("+_s,T600),calc(T600+";",T601),calc(T601+_sc,T602),calc(T602+")",T603),_s2 = T603))),call(gen_generate_cond_nest(_tail,_sc,_env1,_env2,_opt),_upvals));((_l = []),(str(_s2,T604),T604 = "",_env2 = _env))))). % generate_cond_t gen_generate_cond_t(_a,_b,_sc,_s2,_env,_env2,_opt,_upvals):-_upvals=[_debug,_debug,_update_tvar,_generate_body,_debug,_get_stm,_generate_body,_generate_body,_debug,_neg,_debug,_generate_body,_generate_body],((((_opt = "!";_opt = "choose"))->(call_cl(_generate_body,[_a,_sa,_env,_env_a]),calc("("+_sa,T530),calc(T530+")->",T531),calc(T531+"(",T532),calc(T532+_sb,T533),calc(T533+");",T534),calc(T534+"(",T535),calc(T535+_sc,T536),calc(T536+")",T537),_s2 = T537);((_opt = "if")->(((_a = fc_Eq(_,_,_))->(call_cl(_generate_body,[_a,_sa,_env,_env_a]),calc("if_("+_sa,T538),calc(T538+",(",T539),calc(T539+_sb,T540),calc(T540+"),(",T541),calc(T541+_sc,T542),calc(T542+"))",T543),_s2 = T543,call_cl(_debug,[_s2]));((call_cl(_neg,[_a,_na]))->(call_cl(_debug,['[|]'("n",'[|]'(_na,[]))]),call_cl(_generate_body,[_a,_sa,_env,_env_a]),call_cl(_generate_body,[_na,_nsa,_env_a,_]),calc("("+_sa,T544),calc(T544+",",T545),calc(T545+_sb,T546),calc(T546+");",T547),calc(T547+"(",T548),calc(T548+_nsa,T549),calc(T549+",",T550),calc(T550+_sc,T551),calc(T551+")",T552),_s2 = T552);(call_cl(_get_stm,[_env,_env_a,_a,_prefix,_sa]),call_cl(_debug,['[|]'("if",'[|]'(_sa,'[|]'(_sb,[])))]),calc("safeNot("+_sa,T553),calc(T553+")",T554),_nsa = T554,calc(""+_prefix,T555),calc(T555+"",T556),calc(T556+"(",T557),calc(T557+_sa,T558),calc(T558+",",T559),calc(T559+_sb,T560),calc(T560+");",T561),calc(T561+"(",T562),calc(T562+_nsa,T563),calc(T563+",",T564),calc(T564+_sc,T565),calc(T565+")",T566),_s2 = T566))));(throw(1.0)))),call_cl(_generate_body,[_b,_sb_,_env_a,_env1]),call_cl(_update_tvar,[_env1,_sb_,_T567]),_sb = _T567,_env2 = _env1,call_cl(_debug,["-cond"]),get_(_env2,"initial",T568),call_cl(_debug,[T568])). % list_t gen_list_t(_a,_b,_s,_upvals):-_upvals=[],(((_a = '[|]'(fc_Id(_e1,_),_a2))->(_b = '[|]'(fc_Id(_e2,_),_b2),calc("_"+_e1,T524),calc(T524+"=",T525),calc(T525+"_",T526),calc(T526+_e2,T527),calc(T527+",",T528),calc(T528+_s2,T529),_s = T529,call(gen_list_t(_a2,_b2,_s2),_upvals));(_s = "true"))). % get_stm gen_get_stm(_env,_env2,_f,_prefix,_code,_upvals):-_upvals=[_custom_throw,_io,_io,_io,_generate_body,_genvar,_debug,_setup_pred,_debug],(calc("- stm:"+_f,T515),call_cl(_debug,[T515]),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,[])))]));((_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(gen_get_stm(_env1,_env2,fc_Pred(_name2,_args,_info),_prefix2,_code2),_upvals),calc(_prefix1+",",T516),calc(T516+_prefix2,T517),_prefix = T517,_code = _code2);(get_(_io,"writeln",T519),_T518 = T519,call_cl(_T518,[""]),get_(_io,"writeln",T521),_T520 = T521,call_cl(_T520,[_f]),get_(_io,"writeln",T523),_T522 = T523,call_cl(_T522,[""]),call_cl(_custom_throw,["cannot compile code (could not find the above term*)",_info]))))). % is_stm gen_is_stm(_f,_upvals):-_upvals=[_custom_throw,_io,_io,_io],(((_f = fc_Pred(_name,_args,_info))->(true);((_f = fc_ObjPred(_obj,_name,_args,_info))->(true);(get_(_io,"writeln",T510),_T509 = T510,call_cl(_T509,[""]),get_(_io,"writeln",T512),_T511 = T512,call_cl(_T511,[_f]),get_(_io,"writeln",T514),_T513 = T514,call_cl(_T513,[""]),call_cl(_custom_throw,["cannot compile code (could not find the above term*)",_info]))))). % compare_types gen_compare_types(_a,_b,_env,_env2,_info,_upvals):-_upvals=[_custom_throw,_io,_specialize_type,_debug,_types],(get_(_env,"extract_type",T502),_T501 = T502,call_cl(_T501,[_env,_a,_ta]),get_(_env,"extract_type",T504),_T503 = T504,call_cl(_T503,[_env,_b,_tb]),((get_(_types,"compare_types",T506),_T505 = T506,call_cl(_T505,[_ta,_tb]))->(call_cl(_debug,['[|]'("type",'[|]'(_ta,'[|]'(_tb,[])))]),call_cl(_specialize_type,[_env,_a,_ta,_tb,_env2]));(get_(_io,"writeln",T508),_T507 = T508,call_cl(_T507,['[|]'("type",'[|]'(_ta,'[|]'(_tb,[])))]),call_cl(_custom_throw,["cannot unify types",_info])))). % specialize_type gen_specialize_type(_env,_a,_ta,_tb,_env2,_upvals):-_upvals=[_io,_debug,_types,_Env],(((_a = fc_Id(_name,_),(((get_(_Env,"update",T493),_T492 = T493,get_(_types,"strict_type",T496),_T495 = T496,call_cl(_T495,[_ta,_tb,_T494]),call_cl(_T492,[_env,_name,_T494,_env2])),(get_(_env,"vars",T497),get_(_env2,"vars",T498),call_cl(_debug,['[|]'(_name,'[|]'(T497,'[|]'(T498,[])))]),true);get_(_io,"writeln",T500),_T499 = T500,call_cl(_T499,['[|]'(_ta,'[|]'(_tb,[]))]),throw("no strict"))));(dif(_a,fc_Id(_name,_)),_env2 = _env))). % set_type gen_set_type(_env,_env2,_name,_t,_upvals):-_upvals=[_Env],(get_(_Env,"update",T491),_T490 = T491,call_cl(_T490,[_env,_name,_t,_env2])). % generate_rel gen_generate_rel(_env,_env2,_f,_code,_upvals):-_upvals=[_extract_args,_set,_debug,_debug,_list,_term,_debug,_debug,_extract_type_information,_genvar,_Env,_debug,_debug,_string,_string,_debug,_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),calc("_"+_sb,T453),_s2 = T453,call_cl(_debug,["#"]),get_(_string,"slice",T455),_T454 = T455,get_(_string,"size",T458),_T457 = T458,str(_s0,T459),call_cl(_T457,[T459,_T456]),{_T456-1.0=T460},call_cl(_T454,[_s0,1.0,T460,_fname]),call_cl(_debug,["- require"]),calc("filename "+_fname,T461),call_cl(_debug,[T461]),get_(_Env,"push",T463),_T462 = T463,call_cl(_T462,[_env_a,fc_Var(_sb,"in",_type_info),_env2]),_module = _fname,call_cl(_genvar,[fc_Id(_name2,_)]),calc(_fname+".pl",T464),str(T464,T465),call_cl(_extract_type_information,[T465,_type_info]),call_cl(_debug,['[|]'("require",'[|]'(_fname,'[|]'(_module,'[|]'(_type_info,'[|]'(_b,[])))))]),calc("creq1(\""+_fname,T466),calc(T466+"\",",T467),calc(T467+"_",T468),calc(T468+_sb,T469),calc(T469+",",T470),calc(T470+_name2,T471),calc(T471+"),call(",T472),calc(T472+_name2,T473),calc(T473+",_",T474),calc(T474+_sb,T475),calc(T475+")",T476),_code = T476);((_name = "export")->(_args = '[|]'(_a,[]),get_(_env,"vars",T477),call_cl(_debug,['[|]'("export",'[|]'(_a,'[|]'(T477,[])))]),call_cl(_term,[_a,_s1,_env,_env_a,_prefix_]),calc("X="+_s1,T478),calc(T478+"",T479),_code = T479,get_(_env,"extract_type",T481),_T480 = T481,call_cl(_T480,[_env,_a,_t]),((_a = fc_Id(_name2,_),get_(_list,"has",T483),_T482 = T483,get_(_env,"vars",T484),call_cl(_T482,[T484,fc_Var(_name2,_n2,_t2)]))->(get_(_env,"vars",T485),call_cl(_debug,['[|]'("export-fn",'[|]'(_a,'[|]'(_t,'[|]'(T485,[]))))]));(get_(_env,"vars",T486),call_cl(_debug,[fc_Pair(T486)]))),call_cl(_set,[_env_a,"export",_a,_env2]));((_name = "print")->(call_cl(_extract_args,[_args,_sargs,_env,_env2,_prefix]),calc(_prefix+"writeln_(",T487),calc(T487+_sargs,T488),calc(T488+")",T489),_code = T489);(false))))). % generate_fact gen_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.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",T444),_T443 = T444,call_cl(_T443,[_arg2,'[|]'('[|]'(_arg1,[]),[]),_type]),call_cl(_debug,[_type]))),_type = [_first_type|_],call_cl(_debug,['[|]'("fc",'[|]'(_first_type,'[|]'(_arg1,'[|]'(_arg2,'[|]'(_type,[])))))]),get_(_Env,"push_on",T446),_T445 = T446,call_cl(_T445,[_env,"fcs",_c,_env1]),((dif(_first_type,"Functor"),get_(_Env,"get",T448),_T447 = T448,call_cl(_T447,[_env,"types",_o]),get_(_table,"set",T450),_T449 = T450,call_cl(_T449,[_o,_first_type,"Functor",_o2]),get_(_Env,"set",T452),_T451 = T452,call_cl(_T451,[_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 gen_extract_type_information(_fname,_x,_upvals):-_upvals=[_io,_extract,_io,_io,_io,_io,_io,_io,_io,_io],(get_(_io,"open",T423),_T422 = T423,call_cl(_T422,[_fname,"read",_f]),get_(_io,"fileReadChar",T425),_T424 = T425,call_cl(_T424,[_f,_c]),_any = '[|]'("Any",[]),((_c = "%",get_(_io,"fileReadChar",T427),_T426 = T427,call_cl(_T426,[_f,"0"]))->(get_(_io,"fileReadChar",T429),_T428 = T429,call_cl(_T428,[_f,_]),get_(_io,"fileReadLine",T431),_T430 = T431,call_cl(_T430,[_f,_line]),((_line = "module")->(get_(_io,"writeln",T433),_T432 = T433,calc("Warning: no type information on file "+_fname,T434),call_cl(_T432,[T434]),_x = _any);((_line = "")->(get_(_io,"writeln",T436),_T435 = T436,calc("Warning: blank type information on file "+_fname,T437),call_cl(_T435,[T437]),_x = _any);(get_(_io,"close",T439),_T438 = T439,call_cl(_T438,[_f]),call_cl(_extract,[_line,_x])))));(get_(_io,"writeln",T441),_T440 = T441,calc("Warning: no type information on file "+_fname,T442),call_cl(_T440,[T442]),_x = '[|]'("Any",[])))). % extract gen_extract(_s,_type,_upvals):-_upvals=[_logic,_types],(((get_(_types,"string_to_type",T418),_T417 = T418,call_cl(_T417,[_s,_type]))->(true);((_s = "Table *")->(_type = '[|]'("Table",[]));(calc("could not convert type "+_s,T419),writeln_(T419),writeln_('[|]'("extract",'[|]'(_s,'[|]'(_type,[])))),get_(_logic,"halt",T421),_T420 = T421,call_cl(_T420,[]))))). % match_until_space gen_match_until_space(_s,_i,_i2,_upvals):-_upvals=[_string,_string],((get_(_string,"size",T413),_T412 = T413,(call_cl(_T412,[_s,_i]),_i = _i2);(safeNot(call_cl(_T412,[_s,_i])),get_(_string,"at",T415),_T414 = T415,(call_cl(_T414,[_s,_i," "]),_i = _i2);(safeNot(call_cl(_T414,[_s,_i," "])),calc(_i+1.0,T416),call(gen_match_until_space(_s,T416,_i2),_upvals))))). % term gen_term(_f,_s2,_env,_env2,_prefix,_upvals):-_upvals=[_io,_term_,_debug,_generate_body,_genvar,_sym,_debug,_generate_body,_list,_genvar,_list,_genvar,_is_obj,_debug,_to_table,_set,_set,_table,_debug,_gensym,_gensym,_gensym,_filter,_to_array,_gensym,_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,_table,_debug,_debug_write],(((dif(_f,fc_And(_,_)),dif(_f,fc_And(_,_,_)))->(call_cl(_debug_write,[":"]),call_cl(_debug,[_f]));(true)),((_f = fc_Id(_name,_type))->(_prefix = "",((get_(_table,"get",T331),_T330 = T331,get_(_env,"alias",T332),call_cl(_T330,[T332,_name,_s1]))->(call_cl(_debug,['[|]'("name",'[|]'(_name,'[|]'(_env2,'[|]'(_s1,[]))))]),((_type = '[|]'("NonAlias",[]))->(calc("_"+_name,T333),_s2 = T333);(_s2 = _s1)),_env = _env2);((_name = "Cons")->(_s2 = "[]",_env = _env2);((_name = "_")->(_s2 = "_",_env = _env2);((call_cl(_is_functor,[_name,_env]))->(call_cl(_debug,[";functor"]),calc("fc([],\""+_name,T334),calc(T334+"\")",T335),_s2 = T335,_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(gen_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]),calc("get_("+_sa,T336),calc(T336+",",T337),calc(T337+"\"",T338),calc(T338+_b,T339),calc(T339+"\",",T340),calc(T340+_s2,T341),calc(T341+"),",T342),_prefix = T342)));(get_(_io,"writeln",T344),_T343 = T344,call_cl(_T343,[_t]),calc("property "+_b,T345),calc(T345+" not found in ",T346),calc(T346+_a,T347),str(T347,T348),call_cl(_custom_throw,[T348,_info]))))));((_f = fc_ObjGet2(_a,_b))->(call(gen_term(_b,_sb,_env,_,_),_upvals),call_cl(_sym,[_s2]),call_cl(_setup_var,[_env,_env2,_a,_sa]),calc("get_("+_sa,T349),calc(T349+",",T350),calc(T350+"",T351),calc(T351+_sb,T352),calc(T352+",",T353),calc(T353+_s2,T354),calc(T354+"),",T355),_prefix = T355);((_f = fc_Rel(_args,_body))->(call_cl(_gensym,["",_n]),_id = fc_Id(_n,[]),call(gen_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",T356),calc(T356+"_",T357),calc(T357+_name,T358),_id2 = T358,call_cl(_debug,[_id2]),call_cl(_make_rel,[_env,_fn,_f,_sargs,_s0,_id2,_t2]),str(_s0,T359),call_cl(_debug,['[|]'("bind",'[|]'(_id,'[|]'(T359,[])))]),get_(_fn,"upvals",T360),call_cl(_extract_args,[T360,_sargs2,_env,_,_]),get_(_fn,"ids",T361),call_cl(_set,[_env,"ids",T361,_env1]),call_cl(_pushid,[_env1,'[|]'(_id2,'[|]'(_name,'[|]'(_sargs,'[|]'(_sargs2,'[|]'(_s0,[]))))),_env3]),get_(_Env,"push",T363),_T362 = T363,call_cl(_T362,[_env3,fc_Var(_name,"out",_t2),_env2]),calc("["+_sargs2,T364),calc(T364+"]",T365),call_cl(_lambda6,[T365,_id2,_s2]),_prefix = "");((_f = fc_TList(_args))->(call_cl(_to_list,[_args,_sargs,_env,_env2,_prefix]),_s2 = _sargs);((_f = fc_TArray(_args))->(call_cl(_gensym,["T",_c]),call_cl(_to_array,[_args,_prefix1,0.0,_c,_s2,_env,_env2]),calc("new("+_c,T366),calc(T366+"),",T367),calc(T367+_prefix1,T368),_prefix = T368);((_f = fc_TTable(_args))->(call_cl(_filter,[_args,_args2]),((_args2 = fc([],"True"))->(call_cl(_gensym,["T",_s2]),calc("new("+_s2,T369),calc(T369+"),",T370),_prefix = T370,_env = _env2);(call_cl(_gensym,["T",_c]),call_cl(_gensym,["T",_s2]),call_cl(_debug,['[|]'("args-t",'[|]'(_args2,[]))]),get_(_table,"new",T372),_T371 = T372,call_cl(_T371,[_t]),call_cl(_set,[_env,"mode","obj",_T374]),call_cl(_set,[_T374,"this",_s2,_T373]),call_cl(_to_table,[_T373,_env1,_args2,_f2,_c,_s2,_t,_t2]),str(_f2,T375),call_cl(_debug,['[|]'("s",'[|]'(T375,[]))]),_env2 = _env1,calc("new("+_c,T376),calc(T376+"),",T377),calc(T377+_f2,T378),_prefix = T378)));((_f = fc_ObjPred(_obj,_name,_args,_info))->(((call_cl(_is_obj,[_obj]))->(call_cl(_genvar,[_o]),get_(_list,"concat",T380),_T379 = T380,call_cl(_T379,[_args,'[|]'(_o,[]),_args2]),throw("obj"));(call_cl(_genvar,[_o]),get_(_list,"concat",T382),_T381 = T382,call_cl(_T381,[_args,'[|]'(_o,[]),_args2]))),call_cl(_generate_body,[fc_ObjPred(_obj,_name,_args2,_info),_prefix1,_env,_env2]),_o = fc_Id(_s1,_),calc("_"+_s1,T383),_s2 = T383,calc(_prefix1+",",T384),_prefix = T384);((_f = fc_Op(_a,_b,_op,_info))->(get_(_env,"extract_type",T386),_T385 = T386,call_cl(_T385,[_env,_a,_ta]),call(gen_term(_a,_sa,_env,_env1,_prefix1),_upvals),call(gen_term(_b,_sb,_env1,_env3,_prefix2),_upvals),call_cl(_debug,['[|]'("op",'[|]'(_ta,'[|]'(_op,'[|]'(_sa,'[|]'(_sb,[])))))]),call_cl(_sym,[_s2]),calc(_prefix1+_prefix2,T387),calc(T387+_s1,T388),calc(T388+",",T389),_prefix = T389,((_op = "+")->(((_ta = '[|]'("Number",[]))->(calc("{"+_sa,T390),calc(T390+_op,T391),calc(T391+_sb,T392),calc(T392+"=",T393),calc(T393+_s2,T394),calc(T394+"}",T395),_s1 = T395);(calc("calc("+_sa,T396),calc(T396+_op,T397),calc(T397+_sb,T398),calc(T398+",",T399),calc(T399+_s2,T400),calc(T400+")",T401),_s1 = T401)));(calc("{"+_sa,T402),calc(T402+_op,T403),calc(T403+_sb,T404),calc(T404+"=",T405),calc(T405+_s2,T406),calc(T406+"}",T407),_s1 = T407)),_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,[])))]),calc("_"+_s1,T408),_s2 = T408,calc(_prefix1+",",T409),_prefix = T409);((call_cl(_term_,[_f,_s2,_env,_env2]))->(_prefix = "");(get_(_io,"writeln",T411),_T410 = T411,call_cl(_T410,[_f]),throw("term not recognized"))))))))))))))))). % to_array gen_to_array(_l,_s,_i,_c,_c2,_env,_env2,_upvals):-_upvals=[_gensym,_term],((((_l = '[|]'(_a,_tail)),(call_cl(_term,[_a,_sa,_env,_env1,_prefix1]),call_cl(_gensym,["T",_c1]),calc(_prefix1+"set_(",T319),calc(T319+_c,T320),calc(T320+",",T321),calc(T321+_i,T322),calc(T322+",",T323),calc(T323+_sa,T324),calc(T324+",",T325),calc(T325+_c1,T326),calc(T326+"),",T327),calc(T327+_prefix2,T328),_s = T328,calc(_i+1.0,T329),call(gen_to_array(_tail,_prefix2,T329,_c1,_c2,_env1,_env2),_upvals));_l = [],_c2 = _c,_s = "",_env2 = _env))). % check_type gen_check_type(_env,_name,_type,_upvals):-_upvals=[_debug,_get_type,_debug],(((((_type = [];_type = '[|]'("Any",[]))),(true);_type = '[|]'("Table",_t),(((_t = []),(true);((get_(_t,_name,T318),T318 = _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 gen_make_rel(_env,_fn,_f,_sargs,_body,_id2,_t2,_upvals):-_upvals=[_extract_args,_debug,_generate_body,_Env,_set,_nil,_debug,_set,_set,_debug,_push_types,_env_make,_debug],(call_cl(_debug,['[|]'("-setup",'[|]'(_f,[]))]),_f = fc_Rel(_id,_args,_code),call_cl(_env_make,[_env1,_env]),_args2 = _args,_t1 = ["Relation"|_type],call_cl(_push_types,[_env1,_env_fn2,_args2,_type]),_id = fc_Id(_name,_),call_cl(_debug,['[|]'("-setup",'[|]'(_name,[]))]),call_cl(_set,[_env_fn2,"rec",_id2,_T311]),call_cl(_set,[_T311,"args",_args2,_env_fn3]),str(_id2,T312),call_cl(_debug,['[|]'("make-rec",'[|]'(T312,'[|]'(_name,[])))]),new(T313),_nil = T313,call_cl(_set,[_env_fn3,"label",_nil,_env_fn0]),get_(_Env,"push",T315),_T314 = T315,call_cl(_T314,[_env_fn0,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],get_(_env,"extract_types",T317),_T316 = T317,call_cl(_T316,[_fn,_args,_type2])). % make_clos gen_make_clos(_env,_env2,_upvals1,_fn,_name,_sargs,_code,_id2,_t2,_s2,_upvals):-_upvals=[_lambda6,_Env,_pushid,_set,_debug,_extract_args],(call_cl(_extract_args,[_upvals1,_sargs2,_env,_,_]),call_cl(_debug,['[|]'("-setup",'[|]'(_name,'[|]'(_sargs2,[])))]),get_(_fn,"ids",T306),call_cl(_set,[_env,"ids",T306,_env1]),call_cl(_pushid,[_env1,'[|]'(_id2,'[|]'(_name,'[|]'(_sargs,'[|]'(_sargs2,'[|]'(_code,[]))))),_env3]),get_(_Env,"push",T308),_T307 = T308,call_cl(_T307,[_env3,fc_Var(_name,"out",_t2),_env2]),calc("["+_sargs2,T309),calc(T309+"]",T310),call_cl(_lambda6,[T310,_id2,_s2])). % pushid gen_pushid(_env,_e,_env2,_upvals):-_upvals=[_set,_list],((((get_(_env,"ids",T303),T303 = _t),(get_(_list,"push",T305),_T304 = T305,call_cl(_T304,[_t,_e,_t1]),call_cl(_set,[_env,"ids",_t1,_env2]));throw("no ids")))). % term_ gen_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",T302),_T301 = T302,call_cl(_T301,[_f]),throw("term not recognized")))))). % num_r gen_num_r(_s,_s2,_upvals):-_upvals=[_string],(((get_(_string,"has",T298),_T297 = T298,call_cl(_T297,[_s,"."]))->(_s2 = _s);(calc(_s+".0",T299),str(T299,T300),_s2 = T300))). % to_list gen_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",T276),_T275 = T276,call_cl(_T275,[_c,39.0]),calc(_c+"[|]",T277),calc(T277+_c,T278),_symbol = T278,calc(""+_symbol,T279),calc(T279+"(",T280),calc(T280+_sa,T281),calc(T281+",",T282),calc(T282+_sb,T283),calc(T283+")",T284),_s = T284,calc(_prefix1+_prefix2,T285),_prefix = T285);(dif(_l,[_a|[fc_Tuple(_l2)|[]]]),(_l = [_a|_tail],call_cl(_term,[_a,_sa,_env,_env1,_prefix1]),call(gen_to_list(_tail,_sb,_env1,_env2,_prefix2),_upvals),calc(_prefix1+_prefix2,T286),_prefix = T286,get_(_string,"code",T288),_T287 = T288,call_cl(_T287,[_c,39.0]),calc(_c+"[|]",T289),calc(T289+_c,T290),_symbol = T290,calc(""+_symbol,T291),calc(T291+"(",T292),calc(T292+_sa,T293),calc(T293+",",T294),calc(T294+_sb,T295),calc(T295+")",T296),_s = T296);(dif(_l,[_a|_tail]),_l = [],_s = "[]",_env2 = _env,_prefix = "")))). % to_table gen_to_table(_env,_env2,_l,_f,_c,_c2,_t,_t2,_upvals):-_upvals=[_debug,_set,_remove_double_string,_table_eq,_debug,_debug,_debug,_debug,_debug,_gensym,_debug],(calc(";"+_l,T269),call_cl(_debug,[T269]),((_l = fc_And(_a,_b))->(call_cl(_gensym,["T",_c_]),call_cl(_debug,[";"]),call_cl(_debug,[_a]),call(gen_to_table(_env,_temp,_a,_f1,_c,_c_,_t,_t0),_upvals),calc(";"+_b,T270),call_cl(_debug,[T270]),call(gen_to_table(_temp,_env2,_b,_f2,_c_,_c2,_t0,_t2),_upvals),call_cl(_debug,['[|]'(",",'[|]'(_a,'[|]'(_f1,'[|]'(_b,'[|]'(_f2,[])))))]),calc(_f1+"",T271),calc(T271+_f2,T272),_f = T272);((_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 = ""))),get_(_env,"extract_type",T274),_T273 = T274,call_cl(_T273,[_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 gen_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,_))->(calc("set_("+_c,T253),calc(T253+",\"",T254),calc(T254+_name,T255),calc(T255+"\",",T256),calc(T256+_sb,T257),calc(T257+",",T258),calc(T258+_c2,T259),calc(T259+"),",T260),_f = T260);(calc("set_("+_c,T261),calc(T261+",",T262),calc(T262+_sa,T263),calc(T263+",",T264),calc(T264+_sb,T265),calc(T265+",",T266),calc(T266+_c2,T267),calc(T267+"),",T268),_f = T268)),_env2 = _env_b,call_cl(_debug,['[|]'("t-end",'[|]'(_b,'[|]'(_sb,[])))])). % filter gen_filter(_l,_f,_upvals):-_upvals=[],(((_l = fc_And(_a,_b),call(gen_filter(_a,_f1),_upvals),call(gen_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(gen_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 gen_func(_f,_s2,_env,_env2,_prefix,_upvals):-_upvals=[_debug,_setup_pred,_list,_genstr,_gensym,_term,_debug,_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]),calc("fc_"+_name,T216),calc(T216+"(",T217),calc(T217+_sargs,T218),calc(T218+")",T219),_s2 = T219,call_cl(_debug,[_s2]));((_name = "int")->(_args = '[|]'(_h,[]),call_cl(_term,[_h,_s,_env,_env2,_prefix1]),call_cl(_gensym,["X",_s2]),calc(_prefix1+"int(",T220),calc(T220+_s,T221),calc(T221+",",T222),calc(T222+_s2,T223),calc(T223+"),",T224),_prefix = T224,call_cl(_debug,['[|]'("-",'[|]'(_prefix,'[|]'(_c,[])))]));(((_name = "num";_name = "real"))->(_args = '[|]'(_h,[]),call_cl(_term,[_h,_s,_env,_env2,_prefix1]),call_cl(_gensym,["X",_s2]),calc(_prefix1+"{",T225),calc(T225+_s2,T226),calc(T226+" = ",T227),calc(T227+_s,T228),calc(T228+"},",T229),_prefix = T229);((_name = "math")->(_args = '[|]'(_a,[]),call_cl(_term,[_a,_s,_env,_env2,_prefix1]),call_cl(_gensym,["X",_s2]),((get_(_env,"extract_type",T231),_T230 = T231,call_cl(_T230,[_env,_a,'[|]'("String",[])]))->(calc(_prefix1+"str2(",T232),calc(T232+_s2,T233),calc(T233+", ",T234),calc(T234+_s,T235),calc(T235+"),",T236),_prefix = T236);(calc(_prefix1+"freeze(",T237),calc(T237+_s2,T238),calc(T238+",{",T239),calc(T239+_s2,T240),calc(T240+" = ",T241),calc(T241+_s,T242),calc(T242+"}),",T243),_prefix = T243)),call_cl(_debug,['[|]'("-",'[|]'(_prefix,'[|]'(_s2,[])))]));((_name = "str")->(_args = '[|]'(_h,[]),call_cl(_term,[_h,_s,_env,_env2,_prefix1]),call_cl(_gensym,["T",_c]),calc(_prefix1+"str(",T244),calc(T244+_s,T245),calc(T245+",",T246),calc(T246+_c,T247),calc(T247+"),",T248),_prefix = T248,_s2 = _c);(call_cl(_genstr,[_o,_s2]),get_(_list,"concat",T250),_T249 = T250,call_cl(_T249,[_args,'[|]'(_o,[]),_args2]),call_cl(_setup_pred,[_env,_env2,_name,_args2,_prefix1,_s,_info]),call_cl(_debug,['[|]'("p-",'[|]'(_s,'[|]'(_sargs,'[|]'(_s2,[]))))]),calc(_prefix1+_s,T251),calc(T251+",",T252),_prefix = T252)))))))). % listify gen_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]),calc("["+_sa,T211),calc(T211+"|",T212),calc(T212+_sb,T213),calc(T213+"]",T214),_s2 = T214,calc(_c1+_c2,T215),_prefix = T215);(dif(_l,'[|]'(_a,'[|]'(_b,[]))),throw("incorrect number of parameters for Cons")))). % setup_pred gen_setup_pred(_env,_env2,_name,_args,_prefix,_code,_info,_upvals):-_upvals=[_custom_throw,_io,_debug,_debug,_lambda5,_Env,_compare_relation,_extract_args,_debug,_debug,_debug,_Env,_lambda5,_setup_var,_compare_relation,_extract_args,_debug,_apply,_debug,_compare_relation,_extract_args,_debug,_debug],(_fc = fc_Var(_name,_obj,_type),call_cl(_debug,["-setup=call"]),((get_(_env,"find",T195),_T194 = T195,get_(_env,"vars",T196),call_cl(_T194,[T196,_fc,_]))->(call_cl(_debug,['[|]'("fn1",'[|]'(_name,'[|]'(_sargs,'[|]'(_fc,'[|]'(_info,[])))))]),((_obj = "rec")->(_type2 = ["Relation"|_t1],get_(_env,"extract_types",T198),_T197 = T198,get_(_env,"args",T199),call_cl(_T197,[_env,T199,_t1]),_args2 = _args,call_cl(_extract_args,[_args2,_sargs,_env,_env1,_prefix]),call_cl(_compare_relation,[fc_Pair(_name,_type2),_args2,_env1,_env2,_info]),get_(_env,"rec",T200),call_cl(_debug,['[|]'("call-rec",'[|]'(_name,'[|]'(_args,'[|]'(_type2,'[|]'(T200,'[|]'(_t1,[]))))))]),get_(_env,"rec",T201),call_cl(_apply,[T201,_sargs,_code]));(_type = [_|_t1],_args2 = _args,call_cl(_debug,['[|]'("fn2",'[|]'(_name,'[|]'(_args,'[|]'(_args2,[]))))]),call_cl(_extract_args,[_args2,_sargs,_env,_env1,_prefix]),call_cl(_compare_relation,[fc_Pair(_name,_type),_args2,_env1,_env2,_info]),call_cl(_setup_var,[_env,_,_name,_name2]),call_cl(_lambda5,[_name,_sargs,_code]))));((get_(_Env,"prevs",T203),_T202 = T203,call_cl(_T202,[_env,_name,_fc]))->(call_cl(_debug,["prev"]),_type = [_|_t1],call_cl(_debug,['[|]'("prev-var2=rel",'[|]'(_name,'[|]'(_fc,'[|]'(_t1,[]))))]),_args2 = _args,call_cl(_debug,['[|]'("fn2",'[|]'(_args,'[|]'(_args2,[])))]),call_cl(_extract_args,[_args2,_sargs,_env,_env0,_prefix]),call_cl(_compare_relation,[fc_Pair(_name,_type),_args2,_env0,_env1,_info]),get_(_Env,"push_on",T205),_T204 = T205,call_cl(_T204,[_env1,"upvals",fc_Id(_name,_type),_env2]),call_cl(_lambda5,[_name,_sargs,_code]),get_(_env2,"upvals",T206),call_cl(_debug,['[|]'("prev-",'[|]'(T206,[]))]));(get_(_env,"vars",T207),call_cl(_debug,[T207]),get_(_io,"writeln",T209),_T208 = T209,call_cl(_T208,[_name]),calc("calling unknown relation "+_name,T210),call_cl(_custom_throw,[T210,_info]))))). % get_type gen_get_type(_env,_name,_t,_upvals):-_upvals=[_has],((((get_(_env,"vars",T193),call_cl(_has,[T193,fc_Var(_name,_,_t)])),(true);_t = '[|]'("Table",[])))). % _rec gen__rec(_env,_env2,_name,_args,_prefix,_code,_info,_upvals):-_upvals=[_apply,_debug,_compare_relation,_extract_args,_debug,_debug,_debug],(_fc = fc_Var(_name,_obj,_type),call_cl(_debug,[_fc]),get_(_env,"find",T186),_T185 = T186,get_(_env,"vars",T187),call_cl(_T185,[T187,_fc,_]),call_cl(_debug,['[|]'("fn2",'[|]'(_args,[]))]),_type2 = ["Relation"|_t1],get_(_env,"extract_types",T189),_T188 = T189,get_(_env,"args",T190),call_cl(_T188,[_env,T190,_t1]),_args2 = _args,call_cl(_debug,['[|]'("fn2",'[|]'(_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",T191),call_cl(_debug,['[|]'("call-rec",'[|]'(_name,'[|]'(_args,'[|]'(_type2,'[|]'(T191,'[|]'(_t1,[]))))))]),get_(_env,"rec",T192),call_cl(_apply,[T192,_sargs,_code])). % is_obj gen_is_obj(_ta,_upvals):-_upvals=[],(_ta = '[|]'("Object",_)). % is_num gen_is_num(_ta,_upvals):-_upvals=[],((_ta = '[|]'("Number",_);(_ta = '[|]'("Integer",_);_ta = '[|]'("Real",_)))). % apply gen_apply(_name,_sargs,_s,_upvals):-_upvals=[],(((_sargs = "",calc("call("+_name,T179),calc(T179+",_upvals)",T180),_s = T180);(dif(_sargs,""),calc("call("+_name,T181),calc(T181+"(",T182),calc(T182+_sargs,T183),calc(T183+"),_upvals)",T184),_s = T184))). % lambda5 gen_lambda5(_name,_sargs,_s2,_upvals):-_upvals=[_lambda4,_mutable],(get_(_mutable,"get",T171),_T170 = T171,call_cl(_T170,["debug",_x]),((_x = 1.0,call_cl(_lambda4,[_name,_sargs,_s2]));(dif(_x,1.0),calc("call_cl("+"_",T172),calc(T172+_name,T173),calc(T173+",[",T174),calc(T174+_sargs,T175),calc(T175+"]",T176),calc(T176+"",T177),calc(T177+")",T178),_s2 = T178))). % lambda4 gen_lambda4(_name,_sargs,_s2,_upvals):-_upvals=[],(calc("call_db("+"_",T163),calc(T163+_name,T164),calc(T164+",[",T165),calc(T165+_sargs,T166),calc(T166+"],[",T167),calc(T167+_name,T168),calc(T168+"])",T169),_s2 = T169). % lambda6 gen_lambda6(_sargs,_s0,_s2,_upvals):-_upvals=[],(calc("clos("+_sargs,T158),calc(T158+",",T159),calc(T159+"",T160),calc(T160+_s0,T161),calc(T161+")",T162),_s2 = T162). % extract_args gen_extract_args(_l,_s,_env,_env2,_prefix,_upvals):-_upvals=[_string,_term,_term,_term,_sym],(((_l = [fc_Mutable(_x)|_tail])->(call_cl(_sym,[_s1]),get_(_env,"push_alias",T151),_T150 = T151,call_cl(_T150,[_env,_x,_s1,_env_a]),call_cl(_term,[fc_Id(_x,[]),_s0,_env,_,_]),calc(_s0+",",T152),calc(T152+_s1,T153),_s = T153,call(gen_extract_args(_tail,_s2,_env_a,_env2,_prefix),_upvals));((_l = [_f1|[]])->(call_cl(_term,[_f1,_s,_env,_env2,_prefix]));((_l = [_f1|_tail])->(call_cl(_term,[_f1,_s1,_env,_env_a,_prefix1]),call(gen_extract_args(_tail,_s2,_env_a,_env2,_prefix2),_upvals),def(_prefix2),def(_prefix1),get_(_string,"concat",T155),_T154 = T155,call_cl(_T154,[_prefix1,_prefix2,_prefix]),calc(_s1+",",T156),calc(T156+_s2,T157),_s = T157);(_l = [],_s = "",_prefix = "",_env2 = _env))))). % compare_relation gen_compare_relation(_f,_args,_env,_env2,_info,_upvals):-_upvals=[_custom_throw,_io,_io,_io,_debug,_types,_debug,_debug],(_f = fc_Pair(_name,_t1),call_cl(_debug,['[|]'("frel",'[|]'(_f,'[|]'(_args,[])))]),_env = _env2,get_(_env,"extract_type_args",T139),_T138 = T139,call_cl(_T138,[_env,_args,__args]),_t2 = ["Relation"|__args],call_cl(_debug,['[|]'("rel",'[|]'(_name,'[|]'(_t1,'[|]'(_t2,[]))))]),((get_(_types,"compare_types",T141),_T140 = T141,call_cl(_T140,[_t1,_t2]))->(call_cl(_debug,['[|]'("true",[])]));(get_(_io,"writeln",T143),_T142 = T143,call_cl(_T142,['[|]'("types",'[|]'(_args,[]))]),get_(_io,"writeln",T145),_T144 = T145,call_cl(_T144,[_t2]),get_(_io,"writeln",T147),_T146 = T147,call_cl(_T146,[_t1]),calc("calling relation "+_name,T148),calc(T148+" with wrong type",T149),_msg = T149,call_cl(_custom_throw,[_msg,_info])))). % eq2 gen_eq2(_t1,_t2,_upvals):-_upvals=[_eq3,_debug,_string,_string],(get_(_string,"size",T134),_T133 = T134,call_cl(_T133,[_t1,_T132]),_n1 = _T132,get_(_string,"size",T137),_T136 = T137,call_cl(_T136,[_t2,_T135]),_n2 = _T135,call_cl(_debug,['[|]'(_n1,'[|]'(_n2,[]))]),call_cl(_eq3,[_n1,_n2])). % eq3 gen_eq3(_n1,_n2,_upvals):-_upvals=[],((((true),(_n1 = _n2);_n1 = 1.0))). % setup_var gen_setup_var(_env,_env2,_name,_s2,_upvals):-_upvals=[_setup_var2],(_fc = fc_Var(_name,_n,_tc),call_cl(_setup_var2,[_env,_env2,_name,_s2])). % setup_var2 gen_setup_var2(_env,_env2,_name,_s2,_upvals):-_upvals=[_Env,_Env,_debug,_Env,_var2,_table],(_fc = fc_Var(_name,_n,_tc),(((get_(_table,"get",T122),_T121 = T122,get_(_env,"vars",T123),call_cl(_T121,[T123,_name,_fc])),(call_cl(_var2,[_env,_env2,_fc,_s2]));((get_(_Env,"prevs",T125),_T124 = T125,call_cl(_T124,[_env,_name,_fc])),(call_cl(_debug,['[|]'("prev-var",'[|]'(_name,'[|]'(_n,'[|]'(_tc,[]))))]),get_(_Env,"push_on",T127),_T126 = T127,call_cl(_T126,[_env,"upvals",fc_Id(_name,_tc),_env2]),calc("_"+_name,T128),_s2 = T128);_n = "out",calc("_"+_name,T129),_s2 = T129,_tc = '[|]'("Any",[]),get_(_Env,"push",T131),_T130 = T131,call_cl(_T130,[_env,_fc,_env2]))))). % var2 gen_var2(_env,_env2,_fc,_s2,_upvals):-_upvals=[],(_fc = fc_Var(_name,_obj,_type),_env = _env2,((_obj = "args",calc("_"+_name,T119),_s2 = T119);(dif(_obj,"args"),calc("_"+_name,T120),_s2 = T120))). % map1 gen_map1(_env,_l,_l2,_upvals):-_upvals=[_debug],((((true),(_l = '[|]'(_e1,_e2),_l2 = '[|]'(_s,_e4),!,get_(_env,"module",T112),calc("nb_getval("+T112,T113),calc(T113+"_",T114),calc(T114+_e1,T115),calc(T115+",_",T116),calc(T116+_e1,T117),calc(T117+"),",T118),_s = T118,call(gen_map1(_env,_e2,_e4),_upvals));call_cl(_debug,['[|]'(2.0,'[|]'(_l,'[|]'(_l2,[])))]),_l = [],_l2 = []))). % new_env gen_new_env(_e,_upvals):-_upvals=[_env_from],(call_cl(_env_from,[_e,[]])). % env_from gen_env_from(_e,_prev,_upvals):-_upvals=[_set,_set,_set,_Env,_table],(get_(_table,"new",T102),_T101 = T102,call_cl(_T101,[_t1]),get_(_Env,"new",T104),_T103 = T104,call_cl(_T103,[_e1,_prev,_t1]),call_cl(_set,[_e1,"mode","fn",_e2]),call_cl(_set,[_e2,"ids",[],_e3]),call_cl(_set,[_e3,"label",_t1,_e])). % env_make gen_env_make(_e,_e1,_upvals):-_upvals=[_set,_set,_table],(get_(_table,"new",T100),_T99 = T100,call_cl(_T99,[_t1]),call_cl(_set,[_e1,"vars",_t1,_e2]),call_cl(_set,[_e2,"prev",_e1,_e])). % varname gen_varname(_l2,_sb,_upvals):-_upvals=[],(_l2 = fc_Id(_name,_),calc("_"+_name,T98),_sb = T98). % neg gen_neg(_f,_f2,_upvals):-_upvals=[_debug],(((_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)),call_cl(_debug,[_f]),false))))))). % generate_cond gen_generate_cond(_l,_l2,_env,_env2,_upvals):-_upvals=[_generate_body],(((_l = [_c|_tail],call_cl(_generate_body,[_c,_s,_env,_env1]),calc("("+_s,T96),calc(T96+")",T97),_l2 = '[|]'(T97,_tail2),call(gen_generate_cond(_tail,_tail2,_env1,_env2),_upvals));(dif(_l,[_c|_tail]),(_l = []),(_l2 = [],_env2 = _env)))). % update_tvar gen_update_tvar(_env,_s,_s2,_upvals):-_upvals=[_debug,_debug,_update_tvar_,_debug],(((get_(_env,"initial",T89),_l = T89,call_cl(_debug,["-update"]),get_(_env,"next",T90),call_cl(_update_tvar_,[_l,T90,_s1]),((_s1 = "",_s2 = _s);(dif(_s1,""),calc(_s1+",",T91),calc(T91+_s,T92),_s2 = T92)),str(_s1,T93),call_cl(_debug,[T93]),str(_s,T94),call_cl(_debug,[T94]));(dif(_l,T95),_s2 = _s))). % update_tvar_ gen_update_tvar_(_t,_t2,_s,_upvals):-_upvals=[_table,_list,_debug,_table],(get_(_table,"sub",T78),_T77 = T78,call_cl(_T77,[_t,_t2,_t1]),call_cl(_debug,[_t1]),get_(_list,"join",T81),_T80 = T81,get_(_table,"map",T84),_T83 = T84,call_cl(_T83,[_t1,clos([_table,_list,_debug,_table],gen_4),_T82]),call_cl(_T80,[_T82,",",_T79]),_s = _T79). % 4 gen_4(_i,_x,_y,_upvals):-_upvals=[_table,_list,_debug,_table],(_x = fc_Var(_x0,_x1),calc("_"+_x0,T85),calc(T85+"=",T86),calc(T86+"_",T87),calc(T87+_x1,T88),_y = T88). % next_tvar2 gen_next_tvar2(_env,_env2,_upvals):-_upvals=[_debug,_table,_tmap,_gensym,_debug],(((get_(_env,"initial",T73),_l = T73,call_cl(_debug,["-next"]),_gensym_ = _gensym,call_cl(_tmap,[_l,clos([_gensym_,_gensym,_debug],gen_3),_l2]),get_(_table,"set",T75),_T74 = T75,call_cl(_T74,[_env,"initial",_l2,_env2]),call_cl(_debug,[_l2]));(dif(_l,T76),_env = _env2))). % 3 gen_3(_i,_x,_i2,_y,_upvals):-_upvals=[_gensym_,_gensym,_debug],(call_cl(_gensym_,["T",_temp]),_x = fc_Var(_x1,_x2),_y = fc_Var(_x2,_temp),_i = _i2). % next_tvar gen_next_tvar(_env,_env2,_upvals):-_upvals=[_debug,_table,_tmap,_gensym,_debug],(((get_(_env,"initial",T69),_l = T69,call_cl(_debug,["-next"]),_gensym_ = _gensym,call_cl(_tmap,[_l,clos([_gensym_,_gensym,_debug],gen_2),_l2]),get_(_table,"set",T71),_T70 = T71,call_cl(_T70,[_env,"initial",_l2,_env2]),call_cl(_debug,[_l2]));(dif(_l,T72),_env = _env2))). % 2 gen_2(_i,_x,_i2,_y,_upvals):-_upvals=[_gensym_,_gensym,_debug],(call_cl(_gensym_,["T",_temp]),_x = fc_Var(_x1,_x2),_y = fc_Var(_x1,_temp),_i = _i2). % remove_tvar gen_remove_tvar(_env,_env2,_val,_upvals):-_upvals=[_set,_debug,_debug,_Set,_debug],(((get_(_env,"initial",T65),_l = T65)->(call_cl(_debug,["-rem"]),get_(_Set,"push",T67),_T66 = T67,get_(_env,"next",T68),call_cl(_T66,[T68,_val,_l2]),call_cl(_debug,['[|]'("rem",'[|]'(_val,[]))]),call_cl(_debug,[_l2]),call_cl(_set,[_env,"next",_l2,_env2]));(_env = _env2))). % push_next gen_push_next(_env,_val,_b,_c1,_upvals):-_upvals=[],(get_(_env,"initial",T60),_l = T60,get_(_l,_val,T61),T61 = fc_Var(_,_x),calc("_"+_x,T62),calc(T62+"=",T63),calc(T63+_b,T64),_c1 = T64). % push_init gen_push_init(_env,_env2,_val,_name,_upvals):-_upvals=[_set,_set],(get_(_env,"label",T59),_l = T59,call_cl(_set,[_l,_val,_name,_l2]),call_cl(_set,[_env,"label",_l2,_env2])). % has_tvar gen_has_tvar(_env,_upvals):-_upvals=[],(get_(_env,"initial",T58),T58 = _). % tmap gen_tmap(_t,_p,_t2,_upvals):-_upvals=[_tmap_,_nil,_table],(get_(_table,"iter",T57),_T56 = T57,call_cl(_T56,[_t,_T55]),call_cl(_tmap_,[_T55,_p,_nil,_t2])). % tmap_ gen_tmap_(_t,_p,_t0,_t2,_upvals):-_upvals=[_table,_table],(get_(_table,"next",T52),_T51 = T52,call_cl(_T51,[_t,_t_,_k,_v,_i]),((_i = 1.0,call_cl(_p,[_k,_v,_k_,_v_]),get_(_table,"set",T54),_T53 = T54,call_cl(_T53,[_t0,_k_,_v_,_t1]),call(gen_tmap_(_t_,_p,_t1,_t2),_upvals));(dif(_i,1.0),_t2 = _t0))). % push_types gen_push_types(_env,_env2,_l,_ts,_upvals):-_upvals=[_Env,_Env,_Env,_Env],((((true),(_l = '[|]'(_f1,_tail),_ts = '[|]'(_t1,_t2),get_(_Env,"extract_type",T48),_T47 = T48,call_cl(_T47,[_env,_f1,_t1]),call(gen_push_types(_env,_env_a,_tail,_t2),_upvals),_f1 = fc_Id(_name,_),get_(_Env,"push",T50),_T49 = T50,call_cl(_T49,[_env_a,fc_Var(_name,"args",_t1),_env2]));_l = [],_ts = [],_env2 = _env))). % is_functor gen_is_functor(_name,_env,_upvals):-_upvals=[_list],(get_(_env,"fcs",T40),_fcs = T40,get_(_list,"find",T42),_T41 = T42,call_cl(_T41,[_fcs,fc_Var(_name,_n,_),_])). % sym gen_sym(_c,_upvals):-_upvals=[_gensym],(call_cl(_gensym,["T",_c])). % genstr gen_genstr(_o,_s2,_upvals):-_upvals=[_gensym],(call_cl(_gensym,["T",_s]),_o = fc_Id(_s,[]),calc("_"+_s,T39),_s2 = T39). % genvar gen_genvar(_x,_upvals):-_upvals=[_gensym],(call_cl(_gensym,["T",_c]),_x = fc_Id(_c,[])). % gensym gen_gensym(_prefix,_x,_upvals):-_upvals=[],(gensym(_prefix,_x)). % double_string gen_double_string(_s1,_s2,_upvals):-_upvals=[_str,_string,_string],(get_(_string,"slice",T34),_T33 = T34,get_(_string,"size",T37),_T36 = T37,call_cl(_T36,[_s1,_T35]),{_T35-1.0=T38},call_cl(_T33,[_s1,1.0,T38,_sa]),call_cl(_str,[_sa,_s2])). % remove_double_string gen_remove_double_string(_s1,_sa,_upvals):-_upvals=[_string,_string],(get_(_string,"slice",T28),_T27 = T28,get_(_string,"size",T31),_T30 = T31,call_cl(_T30,[_s1,_T29]),{_T29-1.0=T32},call_cl(_T27,[_s1,1.0,T32,_sa])). % str gen_str(_s,_s1,_upvals):-_upvals=[_double_quote],(call_cl(_double_quote,[_c]),calc(_c+_s,T25),calc(T25+_c,T26),_s1 = T26). % double_quote gen_double_quote(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T24),_T23 = T24,call_cl(_T23,[_c,34.0])). % single_quote gen_single_quote(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T22),_T21 = T22,call_cl(_T21,[_c,39.0])). % custom_throw gen_custom_throw(_msg,_info,_upvals):-_upvals=[],(((ground(_info))->(_info = fc_Info(_line,_col),calc("(line "+_line,T11),calc(T11+", col ",T12),calc(T12+_col,T13),calc(T13+") ",T14),calc(T14+_msg,T15),str(T15,T16),throw(T16));(throw(_msg)))). % debug gen_debug(_x,_upvals):-_upvals=[],(true). % debug_write gen_debug_write(_x,_upvals):-_upvals=[],(true). % def gen_def(_a,_msg,_upvals):-_upvals=[],(((ground(_a))->(true);(writeln(_a),throw(_msg)))). % main gen(X):-creq1("io",_io,T1),call(T1,_io),creq1("set",_Set,T2),call(T2,_Set),_def = clos([],gen_def),_debug_write = clos([],gen_debug_write),_debug = clos([],gen_debug),creq1("logic",_logic,T3),call(T3,_logic),creq1("table",_table,T4),call(T4,_table),creq1("list",_list,T5),call(T5,_list),creq1("string",_string,T6),call(T6,_string),get_(_logic,"halt",T7),_halt = T7,creq1("env4",_Env,T8),call(T8,_Env),creq1("types2",_types,T9),call(T9,_types),creq1("mutable",_mutable,T10),call(T10,_mutable),_custom_throw = clos([],gen_custom_throw),get_(_table,"set",T17),_set = T17,get_(_table,"get",T18),_get = T18,get_(_list,"has",T19),_has = T19,new(T20),_nil = T20,_single_quote = clos([_string],gen_single_quote),_double_quote = clos([_string],gen_double_quote),_str = clos([_double_quote],gen_str),_remove_double_string = clos([_string,_string],gen_remove_double_string),_double_string = clos([_str,_string,_string],gen_double_string),_gensym = clos([],gen_gensym),_genvar = clos([_gensym],gen_genvar),_genstr = clos([_gensym],gen_genstr),_sym = clos([_gensym],gen_sym),_is_functor = clos([_list],gen_is_functor),_push_types = clos([_Env,_Env,_Env,_Env],gen_push_types),_tmap_ = clos([_table,_table],gen_tmap_),_tmap = clos([_tmap_,_nil,_table],gen_tmap),_has_tvar = clos([],gen_has_tvar),_push_init = clos([_set,_set],gen_push_init),_push_next = clos([],gen_push_next),_remove_tvar = clos([_set,_debug,_debug,_Set,_debug],gen_remove_tvar),_next_tvar = clos([_debug,_table,_tmap,_gensym,_debug],gen_next_tvar),_next_tvar2 = clos([_debug,_table,_tmap,_gensym,_debug],gen_next_tvar2),_update_tvar_ = clos([_table,_list,_debug,_table],gen_update_tvar_),_update_tvar = clos([_debug,_debug,_update_tvar_,_debug],gen_update_tvar),_generate_cond = clos([_generate_body],gen_generate_cond),_neg = clos([_debug],gen_neg),_varname = clos([],gen_varname),_env_make = clos([_set,_set,_table],gen_env_make),_env_from = clos([_set,_set,_set,_Env,_table],gen_env_from),_new_env = clos([_env_from],gen_new_env),_map1 = clos([_debug],gen_map1),_var2 = clos([],gen_var2),_setup_var2 = clos([_Env,_Env,_debug,_Env,_var2,_table],gen_setup_var2),_setup_var = clos([_setup_var2],gen_setup_var),_eq3 = clos([],gen_eq3),_eq2 = clos([_eq3,_debug,_string,_string],gen_eq2),_compare_relation = clos([_custom_throw,_io,_io,_io,_debug,_types,_debug,_debug],gen_compare_relation),_extract_args = clos([_string,_term,_term,_term,_sym],gen_extract_args),_lambda6 = clos([],gen_lambda6),_lambda4 = clos([],gen_lambda4),_lambda5 = clos([_lambda4,_mutable],gen_lambda5),_apply = clos([],gen_apply),_is_num = clos([],gen_is_num),_is_obj = clos([],gen_is_obj),__rec = clos([_apply,_debug,_compare_relation,_extract_args,_debug,_debug,_debug],gen__rec),_get_type = clos([_has],gen_get_type),_setup_pred = clos([_custom_throw,_io,_debug,_debug,_lambda5,_Env,_compare_relation,_extract_args,_debug,_debug,_debug,_Env,_lambda5,_setup_var,_compare_relation,_extract_args,_debug,_apply,_debug,_compare_relation,_extract_args,_debug,_debug],gen_setup_pred),_listify = clos([_term,_term],gen_listify),_func = clos([_debug,_setup_pred,_list,_genstr,_gensym,_term,_debug,_gensym,_term,_gensym,_term,_debug,_gensym,_term,_debug,_debug,_extract_args,_is_functor,_listify],gen_func),_filter = clos([],gen_filter),_table_eq = clos([_debug,_term,_debug,_term,_debug],gen_table_eq),_to_table = clos([_debug,_set,_remove_double_string,_table_eq,_debug,_debug,_debug,_debug,_debug,_gensym,_debug],gen_to_table),_to_list = clos([_string,_term,_string,_term,_term],gen_to_list),_num_r = clos([_string],gen_num_r),_term_ = clos([_io,_num_r,_double_string],gen_term_),_pushid = clos([_set,_list],gen_pushid),_make_clos = clos([_lambda6,_Env,_pushid,_set,_debug,_extract_args],gen_make_clos),_make_rel = clos([_extract_args,_debug,_generate_body,_Env,_set,_nil,_debug,_set,_set,_debug,_push_types,_env_make,_debug],gen_make_rel),_check_type = clos([_debug,_get_type,_debug],gen_check_type),_to_array = clos([_gensym,_term],gen_to_array),_term = clos([_io,_term_,_debug,_generate_body,_genvar,_sym,_debug,_generate_body,_list,_genvar,_list,_genvar,_is_obj,_debug,_to_table,_set,_set,_table,_debug,_gensym,_gensym,_gensym,_filter,_to_array,_gensym,_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,_table,_debug,_debug_write],gen_term),_match_until_space = clos([_string,_string],gen_match_until_space),_extract = clos([_logic,_types],gen_extract),_extract_type_information = clos([_io,_extract,_io,_io,_io,_io,_io,_io,_io,_io],gen_extract_type_information),_generate_fact = clos([_generate_body,_Env,_table,_Env,_Env,_debug,_debug,_list,_debug],gen_generate_fact),_generate_rel = clos([_extract_args,_set,_debug,_debug,_list,_term,_debug,_debug,_extract_type_information,_genvar,_Env,_debug,_debug,_string,_string,_debug,_term],gen_generate_rel),_set_type = clos([_Env],gen_set_type),_specialize_type = clos([_io,_debug,_types,_Env],gen_specialize_type),_compare_types = clos([_custom_throw,_io,_specialize_type,_debug,_types],gen_compare_types),_is_stm = clos([_custom_throw,_io,_io,_io],gen_is_stm),_get_stm = clos([_custom_throw,_io,_io,_io,_generate_body,_genvar,_debug,_setup_pred,_debug],gen_get_stm),_list_t = clos([],gen_list_t),_generate_cond_t = clos([_debug,_debug,_update_tvar,_generate_body,_debug,_get_stm,_generate_body,_generate_body,_debug,_neg,_debug,_generate_body,_generate_body],gen_generate_cond_t),_generate_cond_nest = clos([_generate_body,_generate_body,_get_stm,_generate_body,_generate_body,_generate_body,_debug,_neg,_generate_body,_generate_body,_generate_body],gen_generate_cond_nest),_generate_cond_normal = clos([_list,_generate_cond],gen_generate_cond_normal),_sub_has = clos([_list],gen_sub_has),_subtract_list = clos([_sub_has],gen_subtract_list),_to_fc = clos([],gen_to_fc),_to_ids = clos([],gen_to_ids),_getalias2 = clos([_debug,_debug,_debug],gen_getalias2),_getalias = clos([],gen_getalias),_targs = clos([_table,_table,_table],gen_targs),_tseq = clos([_generate_body],gen_tseq),_label_ = clos([],gen_label_),_twhile = clos([_extract_args,_list,_debug,_make_clos,_debug,_extract_args,_debug,_debug,_debug,_debug,_debug,_make_rel,_gensym,_set,_set,_nil,_set,_debug,_table,_debug,_debug,_debug,_list,_list,_tmap,_targs,_tmap,_halt,_genvar,_gensym,_debug,_debug],gen_twhile),_generate_body = clos([_custom_throw,_io,_io,_get_stm,_debug,_generate_rel,_generate_fact,_debug,_debug,_custom_throw,_io,_is_num,_is_num,_term,_term,_debug,_Env,_debug,_compare_types,_term,_term,_debug,_debug,_halt,_debug,_term,_debug,_debug,_debug,_debug,_remove_tvar,_push_next,_term,_debug,_debug,_term,_genvar,_debug,_push_init,_debug,_debug,_debug,_set,_io,_halt,_debug,_debug,_debug,_halt,_debug,_debug,_debug,_debug,_debug,_debug,_debug,_twhile,_debug,_debug,_debug,_debug,_get_stm,_debug,_debug,_term,_term,_extract_args,_debug,_debug,_generate_cond_nest,_debug,_neg,_debug,_debug,_generate_cond_nest,_apply,_list,_list,_debug,_debug,_list,_list,_debug,_generate_cond_t,_list_t,_debug,_debug,_next_tvar2,_update_tvar,_update_tvar,_tseq,_tseq,_next_tvar,_debug,_has_tvar,_debug,_debug,_debug_write],gen_generate_body),_header = clos([],gen_header),_generate_stm = clos([_generate_body],gen_generate_stm),_concat_if = clos([],gen_concat_if),_each2 = clos([_concat_if],gen_each2),_each3 = clos([_concat_if],gen_each3),_serialize_item = clos([_types],gen_serialize_item),_notblank = clos([],gen_notblank),_generate = clos([_debug,_types,_mutable,_each2,_list,_list,_notblank,_serialize_item,_list,_list,_list,_types,_header,_gensym,_debug,_generate_stm,_set],gen_generate),_eval = clos([_debug,_debug],gen_eval),_run = clos([_generate],gen_run),_generate_body_ = clos([_generate_body],gen_generate_body_),_generate_ = clos([_generate],gen_generate_),new(T856),set_(T856,"generate_body",_generate_body_,T858),set_(T858,"generate_world",_generate_world,T859),set_(T859,"run",_run,T860),set_(T860,"generate",_generate_,T861),set_(T861,"new_env",_new_env,T862),set_(T862,"header",_header,T857),_t = T857,call_cl(_debug,[_t]),X=_t.