Instance Inhabitant_val : Inhabitant val := Vundef.Instance Inhabitant_int: Inhabitant int := Int.zero.Instance Inhabitant_byte: Inhabitant byte := Byte.zero.Instance Inhabitant_int64: Inhabitant Int64.int := Int64.zero.Instance Inhabitant_ptrofs: Inhabitant Ptrofs.int := Ptrofs.zero.Instance Inhabitant_float : Inhabitant float := Float.zero.Instance Inhabitant_float32 : Inhabitant float32 := Float32.zero.Definition Vubyte (c: Byte.int) : val :=
  Vint (Int.repr (Byte.unsigned c)).Definition Vbyte (c: Byte.int) : val :=
  Vint (Int.repr (Byte.signed c)).

(* Specifications: *)
Lemma is_long_dec v: {is_long v} + {~ is_long v}.
Lemma is_single_dec v: {is_single v} + {~ is_single v}.
Lemma is_float_dec v: {is_float v} + {~ is_float v}.
Lemma is_pointer_or_integer_dec v: {is_pointer_or_integer v} + {~ is_pointer_or_integer v}.
Lemma is_pointer_or_null_dec v: {is_pointer_or_null v} + {~ is_pointer_or_null v}.
Lemma isptr_dec v: {isptr v} + {~ isptr v}.
Lemma isptr_offset_val': forall i p, isptr p -> isptr (offset_val i p).
Lemma offset_val_force_ptr: offset_val 0 = force_ptr.
Lemma offset_offset_val: forall v i j, offset_val j (offset_val i v) = offset_val (i + j) v.
Lemma ltu_repr: forall i j, (0 <= i <= Int.max_unsigned -> 0 <= j <= Int.max_unsigned -> Int.ltu (Int.repr i) (Int.repr j) = true -> i<j)%Z.
Lemma ltu_repr_false: forall i j, (0 <= i <= Int.max_unsigned -> 0 <= j <= Int.max_unsigned -> Int.ltu (Int.repr i) (Int.repr j) = false -> i>=j)%Z.
Lemma int_add_assoc1: forall z i j, Int.add (Int.add z (Int.repr i)) (Int.repr j) = Int.add z (Int.repr (i+j)).
Lemma ptrofs_add_assoc1: forall z i j, Ptrofs.add (Ptrofs.add z (Ptrofs.repr i)) (Ptrofs.repr j) = Ptrofs.add z (Ptrofs.repr (i+j)).
Lemma divide_add_align: forall a b c, Z.divide b a -> a + (align c b) = align (a + c) b.
Lemma force_val_e: forall v, force_val (Some v) = v.