fact: Definition popMin_spec {CS: compspecs} := DECLARE _popMin WITH pq: val, priq_contents: list Z PRE [tint, tint, tptr tint] PROP (@inrange_priq priq_contents; @isEmpty inf priq_contents = Vzero; 0 < size <= Int.max_signed; 0 <= inf; Int.min_signed < inf + 1 <= Int.max_signed) PARAMS (Vint (Int.repr size); Vint (Int.repr inf); pq) GLOBALS () SEP (data_at Tsh (tarray tint size) (map Vint (map Int.repr priq_contents)) pq) POST [ tint ] EX rt : Z, PROP (rt = find priq_contents (fold_right Z.min (hd 0 priq_contents) priq_contents) 0) LOCAL (temp ret_temp (Vint (Int.repr rt))) SEP (data_at Tsh (tarray tint size) (upd_Znth (find priq_contents (fold_right Z.min (Znth 0 priq_contents) priq_contents) 0) (map Vint (map Int.repr priq_contents)) (Vint (Int.repr (inf+1)))) pq).
imports: VST.floyd.proofauto CertiGraph.lib.find_lemmas CertiGraph.priq.is_empty_lemmas CertiGraph.priq.priq_arr