anchor.diff:    // warn for anycasts 
     if not settings.Test then warnAnycasts cg polInfo.Value pred
     // check there is a route for each location specified
  -  let lost = getLocsThatCantGetPath idx cg reb dfas
  -  if not (Set.isEmpty lost) then Err(NoPathForRouters(lost))
  -  else 
  -    // Find unused preferences for policies that were not drop
  -    let unusedPrefs = getUnusedPrefs cg res
  -    if not (Set.isEmpty unusedPrefs) then 
  -      let predStr = Route.toString pred
  -      Set.iter (fun i -> 
  -        let msg = sprintf "Unused preference %d policy " i + sprintf "for predicate %s" predStr
  -        warning msg) unusedPrefs
  -    try 
  -      // check that BGP can ensure incoming traffic compliance
  -      let inExports = Incoming.configureIncomingTraffic cg
  -      // check aggregation failure consistency
  -      let k = getMinAggregateFailures cg pred aggInfo
  -      // check that there is a valid ordering for BGP preferences to ensure compliance
  -      let (ordering, orderTime) = Profile.time (Consistency.findOrderingConservative idx) cg
  -      match ordering with
  -      | Ok ord -> 
  -        let config, configTime = Profile.time (genConfig cg pred ord) inExports
  -        
  -        let result = 
  -          { K = k
  -            BuildTime = buildTime
  -            MinimizeTime = minTime
  -            OrderingTime = orderTime
  -            ConfigTime = configTime
  -            Config = config }
  -        
  -        let msg = formatPred polInfo pred (snd config)
  -        debug 
  -          (fun () -> System.IO.File.WriteAllText(sprintf "%s/%s.ir" settings.DebugDir name, msg))
  -        Ok(result)
  -      | Err((x, y)) -> Err(InconsistentPrefs(x, y))
  -    with
  -      | UncontrollableEnterException s -> Err(UncontrollableEnter s)
  -      | UncontrollablePeerPreferenceException s -> Err(UncontrollablePeerPreference s)
  +  let lost = getLocsWithNoPath idx cg reb dfas
  +  if not (Set.isEmpty lost) then 
  +    match polInfo with
  +    | Some pi -> 
  +      let ti = pi.Ast.TopoInfo
  +      let locs = Set.map (fun r -> Topology.router r ti) lost |> Util.Set.joinBy ", "
  +      let msg = sprintf "Routers: %s will have no path to the destination" locs
  +      warning msg
  +    | None -> ()
  +  // Find unused preferences for policies that were not drop
  +  let unusedPrefs = getUnusedPrefs cg res
  +  if not (Set.isEmpty unusedPrefs) then 
  +    let predStr = Route.toString pred
  +    Set.iter (fun i -> 
  +      let msg = sprintf "Unused preference %d policy " i + sprintf "for predicate %s" predStr
  +      warning msg) unusedPrefs
  +  try 
  +    // check that BGP can ensure incoming traffic compliance
  +    let inExports = Incoming.configureIncomingTraffic cg
  +    // check aggregation failure consistency
  +    let k = getMinAggregateFailures cg pred aggInfo
  +    // check that there is a valid ordering for BGP preferences to ensure compliance
  +    let (ordering, orderTime) = Profile.time (Consistency.findOrderingConservative idx) cg
  +    match ordering with
  +    | Ok ord -> 
  +      let config, configTime = Profile.time (genConfig cg pred ord) inExports
  +      
  +      let result = 
  +        { K = k
  +          BuildTime = buildTime
  +          MinimizeTime = minTime
  +          OrderingTime = orderTime
  +          ConfigTime = configTime
  +          Config = config }
  +      
  +      let msg = formatPred polInfo pred (snd config)
  +      debug (fun () -> System.IO.File.WriteAllText(sprintf "%s/%s.ir" settings.DebugDir name, msg))
  +      Ok(result)
  +    | Err((x, y)) -> Err(InconsistentPrefs(x, y))
  +  with
  +    | UncontrollableEnterException s -> Err(UncontrollableEnter s)
  +    | UncontrollablePeerPreferenceException s -> Err(UncontrollablePeerPreference s)
   
   let compileForSinglePrefix idx (polInfo : Ast.PolInfo) aggInfo (pred, reb, res) : PrefixResult = 
     match compileToIR idx pred (Some polInfo) aggInfo reb res with
  
positive.code:     RConfigs : Map<string, RouterConfig> }
  
  type CounterExample = 
    | NoPathForRouters of Set<string>
    | InconsistentPrefs of CgState * CgState
    | UncontrollableEnter of string
    | UncontrollablePeerPreference of string
  
negative.code:         Prefs = Some []
          Fail = None }
        { Name = "DCsmall2"
          Explanation = "Through spine no backup"
          Topo = tDatacenterSmall
          Rf = rDatacenterSmall2
          Receive = Some []
          Originate = Some [ "A" ]
          Prefs = Some []
          Fail = None }
        { Name = "DCsmall3"
          Explanation = "Through spine with backup"
          Topo = tDatacenterSmall
  