+ /**
+ * @brief Removes the last event of the execution,
+ * if such an event exists
+ *
+ * @note: When you remove events from an execution, any views
+ * of the execution referring to those removed events
+ * become invalidated
+ */
+ void pop_latest();
+
+ /**
+ * @brief Extends the execution by one more step
+ *
+ * Intutively, pushing a transition `t` onto execution `E`
+ * is equivalent to making the execution become (using the
+ * notation of [1]) `E.proc(t)` where `proc(t)` is the
+ * actor which executed transition `t`.
+ */
+ void push_transition(const Transition*);
+
+ size_t size() const { return this->contents_.size(); }
+ size_t size() const { return this->contents_.size(); }
+
+private:
+ /**
+ * @brief A pointer into the execution off of which this
+ * execution extends computation
+ *
+ * Conceptually, the `prior`
+ */
+ std::optional<Handle> prior;
+
+ /**
+ * @brief The actual steps that are taken by the process
+ * during exploration, relative to the
+ */
+ std::list<Event> contents_;