(*
Ltac helper2 :=
 match goal with
   | |- context [CBLOCK] => add_nonredundant (CBLOCK_eq)
   | |- context [LBLOCK] => add_nonredundant (LBLOCK_eq)
   | |- context [CBLOCKz] => add_nonredundant (CBLOCKz_eq)
   | |- context [LBLOCKz] => add_nonredundant (LBLOCKz_eq)
   | H: context [CBLOCK] |- _ => add_nonredundant (CBLOCK_eq)
   | H: context [LBLOCK] |- _ => add_nonredundant (LBLOCK_eq)
   | H: context [CBLOCKz] |- _ => add_nonredundant (CBLOCKz_eq)
   | H: context [LBLOCKz] |- _ => add_nonredundant (LBLOCKz_eq)
  end.

Ltac Omega1 := Omega (helper1 || helper2).
*)
Ltac Omega1 := rep_omega.Ltac MyOmega :=
  rewrite ?length_list_repeat, ?skipn_length, ?map_length,
   ?Zlength_map, ?Zlength_nil;
  pose proof CBLOCK_eq;
(*  pose proof CBLOCKz_eq;*)
  pose proof LBLOCK_eq;
(*  pose proof LBLOCKz_eq; *)
  Omega1.

(* Specifications: *)
Lemma sizeof_tarray_tuchar: forall (n:Z), (n>=0)%Z -> (sizeof (tarray tuchar n) = n)%Z.
Lemma Zlength_bytelist_to_intlist: forall (n:Z) (l: list byte), (Zlength l = WORD*n)%Z -> Zlength (bytelist_to_intlist l) = n.
Lemma nth_intlist_to_bytelist_eq: forall d (n i j k: nat) al, (i < n)%nat -> (i < j*4)%nat -> (i < k*4)%nat -> nth i (intlist_to_bytelist (firstn j al)) d = nth i (intlist_to_bytelist (firstn k al)) d.
Lemma s256a_data_len: forall a: s256abs, Zlength (s256a_data a) = Zlength a mod CBLOCKz.
Lemma s256a_data_Zlength_less: forall a, Zlength (s256a_data a) < CBLOCKz.
Lemma hashed_data_recombine: forall a, intlist_to_bytelist (s256a_hashed a) ++ s256a_data a = a.