When one variable is a substring of another the algorithm for replacing variables with a class membership statement is too greedy. Note the case of "arrest1" appearing in the paraphrase below as the result of part of the varaible ?ARREST1 being replaced with the paraphrase for ?ARREST
(=>
(and
(instance ?ARREST PlacingUnderArrest)
(arrested ?ARREST ?AGENT)
(instance ?AGENT GroupOfPeople)
(member ?MEMBER ?AGENT))
(exists (?ARREST1)
(and
(instance ?ARREST1 PlacingUnderArrest)
(arrested ?ARREST1 ?MEMBER)
(subProcess ?ARREST1 ?ARREST))))
* if a placing under arrest is an instance of placing under arrest and an agent is placed under arrest during the placing under arrest and the agent is an instance of group of people and a self connected object is a member of the agent,
* then there exists the placing under arrest1 such that the placing under arrest1 is an instance of placing under arrest and the self connected object is placed under arrest during the placing under arrest1 and the placing under arrest1 is a subprocess of the placing under arrest