proposition: Theorem fcf_oracle_eq : forall {S1 S2 : Set}(P : S1 -> S2 -> Prop)(A B C : Set) (c : OracleComp A B C) (eqdb : EqDec B) (eqdc : EqDec C) (o1 : S1 -> A -> Comp (B * S1)) (o2 : S2 -> A -> Comp (B * S2)) (eqds1 : EqDec S1) (eqds2 : EqDec S2) (s1 : S1) (s2 : S2), P s1 s2 -> (forall (a : A) (x1 : S1) (x2 : S2), P x1 x2 -> comp_spec (fun (y1 : B * S1) (y2 : B * S2) => fst y1 = fst y2 /\ P (snd y1) (snd y2)) (o1 x1 a) (o2 x2 a)) -> comp_spec (fun (a : C * S1) (b : C * S2) => fst a = fst b /\ P (snd a) (snd b)) (c S1 eqds1 o1 s1) (c S2 eqds2 o2 s2).
proof: Proof. intuition. eapply oc_comp_spec_eq; intuition. Qed.
imports: FCF.Crypto FCF.DistTacs FCF.ProgTacs FCF.GenTacs FCF.ProgramLogic