Require Export VST.msl.iter_sepcon.
Require Export VST.concurrency.semax_conc_pred.
Require Export VST.concurrency.semax_conc.
Require Export VST.floyd.proofauto.
Require Export VST.floyd.sublist.
(* general list lemmas *)
Notation vint z := (Vint (Int.repr z)).
Notation vptrofs z := (Vptrofs (Ptrofs.repr z)).

(* Specifications: *)
Lemma app_cons_assoc : forall {A} l1 (x : A) l2, l1 ++ x :: l2 = (l1 ++ [x]) ++ l2.
Lemma Forall_forall_Znth : forall {A}{d: Inhabitant A} (P : A -> Prop) l,
Forall P l <-> forall i, 0 <= i < Zlength l -> P (Znth i l).
Lemma Zmod_smallish : forall x y, y <> 0 -> 0 <= x < 2 * y ->
x mod y = x \/ x mod y = x - y.
Lemma Zmod_plus_inv : forall a b c d (Hc : c > 0) (Heq : (a + b) mod c = (d + b) mod c),
a mod c = d mod c.
Lemma Znth_app : forall {A}{d: Inhabitant A} (l1 l2 : list A) i,
Zlength l1 = i -> Znth i (l1 ++ l2) = Znth 0 l2.
Corollary Znth_app1 : forall {A}{d: Inhabitant A} l1 (x : A) l2 i,
Zlength l1 = i -> Znth i (l1 ++ x :: l2) = x.
Lemma repable_0 : repable_signed 0.
Hint Resolve repable_0.