(** Properties of [findMax] and [deleteMax]. *)

(* Specifications: *)
Lemma deleteMax_gt:
forall x h, gt_heap h x -> gt_heap (deleteMax h) x.
Lemma deleteMax_bst:
forall h, bst h -> bst (deleteMax h).
Lemma In_deleteMax:
forall y x h,
findMax h = Some x ->
(In y h <-> E.eq y x \/ In y (deleteMax h)).
Lemma lt_heap_In:
forall x y h, lt_heap h x -> In y h -> E.lt y x.
Lemma findMax_max:
forall x h, findMax h = Some x -> bst h -> forall y, In y h -> le y x.
Lemma findMax_empty:
forall h, h <> Empty -> findMax h <> None.
Lemma deleteMax_gt:
forall x h, gt_heap h x -> gt_heap (deleteMax h) x.
Lemma deleteMax_bst:
forall h, bst h -> bst (deleteMax h).
Lemma In_deleteMax:
forall y x h,
findMax h = Some x ->
(In y h <-> E.eq y x \/ In y (deleteMax h)).
Lemma lt_heap_In:
forall x y h, lt_heap h x -> In y h -> E.lt y x.
Lemma findMax_max:
forall x h, findMax h = Some x -> bst h -> forall y, In y h -> le y x.
Lemma findMax_empty:
forall h, h <> Empty -> findMax h <> None.