Good work, only found that predicates consisting of [.-:=] characters can break the syntax a bit. :- op( 220, xfy, .. ). :- op( 220, xfy, .==. ). :- A = a..b.