?- T = +T, \+acyclic_term(T).
T = +T. % so we are using rational tree unification
?- T = [.,_,_], T =.. T.
false, unexpected.
T = ['.','.',_I],_I=['.',_I]. % expected, but not found
?- T = [.,_,_], T =.. T, \+acyclic_term(T).
idem.
?- T = [.,_,_], T =.. T, throw(found). % to be sure that it is not the top level
false, unexpected.
throw(found). % expected, but not found
?- T = [_|_], T =.. T.
T = ['.','.',[]|'.'], unexpected.
T = ['.','.',_I],_I=['.',_I]. % expected, but not found