(* Import the AST of this C program *)
(* The next line is "boilerplate", always required after importing an AST. *)
Instance CompSpecs : compspecs.Definition Vprog : varspecs.

(* Specifications: *)
Lemma Znth_In : forall A (d: Inhabitant A) i (l : list A) x (Hrange : 0 <= i < Zlength l) (Hnth : Znth i l = x), In x l.
Lemma In_Znth : forall A (d: Inhabitant A) (l : list A) x, In x l -> exists i, 0 <= i < Zlength l /\ Znth i l = x.
Lemma sorted_equiv : forall l, sorted l <-> sorted2 l.
Lemma sorted_mono : forall l i j (Hsort : sorted l) (Hi : 0 <= i <= j) (Hj : j < Zlength l), Znth i l <= Znth j l.
Lemma In_sorted_range : forall lo hi x l (Hsort : sorted l) (Hlo : 0 <= lo <= hi) (Hhi : hi <= Zlength l) (Hin : In x (sublist lo hi l)), Znth lo l <= x <= Znth (hi - 1) l.
Lemma In_sorted_gt : forall x i n l lo hi (Hsort : sorted l) (Hlo : lo >= 0) (Hhi : hi <= Zlength l) (Hin : In x (sublist lo hi l)) (Hi : lo <= i < hi) (Hn : Znth i l = n) (Hgt : n < x), In x (sublist (i + 1) hi l).
Lemma In_sorted_lt : forall x i n l lo hi (Hsort : sorted l) (Hlo : lo >= 0) (Hhi : hi <= Zlength l) (Hin : In x (sublist lo hi l)) (Hi : lo <= i < hi) (Hn : Znth i l = n) (Hgt : x < n), In x (sublist lo i l).
Lemma Znth_In_sublist : forall A (d: Inhabitant A) i (l : list A) lo hi (Hlo : 0 <= lo <= i) (Hhi : i < hi <= Zlength l), In (Znth i l) (sublist lo hi l).
Lemma sublist_In_sublist : forall A (l : list A) x lo hi lo' hi' (Hlo : 0 <= lo <= lo') (Hhi : hi' <= hi), In x (sublist lo' hi' l) -> In x (sublist lo hi l).
Lemma body_search: semax_body Vprog Gprog f_search search_spec.
Lemma body_main: semax_body Vprog Gprog f_main main_spec.
Lemma prog_correct: semax_prog prog Vprog Gprog.