Definition empty_dict {K V} : dict K V := Dict [].
Definition empty_position_map : position_map := empty_dict.
Definition empty_stash : stash := [].
Fixpoint empty_oram n : oram :=
match n with
| 0 => leaf
| S m => node None (empty_oram m) (empty_oram m)
end.
Definition empty_state `{Config} : state := {|
state_position_map := empty_position_map;
state_stash := empty_stash;
state_oram := empty_oram (S LOP);
|}.

Lemma empty_state_wf `{C : Config} : well_formed empty_state.
Fixpoint get_traces_aux `{Config} (acc : list path) (ops : list (block_id * operation)) : Poram (list path) :=
match ops with
| [] => mreturn acc
| (id,op) :: ops' =>
p <- access id op;;
get_traces_aux (fst p :: acc) ops'
end.