let pop () =
  match !solverstate with
    | [x] -> raise Pop
    | x::xs -> solverstate := xs
    | _ -> failwith "Shouldn't happen."