PROCEDURE SetOnext(a, b: Arc); (* If Onext(a) # b, performs Splice(a, Oprev(b)). After this call, Onext(a) will be equal to b. Valid whenever Splice(a,b) is valid. *) (* Conjecture: let e[0..n] be all Arc's of an Oct structure with FlipBit = 0; and x[0..n] a list of arcs such that Onext(e[i]) = x[i]. We can build a copy of the structure by the following algorithm: 1. create n/4 new Edge's, and a vector ec[0..n] of their unFlipped Arc's, such that (a) if Rot(e[i]) = e[j], then Rot(ec[i]) = ec[j] 2. Create a vector xc[0..n] of Arc's, such that if x[i] = Flip^f(e[j]), then xc[i] = Flip^f(ec[j]). 3. for i = 0..n, in any order, perform SetOnext(ec[i], xc[i]). This conjecture is true if we can prove that every Arc has its Onext properly set; whenever SetOnext(ec[i], ec[x[i]]) changes Onext(e[j]) for some arc j, then we still haven't performed SetOnext(ec[j], ec[x[j]]). *)