I cannot find any answer to that apparently simple problem :
On a square lattice, a path is given by a sequence of relative moves in {"move forward", "turn right" and "turn left"}. 


Is there a rule that characterizes if a path is self-avoiding (or not) ?


Edit : Let me precise the kind of rule I am looking for:
Let's imagine a walk described, this time, by absolute moves (N=move North, S=move South, E=move East, W=move West), then the presence of a loop in the sequence is characterized by a subsequence for which nb(N) = nb(S) and nb(E)=nb(W). That's a simple rule.


**Is there such a rule in the case of a sequence of relative moves ? Or do we have to translate the sequence to absolute moves ? Thanks.**


Example (to make myself clear):
here is a walk (or part of a walk), written in absolute moves {North, East, West, South}:
EENWNNWSSS
=> We immediately know it is a loop, without having to draw anything or keep track of the positions visited, because nb(N)=nb(S) and nb(E)=nb(W).


Now here is the same walk written in relative moves {Forward, Turn right, Turn left}:
FFLFLFRFFLFLFFF
=> Without drawing anything, nor converting to absolute moves. Is there a rule that allows to say it is a loop ?



How to characterize a Self-avoiding path.
I'm only now starting to understand the question. Let me formulate it slightly differently, but I think it's easy to translate between this and your formulation. I'll imagine a little machine with three possible operations: take a step (which is always in the direction of an arrow on the machine's head, so would be your "forwards"), turn to the left (which changes the direction of the arrow but doesn't change the square the machine is on), and turn to the right. 


If you're prepared to characterize self-avoidance with a statement like "There is no subsequence such that ...," as you seem to be, then it is enough to characterize loops. This is easy to do if we convert into absolute moves, as you say, so the idea is not to do that. It is quite hard to say precisely what it means not to keep track of the direction the machine is pointing in, but here is an attempt.


Now there are various ways that a sequence of moves can be simplified. For instance, RRR=L, LLL=R, and RL=LR="do nothing", so we can always rewrite so that there are at most two turns in a row, when they have to be the same. Also, FRRF can be simplified to RR, so if we ever have RR or LL we can cancel Fs on either side until we have three turns in a row and then cancel those.


After all this cancellation, we may assume that we never have two turns in a row. But that is not all the cancellation that can be done. For instance, $FRF^kRF$ cancels to $RF^kR$. So if we ever have $RF^kR$ we can cancel Fs on both sides until we get two turns in a row and go back to the previous method for getting rid of that. 


So now we may assume that the sequence consists of Fs with isolated Rs and Ls that have to alternate. That won't be a loop unless the sequence is null.


I think this can be done without thinking about what the absolute direction is, but one could perhaps argue that the cancellation rules are working mod 4 and keeping track of the direction in an implicit way. But I'm not sure that's right, since we can do the cancellation in the middle of the sequence without caring about the absolute direction at all. So perhaps this counts as a sort of answer to your question.


