%0 Null % Eq CWam;And CWam;Put Functor;Call Functor;Cur Functor;Lib Functor;Local Functor;Void Functor;Upvalue Functor Number;Const Functor Number;Val Functor Number;Var Functor;Var Functor String Number Functor;None Functor;Error Functor;TTable Functor;TList Functor;Func Functor;ObjGet2 Functor;ObjGet Functor;Id Functor;Str Functor String;Num Functor Number;Fact Functor;Rel Functor;Size Functor;Exclamation Functor;Declaration Functor;Once Functor;SoftCut Functor;Host Functor;Inequality Functor;Op Functor;Cond Functor;ObjData Functor;ObjPred Functor;Bracket Functor;Pred Functor;False Functor;True Functor Null;Or Functor Any Any;Mut Functor;Neq Functor Any Any;Eq Functor Any Any Any;F2 Functor;F1 Functor;F Functor;Tuple Functor;Pair Functor;Token Functor;Info Functor;Cons Functor;Stm Functor % module % conversion gen5_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 gen5_get_type(_env,_name,_t,_upvals):-_upvals=[_has],((((get_(_env,"vars",T174),call_cl(_has,[T174,fc_Var(_name,_,_t)])),(true);_t = '[|]'("Table",[])))). % is_obj gen5_is_obj(_ta,_upvals):-_upvals=[],(_ta = '[|]'("Object",_)). % is_num gen5_is_num(_ta,_upvals):-_upvals=[],(_ta = '[|]'("Number",_);_ta = '[|]'("Integer",_);_ta = '[|]'("Real",_)). % apply gen5_apply(_name,_sargs,_s,_upvals):-_upvals=[],(((_sargs = "",calc("call("+_name,T168),calc(T168+",_upvals)",T169),_s = T169);(dif(_sargs,""),calc("call("+_name,T170),calc(T170+"(",T171),calc(T171+_sargs,T172),calc(T172+"),_upvals)",T173),_s = T173))). % lambda5 gen5_lambda5(_name,_sargs,_s2,_upvals):-_upvals=[_lambda4,_mutable],(get_(_mutable,"get",T160),_T159 = T160,call_cl(_T159,["debug",_x]),((_x = 1.0,call_cl(_lambda4,[_name,_sargs,_s2]));(dif(_x,1.0),calc("call_cl("+"_",T161),calc(T161+_name,T162),calc(T162+",[",T163),calc(T163+_sargs,T164),calc(T164+"]",T165),calc(T165+"",T166),calc(T166+")",T167),_s2 = T167))). % lambda4 gen5_lambda4(_name,_sargs,_s2,_upvals):-_upvals=[],(calc("call_db("+"_",T152),calc(T152+_name,T153),calc(T153+",[",T154),calc(T154+_sargs,T155),calc(T155+"],[",T156),calc(T156+_name,T157),calc(T157+"])",T158),_s2 = T158). % lambda6 gen5_lambda6(_sargs,_s0,_s2,_upvals):-_upvals=[],(calc("clos("+_sargs,T147),calc(T147+",",T148),calc(T148+"",T149),calc(T149+_s0,T150),calc(T150+")",T151),_s2 = T151). % extract_args gen5_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(gen5_extract_args(_tail,_s2,_env_a,_env2,_prefix2),_upvals),def(_prefix2),def(_prefix1),get_(_string,"concat",T144),_T143 = T144,call_cl(_T143,[_prefix1,_prefix2,_prefix]),calc(_s1+",",T145),calc(T145+_s2,T146),_s = T146);(_l = [],_s = "",_prefix = "",_env2 = _env)))). % compare_relation gen5_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",T134),_T133 = T134,call_cl(_T133,[_t1,_t2]))->(call_cl(_debug,['[|]'("true",[])]));(get_(_io,"writeln",T136),_T135 = T136,call_cl(_T135,['[|]'("types",'[|]'(_args,[]))]),get_(_io,"writeln",T138),_T137 = T138,call_cl(_T137,[_t2]),get_(_io,"writeln",T140),_T139 = T140,call_cl(_T139,[_t1]),calc("calling relation "+_name,T141),calc(T141+" with wrong type",T142),_msg = T142,call_cl(_custom_throw,[_msg,_info])))). % eq2 gen5_eq2(_t1,_t2,_upvals):-_upvals=[_eq3,_debug,_string,_string],(get_(_string,"size",T129),_T128 = T129,call_cl(_T128,[_t1,_T127]),_n1 = _T127,get_(_string,"size",T132),_T131 = T132,call_cl(_T131,[_t2,_T130]),_n2 = _T130,call_cl(_debug,['[|]'(_n1,'[|]'(_n2,[]))]),call_cl(_eq3,[_n1,_n2])). % eq3 gen5_eq3(_n1,_n2,_upvals):-_upvals=[],((((true),(_n1 = _n2);_n1 = 1.0))). % setup_var gen5_setup_var(_env,_env2,_name,_s2,_upvals):-_upvals=[_setup_var2,_debug,_list,_Env],(get_(_Env,"vars",T122),_T121 = T122,call_cl(_T121,[_env,_vars]),_fc = fc_Var(_name,_n,_tc,_id),(((get_(_list,"find",T124),_T123 = T124,get_(_env,"vars",T125),call_cl(_T123,[T125,_fc,_])),(_env2 = _env,calc(""+_id,T126),_s2 = T126,call_cl(_debug,['[|]'("alias",'[|]'(_s2,[]))]));call_cl(_setup_var2,[_env,_env2,_name,_s2])))). % setup_var2 gen5_setup_var2(_env,_env2,_name,_s2,_upvals):-_upvals=[_Env,_Env,_debug,_Env,_var2,_list],(_fc = fc_Var(_name,_n,_tc),(((get_(_list,"find",T111),_T110 = T111,get_(_env,"vars",T112),call_cl(_T110,[T112,_fc,_])),(call_cl(_var2,[_env,_env2,_fc,_s2]));((get_(_Env,"prevs",T114),_T113 = T114,call_cl(_T113,[_env,_name,_fc])),(call_cl(_debug,['[|]'("prev-var",'[|]'(_name,'[|]'(_n,'[|]'(_tc,[]))))]),get_(_Env,"push_on",T116),_T115 = T116,call_cl(_T115,[_env,"upvals",fc_Id(_name,_tc),_env2]),calc("_"+_name,T117),_s2 = T117);_n = "out",calc("_"+_name,T118),_s2 = T118,_tc = '[|]'("Any",[]),get_(_Env,"push",T120),_T119 = T120,call_cl(_T119,[_env,_fc,_env2]))))). % var2 gen5_var2(_env,_env2,_fc,_s2,_upvals):-_upvals=[],(_fc = fc_Var(_name,_obj,_type),_env = _env2,((_obj = "args",calc("_"+_name,T108),_s2 = T108);(dif(_obj,"args"),calc("_"+_name,T109),_s2 = T109))). % map1 gen5_map1(_env,_l,_l2,_upvals):-_upvals=[_debug],((((true),(_l = '[|]'(_e1,_e2),_l2 = '[|]'(_s,_e4),!,get_(_env,"module",T101),calc("nb_getval("+T101,T102),calc(T102+"_",T103),calc(T103+_e1,T104),calc(T104+",_",T105),calc(T105+_e1,T106),calc(T106+"),",T107),_s = T107,call(gen5_map1(_env,_e2,_e4),_upvals));call_cl(_debug,['[|]'(2.0,'[|]'(_l,'[|]'(_l2,[])))]),_l = [],_l2 = []))). % new_env gen5_new_env(_e,_upvals):-_upvals=[_env_from],(call_cl(_env_from,[_e,[]])). % env_from gen5_env_from(_e,_prev,_upvals):-_upvals=[_set,_set,_set,_Env,_table],(get_(_table,"new",T91),_T90 = T91,call_cl(_T90,[_t1]),get_(_Env,"new",T93),_T92 = T93,call_cl(_T92,[_e1,_prev,_t1]),call_cl(_set,[_e1,"mode","fn",_e2]),call_cl(_set,[_e2,"ids",[],_e3]),call_cl(_set,[_e3,"g",[],_e])). % env_make gen5_env_make(_e,_e1,_upvals):-_upvals=[_set,_set],(call_cl(_set,[_e1,"vars",[],_e2]),call_cl(_set,[_e2,"prev",_e1,_e])). % varname gen5_varname(_l2,_sb,_upvals):-_upvals=[],(_l2 = fc_Id(_name,_),calc("_"+_name,T89),_sb = T89). % generate_cond_normal gen5_generate_cond_normal(_l,_code2,_env,_env2,_upvals):-_upvals=[_list,_generate_cond],(call_cl(_generate_cond,[_l,_l2,_env,_env2]),get_(_list,"join",T88),_T87 = T88,call_cl(_T87,[_l2,";",_code2])). % generate_cond_nest gen5_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]),calc("("+_sa,T54),calc(T54+")->",T55),calc(T55+"(",T56),calc(T56+_sb,T57),calc(T57+");",T58),calc(T58+"(",T59),calc(T59+_sc,T60),calc(T60+")",T61),_s2 = T61);((_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]),calc("("+_sa,T62),calc(T62+",",T63),calc(T63+_sb,T64),calc(T64+");",T65),calc(T65+"(",T66),calc(T66+_nsa,T67),calc(T67+",",T68),calc(T68+_sc,T69),calc(T69+")",T70),_s2 = T70);(_env1 = _env_b,calc("safeNot("+_sa,T71),calc(T71+")",T72),_nsa = T72,calc("("+_sa,T73),calc(T73+",",T74),calc(T74+_sb,T75),calc(T75+");",T76),calc(T76+"(",T77),calc(T77+_nsa,T78),calc(T78+",",T79),calc(T79+_sc,T80),calc(T80+")",T81),_s2 = T81)));(call_cl(_generate_body,[_c,_s,_env,_env1]),calc("("+_s,T82),calc(T82+";",T83),calc(T83+_sc,T84),calc(T84+")",T85),_s2 = T85))),call(gen5_generate_cond_nest(_tail,_sc,_env1,_env2,_opt),_upvals));((_l = []),(str(_s2,T86),T86 = "",_env2 = _env))))). % neg gen5_neg(_f,_f2,_upvals):-_upvals=[_io],(((_f = fc_Eq(_a,_b,_info),_f2 = fc_Neq(_a,_b));(dif(_f,fc_Eq(_a,_b,_info)),(_f = fc_Neq(_a,_b),_f2 = fc_Eq(_a,_b,_info));(dif(_f,fc_Neq(_a,_b)),(_f = fc([],"True"),_f2 = fc([],"False"));(dif(_f,fc([],"True")),(_f = fc([],"False"),_f2 = fc([],"True"));(dif(_f,fc([],"False")),(_f = fc_Inequality(_a,_b,_op,_info),((_op = "!=",_fn = "=");(dif(_op,"!="),(_op = "<",_fn = ">=");(dif(_op,"<"),(_op = "<=",_fn = ">");(dif(_op,"<="),(_op = ">",_fn = "<=");(dif(_op,">"),(_op = ">=",_fn = "<");(dif(_op,">="),throw("compiler error"))))))),_f2 = fc_Inequality(_a,_b,_fn,_info));(dif(_f,fc_Inequality(_a,_b,_op,_info)),get_(_io,"writeln",T53),_T52 = T53,call_cl(_T52,[_f]),false))))))). % generate_cond gen5_generate_cond(_l,_l2,_env,_env2,_upvals):-_upvals=[_generate_body],(((_l = [_c|_tail],call_cl(_generate_body,[_c,_s,_env,_env1]),calc("("+_s,T50),calc(T50+")",T51),_l2 = '[|]'(T51,_tail2),call(gen5_generate_cond(_tail,_tail2,_env1,_env2),_upvals));(dif(_l,[_c|_tail]),(_l = []),(_l2 = [],_env2 = _env)))). % push_var gen5_push_var(_env,_env2,_name,_type,_upvals):-_upvals=[_Env],(get_(_Env,"push",T49),_T48 = T49,call_cl(_T48,[_env,fc_Var(_name,"out",_type),_env2])). % push_types gen5_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(gen5_push_types(_env,_env_a,_tail,_t2),_upvals),_f1 = fc_Id(_name,_),get_(_Env,"push",T47),_T46 = T47,call_cl(_T46,[_env_a,fc_Var(_name,"args",_t1),_env2]));_l = [],_ts = [],_env2 = _env))). % extract_type_args gen5_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 gen5_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(gen5_extract_types(_env,_tail,_t2),_upvals));_l = [],_ts = []))). % send gen5_send(_a,_type,_upvals):-_upvals=[],(_a = [_type|_]). % extract_type_id gen5_extract_type_id(_env,_f,_type,_info,_upvals):-_upvals=[_is_functor,_custom_throw,_debug,_debug,_has],(_f = fc_Id(_name,_t1),((get_(_env,"vars",T43),call_cl(_has,[T43,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 gen5_is_functor(_name,_env,_upvals):-_upvals=[_list],(get_(_env,"fcs",T40),_fcs = T40,get_(_list,"find",T42),_T41 = T42,call_cl(_T41,[_fcs,fc_Var(_name,_n,_),_])). % sym gen5_sym(_c,_upvals):-_upvals=[_gensym],(call_cl(_gensym,["T",_c])). % genstr gen5_genstr(_o,_s2,_upvals):-_upvals=[_gensym],(call_cl(_gensym,["T",_s]),_o = fc_Id(_s,[]),calc("_"+_s,T39),_s2 = T39). % genvar gen5_genvar(_x,_upvals):-_upvals=[_gensym],(call_cl(_gensym,["T",_c]),_x = fc_Id(_c,[])). % gensym gen5_gensym(_prefix,_x,_upvals):-_upvals=[],(gensym(_prefix,_x)). % double_string gen5_double_string(_s1,_s2,_upvals):-_upvals=[_str,_string,_string],(get_(_string,"slice",T34),_T33 = T34,get_(_string,"size",T37),_T36 = T37,call_cl(_T36,[_s1,_T35]),{_T35-1.0=T38},call_cl(_T33,[_s1,1.0,T38,_sa]),call_cl(_str,[_sa,_s2])). % remove_double_string gen5_remove_double_string(_s1,_sa,_upvals):-_upvals=[_string,_string],(get_(_string,"slice",T28),_T27 = T28,get_(_string,"size",T31),_T30 = T31,call_cl(_T30,[_s1,_T29]),{_T29-1.0=T32},call_cl(_T27,[_s1,1.0,T32,_sa])). % str gen5_str(_s,_s1,_upvals):-_upvals=[_debug,_double_quote],(call_cl(_double_quote,[_c]),call_cl(_debug,['[|]'(_s,'[|]'(_c,[]))]),calc(_c+_s,T25),calc(T25+_c,T26),_s1 = T26). % double_quote gen5_double_quote(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T24),_T23 = T24,call_cl(_T23,[_c,34.0])). % single_quote gen5_single_quote(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T22),_T21 = T22,call_cl(_T21,[_c,39.0])). % custom_throw gen5_custom_throw(_msg,_info,_upvals):-_upvals=[],(((ground(_info))->(_info = fc_Info(_line,_col),calc("(line "+_line,T12),calc(T12+", col ",T13),calc(T13+_col,T14),calc(T14+") ",T15),calc(T15+_msg,T16),str(T16,T17),throw(T17));(throw(_msg)))). % debug_write gen5_debug_write(_x,_upvals):-_upvals=[_io],(get_(_io,"write",T3),_T2 = T3,call_cl(_T2,[_x]),true). % debug gen5_debug(_x,_upvals):-_upvals=[],(writeln_(_x),true). % main gen5(X):-creq1("io",_io,T1),call(T1,_io),_debug = clos([],gen5_debug),_debug_write = clos([_io],gen5_debug_write),creq1("logic",_logic,T4),call(T4,_logic),creq1("table",_table,T5),call(T5,_table),creq1("mutable",_mutable,T6),call(T6,_mutable),get_(_logic,"halt",T7),_halt = T7,creq1("env2",_Env,T8),call(T8,_Env),creq1("types2",_types,T9),call(T9,_types),creq1("list",_list,T10),call(T10,_list),creq1("string",_string,T11),call(T11,_string),_custom_throw = clos([],gen5_custom_throw),get_(_table,"set",T18),_set = T18,get_(_table,"get",T19),_get = T19,get_(_list,"has",T20),_has = T20,_single_quote = clos([_string],gen5_single_quote),_double_quote = clos([_string],gen5_double_quote),_str = clos([_debug,_double_quote],gen5_str),_remove_double_string = clos([_string,_string],gen5_remove_double_string),_double_string = clos([_str,_string,_string],gen5_double_string),_gensym = clos([],gen5_gensym),_genvar = clos([_gensym],gen5_genvar),_genstr = clos([_gensym],gen5_genstr),_sym = clos([_gensym],gen5_sym),_is_functor = clos([_list],gen5_is_functor),_extract_type_id = clos([_is_functor,_custom_throw,_debug,_debug,_has],gen5_extract_type_id),_send = clos([],gen5_send),_extract_types = clos([_extract_type,_extract_type],gen5_extract_types),_extract_type_args = clos([_extract_types,_extract_type,_extract_type,_extract_type],gen5_extract_type_args),_push_types = clos([_Env,_extract_type,_Env,_extract_type],gen5_push_types),_push_var = clos([_Env],gen5_push_var),_generate_cond = clos([_generate_body],gen5_generate_cond),_neg = clos([_io],gen5_neg),_generate_cond_nest = clos([_generate_body,_generate_body,_debug,_neg,_generate_body,_generate_body,_generate_body,_generate_body,_generate_body],gen5_generate_cond_nest),_generate_cond_normal = clos([_list,_generate_cond],gen5_generate_cond_normal),_varname = clos([],gen5_varname),_env_make = clos([_set,_set],gen5_env_make),_env_from = clos([_set,_set,_set,_Env,_table],gen5_env_from),_new_env = clos([_env_from],gen5_new_env),_map1 = clos([_debug],gen5_map1),_var2 = clos([],gen5_var2),_setup_var2 = clos([_Env,_Env,_debug,_Env,_var2,_list],gen5_setup_var2),_setup_var = clos([_setup_var2,_debug,_list,_Env],gen5_setup_var),_eq3 = clos([],gen5_eq3),_eq2 = clos([_eq3,_debug,_string,_string],gen5_eq2),_compare_relation = clos([_custom_throw,_io,_io,_io,_debug,_types,_debug,_extract_type_args],gen5_compare_relation),_extract_args = clos([_string,_term,_term],gen5_extract_args),_lambda6 = clos([],gen5_lambda6),_lambda4 = clos([],gen5_lambda4),_lambda5 = clos([_lambda4,_mutable],gen5_lambda5),_apply = clos([],gen5_apply),_is_num = clos([],gen5_is_num),_is_obj = clos([],gen5_is_obj),_get_type = clos([_has],gen5_get_type),_conversion = clos([_is_num,_is_num,_is_num],gen5_conversion).