proposition: Theorem PRFE_EncryptOracle_spec : forall a x2 x, comp_spec (fun (y1 : Ciphertext * unit) (y2 : Ciphertext * (unit * unit)) => fst y1 = fst y2 /\ snd y1 = fst (snd y2)) (PRFE_EncryptOracle x (fst x2) a) (p <-$ (PRFE_Encrypt_OC (fst x2) a) unit unit_EqDec (f_oracle x) (snd x2); ret (fst (fst p), (snd (fst p), snd p))).
proof: Proof. intuition. unfold PRFE_EncryptOracle, EncryptOracle, PRFE_Encrypt. simpl. prog_inline_l. do 2 prog_inline_r. comp_skip. prog_simp. unfold f_oracle. do 2 (prog_inline_r; prog_simp). eapply comp_spec_ret. simpl. intuition. Qed.
imports: FCF PRF Encryption RndInList OTP WC_PolyTime