anchor.diff:          let arr = Array.create (Seq.length incoming) eArray.[0] in
           for i in 0 .. (Seq.length incoming - 1) do
               let e = Seq.item i incoming in
  -            let eVar = Map.find e eMap in
  +            let eVar = Map.find (e.Source, e.Target) eMap in
               Array.set arr i (ctx.MkNot eArray.[eVar]);
  -        let exp = ctx.MkAtMost(arr, (Seq.length incoming) - 1) in
  +        let exp = ctx.MkAtMost(arr, ((uint32) (Seq.length incoming) - 1u)) in
           condSet <- Set.add exp condSet;
   
           // exactly one outgoing edge is true
  
positive.code:         let ends = ctx.MkAnd arr in
          let exp = ctx.MkImplies (eArray.[i], ends) in
          condSet <- Set.add exp condSet;
      
      // if a vertex is true, atleast one incoming edge is true, and atleast one outgoign edge
      for i in 0 .. (Seq.length vertices - 1) do
          // find vertices at the start and end of an edge for implication between edges and vertices for connectivity
  
negative.code:     // create edge map
      for i in 0 .. (Seq.length edges - 1) do
          Array.set eArray i (ctx.MkBoolConst ("e" + (string i)));
          let edge = Seq.item i edges in
          eMap <- Map.add (edge.Source, edge.Target) i eMap;
  
      let mutable condSet = Set.empty in
      let src = Map.find input.Start vMap in
  