Section CostTheory.
Context `{function_cost_model}.
intuition.
eapply cost_le.
eapply (cost_compose f1 _ ).
eauto.
intuition.
eapply cost_const.
intuition.
eauto.
omega.
Qed.
intuition.
eapply cost_le.
eapply (cost_compose f2 (fun a x => f3 (f1 a) x)).
eauto.
intuition.
eapply (cost_compose f1 (fun a => f3)).
eauto.
intuition.
eapply cost_const.
intuition.
eauto.
intuition.
omega.
Qed.
intuition.
eapply cost_uncurry_1.
eapply cost_ext.
2:{
eapply cost_ident.
}
intuition.
Qed.
intuition.
eapply cost_uncurry_2.
eapply cost_ext.
2:{
eapply cost_ident.
}
intuition.
Qed.
intuition.
eapply cost_uncurry_1.
eapply cost_OC_Bind.
Qed.

Theorem cost_OC_Bind_2 : forall (A B C C' : Set) (c : OracleComp A B C),
cost (@OC_Bind A B C C' c) 0.