%0 Table {_add.Relation Any Any Any;at.Relation Any Any Any;code.Relation String Any;concat.Relation String String String;find.Relation String String Any;findIndex.Relation String String Any Any;first.Relation String String;get.Relation String Any String;has.Relation String String;length.Relation String Any;lessOrEqual.Relation String String;lower.Relation String String;rest.Relation String String;size.Relation String Any;slice.Relation String Any Any String;split.Relation String String Any;toCodes.Relation String Functor;upper.Relation String String} % % module % main string_main(_upvals):-_upvals=[_last,_size],(_s = "sdf",call_cl(_size,[_s,_s2]),writeln_(_s2),call_cl(_last,[_s,_T27]),writeln_(_T27)). % 12 string_12(_s1,_s2,_s3,_upvals):-_upvals=[_concat],(call_cl(_concat,[_s1,_s2,_s3])). % 11 string_11(_S1,_S2,_upvals):-_upvals=[],(s_le(_S1,_S2)). % 10 string_10(_s,_n,_upvals):-_upvals=[],(int(_n,X4),string_codes(_s,'[|]'(X4,[]))). % 9 string_9(_s,_l,_upvals):-_upvals=[],(string_codes(_s,_l)). % 8 string_8(_s,_sep,_l,_upvals):-_upvals=[_splitIndex],(call_cl(_splitIndex,[_s,_sep,0.0,_l])). % 7 string_7(_s1,_s2,_upvals):-_upvals=[],(string_lower(_s1,_s2)). % 6 string_6(_s1,_s2,_upvals):-_upvals=[],(string_upper(_s1,_s2)). % 5 string_5(_s1,_s2,_upvals):-_upvals=[_findIndex],(call_cl(_findIndex,[_s1,_s2,0.0,_])). % 4 string_4(_s1,_s2,_pos,_upvals):-_upvals=[_findIndex],(call_cl(_findIndex,[_s1,_s2,0.0,_pos])). % 3 string_3(_S1,_S2,_upvals):-_upvals=[],(s_size(_S1,_L),s_slice(_S1,1.0,_L,_S2)). % 2 string_2(_S1,_S2,_upvals):-_upvals=[],(s_at(_S1,0.0,_S2)). % at string_at(_s,_x,_c,_upvals):-_upvals=[_get],(call_cl(_get,[_s,_x,_c])). % last string_last(_s,_c,_upvals):-_upvals=[_get,_size],(call_cl(_size,[_s,_n]),{_n-1.0=T7},call_cl(_get,[_s,T7,_c])). % concat string_concat(_s1,_s2,_s3,_upvals):-_upvals=[],(calc(_s2+_s1,T6),_s3 = T6). % splitIndex string_splitIndex(_s,_sep,_i,_l,_upvals):-_upvals=[_slice,_size,_slice,_size,_findIndex],((((call_cl(_findIndex,[_s,_sep,_i,_pos])),(calc(_pos+1.0,T5),_pos2 = T5,call_cl(_size,[_s,_len]),call_cl(_slice,[_s,_i,_pos,_part1]),_l = [_part1|_l2],call(string_splitIndex(_s,_sep,_pos2,_l2),_upvals));call_cl(_size,[_s,_len]),call_cl(_slice,[_s,_i,_len,_part1]),_l = [_part1|[]]))). % findIndex string_findIndex(_s1,_s2,_i,_pos,_upvals):-_upvals=[_size,_slice,_size],((((call_cl(_size,[_s2,_T1]),calc(_i+_T1,T2),call_cl(_slice,[_s1,_i,T2,_s2])),(_i = _pos);call_cl(_size,[_s1,_T3]),lt(_i,_T3),calc(_i+1.0,T4),call(string_findIndex(_s1,_s2,T4,_pos),_upvals)))). % slice string_slice(_S1,_I,_J,_S2,_upvals):-_upvals=[],({X3 = _J},{X2 = _I},s_slice(_S1,X2,X3,_S2)). % size string_size(_s,_n,_upvals):-_upvals=[],(s_size(_s,_n)). % get string_get(_s,_x,_c,_upvals):-_upvals=[],({X1 = _x},s_get(_s,X1,_c)). % main string(X):-_get = clos([],string_get),_size = clos([],string_size),_slice = clos([],string_slice),_findIndex = clos([_size,_slice,_size],string_findIndex),_splitIndex = clos([_slice,_size,_slice,_size,_findIndex],string_splitIndex),_concat = clos([],string_concat),_last = clos([_get,_size],string_last),_at = clos([_get],string_at),new(T8),set_(T8,"first",clos([],string_2),T10),set_(T10,"rest",clos([],string_3),T11),set_(T11,"get",_get,T12),set_(T12,"at",_at,T13),set_(T13,"size",_size,T14),set_(T14,"length",_size,T15),set_(T15,"findIndex",_findIndex,T16),set_(T16,"slice",_slice,T17),set_(T17,"find",clos([_findIndex],string_4),T18),set_(T18,"has",clos([_findIndex],string_5),T19),set_(T19,"upper",clos([],string_6),T20),set_(T20,"lower",clos([],string_7),T21),set_(T21,"split",clos([_splitIndex],string_8),T22),set_(T22,"toCodes",clos([],string_9),T23),set_(T23,"code",clos([],string_10),T24),set_(T24,"lessOrEqual",clos([],string_11),T25),set_(T25,"_add",clos([_concat],string_12),T26),set_(T26,"concat",_concat,T9),_t = T9,_main = clos([_last,_size],string_main),X=_t.