Transparent bind.

(* Specifications: *)
Lemma body_print_intr: semax_body Vprog Gprog f_print_intr print_intr_spec.
Lemma chars_of_nat_eq : forall n, chars_of_nat n =
match (n / 10)%nat with
| O => [Int.repr (Z.of_nat n + char0)]
| n' => chars_of_nat n' ++ [Int.repr (Z.of_nat (n mod 10) + char0)]
end.
Lemma chars_of_nat_intr : forall n, (0 < n)%nat ->
chars_of_nat n = intr n.
Lemma body_print_int: semax_body Vprog Gprog f_print_int print_int_spec.
Lemma read_sum_eq : forall n d, read_sum n d =
(if zlt n 1000 then if zlt d 10 then
write_list (chars_of_Z (n + d));; write (Int.repr newline);;
c <- read;; read_sum (n + d) (Int.unsigned c - char0)
else ret tt else ret tt).
Lemma body_main: semax_body Vprog Gprog f_main main_spec.
Instance Espec : OracleKind := add_funspecs IO_Espec (ext_link_prog prog) Gprog.
Lemma prog_correct:
semax_prog_ext prog main_itree Vprog Gprog.