%env_size Any;t14 Any;env_prevs Relation Any Any Any;env_prevs Relation;env_get Relation Any Any Any;env_get Relation;env_get_var Relation Any Any Any;env_get_var Relation;env_find Relation Any Any Any;env_find Relation;env_push_if_not_found Relation Any Any Any;env_push_if_not_found Relation;env_push_var Relation Any Any Any;env_push_var Relation;env_set Relation Any Any Any Any;env_set Relation;env_push_on Relation Any String Any Any;env_push_on Relation;debug Relation Any;debug Relation;env_update Relation Any Any Any;env_update Relation;env_push Relation Any Any Any;env_push Relation;env_functors Relation Any Any;env_functors Relation;env_vars Relation Any Any;env_vars Relation;env_remove Relation Any Any Any;env_remove Relation;remove Relation Functor Any Any;remove Relation;env_new Relation Any Any Any;env_new Relation;env_init Relation Any Any Any Any Any;env_init Relation;get Relation Any Any Any;get Relation;set Relation Any Any Any Any;set Relation;pause Relation;pause Relation %Lib Functor;Var Functor;F2 Functor;F Functor;Cons Functor % module % env_prevs env_env_prevs(_env,_a,_f,_upvals):-_upvals=[_env_find],(get_(_env,"prev",T25),_prev = T25,get_(_prev,"vars",T26),_vars = T26,call_cl(_env_find,[_vars,_a,_f])). % env_get env_env_get(_env,_s,_t,_upvals):-_upvals=[],(get_(_env,_s,T24),_t = T24). % env_get_var env_env_get_var(_env,_a,_f,_upvals):-_upvals=[_env_find],(get_(_env,"vars",T23),_vars = T23,call_cl(_env_find,[_vars,_a,_f])). % env_find env_env_find(_l,_a,_f,_upvals):-_upvals=[],((((true),(_l = [_head|_],_head = fc_Var(_a,_,_),_f = _head);_l = [_|_tail],call(env_env_find(_tail,_a,_f),_upvals)))). % env_push_if_not_found env_env_push_if_not_found(_env,_f,_env2,_upvals):-_upvals=[_set,_list],(get_(_env,"vars",T20),_vars = T20,_f = fc_Var(_name,_,_),(((get_(_list,"has",T22),_T21 = T22,call_cl(_T21,[_vars,fc_Var(_name,_,_)])),(_env2 = _env);call_cl(_set,[_env,"vars",[_f|_vars],_env2])))). % env_push_var env_env_push_var(_env,_env2,_f,_upvals):-_upvals=[_env_push_on],(call_cl(_env_push_on,[_env,"vars",_f,_env2])). % env_set env_env_set(_env,_s,_x,_env2,_upvals):-_upvals=[_table],(get_(_table,"set",T19),_T18 = T19,call_cl(_T18,[_env,_s,_x,_env2])). % env_push_on env_env_push_on(_env,_str,_f,_env2,_upvals):-_upvals=[_set,_get],(call_cl(_get,[_env,_str,X2]),call_cl(_set,[_env,_str,[_f|X2],_env2])). % debug env_debug(_x,_upvals):-_upvals=[],(writeln_(_x)). % env_update env_env_update(_env,_f,_env2,_upvals):-_upvals=[_env_push,_env_remove],(call_cl(_env_remove,[_env,_f,_env1]),call_cl(_env_push,[_env1,_f,_env2])). % env_push env_env_push(_env,_f,_env2,_upvals):-_upvals=[_set,_env_vars],(call_cl(_env_vars,[_env,X1]),call_cl(_set,[_env,"vars",[_f|X1],_env2])). % env_functors env_env_functors(_env,_x,_upvals):-_upvals=[],(get_(_env,"fcs",T17),_x = T17). % env_vars env_env_vars(_env,_x,_upvals):-_upvals=[],(get_(_env,"vars",T16),_x = T16). % env_remove env_env_remove(_env,_n,_env2,_upvals):-_upvals=[_set,_remove,_get],(call_cl(_get,[_env,"vars",_l]),call_cl(_remove,[_l,_n,_l2]),call_cl(_set,[_env,"vars",_l2,_env2])). % remove env_remove(_l,_n,_l2,_upvals):-_upvals=[],((((true),(_l = [],_l2 = _l);_l = '[|]'(_e,_tail),((_e = fc_Var(_,_n,_),_l2 = _tail);(dif(_e,fc_Var(_,_n,_)),_l2 = '[|]'(_e,_l3),call(env_remove(_tail,_n,_l3),_upvals)))))). % env_new env_env_new(_env,_fcs,_prev,_upvals):-_upvals=[_env_init],(call_cl(_env_init,[_env,[],_fcs,[],_prev])). % env_init env_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,T14),set_(T14,"top",[],T15),set_(T15,"prev",_prev,T8),_env = T8,true). % get env_get(_t,_o,_o2,_upvals):-_upvals=[_table],(get_(_table,"get",T4),_T3 = T4,call_cl(_T3,[_t,_o,_o2]),!). % set env_set(_t,_o,_o2,_t2,_upvals):-_upvals=[_table],(get_(_table,"set",T2),_T1 = T2,call_cl(_T1,[_t,_o,_o2,_t2]),!). % pause env_pause(_upvals):-_upvals=[],(read(_x)). % main env(X):-_pause = clos([],env_pause),creq("list",_list),creq("table",_table),_set = clos([_table],env_set),_get = clos([_table],env_get),_env_init = clos([_table,_get],env_env_init),_env_new = clos([_env_init],env_env_new),_remove = clos([],env_remove),_env_remove = clos([_set,_remove,_get],env_env_remove),_env_vars = clos([],env_env_vars),_env_functors = clos([],env_env_functors),_env_push = clos([_set,_env_vars],env_env_push),_env_update = clos([_env_push,_env_remove],env_env_update),_debug = clos([],env_debug),_env_push_on = clos([_set,_get],env_env_push_on),_env_set = clos([_table],env_env_set),_env_push_var = clos([_env_push_on],env_env_push_var),_env_push_if_not_found = clos([_set,_list],env_env_push_if_not_found),_env_find = clos([],env_env_find),_env_get_var = clos([_env_find],env_env_get_var),_env_get = clos([],env_env_get),_env_prevs = clos([_env_find],env_env_prevs),new(T27),set_(T27,"new",_env_new,T29),set_(T29,"vars",_env_vars,T30),set_(T30,"push_on",_env_push_on,T31),set_(T31,"push",_env_push,T32),set_(T32,"remove",_env_remove,T33),set_(T33,"update",_env_update,T34),set_(T34,"functors",_env_functors,T35),set_(T35,"size",_env_size,T36),set_(T36,"prevs",_env_prevs,T37),set_(T37,"get_var",_env_get_var,T38),set_(T38,"init",_env_init,T39),set_(T39,"get",_env_get,T40),set_(T40,"set",_env_set,T41),set_(T41,"push_var",_push_var,T28),_t14 = T28,X=_t14.