open Preamble open Div_and_mod open Jmeq open Russell open Util open Bool open Relations open Nat open List open Hints_declaration open Core_notation open Pts open Logic open Types open Extralib open Proper open PositiveMap open Deqsets open ErrorMessages open PreIdentifiers open Errors open Lists open Identifiers open Integers open AST open Division open Exp open Arithmetic open Setoids open Monad open Option open Extranat open Vector open FoldStuff open BitVector open Positive open Z open BitVectorZ open Pointers open Hide open ByteValues val update : Z.z -> 'a1 -> (Z.z -> 'a1) -> Z.z -> 'a1 val update_block : Pointers.block -> 'a1 -> (Pointers.block -> 'a1) -> Pointers.block -> 'a1 type contentmap = Z.z -> ByteValues.beval type block_contents = { low : Z.z; high : Z.z; contents : contentmap } val block_contents_rect_Type4 : (Z.z -> Z.z -> contentmap -> 'a1) -> block_contents -> 'a1 val block_contents_rect_Type5 : (Z.z -> Z.z -> contentmap -> 'a1) -> block_contents -> 'a1 val block_contents_rect_Type3 : (Z.z -> Z.z -> contentmap -> 'a1) -> block_contents -> 'a1 val block_contents_rect_Type2 : (Z.z -> Z.z -> contentmap -> 'a1) -> block_contents -> 'a1 val block_contents_rect_Type1 : (Z.z -> Z.z -> contentmap -> 'a1) -> block_contents -> 'a1 val block_contents_rect_Type0 : (Z.z -> Z.z -> contentmap -> 'a1) -> block_contents -> 'a1 val low : block_contents -> Z.z val high : block_contents -> Z.z val contents : block_contents -> contentmap val block_contents_inv_rect_Type4 : block_contents -> (Z.z -> Z.z -> contentmap -> __ -> 'a1) -> 'a1 val block_contents_inv_rect_Type3 : block_contents -> (Z.z -> Z.z -> contentmap -> __ -> 'a1) -> 'a1 val block_contents_inv_rect_Type2 : block_contents -> (Z.z -> Z.z -> contentmap -> __ -> 'a1) -> 'a1 val block_contents_inv_rect_Type1 : block_contents -> (Z.z -> Z.z -> contentmap -> __ -> 'a1) -> 'a1 val block_contents_inv_rect_Type0 : block_contents -> (Z.z -> Z.z -> contentmap -> __ -> 'a1) -> 'a1 val block_contents_discr : block_contents -> block_contents -> __ val block_contents_jmdiscr : block_contents -> block_contents -> __ type mem = { blocks : (Pointers.block -> block_contents); nextblock : Z.z } val mem_rect_Type4 : ((Pointers.block -> block_contents) -> Z.z -> __ -> 'a1) -> mem -> 'a1 val mem_rect_Type5 : ((Pointers.block -> block_contents) -> Z.z -> __ -> 'a1) -> mem -> 'a1 val mem_rect_Type3 : ((Pointers.block -> block_contents) -> Z.z -> __ -> 'a1) -> mem -> 'a1 val mem_rect_Type2 : ((Pointers.block -> block_contents) -> Z.z -> __ -> 'a1) -> mem -> 'a1 val mem_rect_Type1 : ((Pointers.block -> block_contents) -> Z.z -> __ -> 'a1) -> mem -> 'a1 val mem_rect_Type0 : ((Pointers.block -> block_contents) -> Z.z -> __ -> 'a1) -> mem -> 'a1 val blocks : mem -> Pointers.block -> block_contents val nextblock : mem -> Z.z val mem_inv_rect_Type4 : mem -> ((Pointers.block -> block_contents) -> Z.z -> __ -> __ -> 'a1) -> 'a1 val mem_inv_rect_Type3 : mem -> ((Pointers.block -> block_contents) -> Z.z -> __ -> __ -> 'a1) -> 'a1 val mem_inv_rect_Type2 : mem -> ((Pointers.block -> block_contents) -> Z.z -> __ -> __ -> 'a1) -> 'a1 val mem_inv_rect_Type1 : mem -> ((Pointers.block -> block_contents) -> Z.z -> __ -> __ -> 'a1) -> 'a1 val mem_inv_rect_Type0 : mem -> ((Pointers.block -> block_contents) -> Z.z -> __ -> __ -> 'a1) -> 'a1 val mem_discr : mem -> mem -> __ val mem_jmdiscr : mem -> mem -> __ val oneZ : Z.z val empty_block : Z.z -> Z.z -> block_contents val empty : mem val alloc : mem -> Z.z -> Z.z -> (mem, Pointers.block) Types.prod val free : mem -> Pointers.block -> mem val free_list : mem -> Pointers.block List.list -> mem val low_bound : mem -> Pointers.block -> Z.z val high_bound : mem -> Pointers.block -> Z.z val block_region : mem -> Pointers.block -> AST.region val do_if_in_bounds : mem -> Pointers.pointer -> (Pointers.block -> block_contents -> Z.z -> 'a1) -> 'a1 Types.option val beloadv : mem -> Pointers.pointer -> ByteValues.beval Types.option val bestorev : mem -> Pointers.pointer -> ByteValues.beval -> mem Types.option