bee on backtracking despite the fact that bee 
is already retracted.88Example by 
Jan Burse
:- dynamic insect/1.
insect(ant).
insect(bee).
?- (   retract(insect(I)),
       writeln(I),
       retract(insect(bee)),
       fail
   ;   true
   ).
ant ;
bee.
If multiple threads start a retract on the same predicate at the same 
time their notion of the entry generation is adjusted such that 
they do not retract the same first clause. This implies that, if 
multiple threads use once(retract(Term)), no two threads 
will retract the same clause. Note that on backtracking over retract/1, 
multiple threads may retract the same clause as both threads respect the 
logical update view.