% 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 % gen3 % generate_ gen3_generate_(_fname,_env,_env2,_f,_code,_upvals):-_upvals=[_generate],(call_cl(_generate,[_f,_code,_fname,_env,_env2,_module])). % generate_body_ gen3_generate_body_(_env,_env2,_f,_code,_upvals):-_upvals=[_generate_body],(call_cl(_generate_body,[_f,_code,_env,_env2])). % run gen3_run(_e,_e2,_module,_fname,_f2,_s2,_upvals):-_upvals=[_generate],(call_cl(_generate,[_f2,_s2,_fname,_e,_e2,_x]),_module = _x). % eval gen3_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 gen3_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",T812),T812 = _x)->(get_(_env,"extract_type",T814),_T813 = T814,call_cl(_T813,[_env2,_x,_t2]));(_t2 = '[|]'("Null",[]))),get_(_types,"toString",T817),_T816 = T817,call_cl(_T816,[_t2,_T815]),calc("% "+_T815,T818),calc(T818+"\n",T819),_info = T819,get_(_list,"join",T822),_T821 = T822,get_(_list,"filter",T825),_T824 = T825,get_(_list,"map",T828),_T827 = T828,get_(_env2,"fcs",T829),call_cl(_T827,[T829,_serialize_item,_T826]),call_cl(_T824,[_T826,_notblank,_T823]),call_cl(_T821,[_T823,";",_T820]),calc("% "+_T820,T830),calc(T830+"\n",T831),_info2 = T831,get_(_list,"join",T833),_T832 = T833,get_(_list,"map",T836),_T835 = T836,get_(_env2,"ids",T837),call_cl(_T835,[T837,_each2,_T834]),call_cl(_T832,[_T834,"",_s2]),((get_(_mutable,"get",T839),_T838 = T839,call_cl(_T838,["debug",1.0]))->(calc("% main\n"+_module,T840),calc(T840+"(X):-nb_setval(call,0),",T841),calc(T841+_s,T842),calc(T842+"",T843),calc(T843+".",T844),_smain = T844);(calc("% main\n"+_module,T845),calc(T845+"(X):-",T846),calc(T846+_s,T847),calc(T847+"",T848),calc(T848+".",T849),_smain = T849)),calc(_info+_info2,T850),calc(T850+"% ",T851),calc(T851+_module,T852),calc(T852+"\n",T853),calc(T853+_s0,T854),calc(T854+_s2,T855),calc(T855+_smain,T856),_code = T856,get_(_types,"toString",T859),_T858 = T859,call_cl(_T858,[_t2,_T857]),call_cl(_debug,[_T857]),_t2 = '[|]'(_,_type)). % notblank gen3_notblank(_s,_upvals):-_upvals=[],(dif(_s,"")). % serialize_item gen3_serialize_item(_f,_s,_upvals):-_upvals=[_types],(((_f = fc_Var(_name,_,_type),calc(_name+" ",T807),get_(_types,"type_to_string",T810),_T809 = T810,call_cl(_T809,[_type,_T808]),calc(T807+_T808,T811),_s = T811);(dif(_f,fc_Var(_name,_,_type)),_s = ""))). % each3 gen3_each3(_e,_e2,_upvals):-_upvals=[_concat_if],(_e = '[|]'(_name,'[|]'(_n,'[|]'(_type,[]))),call_cl(_concat_if,[_sargs,"_upvals",_sargs3]),calc("_upvals=["+_sargs2,T795),calc(T795+"],",T796),_s2 = T796,calc("% "+_name,T797),calc(T797+"\n",T798),calc(T798+_id,T799),calc(T799+"(",T800),calc(T800+_sargs3,T801),calc(T801+"):-",T802),calc(T802+_s2,T803),calc(T803+"(",T804),calc(T804+_s,T805),calc(T805+").\n",T806),_e2 = T806). % each2 gen3_each2(_e,_e2,_upvals):-_upvals=[_concat_if],(_e = '[|]'(_id,'[|]'(_name,'[|]'(_sargs,'[|]'(_sargs2,'[|]'(_s,[]))))),call_cl(_concat_if,[_sargs,"_upvals",_sargs3]),calc("_upvals=["+_sargs2,T783),calc(T783+"],",T784),_s2 = T784,calc("% "+_name,T785),calc(T785+"\n",T786),calc(T786+_id,T787),calc(T787+"(",T788),calc(T788+_sargs3,T789),calc(T789+"):-",T790),calc(T790+_s2,T791),calc(T791+"(",T792),calc(T792+_s,T793),calc(T793+").\n",T794),_e2 = T794). % concat_if gen3_concat_if(_s1,_s,_s2,_upvals):-_upvals=[],(((_s1 = "",_s2 = _s);(dif(_s1,""),(_s = "",_s2 = _s1);(dif(_s,""),calc(_s1+",",T781),calc(T781+_s,T782),_s2 = T782)))). % generate_stm gen3_generate_stm(_env,_env2,_f,_code,_upvals):-_upvals=[_generate_body],(call_cl(_generate_body,[_f,_code,_env,_env2])). % header gen3_header(_s,_upvals):-_upvals=[],(_s = ""). % generate_body gen3_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(gen3_generate_body(_a,_s1,_env,_temp),_upvals),!,call(gen3_generate_body(_b,_s2,_temp,_env2),_upvals),((_s1 = "true")->(_code = _s2);(calc(_s1+",",T657),calc(T657+_s2,T658),_code = T658)));((_f = fc_And(_a,_b))->(call(gen3_generate_body(_a,_s1,_env,_temp),_upvals),call(gen3_generate_body(_b,_s2,_temp,_env2),_upvals),calc(_s1+",",T659),calc(T659+_s2,T660),_code = T660);((_f = fc_Pair(_a,_b))->(call_cl(_debug,[_f]),call(gen3_generate_body(_a,_s1,_env,_temp),_upvals),call(gen3_generate_body(_b,_s2,_temp,_env2),_upvals),calc("("+_s1,T661),calc(T661+"),(",T662),calc(T662+_s2,T663),calc(T663+")",T664),_code = T664);((_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,T665),calc(T665+";",T666),calc(T666+_sb,T667),calc(T667+")",T668),_code = T668,call_cl(_update_tvar,[_env1,_s1,_T669]),_sa = _T669,call_cl(_update_tvar,[_env_a,_s2,_T670]),_sb = _T670,call_cl(_next_tvar2,[_env0,_env2]),call_cl(_debug,["--end"]));(call(gen3_generate_body(_a,_s1,_env,_env_a),_upvals),call(gen3_generate_body(_b,_s2,_env_a,_env2),_upvals),calc("("+_s1,T671),calc(T671+";",T672),calc(T672+_s2,T673),calc(T673+")",T674),_code = T674)));((_f = fc_TCond(_name,_a,_b,_c,_args_in,_args_out))->(get_(_env,"mode",T675),call_cl(_debug,['[|]'("mode",'[|]'(T675,[]))]),((get_(_env,"mode",T676),T676 = "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",T677),T677 = _t,get_(_list,"map",T679),_T678 = T679,call_cl(_T678,[_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],gen3_8),_l]),get_(_list,"map",T684),_T683 = T684,call_cl(_T683,[_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],gen3_9),_l2]),call_cl(_debug,[_l]),call_cl(_debug,[_l2]),get_(_list,"join",T689),_T688 = T689,get_(_list,"concat",T692),_T691 = T692,call_cl(_T691,[_l,_l2,_T690]),call_cl(_T688,[_T690,",",_T687]),get_(_env,"rec",T686),call_cl(_apply,[T686,_T687,_code]),_env2 = _env);((_f = fc_Cond(_a,_b,_l0))->(call(gen3_generate_body(_a,_sa,_env,_env_a),_upvals),call(gen3_generate_body(_b,_sb,_env_a,_env_b),_upvals),calc("("+_sa,T693),calc(T693+",",T694),calc(T694+_sb,T695),calc(T695+")",T696),_code1 = T696,_l = '[|]'(fc_Pair(_a,_b),_l0),call_cl(_generate_cond_nest,[_l,_code2,_env_b,_env2,[]]),str(_code2,T697),call_cl(_debug,['[|]'("c",'[|]'(T697,[]))]),calc("("+_code2,T698),calc(T698+")",T699),_code = T699);((_f = fc_Cond(_a,_b,_l0,_opts))->(get_(_env,"mode",T700),call_cl(_debug,['[|]'("mode",'[|]'(T700,[]))]),((_l0 = [],_opts = "if")->(call(gen3_generate_body(_b,_sb,_env,_env_b),_upvals),((get_(_env,"mode",T701),T701 = "fun")->(call(gen3_generate_body(_a,_sa,_env_b,_env2),_upvals),calc("("+_sa,T702),calc(T702+")->(",T703),calc(T703+_sb,T704),calc(T704+");(true)",T705),_code2 = T705);(((call_cl(_neg,[_a,_na]))->(true);(throw("complex condition for if-else"))),call(gen3_generate_body(_na,_nsa,_env_b,_env2),_upvals),calc("("+_nsa,T706),calc(T706+");",T707),calc(T707+"(",T708),calc(T708+_sb,T709),calc(T709+")",T710),_code2 = T710)));(_l = '[|]'(fc_Pair(_a,_b),_l0),call_cl(_debug,['[|]'("l",'[|]'(_l,[]))]),((get_(_env,"mode",T711),T711 = "fun")->(_opts1 = "choose");(_opts1 = _opts)),call_cl(_generate_cond_nest,[_l,_code2,_env,_env2,_opts1]),str(_code2,T712),call_cl(_debug,['[|]'("c",'[|]'(T712,'[|]'(_opts,[])))]))),calc("("+_code2,T713),calc(T713+")",T714),_code = T714);((_f = fc_SoftCut(_a,_b,_l))->(call(gen3_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,T715),_code = T715);(calc(_prefix+_name,T716),calc(T716+"(",T717),calc(T717+_sargs,T718),calc(T718+")",T719),_code = T719)))));((_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,T720),calc(T720+",",T721),calc(T721+_s2,T722),calc(T722+")",T723),_code = T723,_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(",T724),calc(T724+_code0,T725),calc(T725+")",T726),_code = T726);(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(gen3_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(",T727),calc(T727+_closure,T728),calc(T728+",[",T729),str(_sargs,T730),calc(T729+T730,T731),calc(T731+"])",T732),_code = T732,call_cl(_debug,[_code]),call_cl(_debug,['[|]'(_code,'[|]'(_prefix,[]))]),!);(((_name = "in")->(_c1 = '[|]'(_a,'[|]'(_b,[])),call(gen3_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(gen3_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(gen3_generate_body(fc_Stm("for",'[|]'(_a,'[|]'(_b,'[|]'(_c,[]))),_body,_info),_code,_env,_env2),_upvals),call_cl(_debug,[_code]),call_cl(_halt,[]));(get_(_io,"writeln",T734),_T733 = T734,call_cl(_T733,[_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,_T735]),call(gen3_generate_body(_f2,_code,_T735,_env1),_upvals),_env2 = _env1,str(_code,T736),call_cl(_debug,['[|]'("->",'[|]'(_name,'[|]'(_sargs,'[|]'(T736,'[|]'(_t2,[])))))]),call_cl(_debug,[""]));((_f = fc_Rel(_name,_args,_f1))->(get_(_env,"mode",T737),call_cl(_debug,['[|]'("",'[|]'(T737,[]))]),call(gen3_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+"_",T738),calc(T738+_name,T739),calc(T739+"=",T740),calc(T740+_sb,T741),_code = T741,get_(_env2,"label",T742),call_cl(_debug,[T742]));((_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,T743),_code = T743,call_cl(_debug,[_code]),get_(_env2,"initial",T744),call_cl(_debug,[T744]));((_a = fc_Mutable(_i))->(_fc = fc_Var(_i,_n,_ta),get_(_env,"vars",T745),call_cl(_debug,[T745]),get_(_env,"alias",T746),call_cl(_debug,[T746]),call_cl(_term,[_b,_sb,_env,_env_a,_prefix]),((_sb = fc_Id(_,_))->(call_cl(_debug,[_sb]),call_cl(_halt,[]));(true)),get_(_env,"push_alias",T748),_T747 = T748,call_cl(_T747,[_env_a,_i,_sb,_env2]),calc(_prefix+"true",T749),_code = T749,_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+" = ",T750),calc(T750+_sb,T751),_code1 = T751,calc(_prefix1+"",T752),calc(T752+_prefix2,T753),calc(T753+_code1,T754),_code = T754,_env2 = _env_c)))));((_f = fc_Declaration(_name,_type))->(call_cl(_debug,["declaration"]),((_type = '[|]'("Relation",_t))->(_t0 = '[|]'("Relation",_t));(_t0 = _type)),get_(_Env,"push",T756),_T755 = T756,call_cl(_T755,[_env,fc_Var(_name,"out",_t0),_env1]),calc("_"+_name,T757),_id = T757,_code = "true",_env2 = _env1,get_(_env2,"vars",T758),call_cl(_debug,[T758]));((_f = fc([],"True"))->(_env2 = _env,_code = "true");((_f = fc([],"False"))->(_env2 = _env,_code = "false",((get_(_env,"mode",T759),T759 = "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",T761),_T760 = T761,call_cl(_T760,[_env,_a,_ta]),get_(_env,"extract_type",T763),_T762 = T763,call_cl(_T762,[_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",T765),_T764 = T765,call_cl(_T764,['[|]'(_ta,'[|]'(_tb,[]))]),call_cl(_custom_throw,["comparing non-Number type",_info]))))),call_cl(_debug,['[|]'("=ineq",'[|]'(_prefix1,'[|]'(_prefix2,[])))]),calc(_prefix1+_prefix2,T766),calc(T766+"",T767),calc(T767+"",T768),calc(T768+_fn,T769),calc(T769+"(",T770),calc(T770+_sa,T771),calc(T771+",",T772),calc(T772+_sb,T773),calc(T773+")",T774),_code = T774,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,T775),call_cl(_debug,[T775]));((call_cl(_get_stm,[_env,_env2,_f,_prefix1,_code1]))->(calc(_prefix1+_code1,T776),_code = T776);(get_(_io,"writeln",T778),_T777 = T778,call_cl(_T777,[_f]),get_(_io,"writeln",T780),_T779 = T780,call_cl(_T779,[""]),call_cl(_custom_throw,["cannot compile code (could not find the above term)",_info]))))))))))))))))))))))))))). % 9 gen3_9(_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,T685),_y = T685). % 8 gen3_8(_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,T680),T680 = fc_Var(_,_y1))->(calc("_"+_y1,T681),_y = T681);(calc("_"+_name1,T682),_y = T682))). % twhile gen3_twhile(_env,_env2,_body,_condition,_closure,_sargs3,_prefix,_upvals):-_upvals=[_halt,_debug,_debug,_extract_args,_list,_debug,_make_clos,_debug,_extract_args,_debug,_debug,_debug,_debug,_debug,_debug,_make_rel,_debug,_gensym,_set,_set,_nil,_debug,_debug,_debug,_debug,_debug,_list,_tmap,_targs,_halt,_genvar,_gensym,_debug,_debug],(get_(_env,"label",T624),_t = T624,_label = _t,call_cl(_debug,["--while"]),call_cl(_debug,[_t]),_gensym_ = _gensym,_genvar_ = _genvar,_halt_ = _halt,call_cl(_gensym_,["T",_T625]),_temp_ = _T625,call_cl(_targs,[_label,_args_in,_args_out]),call_cl(_tmap,[_t,clos([_gensym_,_targs,_halt,_genvar,_gensym,_debug,_debug],gen3_7),_T626]),_tvars2 = _T626,get_(_list,"concat",T631),_T630 = T631,call_cl(_T630,[_args_in,_args_out,_T629]),_args = _T629,call_cl(_debug,["--args"]),call_cl(_debug,[_args]),call_cl(_debug,[_tvars2]),call_cl(_debug,["--"]),get_(_env,"prev",T632),_prev = T632,get_(_env,"vars",T633),call_cl(_debug,[T633]),get_(_env,"upvals",T634),writeln_(T634),get_(_prev,"vars",T635),writeln_(T635),get_(_prev,"upvals",T636),writeln_(T636),call_cl(_set,[_env,"next",_nil,_T637]),call_cl(_set,[_T637,"initial",_tvars2,_env_label]),get_(_env,"module",T638),calc(T638+"_",T639),call_cl(_gensym,["_label",_T640]),calc(T639+_T640,T641),str(T641,T642),_id2 = T642,writeln_(_fn),call_cl(_debug,["---------------%1"]),_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",T643),call_cl(_debug,[T643]),get_(_env,"vars",T644),call_cl(_debug,[T644]),calc("code:"+_code_clos,T645),str(T645,T646),call_cl(_debug,[T646]),call_cl(_debug,["--"]),call_cl(_extract_args,[_args,_sargs,_env,_,_prefix]),call_cl(_debug,['[|]'("bind",'[|]'(_id2,'[|]'(_code_clos,'[|]'(_sargs,[]))))]),get_(_fn,"upvals",T647),call_cl(_make_clos,[_env,_env2,T647,_fn,_id2,_sargs,_code_clos,_id2,_type2,_closure]),call_cl(_debug,['[|]'("closure",'[|]'(_closure,[]))]),get_(_list,"concat",T650),_T649 = T650,call_cl(_T649,[_args_out,_args_in,_T648]),_args3 = _T648,call_cl(_extract_args,[_args3,_sargs3,_env,_,_prefix]),writeln_(_fn),get_(_fn,"vars",T651),call_cl(_debug,[T651]),get_(_env,"vars",T652),call_cl(_debug,[T652]),get_(_fn,"upvals",T653),writeln_(T653),get_(_prev,"upvals",T654),writeln_(T654),get_(_env,"upvals",T655),writeln_(T655),str(_sargs,T656),writeln_(T656),call_cl(_halt,[])). % 7 gen3_7(_i,_x,_i2,_y,_upvals):-_upvals=[_gensym_,_targs,_halt,_genvar,_gensym,_debug,_debug],(call_cl(_gensym_,["T",_T628]),calc(""+_i,T627),_y = fc_Var(T627,_T628),_i2 = _i). % label_ gen3_label_(_e,_upvals):-_upvals=[],(get_(_env,"label",T623),_t = T623). % tseq gen3_tseq(_a,_s1,_env,_env2,_upvals):-_upvals=[_generate_body],(call_cl(_generate_body,[_a,_s1,_env,_env2])). % targs gen3_targs(_t,_args_in,_args_out,_upvals):-_upvals=[_table,_table],(get_(_table,"map",T619),_T618 = T619,call_cl(_T618,[_t,clos([_table],gen3_5),_T617]),_args_in = _T617,get_(_table,"map",T622),_T621 = T622,call_cl(_T621,[_t,clos([_table,_table],gen3_6),_T620]),_args_out = _T620). % 6 gen3_6(_i,_x,_y,_upvals):-_upvals=[_table,_table],(_y = fc_Id(_x,[])). % 5 gen3_5(_i,_x,_y,_upvals):-_upvals=[_table],(_y = fc_Id(_i,[])). % getalias gen3_getalias(_alias,_l,_l2,_upvals):-_upvals=[],(((_l = [],_l2 = []);(dif(_l,[]),_l = '[|]'(_h,_t),_l2 = '[|]'(_a,'[|]'(_b,_t2)),_a = fc_Id(_h,[]),get_(_alias,_h,T616),_b = fc_Id(T616,'[|]'("NonAlias",[])),call(gen3_getalias(_alias,_t,_t2),_upvals)))). % getalias2 gen3_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(gen3_getalias2(_alias,_t,_t2),_upvals)))). % to_ids gen3_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",T615),_T614 = T615,call_cl(_T614,[_e,_x,_x2,_e1]),call(gen3_to_ids(_e1,_e2,_t),_upvals)))). % to_fc gen3_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(gen3_to_fc(_e1,_t,_f2),_upvals)))). % subtract_list gen3_subtract_list(_l,_ls,_l2,_upvals):-_upvals=[_sub_has],(((_l = [])->(_l2 = []);((_l = '[|]'(_h,_t),call_cl(_sub_has,[_ls,_h]))->(call(gen3_subtract_list(_t,_ls,_l2),_upvals));(_l = '[|]'(_h,_t),_l2 = '[|]'(_h,_t2),call(gen3_subtract_list(_t,_ls,_t2),_upvals))))). % sub_has gen3_sub_has(_ls,_x,_upvals):-_upvals=[_list],(get_(_list,"has",T613),_T612 = T613,call_cl(_T612,[_ls,_x]),true). % generate_cond_normal gen3_generate_cond_normal(_l,_code2,_env,_env2,_upvals):-_upvals=[_list,_generate_cond],(call_cl(_generate_cond,[_l,_l2,_env,_env2]),get_(_list,"join",T611),_T610 = T611,call_cl(_T610,[_l2,";",_code2])). % generate_cond_nest gen3_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,T574),calc(T574+")->",T575),calc(T575+"(",T576),calc(T576+_sb,T577),calc(T577+");",T578),calc(T578+"(",T579),calc(T579+_sc,T580),calc(T580+")",T581),_s2 = T581);((_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,T582),calc(T582+",",T583),calc(T583+_sb,T584),calc(T584+");",T585),calc(T585+"(",T586),calc(T586+_nsa,T587),calc(T587+",",T588),calc(T588+_sc,T589),calc(T589+")",T590),_s2 = T590);(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,T591),calc(T591+")",T592),_nsa = T592,calc(""+_prefix,T593),calc(T593+"",T594),calc(T594+"(",T595),calc(T595+_sa,T596),calc(T596+",",T597),calc(T597+_sb,T598),calc(T598+");",T599),calc(T599+"(",T600),calc(T600+_nsa,T601),calc(T601+",",T602),calc(T602+_sc,T603),calc(T603+")",T604),_s2 = T604)));(call_cl(_generate_body,[_c,_s,_env,_env1]),calc("("+_s,T605),calc(T605+";",T606),calc(T606+_sc,T607),calc(T607+")",T608),_s2 = T608))),call(gen3_generate_cond_nest(_tail,_sc,_env1,_env2,_opt),_upvals));((_l = []),(str(_s2,T609),T609 = "",_env2 = _env))))). % generate_cond_t gen3_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,T535),calc(T535+")->",T536),calc(T536+"(",T537),calc(T537+_sb,T538),calc(T538+");",T539),calc(T539+"(",T540),calc(T540+_sc,T541),calc(T541+")",T542),_s2 = T542);((_opt = "if")->(((_a = fc_Eq(_,_,_))->(call_cl(_generate_body,[_a,_sa,_env,_env_a]),calc("if_("+_sa,T543),calc(T543+",(",T544),calc(T544+_sb,T545),calc(T545+"),(",T546),calc(T546+_sc,T547),calc(T547+"))",T548),_s2 = T548,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,T549),calc(T549+",",T550),calc(T550+_sb,T551),calc(T551+");",T552),calc(T552+"(",T553),calc(T553+_nsa,T554),calc(T554+",",T555),calc(T555+_sc,T556),calc(T556+")",T557),_s2 = T557);(call_cl(_get_stm,[_env,_env_a,_a,_prefix,_sa]),call_cl(_debug,['[|]'("if",'[|]'(_sa,'[|]'(_sb,[])))]),calc("safeNot("+_sa,T558),calc(T558+")",T559),_nsa = T559,calc(""+_prefix,T560),calc(T560+"",T561),calc(T561+"(",T562),calc(T562+_sa,T563),calc(T563+",",T564),calc(T564+_sb,T565),calc(T565+");",T566),calc(T566+"(",T567),calc(T567+_nsa,T568),calc(T568+",",T569),calc(T569+_sc,T570),calc(T570+")",T571),_s2 = T571))));(throw(1.0)))),call_cl(_generate_body,[_b,_sb_,_env_a,_env1]),call_cl(_update_tvar,[_env1,_sb_,_T572]),_sb = _T572,_env2 = _env1,call_cl(_debug,["-cond"]),get_(_env2,"initial",T573),call_cl(_debug,[T573])). % list_t gen3_list_t(_a,_b,_s,_upvals):-_upvals=[],(((_a = '[|]'(fc_Id(_e1,_),_a2))->(_b = '[|]'(fc_Id(_e2,_),_b2),calc("_"+_e1,T529),calc(T529+"=",T530),calc(T530+"_",T531),calc(T531+_e2,T532),calc(T532+",",T533),calc(T533+_s2,T534),_s = T534,call(gen3_list_t(_a2,_b2,_s2),_upvals));(_s = "true"))). % get_stm gen3_get_stm(_env,_env2,_f,_prefix,_code,_upvals):-_upvals=[_custom_throw,_io,_io,_io,_generate_body,_genvar,_debug,_setup_pred,_debug],(calc("- stm:"+_f,T520),call_cl(_debug,[T520]),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(gen3_get_stm(_env1,_env2,fc_Pred(_name2,_args,_info),_prefix2,_code2),_upvals),calc(_prefix1+",",T521),calc(T521+_prefix2,T522),_prefix = T522,_code = _code2);(get_(_io,"writeln",T524),_T523 = T524,call_cl(_T523,[""]),get_(_io,"writeln",T526),_T525 = T526,call_cl(_T525,[_f]),get_(_io,"writeln",T528),_T527 = T528,call_cl(_T527,[""]),call_cl(_custom_throw,["cannot compile code (could not find the above term*)",_info]))))). % is_stm gen3_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",T515),_T514 = T515,call_cl(_T514,[""]),get_(_io,"writeln",T517),_T516 = T517,call_cl(_T516,[_f]),get_(_io,"writeln",T519),_T518 = T519,call_cl(_T518,[""]),call_cl(_custom_throw,["cannot compile code (could not find the above term*)",_info]))))). % compare_types gen3_compare_types(_a,_b,_env,_env2,_info,_upvals):-_upvals=[_custom_throw,_io,_specialize_type,_debug,_types],(get_(_env,"extract_type",T507),_T506 = T507,call_cl(_T506,[_env,_a,_ta]),get_(_env,"extract_type",T509),_T508 = T509,call_cl(_T508,[_env,_b,_tb]),((get_(_types,"compare_types",T511),_T510 = T511,call_cl(_T510,[_ta,_tb]))->(call_cl(_debug,['[|]'("type",'[|]'(_ta,'[|]'(_tb,[])))]),call_cl(_specialize_type,[_env,_a,_ta,_tb,_env2]));(get_(_io,"writeln",T513),_T512 = T513,call_cl(_T512,['[|]'("type",'[|]'(_ta,'[|]'(_tb,[])))]),call_cl(_custom_throw,["cannot unify types",_info])))). % specialize_type gen3_specialize_type(_env,_a,_ta,_tb,_env2,_upvals):-_upvals=[_io,_debug,_types,_Env],(((_a = fc_Id(_name,_),(((get_(_Env,"update",T498),_T497 = T498,get_(_types,"strict_type",T501),_T500 = T501,call_cl(_T500,[_ta,_tb,_T499]),call_cl(_T497,[_env,_name,_T499,_env2])),(get_(_env,"vars",T502),get_(_env2,"vars",T503),call_cl(_debug,['[|]'(_name,'[|]'(T502,'[|]'(T503,[])))]),true);get_(_io,"writeln",T505),_T504 = T505,call_cl(_T504,['[|]'(_ta,'[|]'(_tb,[]))]),throw("no strict"))));(dif(_a,fc_Id(_name,_)),_env2 = _env))). % set_type gen3_set_type(_env,_env2,_name,_t,_upvals):-_upvals=[_Env],(get_(_Env,"update",T496),_T495 = T496,call_cl(_T495,[_env,_name,_t,_env2])). % generate_rel gen3_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,T458),_s2 = T458,call_cl(_debug,["#"]),get_(_string,"slice",T460),_T459 = T460,get_(_string,"size",T463),_T462 = T463,str(_s0,T464),call_cl(_T462,[T464,_T461]),{_T461-1.0=T465},call_cl(_T459,[_s0,1.0,T465,_fname]),call_cl(_debug,["- require"]),calc("filename "+_fname,T466),call_cl(_debug,[T466]),get_(_Env,"push",T468),_T467 = T468,call_cl(_T467,[_env_a,fc_Var(_sb,"in",_type_info),_env2]),_module = _fname,call_cl(_genvar,[fc_Id(_name2,_)]),calc(_fname+".pl",T469),str(T469,T470),call_cl(_extract_type_information,[T470,_type_info]),call_cl(_debug,['[|]'("require",'[|]'(_fname,'[|]'(_module,'[|]'(_type_info,'[|]'(_b,[])))))]),calc("creq1(\""+_fname,T471),calc(T471+"\",",T472),calc(T472+"_",T473),calc(T473+_sb,T474),calc(T474+",",T475),calc(T475+_name2,T476),calc(T476+"),call(",T477),calc(T477+_name2,T478),calc(T478+",_",T479),calc(T479+_sb,T480),calc(T480+")",T481),_code = T481);((_name = "export")->(_args = '[|]'(_a,[]),get_(_env,"vars",T482),call_cl(_debug,['[|]'("export",'[|]'(_a,'[|]'(T482,[])))]),call_cl(_term,[_a,_s1,_env,_env_a,_prefix_]),calc("X="+_s1,T483),calc(T483+"",T484),_code = T484,get_(_env,"extract_type",T486),_T485 = T486,call_cl(_T485,[_env,_a,_t]),((_a = fc_Id(_name2,_),get_(_list,"has",T488),_T487 = T488,get_(_env,"vars",T489),call_cl(_T487,[T489,fc_Var(_name2,_n2,_t2)]))->(get_(_env,"vars",T490),call_cl(_debug,['[|]'("export-fn",'[|]'(_a,'[|]'(_t,'[|]'(T490,[]))))]));(get_(_env,"vars",T491),call_cl(_debug,[fc_Pair(T491)]))),call_cl(_set,[_env_a,"export",_a,_env2]));((_name = "print")->(call_cl(_extract_args,[_args,_sargs,_env,_env2,_prefix]),calc(_prefix+"writeln_(",T492),calc(T492+_sargs,T493),calc(T493+")",T494),_code = T494);(false))))). % generate_fact gen3_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",T449),_T448 = T449,call_cl(_T448,[_arg2,'[|]'('[|]'(_arg1,[]),[]),_type]),call_cl(_debug,[_type]))),_type = [_first_type|_],call_cl(_debug,['[|]'("fc",'[|]'(_first_type,'[|]'(_arg1,'[|]'(_arg2,'[|]'(_type,[])))))]),get_(_Env,"push_on",T451),_T450 = T451,call_cl(_T450,[_env,"fcs",_c,_env1]),((dif(_first_type,"Functor"),get_(_Env,"get",T453),_T452 = T453,call_cl(_T452,[_env,"types",_o]),get_(_table,"set",T455),_T454 = T455,call_cl(_T454,[_o,_first_type,"Functor",_o2]),get_(_Env,"set",T457),_T456 = T457,call_cl(_T456,[_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 gen3_extract_type_information(_fname,_x,_upvals):-_upvals=[_io,_extract,_io,_io,_io,_io,_io,_io,_io,_io],(get_(_io,"open",T428),_T427 = T428,call_cl(_T427,[_fname,"read",_f]),get_(_io,"fileReadChar",T430),_T429 = T430,call_cl(_T429,[_f,_c]),_any = '[|]'("Any",[]),((_c = "%",get_(_io,"fileReadChar",T432),_T431 = T432,call_cl(_T431,[_f,"0"]))->(get_(_io,"fileReadChar",T434),_T433 = T434,call_cl(_T433,[_f,_]),get_(_io,"fileReadLine",T436),_T435 = T436,call_cl(_T435,[_f,_line]),((_line = "module")->(get_(_io,"writeln",T438),_T437 = T438,calc("Warning: no type information on file "+_fname,T439),call_cl(_T437,[T439]),_x = _any);((_line = "")->(get_(_io,"writeln",T441),_T440 = T441,calc("Warning: blank type information on file "+_fname,T442),call_cl(_T440,[T442]),_x = _any);(get_(_io,"close",T444),_T443 = T444,call_cl(_T443,[_f]),call_cl(_extract,[_line,_x])))));(get_(_io,"writeln",T446),_T445 = T446,calc("Warning: no type information on file "+_fname,T447),call_cl(_T445,[T447]),_x = '[|]'("Any",[])))). % extract gen3_extract(_s,_type,_upvals):-_upvals=[_logic,_types],(((get_(_types,"string_to_type",T423),_T422 = T423,call_cl(_T422,[_s,_type]))->(true);((_s = "Table *")->(_type = '[|]'("Table",[]));(calc("could not convert type "+_s,T424),writeln_(T424),writeln_('[|]'("extract",'[|]'(_s,'[|]'(_type,[])))),get_(_logic,"halt",T426),_T425 = T426,call_cl(_T425,[]))))). % match_until_space gen3_match_until_space(_s,_i,_i2,_upvals):-_upvals=[_string,_string],((get_(_string,"size",T418),_T417 = T418,(call_cl(_T417,[_s,_i]),_i = _i2);(safeNot(call_cl(_T417,[_s,_i])),get_(_string,"at",T420),_T419 = T420,(call_cl(_T419,[_s,_i," "]),_i = _i2);(safeNot(call_cl(_T419,[_s,_i," "])),calc(_i+1.0,T421),call(gen3_match_until_space(_s,T421,_i2),_upvals))))). % term gen3_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",T336),_T335 = T336,get_(_env,"alias",T337),call_cl(_T335,[T337,_name,_s1]))->(call_cl(_debug,['[|]'("name",'[|]'(_name,'[|]'(_env2,'[|]'(_s1,[]))))]),((_type = '[|]'("NonAlias",[]))->(calc("_"+_name,T338),_s2 = T338);(_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,T339),calc(T339+"\")",T340),_s2 = T340,_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(gen3_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,T341),calc(T341+",",T342),calc(T342+"\"",T343),calc(T343+_b,T344),calc(T344+"\",",T345),calc(T345+_s2,T346),calc(T346+"),",T347),_prefix = T347)));(get_(_io,"writeln",T349),_T348 = T349,call_cl(_T348,[_t]),calc("property "+_b,T350),calc(T350+" not found in ",T351),calc(T351+_a,T352),str(T352,T353),call_cl(_custom_throw,[T353,_info]))))));((_f = fc_ObjGet2(_a,_b))->(call(gen3_term(_b,_sb,_env,_,_),_upvals),call_cl(_sym,[_s2]),call_cl(_setup_var,[_env,_env2,_a,_sa]),calc("get_("+_sa,T354),calc(T354+",",T355),calc(T355+"",T356),calc(T356+_sb,T357),calc(T357+",",T358),calc(T358+_s2,T359),calc(T359+"),",T360),_prefix = T360);((_f = fc_Rel(_args,_body))->(call_cl(_gensym,["",_n]),_id = fc_Id(_n,[]),call(gen3_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",T361),calc(T361+"_",T362),calc(T362+_name,T363),_id2 = T363,call_cl(_debug,[_id2]),call_cl(_make_rel,[_env,_fn,_f,_sargs,_s0,_id2,_t2]),str(_s0,T364),call_cl(_debug,['[|]'("bind",'[|]'(_id,'[|]'(T364,[])))]),get_(_fn,"upvals",T365),call_cl(_extract_args,[T365,_sargs2,_env,_,_]),get_(_fn,"ids",T366),call_cl(_set,[_env,"ids",T366,_env1]),call_cl(_pushid,[_env1,'[|]'(_id2,'[|]'(_name,'[|]'(_sargs,'[|]'(_sargs2,'[|]'(_s0,[]))))),_env3]),get_(_Env,"push",T368),_T367 = T368,call_cl(_T367,[_env3,fc_Var(_name,"out",_t2),_env2]),calc("["+_sargs2,T369),calc(T369+"]",T370),call_cl(_lambda6,[T370,_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,T371),calc(T371+"),",T372),calc(T372+_prefix1,T373),_prefix = T373);((_f = fc_TTable(_args))->(call_cl(_filter,[_args,_args2]),((_args2 = fc([],"True"))->(call_cl(_gensym,["T",_s2]),calc("new("+_s2,T374),calc(T374+"),",T375),_prefix = T375,_env = _env2);(call_cl(_gensym,["T",_c]),call_cl(_gensym,["T",_s2]),call_cl(_debug,['[|]'("args-t",'[|]'(_args2,[]))]),get_(_table,"new",T377),_T376 = T377,call_cl(_T376,[_t]),call_cl(_set,[_env,"mode","obj",_T379]),call_cl(_set,[_T379,"this",_s2,_T378]),call_cl(_to_table,[_T378,_env1,_args2,_f2,_c,_s2,_t,_t2]),str(_f2,T380),call_cl(_debug,['[|]'("s",'[|]'(T380,[]))]),_env2 = _env1,calc("new("+_c,T381),calc(T381+"),",T382),calc(T382+_f2,T383),_prefix = T383)));((_f = fc_ObjPred(_obj,_name,_args,_info))->(((call_cl(_is_obj,[_obj]))->(call_cl(_genvar,[_o]),get_(_list,"concat",T385),_T384 = T385,call_cl(_T384,[_args,'[|]'(_o,[]),_args2]),throw("obj"));(call_cl(_genvar,[_o]),get_(_list,"concat",T387),_T386 = T387,call_cl(_T386,[_args,'[|]'(_o,[]),_args2]))),call_cl(_generate_body,[fc_ObjPred(_obj,_name,_args2,_info),_prefix1,_env,_env2]),_o = fc_Id(_s1,_),calc("_"+_s1,T388),_s2 = T388,calc(_prefix1+",",T389),_prefix = T389);((_f = fc_Op(_a,_b,_op,_info))->(get_(_env,"extract_type",T391),_T390 = T391,call_cl(_T390,[_env,_a,_ta]),call(gen3_term(_a,_sa,_env,_env1,_prefix1),_upvals),call(gen3_term(_b,_sb,_env1,_env3,_prefix2),_upvals),call_cl(_debug,['[|]'("op",'[|]'(_ta,'[|]'(_op,'[|]'(_sa,'[|]'(_sb,[])))))]),call_cl(_sym,[_s2]),calc(_prefix1+_prefix2,T392),calc(T392+_s1,T393),calc(T393+",",T394),_prefix = T394,((_op = "+")->(((_ta = '[|]'("Number",[]))->(calc("{"+_sa,T395),calc(T395+_op,T396),calc(T396+_sb,T397),calc(T397+"=",T398),calc(T398+_s2,T399),calc(T399+"}",T400),_s1 = T400);(calc("calc("+_sa,T401),calc(T401+_op,T402),calc(T402+_sb,T403),calc(T403+",",T404),calc(T404+_s2,T405),calc(T405+")",T406),_s1 = T406)));(calc("{"+_sa,T407),calc(T407+_op,T408),calc(T408+_sb,T409),calc(T409+"=",T410),calc(T410+_s2,T411),calc(T411+"}",T412),_s1 = T412)),_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,T413),_s2 = T413,calc(_prefix1+",",T414),_prefix = T414);((call_cl(_term_,[_f,_s2,_env,_env2]))->(_prefix = "");(get_(_io,"writeln",T416),_T415 = T416,call_cl(_T415,[_f]),throw("term not recognized"))))))))))))))))). % to_array gen3_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_(",T324),calc(T324+_c,T325),calc(T325+",",T326),calc(T326+_i,T327),calc(T327+",",T328),calc(T328+_sa,T329),calc(T329+",",T330),calc(T330+_c1,T331),calc(T331+"),",T332),calc(T332+_prefix2,T333),_s = T333,calc(_i+1.0,T334),call(gen3_to_array(_tail,_prefix2,T334,_c1,_c2,_env1,_env2),_upvals));_l = [],_c2 = _c,_s = "",_env2 = _env))). % check_type gen3_check_type(_env,_name,_type,_upvals):-_upvals=[_debug,_get_type,_debug],(((((_type = [];_type = '[|]'("Any",[]))),(true);_type = '[|]'("Table",_t),(((_t = []),(true);((get_(_t,_name,T323),T323 = _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 gen3_make_rel(_env,_fn,_f,_sargs,_body,_id2,_t2,_upvals):-_upvals=[_extract_args,_debug,_generate_body,_Env,_nil,_debug,_set,_set,_debug,_push_types,_env_make],(_f = fc_Rel(_id,_args2,_code),call_cl(_env_make,[_env1,_env]),_t1 = ["Relation"|_type],call_cl(_push_types,[_env1,_env_fn2,_args2,_type]),_id = fc_Id(_name,_),call_cl(_debug,['[|]'("-setup",'[|]'(_id,'[|]'(_type,[])))]),call_cl(_set,[_env_fn2,"rec",_id2,_T316]),call_cl(_set,[_T316,"args",_args2,_env_fn3]),str(_id2,T317),call_cl(_debug,['[|]'("make-rec",'[|]'(T317,'[|]'(_name,[])))]),new(T318),_nil = T318,_env_fn3 = _env_fn0,get_(_Env,"push",T320),_T319 = T320,call_cl(_T319,[_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",T322),_T321 = T322,call_cl(_T321,[_fn,_args2,_type2])). % make_clos gen3_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",T311),call_cl(_set,[_env,"ids",T311,_env1]),call_cl(_pushid,[_env1,'[|]'(_id2,'[|]'(_name,'[|]'(_sargs,'[|]'(_sargs2,'[|]'(_code,[]))))),_env3]),get_(_Env,"push",T313),_T312 = T313,call_cl(_T312,[_env3,fc_Var(_name,"out",_t2),_env2]),calc("["+_sargs2,T314),calc(T314+"]",T315),call_cl(_lambda6,[T315,_id2,_s2])). % pushid gen3_pushid(_env,_e,_env2,_upvals):-_upvals=[_set,_list],((((get_(_env,"ids",T308),T308 = _t),(get_(_list,"push",T310),_T309 = T310,call_cl(_T309,[_t,_e,_t1]),call_cl(_set,[_env,"ids",_t1,_env2]));throw("no ids")))). % term_ gen3_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",T307),_T306 = T307,call_cl(_T306,[_f]),throw("term not recognized")))))). % num_r gen3_num_r(_s,_s2,_upvals):-_upvals=[_string],(((get_(_string,"has",T303),_T302 = T303,call_cl(_T302,[_s,"."]))->(_s2 = _s);(calc(_s+".0",T304),str(T304,T305),_s2 = T305))). % to_list gen3_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",T281),_T280 = T281,call_cl(_T280,[_c,39.0]),calc(_c+"[|]",T282),calc(T282+_c,T283),_symbol = T283,calc(""+_symbol,T284),calc(T284+"(",T285),calc(T285+_sa,T286),calc(T286+",",T287),calc(T287+_sb,T288),calc(T288+")",T289),_s = T289,calc(_prefix1+_prefix2,T290),_prefix = T290);(dif(_l,[_a|[fc_Tuple(_l2)|[]]]),(_l = [_a|_tail],call_cl(_term,[_a,_sa,_env,_env1,_prefix1]),call(gen3_to_list(_tail,_sb,_env1,_env2,_prefix2),_upvals),calc(_prefix1+_prefix2,T291),_prefix = T291,get_(_string,"code",T293),_T292 = T293,call_cl(_T292,[_c,39.0]),calc(_c+"[|]",T294),calc(T294+_c,T295),_symbol = T295,calc(""+_symbol,T296),calc(T296+"(",T297),calc(T297+_sa,T298),calc(T298+",",T299),calc(T299+_sb,T300),calc(T300+")",T301),_s = T301);(dif(_l,[_a|_tail]),_l = [],_s = "[]",_env2 = _env,_prefix = "")))). % to_table gen3_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,T274),call_cl(_debug,[T274]),((_l = fc_And(_a,_b))->(call_cl(_gensym,["T",_c_]),call_cl(_debug,[";"]),call_cl(_debug,[_a]),call(gen3_to_table(_env,_temp,_a,_f1,_c,_c_,_t,_t0),_upvals),calc(";"+_b,T275),call_cl(_debug,[T275]),call(gen3_to_table(_temp,_env2,_b,_f2,_c_,_c2,_t0,_t2),_upvals),call_cl(_debug,['[|]'(",",'[|]'(_a,'[|]'(_f1,'[|]'(_b,'[|]'(_f2,[])))))]),calc(_f1+"",T276),calc(T276+_f2,T277),_f = T277);((_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",T279),_T278 = T279,call_cl(_T278,[_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 gen3_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,T258),calc(T258+",\"",T259),calc(T259+_name,T260),calc(T260+"\",",T261),calc(T261+_sb,T262),calc(T262+",",T263),calc(T263+_c2,T264),calc(T264+"),",T265),_f = T265);(calc("set_("+_c,T266),calc(T266+",",T267),calc(T267+_sa,T268),calc(T268+",",T269),calc(T269+_sb,T270),calc(T270+",",T271),calc(T271+_c2,T272),calc(T272+"),",T273),_f = T273)),_env2 = _env_b,call_cl(_debug,['[|]'("t-end",'[|]'(_b,'[|]'(_sb,[])))])). % filter gen3_filter(_l,_f,_upvals):-_upvals=[],(((_l = fc_And(_a,_b),call(gen3_filter(_a,_f1),_upvals),call(gen3_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(gen3_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 gen3_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,T221),calc(T221+"(",T222),calc(T222+_sargs,T223),calc(T223+")",T224),_s2 = T224,call_cl(_debug,[_s2]));((_name = "int")->(_args = '[|]'(_h,[]),call_cl(_term,[_h,_s,_env,_env2,_prefix1]),call_cl(_gensym,["X",_s2]),calc(_prefix1+"int(",T225),calc(T225+_s,T226),calc(T226+",",T227),calc(T227+_s2,T228),calc(T228+"),",T229),_prefix = T229,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+"{",T230),calc(T230+_s2,T231),calc(T231+" = ",T232),calc(T232+_s,T233),calc(T233+"},",T234),_prefix = T234);((_name = "math")->(_args = '[|]'(_a,[]),call_cl(_term,[_a,_s,_env,_env2,_prefix1]),call_cl(_gensym,["X",_s2]),((get_(_env,"extract_type",T236),_T235 = T236,call_cl(_T235,[_env,_a,'[|]'("String",[])]))->(calc(_prefix1+"str2(",T237),calc(T237+_s2,T238),calc(T238+", ",T239),calc(T239+_s,T240),calc(T240+"),",T241),_prefix = T241);(calc(_prefix1+"freeze(",T242),calc(T242+_s2,T243),calc(T243+",{",T244),calc(T244+_s2,T245),calc(T245+" = ",T246),calc(T246+_s,T247),calc(T247+"}),",T248),_prefix = T248)),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(",T249),calc(T249+_s,T250),calc(T250+",",T251),calc(T251+_c,T252),calc(T252+"),",T253),_prefix = T253,_s2 = _c);(call_cl(_genstr,[_o,_s2]),get_(_list,"concat",T255),_T254 = T255,call_cl(_T254,[_args,'[|]'(_o,[]),_args2]),call_cl(_setup_pred,[_env,_env2,_name,_args2,_prefix1,_s,_info]),call_cl(_debug,['[|]'("p-",'[|]'(_s,'[|]'(_sargs,'[|]'(_s2,[]))))]),calc(_prefix1+_s,T256),calc(T256+",",T257),_prefix = T257)))))))). % listify gen3_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,T216),calc(T216+"|",T217),calc(T217+_sb,T218),calc(T218+"]",T219),_s2 = T219,calc(_c1+_c2,T220),_prefix = T220);(dif(_l,'[|]'(_a,'[|]'(_b,[]))),throw("incorrect number of parameters for Cons")))). % setup_pred gen3_setup_pred(_env,_env2,_name,_args,_prefix,_code,_info,_upvals):-_upvals=[_custom_throw,_debug,_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",T197),_T196 = T197,get_(_env,"vars",T198),call_cl(_T196,[T198,_fc,_]))->(call_cl(_debug,['[|]'("fn1",'[|]'(_name,'[|]'(_sargs,'[|]'(_fc,'[|]'(_info,[])))))]),((_obj = "rec")->(_type2 = ["Relation"|_t1],get_(_env,"extract_types",T200),_T199 = T200,get_(_env,"args",T201),call_cl(_T199,[_env,T201,_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",T202),call_cl(_debug,['[|]'("call-rec",'[|]'(_name,'[|]'(_args,'[|]'(_type2,'[|]'(T202,'[|]'(_t1,[]))))))]),get_(_env,"rec",T203),call_cl(_apply,[T203,_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",T205),_T204 = T205,call_cl(_T204,[_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",T207),_T206 = T207,call_cl(_T206,[_env1,"upvals",fc_Id(_name,_type),_env2]),call_cl(_lambda5,[_name,_sargs,_code]),get_(_env2,"upvals",T208),call_cl(_debug,['[|]'("prev-",'[|]'(T208,[]))]));(get_(_env,"vars",T209),call_cl(_debug,[T209]),get_(_env,"prev",T210),call_cl(_debug,[T210]),get_(_env,"prev",T211),_prev = T211,get_(_prev,"vars",T212),writeln_(T212),get_(_prev,"upvals",T213),writeln_(T213),get_(_prev,"prev",T214),_prev2 = T214,writeln_(_prev2),calc("calling unknown relation "+_name,T215),call_cl(_custom_throw,[T215,_info]))))). % get_type gen3_get_type(_env,_name,_t,_upvals):-_upvals=[_has],((((get_(_env,"vars",T195),call_cl(_has,[T195,fc_Var(_name,_,_t)])),(true);_t = '[|]'("Table",[])))). % _rec gen3__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",T188),_T187 = T188,get_(_env,"vars",T189),call_cl(_T187,[T189,_fc,_]),call_cl(_debug,['[|]'("fn2",'[|]'(_args,[]))]),_type2 = ["Relation"|_t1],get_(_env,"extract_types",T191),_T190 = T191,get_(_env,"args",T192),call_cl(_T190,[_env,T192,_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",T193),call_cl(_debug,['[|]'("call-rec",'[|]'(_name,'[|]'(_args,'[|]'(_type2,'[|]'(T193,'[|]'(_t1,[]))))))]),get_(_env,"rec",T194),call_cl(_apply,[T194,_sargs,_code])). % is_obj gen3_is_obj(_ta,_upvals):-_upvals=[],(_ta = '[|]'("Object",_)). % is_num gen3_is_num(_ta,_upvals):-_upvals=[],((_ta = '[|]'("Number",_);(_ta = '[|]'("Integer",_);_ta = '[|]'("Real",_)))). % apply gen3_apply(_name,_sargs,_s,_upvals):-_upvals=[],(((_sargs = "",calc("call("+_name,T181),calc(T181+",_upvals)",T182),_s = T182);(dif(_sargs,""),calc("call("+_name,T183),calc(T183+"(",T184),calc(T184+_sargs,T185),calc(T185+"),_upvals)",T186),_s = T186))). % lambda5 gen3_lambda5(_name,_sargs,_s2,_upvals):-_upvals=[_lambda4,_mutable],(get_(_mutable,"get",T173),_T172 = T173,call_cl(_T172,["debug",_x]),((_x = 1.0,call_cl(_lambda4,[_name,_sargs,_s2]));(dif(_x,1.0),calc("call_cl("+"_",T174),calc(T174+_name,T175),calc(T175+",[",T176),calc(T176+_sargs,T177),calc(T177+"]",T178),calc(T178+"",T179),calc(T179+")",T180),_s2 = T180))). % lambda4 gen3_lambda4(_name,_sargs,_s2,_upvals):-_upvals=[],(calc("call_db("+"_",T165),calc(T165+_name,T166),calc(T166+",[",T167),calc(T167+_sargs,T168),calc(T168+"],[",T169),calc(T169+_name,T170),calc(T170+"])",T171),_s2 = T171). % lambda6 gen3_lambda6(_sargs,_s0,_s2,_upvals):-_upvals=[],(calc("clos("+_sargs,T160),calc(T160+",",T161),calc(T161+"",T162),calc(T162+_s0,T163),calc(T163+")",T164),_s2 = T164). % extract_args gen3_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",T153),_T152 = T153,call_cl(_T152,[_env,_x,_s1,_env_a]),call_cl(_term,[fc_Id(_x,[]),_s0,_env,_,_]),calc(_s0+",",T154),calc(T154+_s1,T155),_s = T155,call(gen3_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(gen3_extract_args(_tail,_s2,_env_a,_env2,_prefix2),_upvals),def(_prefix2),def(_prefix1),get_(_string,"concat",T157),_T156 = T157,call_cl(_T156,[_prefix1,_prefix2,_prefix]),calc(_s1+",",T158),calc(T158+_s2,T159),_s = T159);(_l = [],_s = "",_prefix = "",_env2 = _env))))). % compare_relation gen3_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",T141),_T140 = T141,call_cl(_T140,[_env,_args,__args]),_t2 = ["Relation"|__args],call_cl(_debug,['[|]'("rel",'[|]'(_name,'[|]'(_t1,'[|]'(_t2,[]))))]),((get_(_types,"compare_types",T143),_T142 = T143,call_cl(_T142,[_t1,_t2]))->(call_cl(_debug,['[|]'("true",[])]));(get_(_io,"writeln",T145),_T144 = T145,call_cl(_T144,['[|]'("types",'[|]'(_args,[]))]),get_(_io,"writeln",T147),_T146 = T147,call_cl(_T146,[_t2]),get_(_io,"writeln",T149),_T148 = T149,call_cl(_T148,[_t1]),calc("calling relation "+_name,T150),calc(T150+" with wrong type",T151),_msg = T151,call_cl(_custom_throw,[_msg,_info])))). % eq2 gen3_eq2(_t1,_t2,_upvals):-_upvals=[_eq3,_debug,_string,_string],(get_(_string,"size",T136),_T135 = T136,call_cl(_T135,[_t1,_T134]),_n1 = _T134,get_(_string,"size",T139),_T138 = T139,call_cl(_T138,[_t2,_T137]),_n2 = _T137,call_cl(_debug,['[|]'(_n1,'[|]'(_n2,[]))]),call_cl(_eq3,[_n1,_n2])). % eq3 gen3_eq3(_n1,_n2,_upvals):-_upvals=[],((((true),(_n1 = _n2);_n1 = 1.0))). % setup_var gen3_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 gen3_setup_var2(_env,_env2,_name,_s2,_upvals):-_upvals=[_Env,_Env,_debug,_Env,_var2,_table],(_fc = fc_Var(_name,_n,_tc),(((get_(_table,"get",T124),_T123 = T124,get_(_env,"vars",T125),call_cl(_T123,[T125,_name,_fc])),(call_cl(_var2,[_env,_env2,_fc,_s2]));((get_(_Env,"prevs",T127),_T126 = T127,call_cl(_T126,[_env,_name,_fc])),(call_cl(_debug,['[|]'("prev-var",'[|]'(_name,'[|]'(_n,'[|]'(_tc,[]))))]),get_(_Env,"push_on",T129),_T128 = T129,call_cl(_T128,[_env,"upvals",fc_Id(_name,_tc),_env2]),calc("_"+_name,T130),_s2 = T130);_n = "out",calc("_"+_name,T131),_s2 = T131,_tc = '[|]'("Any",[]),get_(_Env,"push",T133),_T132 = T133,call_cl(_T132,[_env,_fc,_env2]))))). % var2 gen3_var2(_env,_env2,_fc,_s2,_upvals):-_upvals=[],(_fc = fc_Var(_name,_obj,_type),_env = _env2,((_obj = "args",calc("_"+_name,T121),_s2 = T121);(dif(_obj,"args"),calc("_"+_name,T122),_s2 = T122))). % map1 gen3_map1(_env,_l,_l2,_upvals):-_upvals=[_debug],((((true),(_l = '[|]'(_e1,_e2),_l2 = '[|]'(_s,_e4),!,get_(_env,"module",T114),calc("nb_getval("+T114,T115),calc(T115+"_",T116),calc(T116+_e1,T117),calc(T117+",_",T118),calc(T118+_e1,T119),calc(T119+"),",T120),_s = T120,call(gen3_map1(_env,_e2,_e4),_upvals));call_cl(_debug,['[|]'(2.0,'[|]'(_l,'[|]'(_l2,[])))]),_l = [],_l2 = []))). % new_env gen3_new_env(_e,_upvals):-_upvals=[_env_from],(call_cl(_env_from,[_e,[]])). % env_from gen3_env_from(_e,_prev,_upvals):-_upvals=[_set,_set,_set,_Env,_table],(get_(_table,"new",T104),_T103 = T104,call_cl(_T103,[_t1]),get_(_Env,"new",T106),_T105 = T106,call_cl(_T105,[_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 gen3_env_make(_e,_e1,_upvals):-_upvals=[_set,_set,_table],(get_(_table,"new",T102),_T101 = T102,call_cl(_T101,[_t1]),call_cl(_set,[_e1,"vars",_t1,_e2]),call_cl(_set,[_e2,"prev",_e1,_e])). % varname gen3_varname(_l2,_sb,_upvals):-_upvals=[],(_l2 = fc_Id(_name,_),calc("_"+_name,T100),_sb = T100). % neg gen3_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 gen3_generate_cond(_l,_l2,_env,_env2,_upvals):-_upvals=[_generate_body],(((_l = [_c|_tail],call_cl(_generate_body,[_c,_s,_env,_env1]),calc("("+_s,T98),calc(T98+")",T99),_l2 = '[|]'(T99,_tail2),call(gen3_generate_cond(_tail,_tail2,_env1,_env2),_upvals));(dif(_l,[_c|_tail]),(_l = []),(_l2 = [],_env2 = _env)))). % update_tvar gen3_update_tvar(_env,_s,_s2,_upvals):-_upvals=[_debug,_debug,_update_tvar_,_debug],(((get_(_env,"initial",T91),_l = T91,call_cl(_debug,["-update"]),get_(_env,"next",T92),call_cl(_update_tvar_,[_l,T92,_s1]),((_s1 = "",_s2 = _s);(dif(_s1,""),calc(_s1+",",T93),calc(T93+_s,T94),_s2 = T94)),str(_s1,T95),call_cl(_debug,[T95]),str(_s,T96),call_cl(_debug,[T96]));(dif(_l,T97),_s2 = _s))). % update_tvar_ gen3_update_tvar_(_t,_t2,_s,_upvals):-_upvals=[_table,_list,_table],(get_(_table,"sub",T80),_T79 = T80,call_cl(_T79,[_t,_t2,_t1]),get_(_list,"join",T83),_T82 = T83,get_(_table,"map",T86),_T85 = T86,call_cl(_T85,[_t1,clos([_table,_list,_table],gen3_4),_T84]),call_cl(_T82,[_T84,",",_T81]),_s = _T81). % 4 gen3_4(_i,_x,_y,_upvals):-_upvals=[_table,_list,_table],(_x = fc_Var(_x0,_x1),calc("_"+_x0,T87),calc(T87+"=",T88),calc(T88+"_",T89),calc(T89+_x1,T90),_y = T90). % next_tvar2 gen3_next_tvar2(_env,_env2,_upvals):-_upvals=[_debug,_table,_tmap,_gensym,_debug],(((get_(_env,"initial",T75),_l = T75,call_cl(_debug,["-next"]),_gensym_ = _gensym,call_cl(_tmap,[_l,clos([_gensym_,_gensym,_debug],gen3_3),_l2]),get_(_table,"set",T77),_T76 = T77,call_cl(_T76,[_env,"initial",_l2,_env2]),call_cl(_debug,[_l2]));(dif(_l,T78),_env = _env2))). % 3 gen3_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 gen3_next_tvar(_env,_env2,_upvals):-_upvals=[_debug,_table,_tmap,_gensym,_debug],(((get_(_env,"initial",T71),_l = T71,call_cl(_debug,["-next"]),_gensym_ = _gensym,call_cl(_tmap,[_l,clos([_gensym_,_gensym,_debug],gen3_2),_l2]),get_(_table,"set",T73),_T72 = T73,call_cl(_T72,[_env,"initial",_l2,_env2]),call_cl(_debug,[_l2]));(dif(_l,T74),_env = _env2))). % 2 gen3_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 gen3_remove_tvar(_env,_env2,_val,_upvals):-_upvals=[_set,_debug,_debug,_Set,_debug],(((get_(_env,"initial",T67),_l = T67)->(call_cl(_debug,["-rem"]),get_(_Set,"push",T69),_T68 = T69,get_(_env,"next",T70),call_cl(_T68,[T70,_val,_l2]),call_cl(_debug,['[|]'("rem",'[|]'(_val,[]))]),call_cl(_debug,[_l2]),call_cl(_set,[_env,"next",_l2,_env2]));(_env = _env2))). % push_next gen3_push_next(_env,_val,_b,_c1,_upvals):-_upvals=[],(get_(_env,"initial",T62),_l = T62,get_(_l,_val,T63),T63 = fc_Var(_,_x),calc("_"+_x,T64),calc(T64+"=",T65),calc(T65+_b,T66),_c1 = T66). % push_init gen3_push_init(_env,_env2,_val,_name,_upvals):-_upvals=[_set,_set],(get_(_env,"label",T61),_l = T61,call_cl(_set,[_l,_val,_name,_l2]),call_cl(_set,[_env,"label",_l2,_env2])). % has_tvar gen3_has_tvar(_env,_upvals):-_upvals=[],(get_(_env,"initial",T60),T60 = _). % tmap gen3_tmap(_t,_p,_t2,_upvals):-_upvals=[_tmap_,_nil,_table],(get_(_table,"iter",T59),_T58 = T59,call_cl(_T58,[_t,_T57]),call_cl(_tmap_,[_T57,_p,_nil,_t2])). % tmap_ gen3_tmap_(_t,_p,_t0,_t2,_upvals):-_upvals=[_table,_table],(get_(_table,"next",T54),_T53 = T54,call_cl(_T53,[_t,_t_,_k,_v,_i]),((_i = 1.0,call_cl(_p,[_k,_v,_k_,_v_]),get_(_table,"set",T56),_T55 = T56,call_cl(_T55,[_t0,_k_,_v_,_t1]),call(gen3_tmap_(_t_,_p,_t1,_t2),_upvals));(dif(_i,1.0),_t2 = _t0))). % push_types gen3_push_types(_env,_env2,_l,_ts,_upvals):-_upvals=[_Env,_Env,_Env,_Env],((((true),(_l = '[|]'(_f1,_tail),_ts = '[|]'(_t1,_t2),get_(_Env,"extract_type",T50),_T49 = T50,call_cl(_T49,[_env,_f1,_t1]),call(gen3_push_types(_env,_env_a,_tail,_t2),_upvals),_f1 = fc_Id(_name,_),get_(_Env,"push",T52),_T51 = T52,call_cl(_T51,[_env_a,fc_Var(_name,"args",_t1),_env2]));_l = [],_ts = [],_env2 = _env))). % is_functor gen3_is_functor(_name,_env,_upvals):-_upvals=[_list],(get_(_env,"fcs",T42),_fcs = T42,get_(_list,"find",T44),_T43 = T44,call_cl(_T43,[_fcs,fc_Var(_name,_n,_),_])). % sym gen3_sym(_c,_upvals):-_upvals=[_gensym],(call_cl(_gensym,["T",_c])). % genstr gen3_genstr(_o,_s2,_upvals):-_upvals=[_gensym],(call_cl(_gensym,["T",_s]),_o = fc_Id(_s,[]),calc("_"+_s,T41),_s2 = T41). % genvar gen3_genvar(_x,_upvals):-_upvals=[_gensym],(call_cl(_gensym,["T",_c]),_x = fc_Id(_c,[])). % gensym gen3_gensym(_prefix,_x,_upvals):-_upvals=[],(gensym(_prefix,_x)). % double_string gen3_double_string(_s1,_s2,_upvals):-_upvals=[_str,_string,_string],(get_(_string,"slice",T36),_T35 = T36,get_(_string,"size",T39),_T38 = T39,call_cl(_T38,[_s1,_T37]),{_T37-1.0=T40},call_cl(_T35,[_s1,1.0,T40,_sa]),call_cl(_str,[_sa,_s2])). % remove_double_string gen3_remove_double_string(_s1,_sa,_upvals):-_upvals=[_string,_string],(get_(_string,"slice",T30),_T29 = T30,get_(_string,"size",T33),_T32 = T33,call_cl(_T32,[_s1,_T31]),{_T31-1.0=T34},call_cl(_T29,[_s1,1.0,T34,_sa])). % str gen3_str(_s,_s1,_upvals):-_upvals=[_double_quote],(call_cl(_double_quote,[_c]),calc(_c+_s,T27),calc(T27+_c,T28),_s1 = T28). % double_quote gen3_double_quote(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T26),_T25 = T26,call_cl(_T25,[_c,34.0])). % single_quote gen3_single_quote(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T24),_T23 = T24,call_cl(_T23,[_c,39.0])). % custom_throw gen3_custom_throw(_msg,_info,_upvals):-_upvals=[],(((ground(_info))->(_info = fc_Info(_line,_col),calc("(line "+_line,T13),calc(T13+", col ",T14),calc(T14+_col,T15),calc(T15+") ",T16),calc(T16+_msg,T17),str(T17,T18),throw(T18));(throw(_msg)))). % debug gen3_debug(_x,_upvals):-_upvals=[],(writeln_(_x)). % debug_write gen3_debug_write(_x,_upvals):-_upvals=[_io],(get_(_io,"write",T4),_T3 = T4,call_cl(_T3,[_x])). % def gen3_def(_a,_msg,_upvals):-_upvals=[],(((ground(_a))->(true);(writeln(_a),throw(_msg)))). % main gen3(X):-creq1("io",_io,T1),call(T1,_io),creq1("set",_Set,T2),call(T2,_Set),_def = clos([],gen3_def),_debug_write = clos([_io],gen3_debug_write),_debug = clos([],gen3_debug),creq1("logic",_logic,T5),call(T5,_logic),creq1("table",_table,T6),call(T6,_table),creq1("list",_list,T7),call(T7,_list),creq1("string",_string,T8),call(T8,_string),get_(_logic,"halt",T9),_halt = T9,creq1("env4",_Env,T10),call(T10,_Env),creq1("types2",_types,T11),call(T11,_types),creq1("mutable",_mutable,T12),call(T12,_mutable),_custom_throw = clos([],gen3_custom_throw),get_(_table,"set",T19),_set = T19,get_(_table,"get",T20),_get = T20,get_(_list,"has",T21),_has = T21,new(T22),_nil = T22,_single_quote = clos([_string],gen3_single_quote),_double_quote = clos([_string],gen3_double_quote),_str = clos([_double_quote],gen3_str),_remove_double_string = clos([_string,_string],gen3_remove_double_string),_double_string = clos([_str,_string,_string],gen3_double_string),_gensym = clos([],gen3_gensym),_genvar = clos([_gensym],gen3_genvar),_genstr = clos([_gensym],gen3_genstr),_sym = clos([_gensym],gen3_sym),_is_functor = clos([_list],gen3_is_functor),_push_types = clos([_Env,_Env,_Env,_Env],gen3_push_types),_tmap_ = clos([_table,_table],gen3_tmap_),_tmap = clos([_tmap_,_nil,_table],gen3_tmap),_has_tvar = clos([],gen3_has_tvar),_push_init = clos([_set,_set],gen3_push_init),_push_next = clos([],gen3_push_next),_remove_tvar = clos([_set,_debug,_debug,_Set,_debug],gen3_remove_tvar),_next_tvar = clos([_debug,_table,_tmap,_gensym,_debug],gen3_next_tvar),_next_tvar2 = clos([_debug,_table,_tmap,_gensym,_debug],gen3_next_tvar2),_update_tvar_ = clos([_table,_list,_table],gen3_update_tvar_),_update_tvar = clos([_debug,_debug,_update_tvar_,_debug],gen3_update_tvar),_generate_cond = clos([_generate_body],gen3_generate_cond),_neg = clos([_debug],gen3_neg),_varname = clos([],gen3_varname),_env_make = clos([_set,_set,_table],gen3_env_make),_env_from = clos([_set,_set,_set,_Env,_table],gen3_env_from),_new_env = clos([_env_from],gen3_new_env),_map1 = clos([_debug],gen3_map1),_var2 = clos([],gen3_var2),_setup_var2 = clos([_Env,_Env,_debug,_Env,_var2,_table],gen3_setup_var2),_setup_var = clos([_setup_var2],gen3_setup_var),_eq3 = clos([],gen3_eq3),_eq2 = clos([_eq3,_debug,_string,_string],gen3_eq2),_compare_relation = clos([_custom_throw,_io,_io,_io,_debug,_types,_debug,_debug],gen3_compare_relation),_extract_args = clos([_string,_term,_term,_term,_sym],gen3_extract_args),_lambda6 = clos([],gen3_lambda6),_lambda4 = clos([],gen3_lambda4),_lambda5 = clos([_lambda4,_mutable],gen3_lambda5),_apply = clos([],gen3_apply),_is_num = clos([],gen3_is_num),_is_obj = clos([],gen3_is_obj),__rec = clos([_apply,_debug,_compare_relation,_extract_args,_debug,_debug,_debug],gen3__rec),_get_type = clos([_has],gen3_get_type),_setup_pred = clos([_custom_throw,_debug,_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],gen3_setup_pred),_listify = clos([_term,_term],gen3_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],gen3_func),_filter = clos([],gen3_filter),_table_eq = clos([_debug,_term,_debug,_term,_debug],gen3_table_eq),_to_table = clos([_debug,_set,_remove_double_string,_table_eq,_debug,_debug,_debug,_debug,_debug,_gensym,_debug],gen3_to_table),_to_list = clos([_string,_term,_string,_term,_term],gen3_to_list),_num_r = clos([_string],gen3_num_r),_term_ = clos([_io,_num_r,_double_string],gen3_term_),_pushid = clos([_set,_list],gen3_pushid),_make_clos = clos([_lambda6,_Env,_pushid,_set,_debug,_extract_args],gen3_make_clos),_make_rel = clos([_extract_args,_debug,_generate_body,_Env,_nil,_debug,_set,_set,_debug,_push_types,_env_make],gen3_make_rel),_check_type = clos([_debug,_get_type,_debug],gen3_check_type),_to_array = clos([_gensym,_term],gen3_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],gen3_term),_match_until_space = clos([_string,_string],gen3_match_until_space),_extract = clos([_logic,_types],gen3_extract),_extract_type_information = clos([_io,_extract,_io,_io,_io,_io,_io,_io,_io,_io],gen3_extract_type_information),_generate_fact = clos([_generate_body,_Env,_table,_Env,_Env,_debug,_debug,_list,_debug],gen3_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],gen3_generate_rel),_set_type = clos([_Env],gen3_set_type),_specialize_type = clos([_io,_debug,_types,_Env],gen3_specialize_type),_compare_types = clos([_custom_throw,_io,_specialize_type,_debug,_types],gen3_compare_types),_is_stm = clos([_custom_throw,_io,_io,_io],gen3_is_stm),_get_stm = clos([_custom_throw,_io,_io,_io,_generate_body,_genvar,_debug,_setup_pred,_debug],gen3_get_stm),_list_t = clos([],gen3_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],gen3_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],gen3_generate_cond_nest),_generate_cond_normal = clos([_list,_generate_cond],gen3_generate_cond_normal),_sub_has = clos([_list],gen3_sub_has),_subtract_list = clos([_sub_has],gen3_subtract_list),_to_fc = clos([],gen3_to_fc),_to_ids = clos([],gen3_to_ids),_getalias2 = clos([_debug,_debug,_debug],gen3_getalias2),_getalias = clos([],gen3_getalias),_targs = clos([_table,_table],gen3_targs),_tseq = clos([_generate_body],gen3_tseq),_label_ = clos([],gen3_label_),_twhile = clos([_halt,_debug,_debug,_extract_args,_list,_debug,_make_clos,_debug,_extract_args,_debug,_debug,_debug,_debug,_debug,_debug,_make_rel,_debug,_gensym,_set,_set,_nil,_debug,_debug,_debug,_debug,_debug,_list,_tmap,_targs,_halt,_genvar,_gensym,_debug,_debug],gen3_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],gen3_generate_body),_header = clos([],gen3_header),_generate_stm = clos([_generate_body],gen3_generate_stm),_concat_if = clos([],gen3_concat_if),_each2 = clos([_concat_if],gen3_each2),_each3 = clos([_concat_if],gen3_each3),_serialize_item = clos([_types],gen3_serialize_item),_notblank = clos([],gen3_notblank),_generate = clos([_debug,_types,_mutable,_each2,_list,_list,_notblank,_serialize_item,_list,_list,_list,_types,_header,_gensym,_debug,_generate_stm,_set],gen3_generate),_eval = clos([_debug,_debug],gen3_eval),_run = clos([_generate],gen3_run),_generate_body_ = clos([_generate_body],gen3_generate_body_),_generate_ = clos([_generate],gen3_generate_),new(T860),set_(T860,"generate_body",_generate_body_,T862),set_(T862,"generate_world",_generate_world,T863),set_(T863,"run",_run,T864),set_(T864,"generate",_generate_,T865),set_(T865,"new_env",_new_env,T866),set_(T866,"header",_header,T861),_t = T861,call_cl(_debug,[_t]),X=_t,writeln_("-gen"),creq1("mutable",_mutable,T867),call(T867,_mutable),get_(_mutable,"set",T869),_T868 = T869,call_cl(_T868,["debug",0.0]),creq1("parser2",_parser,T870),call(T870,_parser),writeln_(_parser),get_(_io,"readFile",T872),_T871 = T872,call_cl(_T871,["array.co",_s]),clock(_t3),get_(_parser,"run",T874),_T873 = T874,once(call_cl(_T873,[_s,_l])),clock(_t4),{_t4-_t3=T875},{X1 = T875},writeln_(X1),_f2 = _l,once(call_cl(_new_env,[_e])),writeln_(_e),writeln_("--"),_fname = "temp",!,clock(_t0),get_(_t,"run",T877),_T876 = T877,call_cl(_T876,[_e,_e2,_module,_fname,_f2,_s2]),clock(_t1),writeln_("--run"),creq1("math",_math,T878),call(T878,_math),get_(_e2,"vars",T879),writeln_(T879),writeln_("--"),get_(_io,"writeToFile",T881),_T880 = T881,str(_s2,T882),call_cl(_T880,["temp.pl",T882]),get_(_io,"writeln",T884),_T883 = T884,str(_s2,T885),call_cl(_T883,[T885]),writeln_('[|]'(_t0,'[|]'(_t1,[]))),{_t1-_t0=T886},{X2 = T886},writeln_('[|]'("time",'[|]'(X2,[]))),creq1("comp2",_comp,T887),call(T887,_comp),get_(_comp,"run_pl",T889),_T888 = T889,call_cl(_T888,["temp"]).