DONE:

 (1) add a strengthen version of natp-mod in lib/basic.lisp
 
 (defthm natp-mod-2
   (implies (and (integerp m)
                 (integerp n)
	         (> n 0))
            (natp (mod m n)))
   :rule-classes ((:type-prescription :typed-term (mod m n))))


 (2) add a new lemma to lib/basic.lisp

  (defthm mod-mod-times
    (implies (and (integerp a)
		  (integerp b)
		  (integerp n)
		  (> n 0))
	     (= (mod (* (mod a n) b) n)
		(mod (* a b) n)))
    :rule-classes ())


 (3) disable mod in lib/basic.lisp 

  
 (4) add 

   (defthm mod-times-mod
    (implies (and (integerp a)
		  (integerp b)
		  (integerp c)
		  (not (zp n))
		  (= (mod a n) (mod b n)))
	     (= (mod (* a c) n) (mod (* b c) n)))
  :rule-classes ())

    
 (5) add the following into lib/arith.lisp 

   (defthm expt-positive-integer-type
       (implies (and (integerp a)
   		  (integerp i)
   		  (>= i 0))
   	     (integerp (expt a i)))
     :rule-classes (:type-prescription))


TODO:




