Qed.

(* Specifications: *)
Lemma no_or_r : forall A B : Prop, ~ A -> A \/ B -> B.
intros A B not_A A_or_B.
Lemma orb_false_r : forall a b : bool, a || b = false -> b = false.
intros; elim (orb_false a b); auto with bool.
Lemma true_orb_intro :
forall b1 b2 : bool, b1 || b2 = true -> b1 = true \/ b2 = true.
Lemma andb_true_l : forall a b : bool, a && b = true -> a = true.
intros; elim (andb_true a b); auto with bool.
Lemma andb_true_r : forall a b : bool, a && b = true -> b = true.
intros; elim (andb_true a b); auto with bool.
Lemma andb_negb_true_r : forall a b : bool, a && negb b = true -> b = false.
simple induction b; auto with bool.
Lemma nat_order_dec : forall a b : nat, or3 (a < b) (a = b) (b < a).
simple induction a; simple induction b.
Lemma le_mult_cst : forall x y a : nat, x <= y -> a * x <= a * y.
auto with arith.
Lemma le_mult_csts : forall a b c d : nat, a <= b -> c <= d -> a * c <= b * d.
intros.
Lemma y_eq_multxy : forall x y : nat, x = 1 \/ y = 0 -> y = x * y.
intros x y H; elim H; clear H; intros H; rewrite H; simpl in |- *;
auto with arith.
Lemma mult_plus_distr_left : forall n m p : nat, p * (n + m) = p * n + p * m.
intros; elim mult_comm.