let remove_inb (graph : graph)
               (target : nodeid)
               (edge : inedge) : unit =
  let removeout node edge = remove (node.outb) edge in
  let target_node = find_node graph target in
    remove target_node.inb edge;
    match edge with
      | InConcat(a, b) -> 
          let a_node = find_node graph a in
          let b_node = find_node graph b in
            removeout a_node (OutConcatLeft(b, target));
            removeout b_node (OutConcatRight(a, target))
      | InIsect source -> 
          let source_node = find_node graph source in
            remove source_node.outb (OutIsect target)