fact: Definition valid_pq (pq : val) (h: heap): mpred := EX arr : val, EX junk: list heap_item, EX arr2 : val, EX lookup : list Z, (!! heap_ordered (heap_items h)) && (!! (Zlength ((heap_items h) ++ junk) = heap_capacity h)) && (!! (2 * (heap_capacity h - 1) <= Int.max_unsigned)) && (!! (Zlength lookup = heap_capacity h)) && (data_at Tsh t_pq (Vint (Int.repr (heap_capacity h)), (Vint (Int.repr (heap_size h)), (arr, arr2))) pq * linked_heap_array ((heap_items h) ++ junk) arr lookup arr2 * free_tok arr (sizeof (Tstruct _structItem noattr) * (heap_capacity h)) * free_tok arr2 (sizeof tuint * (heap_capacity h)) * free_tok pq (sizeof (Tstruct _structPQ noattr))).
imports: RelationClasses VST.floyd.proofauto CertiGraph.lib.List_ext CertiGraph.binheap.binary_heap_pro CertiGraph.binheap.binary_heap_malloc_spec CertiGraph.binheap.binary_heap_model CertiGraph.binheap.binary_heap_Zmodel