Require Arith. Require PolyList. Require machine. Require axioms. Section java. (* Consistency guarantees: assumptions about the outside information *) (* need in allocinv.v *) Axiom jextends_reflexive : (C:exp) (jextends C C). Axiom jextends_transitive : (C,D,E:exp) (jextends C D) -> (jextends D E) -> (jextends C E). Axiom jifield_extends : (C,D:exp)(OFF:nat)(T:javatype) (jextends C D) -> (jifield D OFF T) -> (jifield C OFF T). Axiom jvmethod_extends : (C,D:exp)(OFF:nat)(SIG:exp) (jextends C D) -> (jvmethod D OFF SIG) -> (jvmethod C OFF SIG). Axiom field_size_good : (C:exp)(OFF:nat)(T:javatype)(SZ:nat) (jifield C OFF T) -> (jsize T SZ) -> (le (plus OFF SZ) (size_of_instance C)). Axiom jifield_four : (C:exp)(OFF:nat)(T:javatype) (jifield C OFF T) -> (le (4) OFF). Axiom virtab_size_good : (C:exp)(OFF:nat)(SIG:exp) (jvmethod C OFF SIG) -> (le (plus OFF (4)) (size_of_virtab C)). Axiom virtab_size_four : (C:exp) (le (4) (size_of_virtab C)). Axiom fields_equal_or_apart : (C:exp) (OFF1,OFF2:nat)(T1,T2:javatype)(SZ1,SZ2:nat) (jifield C OFF1 T1) -> (jifield C OFF2 T2) -> (jsize T1 SZ1) -> (jsize T2 SZ2) -> (OFF1=OFF2 /\ T1=T2)\/(apart OFF1 SZ1 OFF2 SZ2). Axiom no_object_super : (D:exp) (jextends _4java4lang6Object_C D) -> D = _4java4lang6Object_C. Axiom no_object_fields : (OFF:nat)(T:javatype) (jifield _4java4lang6Object_C OFF T) -> False. (* this one also in allocinv.v *) Axiom instance_size_four : (C:exp) (le (4) (size_of_instance C)). (* need in start.v *) Axiom all_classes_in_list : (C:exp)(EX D:exp | (In D list_of_classes) /\ (size_of_virtab C)=(size_of_virtab D) /\ (loc_of_virtab C)=(loc_of_virtab D)). Axiom all_staticptrs_in_list : (E:exp)(T:javatype) (given_staticptr E T) -> (In (E,T) list_of_staticptrs). Axiom list_all_staticptrs : (E:exp)(T:javatype) (In (E,T) list_of_staticptrs) -> (given_staticptr E T). Axiom staticptr_equal_or_apart : (E1,E2:exp)(T1,T2:javatype)(SZ1,SZ2:nat) (given_staticptr E1 T1) -> (jsize T1 SZ1) -> (given_staticptr E2 T2) -> (jsize T2 SZ2) -> (E1=E2 /\ T1=T2) \/ (apart E1 SZ1 E2 SZ2). Axiom staticptr_virtab_apart : (E:exp)(T:javatype)(SZ:nat)(C:exp) (given_staticptr E T) -> (jsize T SZ) -> (apart E SZ (loc_of_virtab C) (size_of_virtab C)). End java.