| REFINEONE(x, F; A, D, P) {if x ∈ D then let i = D[x] in let p = P[F[i]] in if i < p.first + p.count then skip else {if i ≠ p.first + p.count then {A := A[i, A[p.first + p.count]][p.first + p.count, A[i]]; D := D[A[i], i]; D := D[A[p.first + p.count], p.first + p.count]}; P := P[F[i], p.count:= (p.count + 1)]} } |