anchor.diff:          newConfig <- Map.add loc newDC newConfig
       newConfig
   
  -
  +(* Make a config smaller (e.g., number of route maps) and more human-readable
  +   by removing community tagging information when possible *)
   let compress (cg: CGraph.T) (config: T) (outName: string) : T =
       let config1 = compressUniquePairs cg config
       let config2 = compressIsomorphicImports cg config1
  
positive.code:         let loc = kv.Key
          let deviceConf = kv.Value 
          let mByPeer = longestSequenceCommMatchesByPeer deviceConf
          printfn "longest sequence match for loc:%s is %A" loc mByPeer
          let mutable newDC = deviceConf
          for kv in mByPeer do
              let peer = kv.Key
              let states = 
                  kv.Value
                  |> List.map (fun c -> (peer,c))
              printfn "States: %A" states
              let nodes = 
                  states
                  |> List.map (findVertex cg)
                  |> List.map (fun v -> Seq.filter (fun v' -> v'.Node.Loc = loc) (neighbors cg v) |> Seq.head)
              if (List.length nodes) > 1 && (areAllIsomorphic cg nodes) then
                  printfn "all are isomorphic: %A" nodes
                  newDC <- removeCommFiltersForStates states newDC
          newConfig <- Map.add loc newDC newConfig
      newConfig
  
negative.code:     debug1 (fun () -> System.IO.File.WriteAllText(outName + "-min5.ir", format config5))
      config5
  
  (* Given a topology and a policy, generate a low-level configuration in an intermediate
     byte-code-like, vendor-independent representation for BGP  *)
  let compileToIR (topo: Topology.T) (reb: Regex.REBuilder) (res: Regex.T list) (outName: string) : Result<T, CounterExample> =
      let cg = CGraph.buildFromRegex topo reb res
      debug1 (fun () -> CGraph.generatePNG cg outName)
  