(* Specifications: *)
Lemma Comp_dif : forall (n : nat) (x y : Digit) (X Y : Num n), valB x < valB y -> Compare_Nat.comparison (ValB (S n) (Cons n x X)) (ValB (S n) (Cons n y Y)) = L.
Lemma Comp_eq : forall (n : nat) (x y : Digit) (X Y : Num n), valB x = valB y -> Compare_Nat.comparison (ValB (S n) (Cons n x X)) (ValB (S n) (Cons n y Y)) = Compare_Nat.comparison (ValB n X) (ValB n Y).
Lemma pair_fst_snd : forall (A B : Set) (c : A * B), (fst c, snd c) = c.
Lemma bool_dec : forall b : bool, {b = true} + {b = false}.
Lemma orb_sym : forall a b : bool, a || b = b || a.
Lemma orb_false : forall a b : bool, a || b = false -> a = false /\ b = false.
Lemma orb_false_l : forall a b : bool, a || b = false -> a = false.
Lemma orb_false_r : forall a b : bool, a || b = false -> b = false.
Lemma true_orb_intro : forall b1 b2 : bool, b1 || b2 = true -> b1 = true \/ b2 = true.
Lemma and_sym : forall a b : bool, a && b = b && a.
Lemma andb_false : forall a b : bool, a && b = false -> a = false /\ b = false \/ a = false /\ b = true \/ a = true /\ b = false.
Lemma andb_true : forall a b : bool, a && b = true -> a = true /\ b = true.
Lemma andb_true_l : forall a b : bool, a && b = true -> a = true.
Lemma andb_true_r : forall a b : bool, a && b = true -> b = true.
Lemma andb_negb_true_r : forall a b : bool, a && negb b = true -> b = false.
Lemma andb_negb_true_l : forall a b : bool, negb a && b = true -> a = false.
Lemma no_true_false : forall b : bool, b = false -> b <> true.
Lemma zerob_If : forall (b : bool) (x y : nat), zerob (if_bool _ b x y) = true -> x <> 0 -> b = false.
Lemma lt_no_zerob : forall n : nat, 0 < n -> zerob n <> true.
Lemma zerob_pred_no : forall n : nat, zerob (pred n) = false -> n <> 0.
Lemma zerob_lt : forall n : nat, zerob n = false -> 0 < n.
Lemma no_zerob_true : forall n : nat, n <> 0 -> zerob n <> true.
Lemma x_1_or_y_0 : forall x y : nat, zerob (pred x) || zerob y = true -> x <> 0 -> x = 1 \/ y = 0.
Lemma zerob_pred_false : forall n : nat, zerob (pred n) = false -> zerob n = false.
Lemma pred_diff_O : forall n : nat, n <> 0 -> n <> 1 -> pred n <> 0.
Lemma S_pred_n : forall n : nat, 1 <= n -> S (pred n) = n.
Lemma eq_pred : forall n m : nat, n = m -> pred n = pred m.
Lemma pred_diff_lt : forall n : nat, n <> 0 -> n <> 1 -> 0 < pred n.
Lemma pred_n_O : forall n : nat, pred n = 0 -> n = 0 \/ n = 1.
Lemma pred_O : forall n : nat, n = 0 -> pred n = 0.
Lemma pred_no_O : forall n : nat, pred n <> 0 -> n <> 0.
Lemma lt_pred : forall n : nat, 0 < n -> pred n < n.
Lemma dif_0_pred_eq_0_eq_1 : forall n : nat, n <> 0 -> pred n = 0 -> n = 1.
Lemma lt_le_pred : forall n m : nat, n < m -> n <= pred m.
Lemma not_S_eq : forall n m : nat, S n <> S m -> n <> m.
Lemma neq_O_le : forall n : nat, n <> 0 -> 1 <= n.
Lemma lt_O : forall m n : nat, m < n -> 0 < n.
Lemma lt_Ex_n : forall n : nat, 0 < n -> exists n0 : nat, n = S n0.
Lemma lt_m_neq : forall m n : nat, m < n -> n <> m.
Lemma plus_opp : forall n m : nat, n + m - m = n.
Lemma S_plus : forall n : nat, S n = n + 1.
Lemma lt_plus : forall n m : nat, 0 < n -> m < n + m.
Lemma le_minus_plus : forall n m : nat, n - m <= n + m.
Lemma le_le_assoc_plus_minus : forall n m p : nat, n <= m -> n <= p -> m - n + p = m + (p - n).
Lemma le_lt_plus : forall n m p q : nat, n <= p -> m < q -> n + m < p + q.
Lemma plus_eq_zero : forall a b : nat, a + b = 0 -> a = 0 /\ b = 0.
Lemma le_transp_l : forall n m p : nat, n + m <= p -> m <= p - n.
Lemma le_transp_r : forall n m p : nat, n + m <= p -> n <= p - m.
Lemma lt_or_eq_O_dec : forall n : nat, {0 < n} + {n = 0}.
Lemma lt_SO_or_eq_O_or_SO_dec : forall n : nat, {1 < n} + {n = 0} + {n = 1}.
Lemma O_or_no_dec : forall n : nat, {n = 0} + {n <> 0}.
Lemma eq_or_not : forall n m : nat, {n = m} + {n <> m}.
Lemma nat_order_dec : forall a b : nat, or3 (a < b) (a = b) (b < a).
Lemma plus_mult : forall n : nat, n + n = 2 * n.
Lemma lt_mult_lt_O : forall n m : nat, 0 < n * m -> 0 < m -> 0 < n.
Lemma le_mult_cst : forall x y a : nat, x <= y -> a * x <= a * y.
Lemma le_mult_csts : forall a b c d : nat, a <= b -> c <= d -> a * c <= b * d.
Lemma lt_mult_n_Sn : forall n m : nat, 0 < m -> n * m < S n * m.
Lemma lt_mult_cst : forall x y a : nat, x < y -> 0 < a -> a * x < a * y.
Lemma lt_mult_csts : forall a b c d : nat, a < b -> c < d -> a * c < b * d.
Lemma pred_mult : forall n m : nat, 0 < n -> n * m = pred n * m + m.
Lemma le_lt_plus_mult : forall n m p n' p' : nat, n <= n' -> p < p' -> n * m + p < n' * m + p'.
Lemma le_mult_l : forall n m : nat, 0 < m -> n <= m * n.
Lemma le_mult_r : forall n m : nat, 0 < m -> n <= n * m.
Lemma lt_mult : forall n m : nat, 1 < m -> 0 < n -> n < n * m.
Lemma lt_SO_mult : forall n m : nat, 1 < n -> 0 < m -> 1 < n * m.
Lemma plus_m_mult_n_m : forall n m : nat, m + n * m = S n * m.
Lemma y_eq_multxy : forall x y : nat, x = 1 \/ y = 0 -> y = x * y.
Lemma mult_plus_distr_left : forall n m p : nat, p * (n + m) = p * n + p * m.
Lemma mult_minus_distr_left : forall n m p : nat, p * (n - m) = p * n - p * m.
Lemma mult_eq_zero : forall a b : nat, a * b = 0 -> a = 0 \/ b = 0.
Lemma lt_mult_S_S : forall n m : nat, 0 < S n * S m.
Lemma mult_S_O : forall n m : nat, 0 = S n * m -> 0 = m.
Lemma mult_reg_l : forall a b p : nat, p * a = p * b -> p = 0 \/ a = b.
Lemma mult_reg_l_bis : forall a b p : nat, 0 < p -> p * a = p * b -> a = b.
Lemma mult_eq_zero_bis : forall a b : nat, 0 < a -> a * b = 0 -> b = 0.
Lemma lt_nm_mult : forall n m : nat, 0 < n -> 0 < m -> 0 < n * m.
Lemma same_quotient_order : forall b q q' r r' : nat, r < b -> q < q' -> q * b + r < q' * b + r'.
Lemma minus_SS_n : forall n : nat, S (S n) - n = 2.
Lemma minus_S : forall n m : nat, n - m = S n - S m.
Lemma pred_minus_minus : forall n m : nat, pred (n - m) = n - S m.
Lemma minus_pred_S : forall n m p : nat, n = m - p -> pred n = m - S p.
Lemma pred_minus : forall n : nat, pred n = n - 1.
Lemma O_minus_S : forall n m : nat, 0 = n - m -> 0 = n - S m.
Lemma minus_minus_plus : forall n m p : nat, n - m - p = n - (m + p).
Lemma lt_O_minus : forall n m : nat, n < m -> 0 < m - n.
Lemma le_minus : forall n m : nat, n - m <= n.
Lemma le_minus_n_Sn : forall n m : nat, n - m <= S n - m.
Lemma le_reg_minus : forall n m p : nat, n <= m -> n - p <= m - p.
Lemma lt_transp_r : forall n m p : nat, 0 < n -> p < n + m -> p - m < n.
Lemma lt_neq_O_pred : forall n m : nat, S n < m -> pred (m - n) <> 0.
Lemma minus_Sn_n : forall n : nat, S n - n = 1.
Lemma eq_minus_plus : forall n m : nat, m <= n -> n - m + m = n.