anchor.diff:                yield (newFlip ^^^ !flip) ||| state
                 flip := newFlip }
   
  -let geneChange (genes : string []) state state' =
  +let geneChange genes state state' =
       let index = Array.length genes - (int <| System.Math.Log(float <| state ^^^ state', 2.0)) - 1
       genes.[index]
   
  
positive.code:         let low = boolArrayToUint32 a.[32 ..]
          (uint64 high <<< (Array.length a.[32 ..])) ||| uint64 low
  
  let toUniqueBitvectors (rows : seq<string * bool []>) =
      let seen = HashSet<uint64>()
      Map.ofList [ for (id, array) in rows do
                       let bitVec = boolArrayToUint64 array
  
negative.code:     Seq.map (fun (id, a) -> (id, Array.map discretise a)) rows
  
  let boolArrayToUint32 (a : bool []) =
      let a = BitArray (Array.rev a)
      let u = [| 0 |]
      a.CopyTo(u, 0)
      uint32 (u.[0])
  
  let boolArrayToUint64 a =
      if Array.length a <= 32 then
          uint64 (boolArrayToUint32 a)
      else
  