% Table * %Cons Functor % module % main types3_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)",_T34]),call_cl(_debug,[_T34]),call_cl(_string_to_type,["Relation Any",_T35]),call_cl(_debug,[_T35]),call_cl(_string_to_type,["Relation (Functor Any)",_T36]),call_cl(_debug,[_T36]),call_cl(_string_to_type,["Rel (Rel Num Str) Str Num",_T37]),call_cl(_debug,[_T37]),call_cl(_string_to_type,["Rel Rel Num Str Num",_T38]),call_cl(_debug,[_T38]),call_cl(_string_to_type,["Rel (Rel Num (Rel Str) Num) Str Num",_T39]),call_cl(_debug,[_T39])). % has_type types3_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 types3_parse_type(_s,_t,_upvals):-_upvals=[_string],(get_(_string,"split",T33),_T32 = T33,call_cl(_T32,[_s," ",_t])). % get_type types3_get_type(_env,_x,_s,_upvals):-_upvals=[],(_s = "Relation"). % string_to_type types3_string_to_type(_s,_type,_upvals):-_upvals=[__string_to_type],(call_cl(__string_to_type,[_s,0.0,_,_type])). % _string_to_type types3__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",T15),_T14 = T15,{_j-1.0=T16},call_cl(_T14,[_s,T16,")"])),(get_(_string,"slice",T18),_T17 = T18,{_j-1.0=T19},call_cl(_T17,[_s,_i,T19,_s1]),_type = '[|]'(_s1,[]),_final = _j);get_(_string,"slice",T21),_T20 = T21,call_cl(_T20,[_s,_i,_j,_s1]),(((get_(_string,"size",T23),_T22 = T23,call_cl(_T22,[_s,_j])),(_type = '[|]'(_s1,[]),_final = _j);get_(_string,"at",T25),_T24 = T25,calc(_j+1.0,T26),call_cl(_T24,[_s,T26,_c]),((_c = "(",calc(_j+2.0,T27),call(types3__string_to_type(_s,T27,_final0,_t0),_upvals),(((get_(_string,"size",T29),_T28 = T29,call_cl(_T28,[_s,_final0])),(_type = [_s1|'[|]'(_t0,[])]);calc(_final0+1.0,T30),call(types3__string_to_type(_s,T30,_final,_t1),_upvals),_t1 = '[|]'(_a,_b),_type = [_s1|[_t0|['[|]'(_a,[])|_b]]])));(dif(_c,"("),calc(_j+1.0,T31),call(types3__string_to_type(_s,T31,_final,_t0),_upvals),_t0 = '[|]'(_a,_b),_type = [_s1|['[|]'(_a,[])|_b]]))))))). % toString types3_toString(_l,_s,_upvals):-_upvals=[],(_l = '[|]'(_a,_b),str(_a,T12),_s0 = T12,((is_assoc(_b))->(calc(_s0+" *",T13),_s = T13);(_s = _s0))). % match_until_space types3_match_until_space(_s,_i,_i2,_upvals):-_upvals=[_string,_string],((((get_(_string,"size",T8),_T7 = T8,call_cl(_T7,[_s,_i])),(_i = _i2);((get_(_string,"at",T10),_T9 = T10,call_cl(_T9,[_s,_i,_c])),(_c = " ",_i = _i2);calc(_i+1.0,T11),call(types3_match_until_space(_s,T11,_i2),_upvals))))). % strictest_type types3_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 types3_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 types3_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(types3_strict_type2(_b1,_b2,_b3),_upvals),_t3 = [_a3|_b3]))). % strict_type_atomic types3_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 types3_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 types3_compare_types2(_t1,_t2,_upvals):-_upvals=[_compare_types],((((true),(_t1 = [],_t2 = []);_t1 = '[|]'(_a1,_b1),_t2 = '[|]'(_a2,_b2),call_cl(_compare_types,[_a1,_a2]),call(types3_compare_types2(_b1,_b2),_upvals)))). % compare_types_atomic types3_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 types3_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);false))). % inherit types3_inherit(_a,_b,_upvals):-_upvals=[],((((true),(_a = "Object",_b = "Table");_a = "Real",_b = "Number"))). % type_to_string types3_type_to_string(_t,_s,_upvals):-_upvals=[_str,_type_to_string2],(_t = '[|]'(_a,_b),_s1 = _a,call_cl(_type_to_string2,[_b,_s2]),call_cl(_str,[_s1,_s2,_s])). % type_to_string2 types3_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(types3_type_to_string2(_b,_s2),_upvals),call_cl(_str,[_s1,_s2,_s])))). % str types3_str(_s1,_s2,_s,_upvals):-_upvals=[],(((_s2 = "",_s = _s1);(dif(_s2,""),calc(_s1+" ",T5),calc(T5+_s2,T6),_s = T6))). % type_to_string3 types3_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,""),calc("("+_s1,T1),calc(T1+" ",T2),calc(T2+_s2,T3),calc(T3+")",T4),_s = T4))). % debug types3_debug(_x,_upvals):-_upvals=[],(writeln_(_x),true). % main types3(X):-_debug = clos([],types3_debug),creq("string",_string),_type_to_string3 = clos([_type_to_string2],types3_type_to_string3),_str = clos([],types3_str),_type_to_string2 = clos([_str,_type_to_string3],types3_type_to_string2),_type_to_string = clos([_str,_type_to_string2],types3_type_to_string),_inherit = clos([],types3_inherit),_is_dict = clos([_inherit,_debug,_debug],types3_is_dict),_compare_types_atomic = clos([_inherit,_inherit],types3_compare_types_atomic),_compare_types2 = clos([_compare_types],types3_compare_types2),_compare_types = clos([_compare_types2,_compare_types_atomic],types3_compare_types),_strict_type_atomic = clos([],types3_strict_type_atomic),_strict_type2 = clos([_strict_type],types3_strict_type2),_strict_type = clos([_strict_type2,_strict_type_atomic],types3_strict_type),_strictest_type = clos([_strict_type2,_debug,_strict_type_atomic,_is_dict],types3_strictest_type),_match_until_space = clos([_string,_string],types3_match_until_space),_toString = clos([],types3_toString),__string_to_type = clos([_string,_string,_string,_string,_string,_string,_debug,_match_until_space],types3__string_to_type),_string_to_type = clos([__string_to_type],types3_string_to_type),_get_type = clos([],types3_get_type),_parse_type = clos([_string],types3_parse_type),_has_type = clos([_compare_types,_parse_type,_get_type],types3_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],types3_main),new(T40),set_(T40,"compare_types",_compare_types,T42),set_(T42,"strict_type",_strictest_type,T43),set_(T43,"strictest_type",_strictest_type,T44),set_(T44,"string_to_type",_string_to_type,T45),set_(T45,"to_string",_toString,T46),set_(T46,"is_num",_is_num,T41),_t = T41,X=_t,call_cl(_string_to_type,["Rel",_T47]),call_cl(_debug,[_T47]).