fact: Definition sink_spec := DECLARE _sink WITH i : Z, arr: val, arr_contents: list heap_item, first_available : Z, b : Z PRE [tuint, tptr t_item, tuint] PROP (0 <= i <= Zlength arr_contents; first_available = Zlength arr_contents; (i = Zlength arr_contents -> (2 * i) <= Int.max_unsigned); (i < Zlength arr_contents -> (2 * (first_available - 1) <= Int.max_unsigned)); weak_heap_ordered_top_down_bounded arr_contents b i) PARAMS (Vint (Int.repr i); arr; Vint (Int.repr first_available)) GLOBALS () SEP (harray arr_contents arr) POST [tvoid] EX arr_contents' : list heap_item, PROP (heap_ordered_bounded arr_contents' b; Permutation arr_contents arr_contents') LOCAL () SEP (harray arr_contents' arr).
imports: RelationClasses Sorting VST.floyd.proofauto CertiGraph.binheap.binary_heap_model CertiGraph.binheap.binary_heap_Zmodel CertiGraph.binheap.binary_heap CertiGraph.binheap.env_binary_heap