Definition proj_sumbool_is_false : forall (P : Prop) (a : {P} + {~ P}), ~ P -> Coqlib.proj_sumbool a = false.
Module BlockList.
Fixpoint mkBlockList (n : nat) : list nat :=
match n with
| 0 => nil
| S 0 => nil
| S n =>  n :: (mkBlockList n)
end.

(* Specifications: *)
Lemma mkBlockList_unfold : forall n (Hn: n > 1),
n :: (mkBlockList n) = mkBlockList (S n).
Lemma mkBlockList_unfold' : forall n,
(S n) :: (mkBlockList (S n)) = mkBlockList (S (S n)).
Lemma mkBlockList_include : forall n k (Hk: k > 0) (Hineq: k < n) (Hn: n > 1),
List.In k (mkBlockList n).
Lemma mkBlockList_not_in : forall n m
(Hge: m >= n)
(HIn: List.In m (mkBlockList n)),
False.
Lemma mkBlockList_range:
forall n k
(HIn: List.In k (mkBlockList (S (S n)))),
k < (S (S n)) /\ k > 0.