anchor.diff:          let exp = ctx.MkAtMost(arr, 1) in
           condSet <- Set.add exp condSet;
   
  -        let arr = Array.create 2 vArray.[a] in
  -        Array.set arr 1 vArray.[b];
  -        let ends = ctx.MkAnd arr in
  -        let exp = ctx.MkImplies (eArray.[i], ends) in
  -        condSet <- Set.add exp condSet;
  -    let finalExp = ctx.MkAnd (Set.toArray condSet) in
  -
       // relationship between nodes with the same topological location
       // identify using CgState.Node field which gives the topo.node
       // basically put all of these variables in one set and use a mutual
       //implication statement?
       //use Start and End in CGraph, map them to topological node and use
       // them for first connectivity constraint
  +
  +    let mutable topoNodeToVertexSet = Map.empty in
  +    for i in 0 .. (Seq.length vertices - 1) do
  +        let vertex = Seq.item i vertices in
  +        let vertexExp = vArray.[Map.find (Seq.item i vertices) vMap] in
  +        let topoNode = vertex.Node in
  +        if (Map.containsKey topoNode topoNodeToVertexSet) then
  +            let newSet = Set.add vertexExp (Map.find topoNode topoNodeToVertexSet) in
  +            topoNodeToVertexSet <- Map.add topoNode newSet topoNodeToVertexSet;
  +        else
  +            let newSet = Set.add vertexExp Set.empty in
  +            topoNodeToVertexSet <- Map.add topoNode newSet topoNodeToVertexSet;
  +
  +    //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;
  +
  +    // make the solver and iterate through it
  +
  +
  +
  +    
  +
  +
  +    let finalExp = ctx.MkAnd (Set.toArray condSet) in
       ctx.MkSolver ()
   
   let runTest =
  
positive.code:     // 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
          let vertex = Seq.item i vertices in
  
          // atleast one incoming edge is true
          let incoming = input.Graph.InEdges vertex in
  
negative.code:     let vArray = Array.zeroCreate (Seq.length vertices) in
      let mutable vMap = Map.empty in
      let mutable eMap = Map.empty in
  
      //cretae vertex map
      for i in 0 .. (Seq.length vertices - 1) do
          Array.set vArray i (ctx.MkBoolConst ("v" + (string i)));
          vMap <- Map.add (Seq.item i vertices)  i vMap;
      let eArray = Array.zeroCreate (Seq.length edges) in
  
      // create edge map
      for i in 0 .. (Seq.length edges - 1) do
          Array.set eArray i (ctx.MkBoolConst ("e" + (string i)));
          eMap <- Map.add (Seq.item i edges) i eMap;
  
      let mutable condSet = Set.empty in
      let src = Map.find input.Start vMap in
      condSet <- Set.add (Array.get vArray src) condSet ;
  