The usual vanilla interpreter uses Prolog backtracking
itself to archive backtacking. I guess this is the reason 
why its called "vanilla":

```
solve(true).
solve((A,B)) :- solve(A), solve(B).
solve(H) :- clause(H, B), solve(B).

```

How about a "chili" interpreter, that doesn't use any
Prolog backtracking. Basically a predicate **first/?** to obtain
a first solution and a predicate **next/?** to obtain further solutions. 

How would one go about it and realize such an interpreter in Prolog. The solution needs not be pure, could also use findall and cut. Although a purer solution could be also illustrative.