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);
|}.

(* Specifications: *)
Lemma lookup_empty {K V} `{Ord K} (v_def : V) (k : K) :
lookup_dict v_def k (empty_dict) = v_def.
Lemma length_makeBoolList b n :
length (makeBoolList b n) = n.
Lemma get_all_blks_tree_empty n :
get_all_blks_tree (empty_oram n) = [].
Lemma empty_oram_p_b n :
is_p_b_tr (empty_oram n) n.
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.