% Table * % % module % main types2_main(_x,_upvals):-_upvals=[_debug,_string_to_type,_debug,_string_to_type,_debug,_string_to_type,_debug,_string_to_type,_debug,_string_to_type,_debug,_string_to_type],(call_cl(_string_to_type,["rel (Any)",_T20]),call_cl(_debug,[_T20]),call_cl(_string_to_type,["Relation Any",_T21]),call_cl(_debug,[_T21]),call_cl(_string_to_type,["Relation (Functor Any)",_T22]),call_cl(_debug,[_T22]),call_cl(_string_to_type,["Rel (Rel Num Str) Str Num",_T23]),call_cl(_debug,[_T23]),call_cl(_string_to_type,["Rel Rel Num Str Num",_T24]),call_cl(_debug,[_T24]),call_cl(_string_to_type,["Rel (Rel Num (Rel Str) Num) Str Num",_T25]),call_cl(_debug,[_T25])). % has_type types2_has_type(_env,_x,_s,_upvals):-_upvals=[_compare_types,_parse_type,_get_type],(call_cl(_get_type,[_env,_x,_type1]),call_cl(_parse_type,[_s,_type2]),call_cl(_compare_types,[_type1,_type2])). % parse_type types2_parse_type(_s,_t,_upvals):-_upvals=[_string],(get_(_string,"split",T19),_T18 = T19,call_cl(_T18,[_s," ",_t])). % get_type types2_get_type(_env,_x,_s,_upvals):-_upvals=[],(_s = "Relation"). % string_to_type types2_string_to_type(_s,_type,_upvals):-_upvals=[__string_to_type],(call_cl(__string_to_type,[_s,0.0,_,_type])). % _string_to_type types2__string_to_type(_s,_i,_final,_type,_upvals):-_upvals=[_string,_string,_string,_string,_string,_string,_debug,_match_until_space],(call_cl(_match_until_space,[_s,_i,_j]),call_cl(_debug,[_j]),(((get_(_string,"at",T7),_T6 = T7,call_cl(_T6,[_s,_j-1.0,")"])),(get_(_string,"slice",T9),_T8 = T9,call_cl(_T8,[_s,_i,_j-1.0,_s1]),_type = '[|]'(_s1,[]),_final = _j);get_(_string,"slice",T11),_T10 = T11,call_cl(_T10,[_s,_i,_j,_s1]),(((get_(_string,"size",T13),_T12 = T13,call_cl(_T12,[_s,_j])),(_type = '[|]'(_s1,[]),_final = _j);get_(_string,"at",T15),_T14 = T15,call_cl(_T14,[_s,_j+1.0,_c]),((_c = "(",call(types2__string_to_type(_s,_j+2.0,_final0,_t0),_upvals),(((get_(_string,"size",T17),_T16 = T17,call_cl(_T16,[_s,_final0])),(_type = [_s1|'[|]'(_t0,[])]);call(types2__string_to_type(_s,_final0+1.0,_final,_t1),_upvals),_t1 = '[|]'(_a,_b),_type = [_s1|[_t0|['[|]'(_a,[])|_b]]])));(dif(_c,"("),call(types2__string_to_type(_s,_j+1.0,_final,_t0),_upvals),_t0 = '[|]'(_a,_b),_type = [_s1|['[|]'(_a,[])|_b]]))))))). % toString types2_toString(_l,_s,_upvals):-_upvals=[],(_l = '[|]'(_a,_b),str(_a,T5),_s0 = T5,((is_assoc(_b))->(_s = _s0+" *");(_s = _s0))). % match_until_space types2_match_until_space(_s,_i,_i2,_upvals):-_upvals=[_string,_string],(((get_(_string,"size",T2),_T1 = T2,call_cl(_T1,[_s,_i]))->(_i = _i2);((get_(_string,"at",T4),_T3 = T4,call_cl(_T3,[_s,_i,_c]))->(_c = " ",_i = _i2);(call(types2_match_until_space(_s,_i+1.0,_i2),_upvals))))). % strictest_type types2_strictest_type(_t1,_t2,_t3,_upvals):-_upvals=[_strict_type2,_debug,_strict_type_atomic,_is_dict],(((_t1 = '[|]'("Any",[]))->(_t3 = _t2);((_t2 = '[|]'("Any",[]))->(_t3 = _t1);((call_cl(_is_dict,[_t1]))->(_t3 = _t2);(_t1 = '[|]'(_a1,_b1),_t2 = '[|]'(_a2,_b2),call_cl(_strict_type_atomic,[_a1,_a2,_a3]),call_cl(_debug,[_a3]),((_b1 = [])->(_t3 = '[|]'(_a3,_b2));((_b2 = [])->(_t3 = '[|]'(_a3,_b1));(call_cl(_strict_type2,[_b1,_b2,_b3]),_t3 = '[|]'(_a3,_b3))))))))). % strict_type types2_strict_type(_t1,_t2,_t3,_upvals):-_upvals=[_strict_type2,_strict_type_atomic],(_t1 = '[|]'(_a1,_b1),_t2 = '[|]'(_a2,_b2),call_cl(_strict_type_atomic,[_a1,_a2,_a3]),((_b1 = [];_b2 = [])->(_t3 = '[|]'(_a3,[]));(call_cl(_strict_type2,[_b1,_b2,_b3]),_t3 = [_a3|_b3]))). % strict_type2 types2_strict_type2(_t1,_t2,_t3,_upvals):-_upvals=[_strict_type],(((_t1 = [],_t2 = [])->(_t3 = []);(_t1 = '[|]'(_a1,_b1),_t2 = '[|]'(_a2,_b2),call_cl(_strict_type,[_a1,_a2,_a3]),call(types2_strict_type2(_b1,_b2,_b3),_upvals),_t3 = [_a3|_b3]))). % strict_type_atomic types2_strict_type_atomic(_t1,_t2,_tc,_upvals):-_upvals=[],(((_t1 = "Any",_tc = _t2);(dif(_t1,"Any"),(_t1 = '[|]'("Object",_),_tc = _t1);(dif(_t1,'[|]'("Object",_)),(_t2 = '[|]'("Object",_),_tc = _t2);(dif(_t2,'[|]'("Object",_)),_tc = _t1))))). % compare_types types2_compare_types(_t1,_t2,_upvals):-_upvals=[_compare_types2,_compare_types_atomic],(_t1 = '[|]'(_a1,_b1),_t2 = '[|]'(_a2,_b2),call_cl(_compare_types_atomic,[_a1,_a2]),(((_b1 = [];_b2 = []),(true);call_cl(_compare_types2,[_b1,_b2])))). % compare_types2 types2_compare_types2(_t1,_t2,_upvals):-_upvals=[_compare_types],((((true),(_t1 = [],_t2 = []);_t1 = '[|]'(_a1,_b1),_t2 = '[|]'(_a2,_b2),call_cl(_compare_types,[_a1,_a2]),call(types2_compare_types2(_b1,_b2),_upvals)))). % compare_types_atomic types2_compare_types_atomic(_s1,_s2,_upvals):-_upvals=[_inherit,_inherit],(_s1 = "Any";_s2 = "Any";_s1 = _s2;call_cl(_inherit,[_s1,_s2]);call_cl(_inherit,[_s2,_s1])). % is_dict types2_is_dict(_t,_upvals):-_upvals=[_inherit,_debug,_debug],(call_cl(_debug,[_t]),_t = '[|]'(_a,_b1),call_cl(_debug,[_a]),((call_cl(_inherit,[_a,"Table"]);_a = "Table",true);(safeNot(call_cl(_inherit,[_a,"Table"]);_a = "Table"),false))). % inherit types2_inherit(_a,_b,_upvals):-_upvals=[],((((true),(_a = "Object",_b = "Table");_a = "Real",_b = "Number"))). % type_to_string types2_type_to_string(_t,_s,_upvals):-_upvals=[_str,_type_to_string2],(_t = '[|]'(_a,_b),_s1 = _a,call_cl(_type_to_string2,[_b,_s2]),str2(X2, _s),call_cl(_str,[_s1,_s2,X2])). % type_to_string2 types2_type_to_string2(_t,_s,_upvals):-_upvals=[_str,_type_to_string3],(((_t = [],_s = "");(dif(_t,[]),_t = '[|]'(_a,_b),call_cl(_type_to_string3,[_a,_s1]),call(types2_type_to_string2(_b,_s2),_upvals),str2(X1, _s),call_cl(_str,[_s1,_s2,X1])))). % str types2_str(_s1,_s2,_s,_upvals):-_upvals=[],(((_s2 = "",_s = _s1);(dif(_s2,""),_s = _s1+" "+_s2))). % type_to_string3 types2_type_to_string3(_t,_s,_upvals):-_upvals=[_type_to_string2],(_t = '[|]'(_s1,_b),call_cl(_type_to_string2,[_b,_s2]),((_s2 = "",_s = _s1);(dif(_s2,""),_s = "("+_s1+" "+_s2+")"))). % debug types2_debug(_x,_upvals):-_upvals=[],(true). % main types2(X):-_debug = clos([],types2_debug),creq("string",_string),_type_to_string3 = clos([_type_to_string2],types2_type_to_string3),_str = clos([],types2_str),_type_to_string2 = clos([_str,_type_to_string3],types2_type_to_string2),_type_to_string = clos([_str,_type_to_string2],types2_type_to_string),_inherit = clos([],types2_inherit),_is_dict = clos([_inherit,_debug,_debug],types2_is_dict),_compare_types_atomic = clos([_inherit,_inherit],types2_compare_types_atomic),_compare_types2 = clos([_compare_types],types2_compare_types2),_compare_types = clos([_compare_types2,_compare_types_atomic],types2_compare_types),_strict_type_atomic = clos([],types2_strict_type_atomic),_strict_type2 = clos([_strict_type],types2_strict_type2),_strict_type = clos([_strict_type2,_strict_type_atomic],types2_strict_type),_strictest_type = clos([_strict_type2,_debug,_strict_type_atomic,_is_dict],types2_strictest_type),_match_until_space = clos([_string,_string],types2_match_until_space),_toString = clos([],types2_toString),__string_to_type = clos([_string,_string,_string,_string,_string,_string,_debug,_match_until_space],types2__string_to_type),_string_to_type = clos([__string_to_type],types2_string_to_type),_get_type = clos([],types2_get_type),_parse_type = clos([_string],types2_parse_type),_has_type = clos([_compare_types,_parse_type,_get_type],types2_has_type),_main = clos([_debug,_string_to_type,_debug,_string_to_type,_debug,_string_to_type,_debug,_string_to_type,_debug,_string_to_type,_debug,_string_to_type],types2_main),new(T26),set_(T26,"compare_types",_compare_types,T28),set_(T28,"strict_type",_strictest_type,T29),set_(T29,"strictest_type",_strictest_type,T30),set_(T30,"string_to_type",_string_to_type,T31),set_(T31,"to_string",_toString,T32),set_(T32,"is_num",_is_num,T27),_t = T27,X=_t.