Qed.

(* Specifications: *)
Lemma eqT_sym : symmetric _ eqT.
red in |- *; auto.
Lemma eqT_trans : transitive _ eqT.
red in |- *; unfold eqT in |- *.
Theorem eqTerm_dec : forall x y : Term, {eqTerm x y} + {~ eqTerm x y}.
intros x y; case x; case y; simpl in |- *.
Theorem T1_eqT : forall a b : Term, eqTerm a T1 -> eqT b (multTerm a b).
intros a b; case a; case b; simpl in |- *; auto.
Theorem plusA_eqA_comp_l :
forall a b c : A, eqA a b -> eqA (plusA a c) (plusA b c).
Theorem invA0 : eqA A0 (invA A0).
apply eqA_trans with (y := plusA A0 (invA A0)); auto.
Theorem multA_A1_r : forall a : A, eqA (multA a A1) a.
intros a; apply eqA_trans with (y := multA A1 a); auto.
Lemma lem0 :
forall (l : list (A * B)) (a : A * B),
ExistsL B (fun x : B => R x (snd a)) (sndL l) -> MinD l -> GBarlR (a :: l).
Theorem monO_n0 : forall m : mon 0, m = n_0.
intros m; rewrite <- jjProp2.
Lemma ltT_not_eqT : forall x y : Term A n, eqT x y -> ~ ltT x y.
unfold eqT, ltT in |- *; simpl in |- *; intros x y H; rewrite H; auto.
Lemma ltT_eqTl : forall a b c : Term A n, eqT a b -> ltT c a -> ltT c b.
intros a b c H' H'0; apply ltT_eqT with (a := c) (c := a); auto.
Theorem multTerm_ltT_l :
forall m1 m2 m3,
ltT m1 m2 -> ltT (multTerm multA m3 m1) (multTerm multA m3 m2).
Theorem olist_pX_eqT :
forall a b p, olist (pX a p) -> eqT a b -> olist (pX b p).
Theorem plusP_zero_pOl : forall p q, plusP (pO A n) p q -> eqP A eqA n p q.
intros p q H'; inversion H'; auto.
Theorem plusP_zero_pOr : forall p q, plusP p (pO A n) q -> eqP A eqA n p q.
intros p q H'; inversion H'; auto.
Theorem p0_pluspf_r : forall p, eqP A eqA n (pluspf p (pO A n)) p.
intros p; rewrite <- pO_pluspf_inv2; auto.
Theorem minuspf_refl :
forall p : list (Term A n), eqP A eqA n (minuspf p p) (pO A n).
Theorem eqp_inv2 : forall p, eqP p (pO A n) -> p = pO A n.
unfold pO in |- *; intros p H'; inversion H'; auto.
Theorem eqp_inv3l :
forall a b p q, eqP (pX a p) (pX b q) -> eqTerm (A:=A) eqA (n:=n) a b.
Theorem stable_trans :
forall Q y R : list (poly A0 eqA ltM),
stable Q y -> stable y R -> stable Q R.
Theorem buch_reds :
forall (P : list (poly A0 eqA ltM)) (a b : poly A0 eqA ltM),
In a (buch P) -> In b (buch P) -> reds a b (buch P).
Theorem mon_0 : forall a : mon 0, a = n_0.
intros a; generalize (is_nil_id 0 a); simpl in |- *; auto.