% Table * % % module % generate_ gen4_generate_(_fname,_env,_env2,_f,_code,_upvals):-_upvals=[_generate],(call_cl(_generate,[_f,_code,_fname,_env,_env2,_module])). % generate_body_ gen4_generate_body_(_env,_env2,_f,_code,_upvals):-_upvals=[_generate_body],(call_cl(_generate_body,[_f,_code,_env,_env2])). % run gen4_run(_e,_e2,_module,_fname,_f2,_s2,_upvals):-_upvals=[_generate],(call_cl(_generate,[_f2,_s2,_fname,_e,_e2,_x]),_module = _x). % eval gen4_eval(_fname,_upvals):-_upvals=[_debug,_debug],(_module = _fname,call_cl(_debug,["--"]),ensure_loaded(_fname),atom_string(_X,_fname),call_cl(_debug,[_X]),call(_X,_)). % generate gen4_generate(_f,_code,_fname,_env,_env2,_module,_upvals):-_upvals=[_debug,_debug,_serialize_item,_list,_mutable,_each2,_list,_list,_notblank,_serialize_item,_list,_list,_list,_types,_debug,_debug,_types,_debug,_extract_type,_header,_gensym,_generate_stm,_set],(def(_fname),_module = _fname,call_cl(_set,[_env,"module",_fname,_env1]),call_cl(_generate_stm,[_env1,_env2,_f,_s]),!,call_cl(_gensym,["",_c]),call_cl(_header,[_s0]),((get_(_env2,"export",T214),T214 = _x)->(call_cl(_extract_type,[_env2,_x,_t2]),get_(_env2,"vars",T215),call_cl(_debug,['[|]'("t2",'[|]'(_x,'[|]'(_t2,'[|]'(T215,[]))))]),get_(_types,"to_string",T218),_T217 = T218,call_cl(_T217,[_t2,_T216]),call_cl(_debug,[_T216]));(_t2 = '[|]'("Null",[]),call_cl(_debug,['[|]'("no export",[])]))),get_(_types,"to_string",T221),_T220 = T221,call_cl(_T220,[_t2,_T219]),_info = "% "+_T219+"\n",get_(_list,"join",T224),_T223 = T224,get_(_list,"filter",T227),_T226 = T227,get_(_list,"map",T230),_T229 = T230,get_(_env2,"fcs",T231),call_cl(_T229,[T231,_serialize_item,_T228]),call_cl(_T226,[_T228,_notblank,_T225]),call_cl(_T223,[_T225,";",_T222]),_info2 = "%"+_T222+"\n",get_(_list,"join",T233),_T232 = T233,get_(_list,"map",T236),_T235 = T236,get_(_env2,"ids",T237),call_cl(_T235,[T237,_each2,_T234]),call_cl(_T232,[_T234,"",_s2]),((get_(_mutable,"get",T239),_T238 = T239,call_cl(_T238,["debug",1.0]))->(_smain = "% main\n"+_module+"(X):-nb_setval(call,0),"+_s+""+".");(_smain = "% main\n"+_module+"(X):-"+_s+""+".")),_code = _info+_info2+"% module\n"+_s0+_s2+_smain,get_(_list,"map",T242),_T241 = T242,get_(_env2,"fcs",T243),call_cl(_T241,[T243,_serialize_item,_T240]),call_cl(_debug,[_T240]),get_(_env2,"fcs",T244),call_cl(_debug,[T244])). % notblank gen4_notblank(_s,_upvals):-_upvals=[],(dif(_s,"")). % serialize_item gen4_serialize_item(_f,_s,_upvals):-_upvals=[_types],((if_(_f = fc_Var(_name,_,_type),(get_(_types,"type_to_string",T213),_T212 = T213,call_cl(_T212,[_type,_T211]),_s = _name+" "+_T211),(_s = "")))). % each3 gen4_each3(_e,_e2,_upvals):-_upvals=[_concat_if],(_e = '[|]'(_name,'[|]'(_n,'[|]'(_type,[]))),call_cl(_concat_if,[_sargs,"_upvals",_sargs3]),_s2 = "_upvals=["+_sargs2+"],",_e2 = "% "+_name+"\n"+_id+"("+_sargs3+"):-"+_s2+"("+_s+").\n"). % each2 gen4_each2(_e,_e2,_upvals):-_upvals=[_concat_if],(_e = '[|]'(_id,'[|]'(_name,'[|]'(_sargs,'[|]'(_sargs2,'[|]'(_s,[]))))),call_cl(_concat_if,[_sargs,"_upvals",_sargs3]),_s2 = "_upvals=["+_sargs2+"],",_e2 = "% "+_name+"\n"+_id+"("+_sargs3+"):-"+_s2+"("+_s+").\n"). % concat_if gen4_concat_if(_s1,_s,_s2,_upvals):-_upvals=[],((if_(_s1 = "",(_s2 = _s),(if_(_s = "",(_s2 = _s1),(_s2 = _s1+","+_s)))))). % generate_stm gen4_generate_stm(_env,_env2,_f,_code,_upvals):-_upvals=[_generate_body],(call_cl(_generate_body,[_f,_code,_env,_env2])). % header gen4_header(_s,_upvals):-_upvals=[],(_s = ""). % generate_body gen4_generate_body(_f,_code,_env,_env2,_upvals):-_upvals=[_custom_throw,_io,_io,_get_stm,_debug,_generate_rel,_generate_fact,_debug,_debug,_custom_throw,_io,_is_num,_is_num,_extract_type,_extract_type,_term,_term,_debug,_Env,_Env,_debug,_compare_types,_conversion_eq_str,_conversion_eq,_term,_term,_debug,_debug,_debug,_set,_io,_get_stm,_neg,_get_stm,_debug,_debug,_term,_term,_extract_args,_debug,_debug,_generate_cond_nest,_debug,_neg,_debug,_debug,_generate_cond_nest,_debug,_debug,_debug_write],(call_cl(_debug_write,["- "]),call_cl(_debug,[_f]),def(_f),!,((_f = fc_And(_a,_b,_line))->(call(gen4_generate_body(_a,_s1,_env,_temp),_upvals),!,call(gen4_generate_body(_b,_s2,_temp,_env2),_upvals),((_s1 = "true")->(_code = _s2);(_code = _s1+","+_s2)));((_f = fc_And(_a,_b))->(call(gen4_generate_body(_a,_s1,_env,_temp),_upvals),call(gen4_generate_body(_b,_s2,_temp,_env2),_upvals),_code = _s1+","+_s2);((_f = fc_Pair(_a,_b))->(call_cl(_debug,[_f]),call(gen4_generate_body(_a,_s1,_env,_temp),_upvals),call(gen4_generate_body(_b,_s2,_temp,_env2),_upvals),_code = "("+_s1+"),("+_s2+")");((_f = fc_Or(_a,_b))->(call(gen4_generate_body(_a,_s1,_env,_env_a),_upvals),call(gen4_generate_body(_b,_s2,_env_a,_env2),_upvals),_code = _s1+";"+_s2);((_f = fc_Cond(_a,_b,_l0))->(call(gen4_generate_body(_a,_sa,_env,_env_a),_upvals),call(gen4_generate_body(_b,_sb,_env_a,_env_b),_upvals),_code1 = "("+_sa+","+_sb+")",_l = '[|]'(fc_Pair(_a,_b),_l0),call_cl(_generate_cond_nest,[_l,_code2,_env_b,_env2,[]]),str(_code2,T188),call_cl(_debug,['[|]'("c",'[|]'(T188,[]))]),_code = "("+_code2+")");((_f = fc_Cond(_a,_b,_l0,_opts))->(get_(_env,"mode",T189),call_cl(_debug,['[|]'("mode",'[|]'(T189,[]))]),((_l0 = [],_opts = "if")->(call(gen4_generate_body(_b,_sb,_env,_env_b),_upvals),((get_(_env,"mode",T190),T190 = "fun")->(call(gen4_generate_body(_a,_sa,_env_b,_env2),_upvals),_code2 = "("+_sa+")->("+_sb+");(true)");(((call_cl(_neg,[_a,_na]))->(true);(throw("complex condition for if-else"))),call(gen4_generate_body(_na,_nsa,_env_b,_env2),_upvals),_code2 = "("+_nsa+");"+"("+_sb+")")));(_l = '[|]'(fc_Pair(_a,_b),_l0),call_cl(_debug,['[|]'("l",'[|]'(_l,[]))]),((get_(_env,"mode",T191),T191 = "fun")->(_opts1 = "choose");(_opts1 = _opts)),call_cl(_generate_cond_nest,[_l,_code2,_env,_env2,_opts1]),str(_code2,T192),call_cl(_debug,['[|]'("c",'[|]'(T192,'[|]'(_opts,[])))]))),_code = "("+_code2+")");((_f = fc_SoftCut(_a,_b,_l))->(call(gen4_generate_body(fc_Cond(_a,_b,_l,"!"),_code,_env,_env2),_upvals),call_cl(_debug,[fc_F1(_code)]));((_f = fc_Host(_host,_name,_args))->((("cut" = _name)->(_code = "!",_env2 = _env);(call_cl(_extract_args,[_args,_sargs,_env,_env2,_prefix]),((_args = [])->(_code = _prefix+_name);(_code = _prefix+_name+"("+_sargs+")")))));((_f = fc_Neq(_a,_b))->(call_cl(_term,[_a,_s1,_env,_env_a,_]),call_cl(_term,[_b,_s2,_env_a,_env_b,_]),_code = "dif("+_s1+","+_s2+")",_env2 = _env_b);((_f = fc_ObjData(_obj,_name,_args,_info))->(call_cl(_debug,["-"]),throw(231.0));((_f = fc_Stm(_name,_args,_body,_info))->(call_cl(_debug,['[|]'("stm",'[|]'(_f,[]))]),((_name = "once")->(((call_cl(_get_stm,[_env,_env2,_body,_prefix,_code0]))->(_code = _prefix+"once("+_code0+")");(throw("not valid code for once operator"))));((_name = "not")->(((call_cl(_neg,[_body,_na]))->(call(gen4_generate_body(_na,_code,_env,_env2),_upvals));(((call_cl(_get_stm,[_env,_env2,_body,_prefix,_sa]))->(_code = _prefix+"safeNot("+_sa+")");(throw("not valid code for not operator"))))));(get_(_io,"writeln",T194),_T193 = T194,call_cl(_T193,[_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,_T195]),call(gen4_generate_body(_f2,_code,_T195,_env1),_upvals),_env2 = _env1,str(_code,T196),call_cl(_debug,['[|]'("->",'[|]'(_name,'[|]'(_sargs,'[|]'(T196,'[|]'(_t2,[])))))]),call_cl(_debug,[""]));((_f = fc_Rel(_name,_args,_f1))->(get_(_env,"mode",T197),call_cl(_debug,['[|]'("",'[|]'(T197,[]))]),call(gen4_generate_body(fc_Rel(_name,_args,_f1,"rel"),_code,_env,_env2),_upvals));((_f = fc_Eq(_a,_b,_info))->(call_cl(_term,[_a,_sa,_env,_env_a,_prefix1]),call_cl(_term,[_b,_sb,_env_a,_env_b,_prefix2]),((call_cl(_conversion_eq,[_a,_b,_env_b,_env_c]))->(_code1 = "{"+_sa+" = "+_sb+"}");((call_cl(_conversion_eq_str,[_a,_b,_sa,_sb,_code1,_env_b,_env_c]))->(true);(call_cl(_compare_types,[_a,_b,_env_b,_env_c,_info]),_code1 = _sa+" = "+_sb))),_code = _prefix1+""+_prefix2+_code1,_env2 = _env_c);((_f = fc_Declaration(_name,_type))->(call_cl(_debug,["declaration"]),((_type = '[|]'("Relation",_t))->(_t0 = '[|]'("Relation",_t));(_t0 = _type)),get_(_Env,"push",T199),_T198 = T199,call_cl(_T198,[_env,fc_Var(_name,"out",_t0),_env1]),_id = "_"+_name,_code = "true",_env2 = _env1,get_(_Env,"vars",T202),_T201 = T202,call_cl(_T201,[_env2,_T200]),call_cl(_debug,[_T200]));((_f = fc([],"True"))->(_env2 = _env,_code = "true");((_f = fc([],"False"))->(_env2 = _env,_code = "false",((get_(_env,"mode",T203),T203 = "fun")->(throw("boolean keyword outside of a conditional"));(true)));((_f = fc_Inequality(_a,_b,_op,_info))->(call_cl(_term,[_a,_sa,_env,_env1,_prefix1]),call_cl(_term,[_b,_sb,_env1,_env3,_prefix2]),_l = '[|]'(_a,'[|]'(_b,[])),((_op = "!=")->(_fn = "neq",throw("compiler error"));((_op = "<")->(_fn = "lt");((_op = "<=")->(_fn = "le");((_op = ">")->(_fn = "gt");((_op = ">="),(_fn = "ge")))))),call_cl(_extract_type,[_env,_a,_ta]),call_cl(_extract_type,[_env,_b,_tb]),((call_cl(_is_num,[_ta]);call_cl(_is_num,[_tb]))->(true);((_ta = '[|]'("String",[]);_tb = '[|]'("String",[]))->(true);((_ta = '[|]'("Any",[]);_tb = '[|]'("Any",[]))->(true);(get_(_io,"writeln",T205),_T204 = T205,call_cl(_T204,['[|]'(_ta,'[|]'(_tb,[]))]),call_cl(_custom_throw,["comparing non-Number type",_info]))))),call_cl(_debug,['[|]'("=ineq",'[|]'(_prefix1,'[|]'(_prefix2,[])))]),_code = _prefix1+_prefix2+""+""+_fn+"("+_sa+","+_sb+")",call_cl(_debug,[_code]),_env2 = _env3);((_f = fc_Fact(_name,_args,_info))->(call_cl(_generate_fact,[_env,_env2,_f,_code]));(((call_cl(_generate_rel,[_env,_env2,_f,_code]))->(str(_code,T206),call_cl(_debug,[T206]));((call_cl(_get_stm,[_env,_env2,_f,_prefix1,_code1]))->(_code = _prefix1+_code1);(get_(_io,"writeln",T208),_T207 = T208,call_cl(_T207,[_f]),get_(_io,"writeln",T210),_T209 = T210,call_cl(_T209,[""]),call_cl(_custom_throw,["cannot compile code (could not find the above term)",_info]))))))))))))))))))))))))). % conversion_eq_str gen4_conversion_eq_str(_a,_b,_sa,_sb,_code,_env,_env2,_upvals):-_upvals=[_debug,_str_exp,_str_exp,_extract_type,_extract_type],(call_cl(_extract_type,[_env,_a,_ta]),call_cl(_extract_type,[_env,_b,_tb]),_env2 = _env,(((call_cl(_str_exp,[_ta,_tb]);call_cl(_str_exp,[_tb,_ta])),(call_cl(_debug,['[|]'("-",'[|]'(_ta,'[|]'(_tb,[])))]),_code = _sa+" = "+_sb);false))). % conversion_eq gen4_conversion_eq(_a,_b,_env,_env2,_upvals):-_upvals=[_debug,_num_exp,_num_exp,_extract_type,_extract_type],(call_cl(_extract_type,[_env,_a,_ta]),call_cl(_extract_type,[_env,_b,_tb]),_env2 = _env,(((call_cl(_num_exp,[_ta,_tb]);call_cl(_num_exp,[_tb,_ta])),(call_cl(_debug,['[|]'("-",'[|]'(_ta,'[|]'(_tb,[])))]));false))). % str_exp gen4_str_exp(_ta,_tb,_upvals):-_upvals=[],(_ta = '[|]'("String",[]),_tb = '[|]'("Math",_)). % num_exp gen4_num_exp(_ta,_tb,_upvals):-_upvals=[_is_num],(call_cl(_is_num,[_ta]),_tb = '[|]'("Math",_)). % get_stm gen4_get_stm(_env,_env2,_f,_prefix,_code,_upvals):-_upvals=[_custom_throw,_io,_io,_generate_body,_genvar,_debug,_setup_pred,_debug],(call_cl(_debug,["- stm:"+_f]),def(_env),((_f = fc_Pred(_name,_args,_info))->(call_cl(_setup_pred,[_env,_env2,_name,_args,_prefix,_code,_info]),call_cl(_debug,['[|]'("p",'[|]'(_prefix,'[|]'(_code,[])))]));((_f = fc_ObjPred(_obj,_name,_args,_info))->(call_cl(_genvar,[_o]),_o = fc_Id(_name2,_),call_cl(_generate_body,[fc_Eq(_o,fc_ObjGet(_obj,_name,_info),_info),_prefix1,_env,_env1]),call(gen4_get_stm(_env1,_env2,fc_Pred(_name2,_args,_info),_prefix2,_code2),_upvals),_prefix = _prefix1+","+_prefix2,_code = _code2);(get_(_io,"writeln",T185),_T184 = T185,call_cl(_T184,[_f]),get_(_io,"writeln",T187),_T186 = T187,call_cl(_T186,[""]),call_cl(_custom_throw,["cannot compile code (could not find the above term)",_info]))))). % compare_types gen4_compare_types(_a,_b,_env,_env2,_info,_upvals):-_upvals=[_custom_throw,_io,_specialize_type,_debug,_types,_extract_type,_extract_type],(call_cl(_extract_type,[_env,_a,_ta]),call_cl(_extract_type,[_env,_b,_tb]),((get_(_types,"compare_types",T181),_T180 = T181,call_cl(_T180,[_ta,_tb]))->(call_cl(_debug,['[|]'("type",'[|]'(_ta,'[|]'(_tb,[])))]),call_cl(_specialize_type,[_env,_a,_ta,_tb,_env2]));(get_(_io,"writeln",T183),_T182 = T183,call_cl(_T182,['[|]'("type",'[|]'(_ta,'[|]'(_tb,[])))]),call_cl(_custom_throw,["cannot unify types",_info])))). % specialize_type gen4_specialize_type(_env,_a,_ta,_tb,_env2,_upvals):-_upvals=[_io,_debug,_types,_Env],((if_(_a = fc_Id(_name,_),((((get_(_Env,"update",T172),_T171 = T172,get_(_types,"strict_type",T175),_T174 = T175,call_cl(_T174,[_ta,_tb,_T173]),call_cl(_T171,[_env,_name,_T173,_env2])),(get_(_env,"vars",T176),get_(_env2,"vars",T177),call_cl(_debug,['[|]'(_name,'[|]'(T176,'[|]'(T177,[])))]),true);get_(_io,"writeln",T179),_T178 = T179,call_cl(_T178,['[|]'(_ta,'[|]'(_tb,[]))]),throw("no strict")))),(_env2 = _env)))). % set_type gen4_set_type(_env,_env2,_name,_t,_upvals):-_upvals=[_Env],(get_(_Env,"update",T170),_T169 = T170,call_cl(_T169,[_env,_name,_t,_env2])). % extract_type gen4_extract_type(_env,_f,_type,_upvals):-_upvals=[_extract_types,_debug,_debug,_to_table_type,_table,_extract_type_id],((if_(_f = fc_Num(_s),(_type = '[|]'("Number",[])),(if_(_f = fc_Str(_),(_type = '[|]'("String",[])),(if_(_f = fc_Id(_name,_t1),(call_cl(_extract_type_id,[_env,_f,_type,_info])),(if_(_f = fc_TTable(_args),(_type = '[|]'("Table",_t2),get_(_table,"new",T168),_T167 = T168,call_cl(_T167,[_t]),call_cl(_to_table_type,[_env,_args,_t,_t2]),call_cl(_debug,['[|]'("type-dict",'[|]'(_f,'[|]'(_type,[])))])),(if_(_f = fc_TTable(_,_),(_type = '[|]'("Table",[])),(if_(_f = fc_Rel(_,_,_),(_type = '[|]'("Relation",[])),(if_(_f = fc_Rel(_args,_),(call_cl(_debug,[_f]),call_cl(_extract_types,[_env,_args,_t]),_type = '[|]'("Relation",_t)),(if_(_f = fc_Op(_,_,_,_),(_type = '[|]'("Math",[])),(_type = '[|]'("Any",[]))))))))))))))))))). % generate_rel gen4_generate_rel(_env,_env2,_f,_code,_upvals):-_upvals=[_extract_args,_set,_debug,_debug,_list,_extract_type,_term,_debug,_string,_string,_Env,_term],(_f = fc_Pred(_name,_args,_info),((_name = "require")->(_args = '[|]'(_a,'[|]'(_b,[])),call_cl(_term,[_a,_s0,_env,_env_a,_]),_b = fc_Id(_sb,_t2),_s2 = "_"+_sb,get_(_env,"module",T152),_s = T152+"_"+_sb,get_(_Env,"push",T154),_T153 = T154,call_cl(_T153,[_env_a,fc_Var(_sb,"in",_t2),_env2]),!,get_(_string,"size",T156),_T155 = T156,str(_s0,T157),call_cl(_T155,[T157,_n]),get_(_string,"slice",T159),_T158 = T159,str(_s0,T160),call_cl(_T158,[T160,1.0,_n-1.0,_sa]),_module = _sa,_code = "creq(\""+_sa+"\","+"_"+_sb+")",str(_code,T161),call_cl(_debug,[T161]));((_name = "export")->(_args = '[|]'(_a,[]),call_cl(_term,[_a,_s1,_env,_env_a,_prefix_]),_code = "X="+_s1+"",call_cl(_extract_type,[_env,_a,_t]),(((_a = fc_Id(_name2,_),get_(_list,"has",T163),_T162 = T163,get_(_env,"vars",T164),call_cl(_T162,[T164,fc_Var(_name2,_n2,_t2)])),(get_(_env,"vars",T165),call_cl(_debug,['[|]'("export-fn",'[|]'(_a,'[|]'(_t,'[|]'(T165,[]))))]));get_(_env,"vars",T166),call_cl(_debug,[fc_Pair(T166)]))),call_cl(_set,[_env_a,"export",_a,_env2]));((_name = "print")->(call_cl(_extract_args,[_args,_sargs,_env,_env2,_prefix]),_code = _prefix+"writeln_("+_sargs+")");(false))))). % generate_fact gen4_generate_fact(_env,_env2,_f,_code,_upvals):-_upvals=[_generate_body,_Env,_table,_Env,_Env,_debug,_debug,_list,_debug],(_f = fc_Fact(_name,_args,_info),(if_(_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)]),(if_(_arg2 = [],((if_(_arg1 = "_",(_type = '[|]'("Functor",[])),(_type = '[|]'(_arg1,[]))))),(get_(_list,"concat",T143),_T142 = T143,call_cl(_T142,[_arg2,'[|]'('[|]'(_arg1,[]),[]),_type]),call_cl(_debug,[_type])))),_type = [_first_type|_],call_cl(_debug,['[|]'("fc",'[|]'(_first_type,'[|]'(_arg1,'[|]'(_arg2,'[|]'(_type,[])))))]),get_(_Env,"push_on",T145),_T144 = T145,call_cl(_T144,[_env,"fcs",_c,_env1]),((dif(_first_type,"Functor"),get_(_Env,"get",T147),_T146 = T147,call_cl(_T146,[_env,"types",_o]),get_(_table,"set",T149),_T148 = T149,call_cl(_T148,[_o,_first_type,"Functor",_o2]),get_(_Env,"set",T151),_T150 = T151,call_cl(_T150,[_env1,"types",_o2,_env2]));(_first_type = "Functor",_env1 = _env2))),(if_("cut" = _name,(_code = "!",_env2 = _env),(if_(_name = "throw",(_f1 = fc_Host("c","throw",_args),call_cl(_generate_body,[_f1,_code,_env,_env2]),_args = '[|]'(_c,_)),(false)))))))). % extract_type_information gen4_extract_type_information(_fname,_x,_upvals):-_upvals=[_list,_string,_io,_io,_io,_io,_io,_io],(get_(_io,"open",T128),_T127 = T128,call_cl(_T127,[_fname,"read",_f]),get_(_io,"fileReadChar",T130),_T129 = T130,call_cl(_T129,[_f,_c]),((dif(_c,"%"),get_(_io,"writeln",T132),_T131 = T132,call_cl(_T131,["Warning: no type information on file "+_fname]),_x = []);(_c = "%",get_(_io,"fileReadLine",T134),_T133 = T134,call_cl(_T133,[_f,_line]),(if_(_line = "",(get_(_io,"writeln",T136),_T135 = T136,call_cl(_T135,["Warning: blank type information on file "+_fname]),_x = []),(get_(_io,"close",T138),_T137 = T138,call_cl(_T137,[_f]),get_(_string,"split",T139),_split = T139,once(call_cl(_split,[_line,";",_l])),get_(_list,"map",T141),_T140 = T141,call_cl(_T140,[_l,_extract,_l2]),_x = _l2)))))). % term gen4_term(_f,_s2,_env,_env2,_prefix,_upvals):-_upvals=[_io,_term_,_debug,_generate_body,_genvar,_debug,_extract_type,_generate_body,_list,_genvar,_debug,_to_table,_set,_set,_table,_debug,_gensym,_gensym,_gensym,_filter,_to_list,_lambda6,_Env,_pushid,_set,_extract_args,_debug,_make_rel,_debug,_debug,_gensym,_setup_var,_sym,_custom_throw,_io,_setup_var,_is_obj,_check_type,_debug,_get_type,_debug,_sym,_func,_setup_var,_debug,_is_functor,_debug,_debug_write],(((dif(_f,fc_And(_,_)),dif(_f,fc_And(_,_,_)))->(call_cl(_debug_write,[":"]),call_cl(_debug,[_f]));(true)),def(_env),((_f = fc_Id(_name,_))->(_prefix = "",((_name = "Cons")->(_s2 = "[]",_env = _env2);((_name = "_")->(_s2 = "_",_env = _env2);((call_cl(_is_functor,[_name,_env]))->(call_cl(_debug,[";functor"]),_s2 = "fc([],\""+_name+"\")",_env2 = _env);(str2(X4, _s2),call_cl(_setup_var,[_env,_env2,_name,X4]))))));((_f = fc_Func(_name,_args,_info))->(str2(X5, _prefix),call_cl(_func,[_f,_s2,_env,_env2,X5]));((_f = fc_ObjGet(_a,_b))->(call(gen4_term(fc_ObjGet(_a,_b,_info),_s2,_env,_env2,_prefix),_upvals));((_f = fc_ObjGet(_a,_b,_info))->(call_cl(_sym,[_s2]),call_cl(_debug,['[|]'("get",'[|]'(_a,'[|]'(_b,[])))]),((call_cl(_get_type,[_env,_a,_t])),(call_cl(_debug,['[|]'("obj-type",'[|]'(_a,'[|]'(_b,'[|]'(_t,[]))))]),((call_cl(_check_type,[_env,_b,_t]))->(((call_cl(_is_obj,[_t]))->(throw("obj"));(call_cl(_setup_var,[_env,_env2,_a,_sa]),_prefix = "get_("+_sa+","+"\""+_b+"\","+_s2+"),")));(get_(_io,"writeln",T110),_T109 = T110,call_cl(_T109,[_t]),str("property "+_b+" not found in "+_a,T111),call_cl(_custom_throw,[T111,_info]))))));((_f = fc_ObjGet2(_a,_b))->(call(gen4_term(_b,_sb,_env,_,_),_upvals),call_cl(_sym,[_s2]),call_cl(_setup_var,[_env,_env2,_a,_sa]),_prefix = "get_("+_sa+","+""+_sb+","+_s2+"),");((_f = fc_Rel(_args,_body))->(call_cl(_gensym,["",_n]),_id = fc_Id(_n,[]),call(gen4_term(fc_Rel(_id,_args,_body),_s2,_env,_env2,_prefix),_upvals));((_f = fc_Rel(_id,_args,_body))->(_id = fc_Id(_name,_),call_cl(_debug,['[|]'(_id,'[|]'(_name,[]))]),get_(_env,"module",T112),_id2 = T112+"_"+_name,call_cl(_debug,[_id2]),call_cl(_make_rel,[_env,_fn,_f,_sargs,_s0,_id2,_t2]),str(_s0,T113),call_cl(_debug,['[|]'("bind",'[|]'(_id,'[|]'(T113,[])))]),get_(_fn,"upvals",T114),call_cl(_extract_args,[T114,_sargs2,_env,_,_]),get_(_fn,"ids",T115),call_cl(_set,[_env,"ids",T115,_env1]),call_cl(_pushid,[_env1,'[|]'(_id2,'[|]'(_name,'[|]'(_sargs,'[|]'(_sargs2,'[|]'(_s0,[]))))),_env3]),get_(_Env,"push",T117),_T116 = T117,call_cl(_T116,[_env3,fc_Var(_name,"out",_t2),_env2]),str2(X6, _s2),call_cl(_lambda6,["["+_sargs2+"]",_id2,X6]),_prefix = "");((_f = fc_TList(_args))->(str2(X7, _prefix),call_cl(_to_list,[_args,_sargs,_env,_env2,X7]),_s2 = _sargs);((_f = fc_TTable(_args))->(call_cl(_filter,[_args,_args2]),((_args2 = fc([],"True"))->(call_cl(_gensym,["T",_s2]),_prefix = "new("+_s2+"),",_env = _env2);(call_cl(_gensym,["T",_c]),call_cl(_gensym,["T",_s2]),call_cl(_debug,['[|]'("args-t",'[|]'(_args2,[]))]),get_(_table,"new",T119),_T118 = T119,call_cl(_T118,[_t]),call_cl(_set,[_env,"mode","obj",_T121]),call_cl(_set,[_T121,"this",_s2,_T120]),call_cl(_to_table,[_T120,_env1,_args2,_f2,_c,_s2,_t,_t2]),str(_f2,T122),call_cl(_debug,['[|]'("s",'[|]'(T122,[]))]),_env2 = _env1,_prefix = "new("+_c+"),"+_f2)));((_f = fc_ObjPred(_obj,_name,_args,_info))->(call_cl(_genvar,[_o]),get_(_list,"concat",T124),_T123 = T124,call_cl(_T123,[_args,'[|]'(_o,[]),_args2]),call_cl(_generate_body,[fc_ObjPred(_obj,_name,_args2,_info),_prefix1,_env,_env2]),_o = fc_Id(_s1,_),_s2 = "_"+_s1,_prefix = _prefix1+",");((_f = fc_Op(_a,_b,_op,_info))->(call_cl(_extract_type,[_env,_a,_ta]),call(gen4_term(_a,_sa,_env,_env1,_prefix1),_upvals),call(gen4_term(_b,_sb,_env1,_env3,_prefix2),_upvals),call_cl(_debug,['[|]'(_ta,'[|]'(_op,'[|]'(_sa,'[|]'(_sb,[]))))]),_prefix = _prefix1+_prefix2,_s2 = _sa+_op+_sb,_env2 = _env3);((_f = fc_Size(_a,_info))->(call_cl(_genvar,[_temp]),call_cl(_generate_body,[fc_ObjPred("string","size",'[|]'(_a,'[|]'(_temp,[])),_info),_prefix1,_env,_env2]),_temp = fc_Id(_s1,_),call_cl(_debug,['[|]'("=",'[|]'(_a,'[|]'(_temp,[])))]),_s2 = "_"+_s1,_prefix = _prefix1+",");((call_cl(_term_,[_f,_s2,_env,_env2]))->(_prefix = "");(get_(_io,"writeln",T126),_T125 = T126,call_cl(_T125,[_f]),throw("term not recognized")))))))))))))))). % pushid gen4_pushid(_env,_e,_env2,_upvals):-_upvals=[_set,_list],((((get_(_env,"ids",T106),T106 = _t),(get_(_list,"push",T108),_T107 = T108,call_cl(_T107,[_t,_e,_t1]),call_cl(_set,[_env,"ids",_t1,_env2]));throw("no ids")))). % check_type gen4_check_type(_env,_name,_type,_upvals):-_upvals=[_debug,_get_type,_debug],((((_type = [];_type = '[|]'("Any",[])),(true);_type = '[|]'("Table",_t),(((_t = []),(true);((get_(_t,_name,T105),T105 = _t0),(call_cl(_debug,['[|]'("chk",'[|]'(_name,'[|]'(_t,[])))]),call_cl(_get_type,[_env,_name,_t2]),call_cl(_debug,['[|]'("obj-get",'[|]'(_t0,'[|]'(_t2,[])))]),true);false)))))). % make_rel gen4_make_rel(_env,_fn,_f,_sargs,_body,_id2,_t2,_upvals):-_upvals=[_extract_types,_extract_args,_debug,_generate_body,_Env,_debug,_set,_set,_push_types,_debug,_env_make],(_f = fc_Rel(_id,_args,_code),call_cl(_env_make,[_env1,_env]),_args2 = _args,call_cl(_debug,["-setup"]),_t1 = ["Relation"|_type],call_cl(_push_types,[_env1,_env_fn2,_args2,_type]),_id = fc_Id(_name,_),call_cl(_set,[_env_fn2,"rec",_id2,_T102]),call_cl(_set,[_T102,"args",_args2,_env_fn3]),call_cl(_debug,['[|]'("make-rec",'[|]'(_id2,'[|]'(_id,[])))]),get_(_Env,"push",T104),_T103 = T104,call_cl(_T103,[_env_fn3,fc_Var(_name,"rec",'[|]'("Relation",[])),_env_fn]),call_cl(_generate_body,[_code,_body,_env_fn,_fn]),call_cl(_debug,["-"]),call_cl(_extract_args,[_args2,_sargs,_env1,_,_prefix]),_t2 = ["Relation"|_type2],call_cl(_extract_types,[_fn,_args,_type2])). % term_ gen4_term_(_f,_s2,_env,_env2,_upvals):-_upvals=[_io,_num_r,_double_string],((if_(_f = fc_Str(_s),(_env = _env2,call_cl(_double_string,[_s,_s2])),(if_(_f = fc_Host(_a,_s),(_env = _env2,_s2 = _s),(if_(_f = fc_Num(_s),(_env = _env2,call_cl(_num_r,[_s,_s2])),(get_(_io,"writeln",T101),_T100 = T101,call_cl(_T100,[_f]),throw("term not recognized"))))))))). % num_r gen4_num_r(_s,_s2,_upvals):-_upvals=[_string],(((get_(_string,"has",T98),_T97 = T98,call_cl(_T97,[_s,"."]))->(_s2 = _s);(str(_s+".0",T99),_s2 = T99))). % to_list gen4_to_list(_l,_s,_env,_env2,_prefix,_upvals):-_upvals=[_string,_term,_string,_term,_term],((if_(_l = [_a|[fc_Tuple(_l2)|[]]],(call_cl(_term,[_a,_sa,_env,_env1,_prefix1]),call_cl(_term,[_l2,_sb,_env1,_env2,_prefix2]),get_(_string,"code",T94),_T93 = T94,call_cl(_T93,[_c,39.0]),_symbol = _c+"[|]"+_c,_s = ""+_symbol+"("+_sa+","+_sb+")",_prefix = _prefix1+_prefix2),(if_(_l = [_a|_tail],(call_cl(_term,[_a,_sa,_env,_env1,_prefix1]),call(gen4_to_list(_tail,_sb,_env1,_env2,_prefix2),_upvals),_prefix = _prefix1+_prefix2,get_(_string,"code",T96),_T95 = T96,call_cl(_T95,[_c,39.0]),_symbol = _c+"[|]"+_c,_s = ""+_symbol+"("+_sa+","+_sb+")"),(_l = [],_s = "[]",_env2 = _env,_prefix = "")))))). % to_table gen4_to_table(_env,_env2,_l,_f,_c,_c2,_t,_t2,_upvals):-_upvals=[_debug,_set,_extract_type,_remove_double_string,_table_eq,_debug,_debug,_debug,_debug,_debug,_gensym,_debug],(call_cl(_debug,[";"+_l]),((_l = fc_And(_a,_b))->(call_cl(_gensym,["T",_c_]),call_cl(_debug,[";"]),call_cl(_debug,[_a]),call(gen4_to_table(_env,_temp,_a,_f1,_c,_c_,_t,_t0),_upvals),call_cl(_debug,[";"+_b]),call(gen4_to_table(_temp,_env2,_b,_f2,_c_,_c2,_t0,_t2),_upvals),call_cl(_debug,['[|]'(",",'[|]'(_a,'[|]'(_f1,'[|]'(_b,'[|]'(_f2,[])))))]),_f = _f1+""+_f2);((_l = fc_And(_a,_b,_))->(throw("-"));((_l = fc_Eq(_a,_b,_info))->(call_cl(_debug,['[|]'("set-t",'[|]'(_a,'[|]'(_b,[])))]),str2(X3, _f),call_cl(_table_eq,[_env,_env2,_l,X3,_c,_c2]),def(_f),((_a = fc_Id(_sa,_))->(true);((_a = fc_Str(_s1))->(call_cl(_remove_double_string,[_s1,_sa]));(_sa = ""))),call_cl(_extract_type,[_env,_b,_tb]),call_cl(_set,[_t,_sa,_tb,_t2]));((_l = fc([],"True"))->(_f = "true,",_env2 = _env,_c2 = _c,_t2 = _t);((_f = fc_Host(_,_a,_b))->(_env = _env2,_s2 = _s,_t2 = _t);((_l = fc_Rel(_name,_args,_f1))->(throw("-"));(call_cl(_debug,[_l]),throw("cannot convert to table"))))))))). % table_eq gen4_table_eq(_env,_env2,_l,_f,_c,_c2,_upvals):-_upvals=[_debug,_term,_debug,_term,_debug],(_l = fc_Eq(_a,_b,_info),call_cl(_debug,['[|]'("t-start",'[|]'(_l,[]))]),call_cl(_term,[_a,_sa,_env,_env_a,_prefix1]),call_cl(_debug,['[|]'("t",[])]),call_cl(_term,[_b,_sb,_env_a,_env_b,_prefix2]),((_a = fc_Id(_name,_))->(_f = "set_("+_c+",\""+_name+"\","+_sb+","+_c2+"),");(_f = "set_("+_c+","+_sa+","+_sb+","+_c2+"),")),_env2 = _env_b,call_cl(_debug,['[|]'("t-end",'[|]'(_b,'[|]'(_sb,[])))])). % to_table_type gen4_to_table_type(_env,_l,_t,_t2,_upvals):-_upvals=[_io,_debug,_set,_extract_type,_remove_double_string,_debug,_debug],(call_cl(_debug,['[|]'("set;",'[|]'(_l,[]))]),((_l = fc_And(_a,_b))->(throw("-"));((_l = fc_And(_a,_b,_))->(call(gen4_to_table_type(_env,_a,_t,_t0),_upvals),call(gen4_to_table_type(_env,_b,_t0,_t2),_upvals));((_l = fc_Eq(_a,_b,_info))->(call_cl(_debug,['[|]'("set;",'[|]'(_sa,'[|]'(_tb,[])))]),((_a = fc_Id(_sa,_))->(true);((_a = fc_Str(_s1))->(call_cl(_remove_double_string,[_s1,_sa]));(_sa = ""))),call_cl(_extract_type,[_env,_b,_tb]),call_cl(_set,[_t,_sa,_tb,_t2]),call_cl(_debug,['[|]'(_sa,'[|]'(_tb,[]))]));((_l = fc_Rel(_name,_args,_f1))->(call(gen4_to_table_type(_env,fc_Eq(fc_Id(_name,[]),fc_Rel(_args,_f1),_),_t,_t2),_upvals));((_l = fc([],"True"))->(_t2 = _t);(_t2 = _t,get_(_io,"writeln",T92),_T91 = T92,call_cl(_T91,[_l]),throw("unknown table type")))))))). % filter gen4_filter(_l,_f,_upvals):-_upvals=[],((if_(_l = fc_And(_a,_b),(call(gen4_filter(_a,_f1),_upvals),call(gen4_filter(_b,_f2),_upvals),(if_(_a = fc([],"True"),(_f = _f2),(if_(_b = fc([],"True"),(_f = _f1),(_f = fc_And(_f1,_f2))))))),(if_(_l = fc_And(_a,_b,_),(call(gen4_filter(fc_And(_a,_b),_f),_upvals)),(if_(_l = fc_Rel(_name,_args,_f1),(_f = fc_Eq(fc_Id(_name,[]),fc_Rel(_args,_f1),_)),(_f = _l)))))))). % func gen4_func(_f,_s2,_env,_env2,_prefix,_upvals):-_upvals=[_debug,_setup_pred,_list,_genstr,_gensym,_term,_debug,_extract_type,_gensym,_term,_gensym,_term,_debug,_gensym,_term,_debug,_debug,_extract_args,_is_functor,_listify],(_f = fc_Func(_name,_args,_info),((_name = "Cons")->(str2(X1, _s2),call_cl(_listify,[_args,X1,_prefix,_env,_env2]));((call_cl(_is_functor,[_name,_env]))->(call_cl(_extract_args,[_args,_sargs,_env,_env2,_prefix]),call_cl(_debug,[_name]),_s2 = "fc_"+_name+"("+_sargs+")",call_cl(_debug,[_s2]));((_name = "int")->(_args = '[|]'(_h,[]),call_cl(_term,[_h,_s,_env,_env2,_prefix1]),call_cl(_gensym,["X",_s2]),_prefix = _prefix1+"int("+_s+","+_s2+"),",call_cl(_debug,['[|]'("-",'[|]'(_prefix,'[|]'(_c,[])))]));((_name = "num";_name = "real")->(_args = '[|]'(_h,[]),call_cl(_term,[_h,_s,_env,_env2,_prefix1]),call_cl(_gensym,["X",_s2]),_prefix = _prefix1+"{"+_s2+" = "+_s+"},");((_name = "math")->(_args = '[|]'(_a,[]),call_cl(_term,[_a,_s,_env,_env2,_prefix1]),call_cl(_gensym,["X",_s2]),((call_cl(_extract_type,[_env,_a,'[|]'("String",[])]))->(_prefix = _prefix1+"str2("+_s2+", "+_s+"),");(_prefix = _prefix1+"freeze("+_s2+",{"+_s2+" = "+_s+"}),")),call_cl(_debug,['[|]'("-",'[|]'(_prefix,'[|]'(_s2,[])))]));((_name = "str")->(_args = '[|]'(_h,[]),call_cl(_term,[_h,_s,_env,_env2,_prefix1]),call_cl(_gensym,["T",_c]),_prefix = _prefix1+"str("+_s+","+_c+"),",_s2 = _c);(str2(X2, _s2),call_cl(_genstr,[_o,X2]),get_(_list,"concat",T90),_T89 = T90,call_cl(_T89,[_args,'[|]'(_o,[]),_args2]),call_cl(_setup_pred,[_env,_env2,_name,_args2,_prefix1,_s,_info]),call_cl(_debug,['[|]'("p-",'[|]'(_s,'[|]'(_sargs,'[|]'(_s2,[]))))]),_prefix = _prefix1+_s+",")))))))). % listify gen4_listify(_l,_s2,_prefix,_env,_env2,_upvals):-_upvals=[_term,_term],((if_(_l = '[|]'(_a,'[|]'(_b,[])),(call_cl(_term,[_a,_sa,_env,_env1,_c1]),call_cl(_term,[_b,_sb,_env1,_env2,_c2]),_s2 = "["+_sa+"|"+_sb+"]",_prefix = _c1+_c2),(throw("incorrect number of parameters for Cons"))))). % setup_pred gen4_setup_pred(_env,_env2,_name,_args,_prefix,_code,_info,_upvals):-_upvals=[_custom_throw,_io,_debug,_lambda5,_Env,_compare_relation,_debug,_extract_args,_check_args,_debug,_Env,_lambda5,_setup_var,_debug,_compare_relation,_debug,_extract_args,_check_args,_apply,_debug,_compare_relation,_extract_args,_debug,_check_args,_extract_types,_list,_debug],(_fc = fc_Var(_name,_obj,_type),call_cl(_debug,["-setup=call"]),((get_(_list,"find",T77),_T76 = T77,get_(_env,"vars",T78),call_cl(_T76,[T78,_fc,_]))->(((_obj = "rec")->(_type2 = ["Relation"|_t1],get_(_env,"args",T79),call_cl(_extract_types,[_env,T79,_t1]),call_cl(_check_args,[_env,_args,_t1,_args2]),call_cl(_debug,['[|]'("fn-",'[|]'(_args2,[]))]),call_cl(_extract_args,[_args2,_sargs,_env,_env1,_prefix]),call_cl(_compare_relation,[fc_Pair(_name,_type2),_args2,_env1,_env2,_info]),get_(_env,"rec",T80),call_cl(_debug,['[|]'("call-rec",'[|]'(_name,'[|]'(_args,'[|]'(_type2,'[|]'(T80,'[|]'(_t1,[]))))))]),get_(_env,"rec",T81),call_cl(_apply,[T81,_sargs,_code]));(_type = [_|_t1],((dif(_type,'[|]'("Any",[])))->(call_cl(_check_args,[_env,_args,_t1,_args2]));(_args2 = _args)),call_cl(_extract_args,[_args2,_sargs,_env,_env1,_prefix]),call_cl(_debug,['[|]'("fn2",'[|]'(_args,'[|]'(_args2,[])))]),call_cl(_compare_relation,[fc_Pair(_name,_type),_args2,_env1,_env2,_info]),call_cl(_debug,['[|]'("call",'[|]'(_name,[]))]),call_cl(_setup_var,[_env,_,_name,_name2]),call_cl(_lambda5,[_name,_sargs,_code]))));((get_(_Env,"prevs",T83),_T82 = T83,call_cl(_T82,[_env,_name,_fc]))->(_type = [_|_t1],call_cl(_debug,['[|]'("prev-var2=rel",'[|]'(_name,'[|]'(_fc,'[|]'(_t1,[]))))]),((dif(_type,'[|]'("Any",[])),dif(_type,'[|]'("Relation",[])))->(call_cl(_check_args,[_env,_args,_t1,_args2]));(_args2 = _args)),call_cl(_extract_args,[_args2,_sargs,_env,_env0,_prefix]),call_cl(_debug,['[|]'("fn2",'[|]'(_args,'[|]'(_args2,[])))]),call_cl(_compare_relation,[fc_Pair(_name,_type),_args2,_env0,_env1,_info]),get_(_Env,"push_on",T85),_T84 = T85,call_cl(_T84,[_env1,"upvals",fc_Id(_name,_type),_env2]),call_cl(_lambda5,[_name,_sargs,_code]),get_(_env2,"upvals",T86),call_cl(_debug,['[|]'("-",'[|]'(T86,[]))]));(get_(_io,"writeln",T88),_T87 = T88,call_cl(_T87,[_name]),call_cl(_custom_throw,["calling unknown relation "+_name,_info]))))). % check_args gen4_check_args(_env,_l,_l2,_args2,_upvals):-_upvals=[_debug,_conversion,_extract_type],((if_(_l = [],(_l2 = [],_args2 = []),(_l = '[|]'(_a,_t1),_l2 = '[|]'(_tb,_t2),_args2 = '[|]'(_f1,_t4),call_cl(_extract_type,[_env,_a,_ta]),call_cl(_conversion,[_ta,_tb,_a,_f1]),call_cl(_debug,['[|]'("fn2",'[|]'(_ta,'[|]'(_tb,'[|]'(_f1,[]))))]),call(gen4_check_args(_env,_t1,_t2,_t4),_upvals))))). % conversion gen4_conversion(_ta,_tb,_f,_f1,_upvals):-_upvals=[_is_num,_is_num,_is_num],((((true),(call_cl(_is_num,[_ta]),_tb = '[|]'("Math",_),_f1 = fc_Func("math",'[|]'(_f,[]),_));(_ta = '[|]'("String",[]),_tb = '[|]'("Math",_),_f1 = fc_Func("math",'[|]'(_f,[]),_);(_ta = '[|]'("Math",_),call_cl(_is_num,[_tb]),_f1 = fc_Func("num",'[|]'(_f,[]),_);_f = _f1))))). % get_type gen4_get_type(_env,_name,_t,_upvals):-_upvals=[_has],((((get_(_env,"vars",T75),call_cl(_has,[T75,fc_Var(_name,_,_t)])),(true);_t = '[|]'("Table",[])))). % is_obj gen4_is_obj(_ta,_upvals):-_upvals=[],(_ta = '[|]'("Object",_)). % is_num gen4_is_num(_ta,_upvals):-_upvals=[],(_ta = '[|]'("Number",_);_ta = '[|]'("Integer",_);_ta = '[|]'("Real",_)). % apply gen4_apply(_name,_sargs,_s,_upvals):-_upvals=[],((if_(_sargs = "",(_s = "call("+_name+",_upvals)"),(_s = "call("+_name+"("+_sargs+"),_upvals)")))). % lambda5 gen4_lambda5(_name,_sargs,_s2,_upvals):-_upvals=[_lambda4,_mutable],(get_(_mutable,"get",T74),_T73 = T74,call_cl(_T73,["debug",_x]),(if_(_x = 1.0,(call_cl(_lambda4,[_name,_sargs,_s2])),(_s2 = "call_cl("+"_"+_name+",["+_sargs+"]"+""+")")))). % lambda4 gen4_lambda4(_name,_sargs,_s2,_upvals):-_upvals=[],(_s2 = "call_db("+"_"+_name+",["+_sargs+"],["+_name+"])"). % lambda6 gen4_lambda6(_sargs,_s0,_s2,_upvals):-_upvals=[],(_s2 = "clos("+_sargs+","+""+_s0+")"). % extract_args gen4_extract_args(_l,_s,_env,_env2,_prefix,_upvals):-_upvals=[_string,_term,_term],(((_l = [_f1|[]])->(call_cl(_term,[_f1,_s,_env,_env2,_prefix]));((_l = [_f1|_tail])->(call_cl(_term,[_f1,_s1,_env,_env_a,_prefix1]),call(gen4_extract_args(_tail,_s2,_env_a,_env2,_prefix2),_upvals),def(_prefix2),def(_prefix1),get_(_string,"concat",T72),_T71 = T72,call_cl(_T71,[_prefix1,_prefix2,_prefix]),_s = _s1+","+_s2);(_l = [],_s = "",_prefix = "",_env2 = _env)))). % compare_relation gen4_compare_relation(_f,_args,_env,_env2,_info,_upvals):-_upvals=[_custom_throw,_io,_io,_io,_debug,_types,_debug,_extract_type_args],(_f = fc_Pair(_name,_t1),_env = _env2,call_cl(_extract_type_args,[_env,_args,__args]),_t2 = ["Relation"|__args],call_cl(_debug,['[|]'("rel",'[|]'(_name,'[|]'(_t1,'[|]'(_t2,[]))))]),((get_(_types,"compare_types",T64),_T63 = T64,call_cl(_T63,[_t1,_t2]))->(call_cl(_debug,['[|]'("true",[])]));(get_(_io,"writeln",T66),_T65 = T66,call_cl(_T65,['[|]'("types",'[|]'(_args,[]))]),get_(_io,"writeln",T68),_T67 = T68,call_cl(_T67,[_t2]),get_(_io,"writeln",T70),_T69 = T70,call_cl(_T69,[_t1]),_msg = "calling relation "+_name+" with wrong type",call_cl(_custom_throw,[_msg,_info])))). % eq2 gen4_eq2(_t1,_t2,_upvals):-_upvals=[_eq3,_debug,_string,_string],(get_(_string,"size",T59),_T58 = T59,call_cl(_T58,[_t1,_T57]),_n1 = _T57,get_(_string,"size",T62),_T61 = T62,call_cl(_T61,[_t2,_T60]),_n2 = _T60,call_cl(_debug,['[|]'(_n1,'[|]'(_n2,[]))]),call_cl(_eq3,[_n1,_n2])). % eq3 gen4_eq3(_n1,_n2,_upvals):-_upvals=[],((((true),(_n1 = _n2);_n1 = 1.0))). % setup_var gen4_setup_var(_env,_env2,_name,_s2,_upvals):-_upvals=[_setup_var2,_debug,_list,_Env],(get_(_Env,"vars",T53),_T52 = T53,call_cl(_T52,[_env,_vars]),_fc = fc_Var(_name,_n,_tc,_id),(((get_(_list,"find",T55),_T54 = T55,get_(_env,"vars",T56),call_cl(_T54,[T56,_fc,_])),(_env2 = _env,_s2 = ""+_id,call_cl(_debug,['[|]'("alias",'[|]'(_s2,[]))]));call_cl(_setup_var2,[_env,_env2,_name,_s2])))). % setup_var2 gen4_setup_var2(_env,_env2,_name,_s2,_upvals):-_upvals=[_Env,_Env,_debug,_Env,_var2,_list],(_fc = fc_Var(_name,_n,_tc),(((get_(_list,"find",T44),_T43 = T44,get_(_env,"vars",T45),call_cl(_T43,[T45,_fc,_])),(call_cl(_var2,[_env,_env2,_fc,_s2]));((get_(_Env,"prevs",T47),_T46 = T47,call_cl(_T46,[_env,_name,_fc])),(call_cl(_debug,['[|]'("prev-var",'[|]'(_name,'[|]'(_n,'[|]'(_tc,[]))))]),get_(_Env,"push_on",T49),_T48 = T49,call_cl(_T48,[_env,"upvals",fc_Id(_name,_tc),_env2]),_s2 = "_"+_name);_n = "out",_s2 = "_"+_name,_tc = '[|]'("Any",[]),get_(_Env,"push",T51),_T50 = T51,call_cl(_T50,[_env,_fc,_env2]))))). % var2 gen4_var2(_env,_env2,_fc,_s2,_upvals):-_upvals=[],(_fc = fc_Var(_name,_obj,_type),_env = _env2,(if_(_obj = "args",(_s2 = "_"+_name),(_s2 = "_"+_name)))). % map1 gen4_map1(_env,_l,_l2,_upvals):-_upvals=[_debug],((((true),(_l = '[|]'(_e1,_e2),_l2 = '[|]'(_s,_e4),!,get_(_env,"module",T42),_s = "nb_getval("+T42+"_"+_e1+",_"+_e1+"),",call(gen4_map1(_env,_e2,_e4),_upvals));call_cl(_debug,['[|]'(2.0,'[|]'(_l,'[|]'(_l2,[])))]),_l = [],_l2 = []))). % new_env gen4_new_env(_e,_upvals):-_upvals=[_env_from],(call_cl(_env_from,[_e,[]])). % env_from gen4_env_from(_e,_prev,_upvals):-_upvals=[_set,_set,_set,_Env,_table],(get_(_table,"new",T38),_T37 = T38,call_cl(_T37,[_t1]),get_(_Env,"new",T40),_T39 = T40,call_cl(_T39,[_e1,_prev,_t1]),call_cl(_set,[_e1,"mode","fn",_e2]),call_cl(_set,[_e2,"ids",[],_e3]),call_cl(_set,[_e3,"g",[],_e])). % env_make gen4_env_make(_e,_e1,_upvals):-_upvals=[_set,_set],(call_cl(_set,[_e1,"vars",[],_e2]),call_cl(_set,[_e2,"prev",_e1,_e])). % varname gen4_varname(_l2,_sb,_upvals):-_upvals=[],(_l2 = fc_Id(_name,_),_sb = "_"+_name). % generate_cond_normal gen4_generate_cond_normal(_l,_code2,_env,_env2,_upvals):-_upvals=[_list,_generate_cond],(call_cl(_generate_cond,[_l,_l2,_env,_env2]),get_(_list,"join",T36),_T35 = T36,call_cl(_T35,[_l2,";",_code2])). % generate_cond_nest gen4_generate_cond_nest(_l,_s2,_env,_env2,_opt,_upvals):-_upvals=[_generate_body,_generate_body,_debug,_neg,_generate_body,_generate_body,_generate_body,_generate_body,_generate_body],(((_l = '[|]'(_c,[]))->(call_cl(_generate_body,[_c,_s2,_env,_env2]));((_l = '[|]'(_c,_tail))->(((_opt = "!";_opt = "choose")->(_c = fc_Pair(_a,_b),call_cl(_generate_body,[_a,_sa,_env,_env_a]),call_cl(_generate_body,[_b,_sb,_env_a,_env1]),_s2 = "("+_sa+")->"+"("+_sb+");"+"("+_sc+")");((_opt = "if")->(_c = fc_Pair(_a,_b),call_cl(_generate_body,[_a,_sa,_env,_env_a]),call_cl(_generate_body,[_b,_sb,_env_a,_env_b]),((call_cl(_neg,[_a,_na]))->(call_cl(_debug,['[|]'("n",'[|]'(_na,[]))]),call_cl(_generate_body,[_na,_nsa,_env_b,_env1]),_s2 = "("+_sa+","+_sb+");"+"("+_nsa+","+_sc+")");(_env1 = _env_b,_nsa = "safeNot("+_sa+")",_s2 = "("+_sa+","+_sb+");"+"("+_nsa+","+_sc+")")));(call_cl(_generate_body,[_c,_s,_env,_env1]),_s2 = "("+_s+";"+_sc+")"))),call(gen4_generate_cond_nest(_tail,_sc,_env1,_env2,_opt),_upvals));((_l = []),(str(_s2,T34),T34 = "",_env2 = _env))))). % neg gen4_neg(_f,_f2,_upvals):-_upvals=[_io],((if_(_f = fc_Eq(_a,_b,_info),(_f2 = fc_Neq(_a,_b)),(if_(_f = fc_Neq(_a,_b),(_f2 = fc_Eq(_a,_b,_info)),(if_(_f = fc([],"True"),(_f2 = fc([],"False")),(if_(_f = fc([],"False"),(_f2 = fc([],"True")),(if_(_f = fc_Inequality(_a,_b,_op,_info),((if_(_op = "!=",(_fn = "="),(if_(_op = "<",(_fn = ">="),(if_(_op = "<=",(_fn = ">"),(if_(_op = ">",(_fn = "<="),(if_(_op = ">=",(_fn = "<"),(throw("compiler error")))))))))))),_f2 = fc_Inequality(_a,_b,_fn,_info)),(get_(_io,"writeln",T33),_T32 = T33,call_cl(_T32,[_f]),false)))))))))))). % generate_cond gen4_generate_cond(_l,_l2,_env,_env2,_upvals):-_upvals=[_generate_body],((if_(_l = [_c|_tail],(call_cl(_generate_body,[_c,_s,_env,_env1]),_l2 = '[|]'("("+_s+")",_tail2),call(gen4_generate_cond(_tail,_tail2,_env1,_env2),_upvals)),((_l = []),(_l2 = [],_env2 = _env))))). % push_var gen4_push_var(_env,_env2,_name,_type,_upvals):-_upvals=[_Env],(get_(_Env,"push",T31),_T30 = T31,call_cl(_T30,[_env,fc_Var(_name,"out",_type),_env2])). % push_types gen4_push_types(_env,_env2,_l,_ts,_upvals):-_upvals=[_Env,_extract_type,_Env,_extract_type],((((true),(_l = '[|]'(_f1,_tail),_ts = '[|]'(_t1,_t2),call_cl(_extract_type,[_env,_f1,_t1]),call(gen4_push_types(_env,_env_a,_tail,_t2),_upvals),_f1 = fc_Id(_name,_),get_(_Env,"push",T29),_T28 = T29,call_cl(_T28,[_env_a,fc_Var(_name,"args",_t1),_env2]));_l = [],_ts = [],_env2 = _env))). % extract_type_args gen4_extract_type_args(_env,_l,_ts,_upvals):-_upvals=[_extract_types,_extract_type,_extract_type,_extract_type],((((true),(_l = '[|]'(_f1,[]),_ts = '[|]'(_t,[]),call_cl(_extract_type,[_env,_f1,_t]));(_l = '[|]'(_f1,_tail),_ts = '[|]'(_t1,_t2),call_cl(_extract_type,[_env,_f1,_t1]),call_cl(_extract_types,[_env,_tail,_t2]);_l = [],_ts = [])))). % extract_types gen4_extract_types(_env,_l,_ts,_upvals):-_upvals=[_extract_type,_extract_type],((((true),(_l = '[|]'(_f1,_tail),_ts = '[|]'(_t1,_t2),call_cl(_extract_type,[_env,_f1,_t1]),call(gen4_extract_types(_env,_tail,_t2),_upvals));_l = [],_ts = []))). % send gen4_send(_a,_type,_upvals):-_upvals=[],(_a = [_type|_]). % extract_type_id gen4_extract_type_id(_env,_f,_type,_info,_upvals):-_upvals=[_is_functor,_custom_throw,_debug,_debug,_has],(_f = fc_Id(_name,_t1),((get_(_env,"vars",T25),call_cl(_has,[T25,fc_Var(_name,_,_t2)]))->(((_t1 = [])->(_type1 = '[|]'("Any",[]));(_type1 = _t1)),((_t2 = [])->(_type2 = '[|]'("Any",[]));(_type2 = _t2)),((_type2 = '[|]'("Any",[]))->(_type = _type1);((_type1 = '[|]'("Any",[]))->(call_cl(_debug,['[|]'("any",[])]),_type = _type2);((_type2 = _type1)->(_type = _type2);(call_cl(_debug,['[|]'(_type2,'[|]'(_t1,[]))]),call_cl(_custom_throw,["Variable defined with different types",_info]))))));((call_cl(_is_functor,[_name,_env]))->(_type = '[|]'("Functor",[]));((_name = "Cons")->(_type = '[|]'("List",[]));(def(_t1),((_t1 = [])->(_type = '[|]'("Any",[]));(_type = _t1))))))). % is_functor gen4_is_functor(_name,_env,_upvals):-_upvals=[_list],(get_(_env,"fcs",T22),_fcs = T22,get_(_list,"find",T24),_T23 = T24,call_cl(_T23,[_fcs,fc_Var(_name,_n,_),_])). % sym gen4_sym(_c,_upvals):-_upvals=[_gensym],(call_cl(_gensym,["T",_c])). % genstr gen4_genstr(_o,_s2,_upvals):-_upvals=[_gensym],(call_cl(_gensym,["T",_s]),_o = fc_Id(_s,[]),_s2 = "_"+_s). % genvar gen4_genvar(_x,_upvals):-_upvals=[_gensym],(call_cl(_gensym,["T",_c]),_x = fc_Id(_c,[])). % gensym gen4_gensym(_prefix,_x,_upvals):-_upvals=[],(gensym(_prefix,_x)). % double_string gen4_double_string(_s1,_s2,_upvals):-_upvals=[_str,_string,_string],(get_(_string,"slice",T18),_T17 = T18,get_(_string,"size",T21),_T20 = T21,call_cl(_T20,[_s1,_T19]),call_cl(_T17,[_s1,1.0,_T19-1.0,_sa]),call_cl(_str,[_sa,_s2])). % remove_double_string gen4_remove_double_string(_s1,_sa,_upvals):-_upvals=[_string,_string],(get_(_string,"slice",T13),_T12 = T13,get_(_string,"size",T16),_T15 = T16,call_cl(_T15,[_s1,_T14]),call_cl(_T12,[_s1,1.0,_T14-1.0,_sa])). % str gen4_str(_s,_s1,_upvals):-_upvals=[_debug,_double_quote],(call_cl(_double_quote,[_c]),call_cl(_debug,['[|]'(_s,'[|]'(_c,[]))]),_s1 = _c+_s+_c). % double_quote gen4_double_quote(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T11),_T10 = T11,call_cl(_T10,[_c,34.0])). % single_quote gen4_single_quote(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T9),_T8 = T9,call_cl(_T8,[_c,39.0])). % custom_throw gen4_custom_throw(_msg,_info,_upvals):-_upvals=[],(((ground(_info))->(_info = fc_Info(_line,_col),str("(line "+_line+", col "+_col+") "+_msg,T4),throw(T4));(throw(_msg)))). % debug_write gen4_debug_write(_x,_upvals):-_upvals=[_io],(get_(_io,"write",T2),_T1 = T2,call_cl(_T1,[_x]),true). % debug gen4_debug(_x,_upvals):-_upvals=[],(writeln_(_x),true). % main gen4(X):-creq("io",_io),_debug = clos([],gen4_debug),_debug_write = clos([_io],gen4_debug_write),creq("logic",_logic),creq("table",_table),creq("mutable",_mutable),get_(_logic,"halt",T3),_halt = T3,creq("env2",_Env),creq("types2",_types),creq("list",_list),creq("string",_string),_custom_throw = clos([],gen4_custom_throw),get_(_table,"set",T5),_set = T5,get_(_table,"get",T6),_get = T6,get_(_list,"has",T7),_has = T7,_single_quote = clos([_string],gen4_single_quote),_double_quote = clos([_string],gen4_double_quote),_str = clos([_debug,_double_quote],gen4_str),_remove_double_string = clos([_string,_string],gen4_remove_double_string),_double_string = clos([_str,_string,_string],gen4_double_string),_gensym = clos([],gen4_gensym),_genvar = clos([_gensym],gen4_genvar),_genstr = clos([_gensym],gen4_genstr),_sym = clos([_gensym],gen4_sym),_is_functor = clos([_list],gen4_is_functor),_extract_type_id = clos([_is_functor,_custom_throw,_debug,_debug,_has],gen4_extract_type_id),_send = clos([],gen4_send),_extract_types = clos([_extract_type,_extract_type],gen4_extract_types),_extract_type_args = clos([_extract_types,_extract_type,_extract_type,_extract_type],gen4_extract_type_args),_push_types = clos([_Env,_extract_type,_Env,_extract_type],gen4_push_types),_push_var = clos([_Env],gen4_push_var),_generate_cond = clos([_generate_body],gen4_generate_cond),_neg = clos([_io],gen4_neg),_generate_cond_nest = clos([_generate_body,_generate_body,_debug,_neg,_generate_body,_generate_body,_generate_body,_generate_body,_generate_body],gen4_generate_cond_nest),_generate_cond_normal = clos([_list,_generate_cond],gen4_generate_cond_normal),_varname = clos([],gen4_varname),_env_make = clos([_set,_set],gen4_env_make),_env_from = clos([_set,_set,_set,_Env,_table],gen4_env_from),_new_env = clos([_env_from],gen4_new_env),_map1 = clos([_debug],gen4_map1),_var2 = clos([],gen4_var2),_setup_var2 = clos([_Env,_Env,_debug,_Env,_var2,_list],gen4_setup_var2),_setup_var = clos([_setup_var2,_debug,_list,_Env],gen4_setup_var),_eq3 = clos([],gen4_eq3),_eq2 = clos([_eq3,_debug,_string,_string],gen4_eq2),_compare_relation = clos([_custom_throw,_io,_io,_io,_debug,_types,_debug,_extract_type_args],gen4_compare_relation),_extract_args = clos([_string,_term,_term],gen4_extract_args),_lambda6 = clos([],gen4_lambda6),_lambda4 = clos([],gen4_lambda4),_lambda5 = clos([_lambda4,_mutable],gen4_lambda5),_apply = clos([],gen4_apply),_is_num = clos([],gen4_is_num),_is_obj = clos([],gen4_is_obj),_get_type = clos([_has],gen4_get_type),_conversion = clos([_is_num,_is_num,_is_num],gen4_conversion),_check_args = clos([_debug,_conversion,_extract_type],gen4_check_args),_setup_pred = clos([_custom_throw,_io,_debug,_lambda5,_Env,_compare_relation,_debug,_extract_args,_check_args,_debug,_Env,_lambda5,_setup_var,_debug,_compare_relation,_debug,_extract_args,_check_args,_apply,_debug,_compare_relation,_extract_args,_debug,_check_args,_extract_types,_list,_debug],gen4_setup_pred),_listify = clos([_term,_term],gen4_listify),_func = clos([_debug,_setup_pred,_list,_genstr,_gensym,_term,_debug,_extract_type,_gensym,_term,_gensym,_term,_debug,_gensym,_term,_debug,_debug,_extract_args,_is_functor,_listify],gen4_func),_filter = clos([],gen4_filter),_to_table_type = clos([_io,_debug,_set,_extract_type,_remove_double_string,_debug,_debug],gen4_to_table_type),_table_eq = clos([_debug,_term,_debug,_term,_debug],gen4_table_eq),_to_table = clos([_debug,_set,_extract_type,_remove_double_string,_table_eq,_debug,_debug,_debug,_debug,_debug,_gensym,_debug],gen4_to_table),_to_list = clos([_string,_term,_string,_term,_term],gen4_to_list),_num_r = clos([_string],gen4_num_r),_term_ = clos([_io,_num_r,_double_string],gen4_term_),_make_rel = clos([_extract_types,_extract_args,_debug,_generate_body,_Env,_debug,_set,_set,_push_types,_debug,_env_make],gen4_make_rel),_check_type = clos([_debug,_get_type,_debug],gen4_check_type),_pushid = clos([_set,_list],gen4_pushid),_term = clos([_io,_term_,_debug,_generate_body,_genvar,_debug,_extract_type,_generate_body,_list,_genvar,_debug,_to_table,_set,_set,_table,_debug,_gensym,_gensym,_gensym,_filter,_to_list,_lambda6,_Env,_pushid,_set,_extract_args,_debug,_make_rel,_debug,_debug,_gensym,_setup_var,_sym,_custom_throw,_io,_setup_var,_is_obj,_check_type,_debug,_get_type,_debug,_sym,_func,_setup_var,_debug,_is_functor,_debug,_debug_write],gen4_term),_extract_type_information = clos([_list,_string,_io,_io,_io,_io,_io,_io],gen4_extract_type_information),_generate_fact = clos([_generate_body,_Env,_table,_Env,_Env,_debug,_debug,_list,_debug],gen4_generate_fact),_generate_rel = clos([_extract_args,_set,_debug,_debug,_list,_extract_type,_term,_debug,_string,_string,_Env,_term],gen4_generate_rel),_extract_type = clos([_extract_types,_debug,_debug,_to_table_type,_table,_extract_type_id],gen4_extract_type),_set_type = clos([_Env],gen4_set_type),_specialize_type = clos([_io,_debug,_types,_Env],gen4_specialize_type),_compare_types = clos([_custom_throw,_io,_specialize_type,_debug,_types,_extract_type,_extract_type],gen4_compare_types),_get_stm = clos([_custom_throw,_io,_io,_generate_body,_genvar,_debug,_setup_pred,_debug],gen4_get_stm),_num_exp = clos([_is_num],gen4_num_exp),_str_exp = clos([],gen4_str_exp),_conversion_eq = clos([_debug,_num_exp,_num_exp,_extract_type,_extract_type],gen4_conversion_eq),_conversion_eq_str = clos([_debug,_str_exp,_str_exp,_extract_type,_extract_type],gen4_conversion_eq_str),_generate_body = clos([_custom_throw,_io,_io,_get_stm,_debug,_generate_rel,_generate_fact,_debug,_debug,_custom_throw,_io,_is_num,_is_num,_extract_type,_extract_type,_term,_term,_debug,_Env,_Env,_debug,_compare_types,_conversion_eq_str,_conversion_eq,_term,_term,_debug,_debug,_debug,_set,_io,_get_stm,_neg,_get_stm,_debug,_debug,_term,_term,_extract_args,_debug,_debug,_generate_cond_nest,_debug,_neg,_debug,_debug,_generate_cond_nest,_debug,_debug,_debug_write],gen4_generate_body),_header = clos([],gen4_header),_generate_stm = clos([_generate_body],gen4_generate_stm),_concat_if = clos([],gen4_concat_if),_each2 = clos([_concat_if],gen4_each2),_each3 = clos([_concat_if],gen4_each3),_serialize_item = clos([_types],gen4_serialize_item),_notblank = clos([],gen4_notblank),_generate = clos([_debug,_debug,_serialize_item,_list,_mutable,_each2,_list,_list,_notblank,_serialize_item,_list,_list,_list,_types,_debug,_debug,_types,_debug,_extract_type,_header,_gensym,_generate_stm,_set],gen4_generate),_eval = clos([_debug,_debug],gen4_eval),_run = clos([_generate],gen4_run),_generate_body_ = clos([_generate_body],gen4_generate_body_),_generate_ = clos([_generate],gen4_generate_),new(T245),set_(T245,"generate_body",_generate_body_,T247),set_(T247,"generate_world",_generate_world,T248),set_(T248,"run",_run,T249),set_(T249,"generate",_generate_,T250),set_(T250,"new_env",_new_env,T251),set_(T251,"header",_header,T246),_t = T246,call_cl(_debug,[_t]),X=_t,writeln_("-gen"),creq("mutable",_mutable),creq("parser3",_parser),get_(_io,"readFile",T253),_T252 = T253,call_cl(_T252,["gen5.co",_s]),get_(_parser,"run",T254),_run_ = T254,once(call_cl(_run_,[_s,_l])),writeln_('[|]'("l",'[|]'(_l,[]))),_f2 = _l,once(call_cl(_new_env,[_e])),!,writeln_(_e),writeln_("--"),_fname = "temp",get_(_t,"run",T256),_T255 = T256,call_cl(_T255,[_e,_e2,_module,_fname,_f2,_s2]),writeln_("--run"),!,get_(_io,"writeln",T258),_T257 = T258,str(_s2,T259),call_cl(_T257,[T259]),get_(_io,"writeToFile",T261),_T260 = T261,str(_s2,T262),call_cl(_T260,["temp.pl",T262]),writeln_("--"),writeln_(_e).