Imandra_interactive.Undotype snap = Interactive_snapshot.Gen_snap.twith_save f calls f ~commit and returns the same result as this call. It creates a speculative undo point before calling f; if f calls commit() then this undo point is saved, otherwise it is discarded.
val pop_n : int -> snap optionPop n snapshots
module Effect : sig ... end