anchor.diff:          | BBEq (BVar (Reg (Intermediate(i, x))), (ConstantBoolFunction (Intermediate(k, y)) as fx))
           | BBEq (ConstantBoolFunction (Intermediate(k, y)) as fx, BVar (Reg (Intermediate(i, x))))
               when x = y
  -            -> [((i, x), fx)]
  +            -> if i < k then [((i, x), fx)] else []
           | BAnd xs -> concatMap findBoolInters xs
           | _ -> []
   
  
positive.code:             (liftVToSym
                  (Mapper.make
                      (function
                       | Intermediate(i, a) -> (Map.tryFind (i, a) asubs |> withDefault (siInter i a))
                       | x -> AVar (Reg x))
                      (function
                       | Intermediate(i, a) -> (Map.tryFind (i, a) bsubs |> withDefault (sbInter i a))
  
negative.code:         opts
          |> Seq.filter
              (fun (name, on, _) ->
                  let on' = Set.contains name enabled_opts || Set.exists (name.StartsWith) enabled_opts
                  if on' <> on then
                      eprintfn "note: optimisation %s forced %s"
                          <| name
                          <| if on' then "on" else "off"
                  on')
          |> Seq.map (fun (n, _, f) -> f)
          (* We use List instead of Seq to make sure the above evaluates
             only once. *)
          |> List.ofSeq
  