Instance CompSpecs : compspecs.Definition Vprog : varspecs.Inductive tree := 
| LEAF: forall i, 0 <= i <= Int.max_signed -> tree
| NODE: tree -> tree -> tree.Inductive tree := 
| LEAF: forall i, 0 <= i <= Int.max_signed -> tree
| NODE: tree -> tree -> tree.Inductive tree := 
| LEAF: forall i, 0 <= i <= Int.max_signed -> tree
| NODE: tree -> tree -> tree.Definition POINTER_BOUNDARY : Z := 1024.Definition valid_int_or_ptr (x: val) :=
 match x with
 | Vint i => Int.testbit i 0 = true
              \/ Int.unsigned i < POINTER_BOUNDARY
 | Vptr b z => Ptrofs.testbit z 0 = false
 | _ => False
 end.

(* Specifications: *)
Lemma valid_int_or_ptr_ii1: forall i, valid_int_or_ptr (Vint (Int.repr (i + i + 1))).
Lemma valid_int_or_ptr_i2: forall i, 0 <= i < POINTER_BOUNDARY -> valid_int_or_ptr (Vint (Int.repr i)).
Lemma body_copytree: semax_body Vprog Gprog f_copytree copytree_spec.