let push () = 
  match !solverstate with
    | x::xs -> solverstate := (copy_state x)::!solverstate
    | _-> failwith "Lack of context."