Parameter a_size d_size : nat.(* address and data sizes *)

Parameter di_init cx_init al_init : BV.Parameter mem_init : Memo.Axiom di_initsize : lengthbv di_init = a_size.Axiom cx_initsize : lengthbv cx_init = a_size.Axiom al_initsize : lengthbv al_init = d_size.Axiom mem_initsize : MemoSize mem_init = a_size.Fixpoint IsNull (v : BV) : bool :=
  match v return bool with
  | nil => true
  | b :: w =>
      match b return bool with
      | true => false
      | false => IsNull w
      end
  end.

(* Specifications: *)
Lemma IsNull_nil : IsNull nilbv = true.
Lemma IsNull_false : forall (a : bool) (v : BV), IsNull (consbv a v) = true -> a = false.
Lemma IsNull_cons : forall (a : bool) (v : BV), IsNull (consbv a v) = true -> IsNull v = true.
Lemma IsNull_null : forall n : nat, IsNull (BV_null n) = true.
Lemma IsNull_BV_null : forall v : BV, IsNull v = true -> v = BV_null (lengthbv v).