End PartialTree_WandQFrame_Func_Hole.
Module PartialTreeboxRep_WandQFrame_Func_Hole.
Export PartialTree_WandQFrame_Func_Hole.
Definition partial_treebox_rep := partialT treebox_rep.

(* Specifications: *)
Lemma partial_treebox_rep_singleton_left: forall (t2: tree val) k (v p b: val),
Int.min_signed <= Z.of_nat k <= Int.max_signed ->
is_pointer_or_null v ->
data_at Tsh (tptr t_struct_tree) p b *
field_at Tsh t_struct_tree [StructField _key] (Vint (Int.repr (Z.of_nat k))) p *
field_at Tsh t_struct_tree [StructField _value] v p *
treebox_rep t2 (field_address t_struct_tree [StructField _right] p)
|-- partial_treebox_rep (fun t1 => T t1 k v t2) b (field_address t_struct_tree [StructField _left] p).
Lemma partial_treebox_rep_singleton_right: forall (t1: tree val) k (v p b: val),
Int.min_signed <= Z.of_nat k <= Int.max_signed ->
is_pointer_or_null v ->
data_at Tsh (tptr t_struct_tree) p b *
field_at Tsh t_struct_tree [StructField _key] (Vint (Int.repr (Z.of_nat k))) p *
field_at Tsh t_struct_tree [StructField _value] v p *
treebox_rep t1 (field_address t_struct_tree [StructField _left] p)
|-- partial_treebox_rep (fun t2 => T t1 k v t2) b (field_address t_struct_tree [StructField _right] p).
Lemma partial_treebox_rep_partial_treebox_rep: forall pt12 pt23 p1 p2 p3,
partial_treebox_rep pt12 p2 p1 * partial_treebox_rep pt23 p3 p2 |-- partial_treebox_rep (Basics.compose pt23 pt12) p3 p1.
Lemma partial_treebox_rep_singleton_right: forall (t1 t2': tree val) k (v p b: val),
Int.min_signed <= Z.of_nat k <= Int.max_signed ->
is_pointer_or_null v ->
data_at Tsh (tptr t_struct_tree) p b *
field_at Tsh t_struct_tree [StructField _key] (Vint (Int.repr (Z.of_nat k))) p *
field_at Tsh t_struct_tree [StructField _value] v p *
treebox_rep t1 (field_address t_struct_tree [StructField _left] p)
|-- treebox_rep t2'
(field_address t_struct_tree [StructField _right] p) -*
treebox_rep (T t1 k v t2') b.
Lemma partial_treebox_rep_partial_treebox_rep: forall t1 t2 t3 p1 p2 p3,
(treebox_rep t1 p1 -* treebox_rep t2 p2) * (treebox_rep t2 p2 -* treebox_rep t3 p3) |-- treebox_rep t1 p1 -* treebox_rep t3 p3.
Lemma emp_partial_treebox_rep_H: forall t p,
emp |-- treebox_rep t p -* treebox_rep t p.
Lemma treebox_rep_partial_treebox_rep: forall t t0 p p0,
treebox_rep t p * (treebox_rep t p -* treebox_rep t0 p0) |-- treebox_rep t0 p0.