Program Definition exactly {A} `{ageable A} (x: A) : pred A := necR x.
Next Obligation.
constructor 3 with a; auto.
constructor 1; auto.
Qed.

(* Specifications: *)
Lemma derives_TT {A} `{ageable A}: forall (P: pred A), P |-- TT.
Hint Resolve @derives_TT.
Lemma FF_derives {A} `{ageable A}: forall P, FF |-- P.
Hint Immediate @FF_derives.
Lemma necR_level' {A} `{H : ageable A}: forall {w w': A}, necR w w' ->
@necR _ ag_nat (level w) (level w').
Lemma derives_imp {A} `{agA : ageable A}:
forall P Q w, (P |-- Q) -> (P --> Q) w.
Lemma exp_andp1 {A} `{ageable A}:
forall B (p: B -> pred A) q, (exp p && q)%pred = (exp (fun x => p x && q))%pred.
Lemma exp_andp2 {A} `{HA: ageable A}:
forall B p (q: B -> pred A), (p && exp q)%pred = (exp (fun x => p && q x))%pred.
Lemma exp_imp_left {A} `{agA : ageable A}:  forall B (p: B -> pred A) q,
(exp p --> q)%pred = allp (fun x => p x --> q)%pred.
Lemma app_ext  {A: Type} `{ageable A} : forall (F G: A -> Prop) p1 p2 w,
(F w = G w) ->
app_pred (exist (hereditary age) F p1) w = app_pred (exist (hereditary age) G p2) w.
Lemma imp_derives {A} `{agA : ageable A}:
forall P P' Q Q',
P' |-- P ->
Q |-- Q' ->
P --> Q |-- P' --> Q'.
Lemma imp_lem0  {A} `{agA : ageable A}:  forall P st, (TT --> P) st -> P st.
Lemma conjoin_hyp0  {A} `{H : ageable A}:
forall (P Q: pred A) w,  P w -> (P --> Q) w -> (TT --> Q) w.
Lemma conjoin_hyp1 {A} `{agA : ageable A}: forall (P Q R: pred A)  w,
P w -> (P&&Q --> R) w -> (Q --> R) w.
Lemma derives_e {A: Type} `{agA : ageable A}: forall p q (st: A),
(p |-- q) -> p st -> q st.