Test of working with strings. The predicates 'length','head','tail' and 'addString' must be defined as builtins. s("abc"). S(V),length(S,N),greater(N,"1"),head(S,H),tail(S,T),inverse(T,It),addString(Ti,H) :> inverse (S,Si). S(V),length(S,"1") :> inverse (S,S). S(V),length(S,"0") :> inverse (S,S). Query: inverse(s,S).