(*********************************************************)

Definition decidable (P : Prop) := P \/ ~ P.

(* Specifications: *)
Lemma not_symt_et : forall P Q R S : Prop, ~ (P /\ Q /\ R /\ S) -> ~ ((P /\ Q) /\ R /\ S).
Lemma tech_not_exist_pt : forall P Q R S : nat -> Prop, ((exists k : nat, P k /\ Q k /\ R k /\ S k) -> False) -> forall k : nat, P k -> Q k -> ~ R k \/ ~ S k.
Lemma contraposee_ou : forall P Q R : Prop, (P \/ Q -> R) -> ~ R -> ~ P /\ ~ Q.
Lemma princip_min : forall P : nat -> Prop, (forall n : nat, decidable (P n)) -> forall n : nat, P n -> exists m : nat, P m /\ (forall i : nat, P i -> i >= m).
Lemma inser_trans : forall n m p q : nat, n <= m /\ m < p -> {n <= m /\ m < q} + {q <= m /\ m < p}.
Lemma inser_trans_lt : forall n m p q : nat, n < m /\ m < p -> {n < m /\ m < q} + {q <= m /\ m < p}.
Lemma inser2_trans : forall n m p q t : nat, n <= m /\ m < t -> {n <= m /\ m < q} + {q <= m /\ m < p} + {p <= m /\ m < t}.
Lemma inser2_trans_lt : forall n m p q t : nat, n < m /\ m < t -> {n < m /\ m < q} + {q <= m /\ m < p} + {p <= m /\ m < t}.
Lemma eq_le : forall n m : nat, n = m -> n <= m.
Lemma en_plus : forall a : nat, a + 0 = a.
Lemma lt_plus_minus : forall n m p : nat, m < n -> n < m + p -> n - m < p.
Lemma le_plus_min : forall n m p : nat, n <= m + p -> n - m <= p.
Lemma lt_n_minus_plus : forall n m p : nat, n < m - p -> n + p < m.
Lemma lt_plus : forall n m : nat, 0 < m -> n < n + m.
Lemma lt_minus1 : forall n m : nat, n < m -> n - m = 0.
Lemma lt_minus2 : forall n m : nat, n < m -> 0 < m - n.
Lemma lt_minus_not : forall n m : nat, n < m -> m - n <> 0.
Lemma lt_O_plus : forall n m : nat, 0 < n -> 0 < n + m.
Lemma lt_O_plus_eq : forall n m : nat, 0 < n -> n + m <> 0.
Lemma lt_minus_p : forall n m p : nat, n < m -> n - p < m.
Lemma contra_lt_minus_p : forall n m p : nat, n < m - p -> n < m.
Lemma lt_not_eq : forall n m : nat, n < m -> n <> m.
Lemma le_minus_plus : forall n m p : nat, n - m <= p -> n <= p + m.
Lemma lt_minus_plus : forall n m p : nat, n - m < p -> n < p + m.
Lemma not_gt_le : forall n m : nat, ~ n > m -> n <= m.
Lemma tech_lt : forall n m p q : nat, n < m -> m - 1 + p < q -> n + p < q.
Lemma lt_reg_minus : forall n m p : nat, n < m -> p <= n -> n - p < m - p.
Lemma simpl_minus_plus : forall a b c : nat, b <= a -> a <= c -> a - b + (c - a) = c - b.
Lemma lt_0_le : forall a : nat, 0 < a -> 1 <= a.
Lemma arith_2_0 : forall n : nat, n >= 2 -> 0 < n.
Lemma ge_trans : forall n m p : nat, n >= p -> p >= m -> n >= m.
Lemma tech_inter31b : forall l n x m : nat, l < n -> n <= x -> x < m -> x - n + l < m.