| copy_node#(r0; r1, map, H) {if r0 ∈ map then r1 := map[r0] else {alloc(; r1, H); map := map[r0, r1]; let nd0 = [?], nd1 = [?], succ = ∅ in {read(r0, H; nd0); write(r1, Node(nd0.value); H); copy_edges#(nd0.edges; succ, map, H); write(r1, Node(nd0.value, succ); H)}} } |