(*Division  of monomials (total function!).
*)

Definition div_mon_clean : forall d : nat, mon d -> mon d -> mon d * bool.Definition is_nil : forall d : nat, mon d -> mon d.

(* Specifications: *)
Theorem is_nil_id : forall (d : nat) (a : mon d), a = is_nil d a.
Theorem mon_0 : forall a : mon 0, a = n_0.
Theorem eqmon_dec : forall (d : nat) (x y : mon d), {x = y} + {x <> y}.
Theorem mult_div_com : forall (d : nat) (a b : mon d), div_mon d (mult_mon d a b) b = a.
Theorem mult_div_id : forall (d : nat) (a : mon d), div_mon d a a = zero_mon d.
Theorem minus_lt_0 : forall m n : nat, n < m -> n - m = 0.
Theorem div_clean_dec2 : forall (d : nat) (a b : mon d), gb d (div_mon_clean d a b) = false -> mult_mon d (div_mon d a b) b <> a.
Theorem div_clean_dec1 : forall (d : nat) (a b : mon d), gb d (div_mon_clean d a b) = true -> gm d (div_mon_clean d a b) = div_mon d a b /\ mult_mon d (div_mon d a b) b = a.