Set Implicit Arguments.
(* RndInList has a useful theorem (qam_count) about counting calls to an oracle. *)
(* Shortcuts for FCF tactics *)
(* TODO remove / inline these *)
Ltac fs := fcf_simp.
Ltac fif := fcf_inline_first.
Ltac s := simpl.
Ltac fsr := fcf_spec_ret.
Ltac fskip := fcf_skip.
Ltac simplify :=
repeat (try simpl; try fcf_inline_first; try fcf_simp).
Ltac rewrite_r := apply comp_spec_symm; eapply comp_spec_eq_trans_l.
Ltac flip := apply comp_spec_symm.
Ltac prog_equiv := repeat (simplify; fcf_skip_eq); try simplify.
Ltac bv_exist := try apply oneVector.

(* Lemma demonstrating use of `bv_exist` ltac *)
Lemma fcf_skip_admits : forall (n m : nat),
comp_spec eq
(x <-$ {0,1}^n;
ret x)
(y <-$ {0,1}^n;
z <-$ {0,1}^n;
ret y).