% Table * % % module % env_prevs env2_env_prevs(_env,_a,_f,_upvals):-_upvals=[_env_find],(get_(_env,"prev",T29),_prev = T29,get_(_prev,"vars",T30),_vars = T30,call_cl(_env_find,[_vars,_a,_f])). % env_get env2_env_get(_env,_s,_t,_upvals):-_upvals=[],(get_(_env,_s,T28),_t = T28). % env_get_var env2_env_get_var(_env,_a,_f,_upvals):-_upvals=[_env_find],(get_(_env,"vars",T27),_vars = T27,call_cl(_env_find,[_vars,_a,_f])). % env_find env2_env_find(_l,_a,_f,_upvals):-_upvals=[],((((true),(_l = [_head|_],_head = fc_Var(_a,_,_),_f = _head);_l = [_|_tail],call(env2_env_find(_tail,_a,_f),_upvals)))). % env_push_if_not_found env2_env_push_if_not_found(_env,_f,_env2,_upvals):-_upvals=[_set,_list],(get_(_env,"vars",T24),_vars = T24,_f = fc_Var(_name,_,_),(((get_(_list,"has",T26),_T25 = T26,call_cl(_T25,[_vars,fc_Var(_name,_,_)])),(_env2 = _env);call_cl(_set,[_env,"vars",[_f|_vars],_env2])))). % env_push_var env2_env_push_var(_env,_env2,_f,_upvals):-_upvals=[_env_push_on],(call_cl(_env_push_on,[_env,"vars",_f,_env2])). % env_set env2_env_set(_env,_s,_x,_env2,_upvals):-_upvals=[_table],(get_(_table,"set",T23),_T22 = T23,call_cl(_T22,[_env,_s,_x,_env2])). % env_push_on env2_env_push_on(_env,_str,_f,_env2,_upvals):-_upvals=[_set,_get],(call_cl(_get,[_env,_str,_T21]),call_cl(_set,[_env,_str,[_f|_T21],_env2])). % update env2_update(_env,_name,_tc,_env2,_upvals):-_upvals=[_push,_debug,_push,_debug,_debug,_list,_debug,_env_vars],(_f2 = fc_Var(_name,_n2,_tc),_f = fc_Var(_name,_n2,_t1),call_cl(_env_vars,[_env,_l]),call_cl(_debug,["\n-"]),((get_(_list,"has",T20),_T19 = T20,call_cl(_T19,[_l,_f]))->(call_cl(_debug,[_l]),((_tc = _t1,_env2 = _env);(dif(_tc,_t1),call_cl(_debug,['[|]'("update",'[|]'(_name,'[|]'(_t1,'[|]'(_tc,[]))))]),call_cl(_push,[_env,_f2,_env2]))));(call_cl(_debug,['[|]'("-",'[|]'(_f,[]))]),((_n2 = "in",true);(dif(_n2,"in"),true)),_tc = _t1,call_cl(_push,[_env,_f,_env2])))). % push env2_push(_env,_f,_env2,_upvals):-_upvals=[_set,_env_vars],(call_cl(_env_vars,[_env,_T18]),call_cl(_set,[_env,"vars",[_f|_T18],_env2])). % env_functors env2_env_functors(_env,_x,_upvals):-_upvals=[],(get_(_env,"fcs",T17),_x = T17). % env_vars env2_env_vars(_env,_x,_upvals):-_upvals=[],(get_(_env,"vars",T16),_x = T16). % env_new env2_env_new(_env,_fcs,_prev,_upvals):-_upvals=[_env_init],(call_cl(_env_init,[_env,[],_fcs,[],_prev])). % env_init env2_env_init(_env,_vars,_fcs,_consts,_prev,_upvals):-_upvals=[_table,_get],((((call_cl(_get,[_prev,"types",_t])),(!,true);get_(_table,"new",T6),_T5 = T6,call_cl(_T5,[_t]))),new(T7),set_(T7,"vars",_vars,T9),set_(T9,"fcs",_fcs,T10),set_(T10,"types",_t,T11),set_(T11,"consts",_consts,T12),set_(T12,"upvals",[],T13),set_(T13,"branch",0.0,T14),set_(T14,"top",[],T15),set_(T15,"prev",_prev,T8),_env = T8,true). % get env2_get(_t,_o,_o2,_upvals):-_upvals=[_table],(get_(_table,"get",T4),_T3 = T4,call_cl(_T3,[_t,_o,_o2]),!). % set env2_set(_t,_o,_o2,_t2,_upvals):-_upvals=[_table],(get_(_table,"set",T2),_T1 = T2,call_cl(_T1,[_t,_o,_o2,_t2]),!). % pause env2_pause(_upvals):-_upvals=[],(read(_x)). % debug env2_debug(_x,_upvals):-_upvals=[],(true). % main env2(X):-_debug = clos([],env2_debug),_pause = clos([],env2_pause),creq("list",_list),creq("table",_table),_set = clos([_table],env2_set),_get = clos([_table],env2_get),_env_init = clos([_table,_get],env2_env_init),_env_new = clos([_env_init],env2_env_new),_env_vars = clos([],env2_env_vars),_env_functors = clos([],env2_env_functors),_push = clos([_set,_env_vars],env2_push),_update = clos([_push,_debug,_push,_debug,_debug,_list,_debug,_env_vars],env2_update),_env_push_on = clos([_set,_get],env2_env_push_on),_env_set = clos([_table],env2_env_set),_env_push_var = clos([_env_push_on],env2_env_push_var),_env_push_if_not_found = clos([_set,_list],env2_env_push_if_not_found),_env_find = clos([],env2_env_find),_env_get_var = clos([_env_find],env2_env_get_var),_env_get = clos([],env2_env_get),_env_prevs = clos([_env_find],env2_env_prevs),new(T31),set_(T31,"new",_env_new,T33),set_(T33,"vars",_env_vars,T34),set_(T34,"push_on",_env_push_on,T35),set_(T35,"push",_push,T36),set_(T36,"remove",_env_remove,T37),set_(T37,"update",_update,T38),set_(T38,"functors",_env_functors,T39),set_(T39,"size",_env_size,T40),set_(T40,"prevs",_env_prevs,T41),set_(T41,"get_var",_env_get_var,T42),set_(T42,"init",_env_init,T43),set_(T43,"get",_env_get,T44),set_(T44,"set",_env_set,T45),set_(T45,"push_var",_push_var,T32),_t14 = T32,X=_t14.