anchor.diff:          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
  
positive.code: 
      //iterate through this map, creating statements per set for topological Node 
      let prepCondition key value = 
          let exp = ctx.MkAtMost((Set.toArray value), 1) in
          condSet <- Set.add exp condSet;
      in
      Map.iter prepCondition topoNodeToVertexSet;
  
negative.code:     s.Assert(Set.toArray condSet);
      while (s.Check() = Status.SATISFIABLE) do
        let mutable solnSet = Set.empty in
        System.IO.File.AppendAllText("solutions.txt", "New Solution\n")
        for i in 0 .. (Seq.length edges - 1) do
          if (s.Model.ConstInterp(eArray.[i]).IsTrue) then
              solnSet <- Set.add eArray.[i] solnSet;
              System.IO.File.AppendAllText("solutions.txt", (string) (Seq.item i edges) + "\n")
          else
              ();
        System.IO.File.AppendAllText("solutions.txt", "\n")
        let negSoln = ctx.MkNot(ctx.MkAnd(Set.toArray solnSet)) in
        condSet <- Set.add negSoln condSet;
        s.Assert(Set.toArray condSet);
  