%main Relation;main Relation;lessOrEqual Any;code Any;toCodes Any;lower Any;upper Any;has Any;find Any;length Any;rest Any;first Any;t Any;at Relation Any Any Any;at Relation;last Relation String String;last Relation;concat Relation String String String;concat Relation;splitIndex Relation String String Integer Functor;splitIndex Relation;findIndex Relation String String Integer Integer;findIndex Relation;slice Relation String Integer Integer String;slice Relation;size Relation String Integer;size Relation;get Relation String Integer String;get Relation % % module % main string_main(_upvals):-_upvals=[_last,_size],(_s = "sdf",call_cl(_size,[_s,_s2]),writeln_(_s2),call_cl(_last,[_s,X7]),writeln_(X7)). % 11 string_11(_s1,_s2,_s3,_upvals):-_upvals=[_concat],(call_cl(_concat,[_s1,_s2,_s3])). % 10 string_10(_S1,_S2,_upvals):-_upvals=[],(s_le(_S1,_S2)). % 9 string_9(_s,_n,_upvals):-_upvals=[],(int(_n,X6),string_codes(_s,'[|]'(X6,[]))). % 8 string_8(_s,_l,_upvals):-_upvals=[],(string_codes(_s,_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,_])). % 4 string_4(_s1,_s2,_pos,_upvals):-_upvals=[_findIndex],(call_cl(_findIndex,[_s1,_s2,0,_pos])). % 3 string_3(_S1,_S2,_upvals):-_upvals=[],(s_size(_S1,_L),s_slice(_S1,1,_L,_S2)). % 2 string_2(_S1,_S2,_upvals):-_upvals=[],(s_at(_S1,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]),call_cl(_get,[_s,_n-1,_c])). % concat string_concat(_s1,_s2,_s3,_upvals):-_upvals=[],(_s3 = _s2+_s1). % splitIndex string_splitIndex(_s,_sep,_i,_l,_upvals):-_upvals=[_slice,_size,_slice,_size,_findIndex],(call_cl(_findIndex,[_s,_sep,_i,_pos]),get_(_math,"inc",T2),_T1 = T2,call_cl(_T1,[_pos,_pos2]),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,X4]),call_cl(_slice,[_s1,_i,_i+X4,_s2])),(_i = _pos);call_cl(_size,[_s1,X5]),lt(_i,X5),call(string_findIndex(_s1,_s2,_i+1,_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(T3),set_(T3,"first",clos([],string_2),T5),set_(T5,"rest",clos([],string_3),T6),set_(T6,"get",_get,T7),set_(T7,"at",_at,T8),set_(T8,"size",_size,T9),set_(T9,"length",_size,T10),set_(T10,"findIndex",_findIndex,T11),set_(T11,"slice",_slice,T12),set_(T12,"find",clos([_findIndex],string_4),T13),set_(T13,"has",clos([_findIndex],string_5),T14),set_(T14,"upper",clos([],string_6),T15),set_(T15,"lower",clos([],string_7),T16),set_(T16,"toCodes",clos([],string_8),T17),set_(T17,"code",clos([],string_9),T18),set_(T18,"lessOrEqual",clos([],string_10),T19),set_(T19,"_add",clos([_concat],string_11),T20),set_(T20,"concat",_concat,T4),_t = T4,_main = clos([_last,_size],string_main),X=_t.