% Any % % module % main types_main(_x,_upvals):-_upvals=[_string_to_type,_string_to_type,_string_to_type,_string_to_type,_string_to_type,_string_to_type],(call_cl(_string_to_type,["rel (Any)",_T32]),writeln_(_T32),call_cl(_string_to_type,["Relation Any",_T33]),writeln_(_T33),call_cl(_string_to_type,["Relation (Functor Any)",_T34]),writeln_(_T34),call_cl(_string_to_type,["Rel (Rel Num Str) Str Num",_T35]),writeln_(_T35),call_cl(_string_to_type,["Rel Rel Num Str Num",_T36]),writeln_(_T36),call_cl(_string_to_type,["Rel (Rel Num (Rel Str) Num) Str Num",_T37]),writeln_(_T37)). % has_type types_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 types_parse_type(_s,_t,_upvals):-_upvals=[_string],(get_(_string,"split",T31),_T30 = T31,call_cl(_T30,[_s," ",_t])). % get_type types_get_type(_env,_x,_s,_upvals):-_upvals=[],(_s = "Relation"). % string_to_type types_string_to_type(_s,_type,_upvals):-_upvals=[__string_to_type],(writeln_('[|]'("-",'[|]'(_s,'[|]'(_type,[])))),call_cl(__string_to_type,[_s,0.0,_,_type])). % _string_to_type types__string_to_type(_s,_i,_final,_type,_upvals):-_upvals=[_string,_string,_string,_string,_string,_string,_match_until_space],(writeln_('[|]'("-",'[|]'(_s,'[|]'(_i,[])))),call_cl(_match_until_space,[_s,_i,_j]),writeln_('[|]'("-",'[|]'(_j,[]))),(((get_(_string,"at",T13),_T12 = T13,{_j-1.0=T14},call_cl(_T12,[_s,T14,_c])),(_c = ")",get_(_string,"slice",T16),_T15 = T16,{_j-1.0=T17},call_cl(_T15,[_s,_i,T17,_s1]),_type = '[|]'(_s1,[]),_final = _j);get_(_string,"slice",T19),_T18 = T19,call_cl(_T18,[_s,_i,_j,_s1]),(((get_(_string,"size",T21),_T20 = T21,call_cl(_T20,[_s,_j])),(_type = '[|]'(_s1,[]),_final = _j);get_(_string,"at",T23),_T22 = T23,calc(_j+1.0,T24),call_cl(_T22,[_s,T24,_c]),((_c = "(",calc(_j+2.0,T25),call(types__string_to_type(_s,T25,_final0,_t0),_upvals),(((get_(_string,"size",T27),_T26 = T27,call_cl(_T26,[_s,_final0])),(_type = [_s1|'[|]'(_t0,[])]);calc(_final0+1.0,T28),call(types__string_to_type(_s,T28,_final,_t1),_upvals),_t1 = '[|]'(_a,_b),_type = [_s1|[_t0|['[|]'(_a,[])|_b]]])));(dif(_c,"("),calc(_j+1.0,T29),call(types__string_to_type(_s,T29,_final,_t0),_upvals),_t0 = '[|]'(_a,_b),_type = [_s1|['[|]'(_a,[])|_b]]))))))). % match_until_space types_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(types_match_until_space(_s,T11,_i2),_upvals))))). % strictest_type types_strictest_type(_t1,_t2,_t3,_upvals):-_upvals=[_strict_type2,_strict_type_atomic],(((_t1 = '[|]'("Any",[]),_t3 = _t2);(dif(_t1,'[|]'("Any",[])),(_t2 = '[|]'("Any",[]),_t3 = _t1);(dif(_t2,'[|]'("Any",[])),_t1 = '[|]'(_a1,_b1),_t2 = '[|]'(_a2,_b2),call_cl(_strict_type_atomic,[_a1,_a2,_a3]),((_b1 = [],_t3 = [_a3|[]]);(dif(_b1,[]),(_b2 = [],_t3 = [_a3|[]]);(dif(_b2,[]),call_cl(_strict_type2,[_b1,_b2,_b3]),_t3 = [_a3|_b3]))))))). % strict_type types_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 = [],_t3 = [_a3|[]]);(dif(_b1,[]),(_b2 = [],_t3 = [_a3|[]]);(dif(_b2,[]),call_cl(_strict_type2,[_b1,_b2,_b3]),_t3 = [_a3|_b3])))). % strict_type2 types_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(types_strict_type2(_b1,_b2,_b3),_upvals),_t3 = [_a3|_b3]))). % strict_type_atomic types_strict_type_atomic(_ta,_tb,_tc,_upvals):-_upvals=[],(((_ta = "Any",_tc = _tb);(dif(_ta,"Any"),_tc = _ta)),!). % compare_types types_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 types_compare_types2(_t1,_t2,_upvals):-_upvals=[_compare_types],((((true),(_t1 = [],_t2 = []);_t1 = '[|]'(_a1,_b1),_t2 = '[|]'(_a2,_b2),call_cl(_compare_types,[_a1,_a2]),call(types_compare_types2(_b1,_b2),_upvals)))). % compare_types_atomic types_compare_types_atomic(_s1,_s2,_upvals):-_upvals=[],(_s1 = "Any";_s2 = "Any";_s1 = _s2). % type_to_string types_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 types_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(types_type_to_string2(_b,_s2),_upvals),call_cl(_str,[_s1,_s2,_s])))). % str types_str(_s1,_s2,_s,_upvals):-_upvals=[],(((_s2 = "",_s = _s1);(dif(_s2,""),calc(_s1+" ",T5),calc(T5+_s2,T6),_s = T6))). % type_to_string3 types_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))). % main types(X):-creq("string",_string),_type_to_string3 = clos([_type_to_string2],types_type_to_string3),_str = clos([],types_str),_type_to_string2 = clos([_str,_type_to_string3],types_type_to_string2),_type_to_string = clos([_str,_type_to_string2],types_type_to_string),_compare_types_atomic = clos([],types_compare_types_atomic),_compare_types2 = clos([_compare_types],types_compare_types2),_compare_types = clos([_compare_types2,_compare_types_atomic],types_compare_types),_strict_type_atomic = clos([],types_strict_type_atomic),_strict_type2 = clos([_strict_type],types_strict_type2),_strict_type = clos([_strict_type2,_strict_type_atomic],types_strict_type),_strictest_type = clos([_strict_type2,_strict_type_atomic],types_strictest_type),_match_until_space = clos([_string,_string],types_match_until_space),__string_to_type = clos([_string,_string,_string,_string,_string,_string,_match_until_space],types__string_to_type),_string_to_type = clos([__string_to_type],types_string_to_type),_get_type = clos([],types_get_type),_parse_type = clos([_string],types_parse_type),_has_type = clos([_compare_types,_parse_type,_get_type],types_has_type),_main = clos([_string_to_type,_string_to_type,_string_to_type,_string_to_type,_string_to_type,_string_to_type],types_main),new(T38),set_(T38,"compare_types",_compare_types,T40),set_(T40,"strict_type",_strictest_type,T41),set_(T41,"strictest_type",_strictest_type,T42),set_(T42,"string_to_type",_string_to_type,T43),set_(T43,"type_to_string",_type_to_string,T39),_t = T39,X=_t.