Section believe_monotonicity.
Context {CS: compspecs} {Espec: OracleKind}.

Lemma guard_mono gx Delta Gamma f (P Q:assert) ctl
(GD1: forall e te, typecheck_environ Gamma (construct_rho (filter_genv gx) e te) ->
typecheck_environ Delta (construct_rho (filter_genv gx) e te))
(GD2: ret_type Delta = ret_type Gamma)
(GD3: forall e te, Q (construct_rho (filter_genv gx) e te) |--
P (construct_rho (filter_genv gx) e te))
(GD4: forall e te, (funassert Gamma (construct_rho (filter_genv gx) e te)) |--
(funassert Delta (construct_rho (filter_genv gx) e te))):
@guard Espec gx Delta f P ctl |--
@guard Espec gx Gamma f Q ctl.