(deffacts max-num
    (loop-max 100))
    
(defrule loop-assert
    (loop-max ?n)
    =>
    (bind ?i 1)
    (while (<= ?i ?n) do
        (assert (number ?i))
        (bind ?i (+ ?i 1))))

(defrule largest-number
    (number ?number1)
    (not (number ?number2&:(> ?number2 ?number1)))
    =>
    ;(printout t "Largest number is " ?number1 crlf)
    )

(defglobal ?*time* = (time))
(set-reset-globals FALSE)
(deffunction run-n-times (?n)
  (while (> ?n 0) do
         (reset)
         (run)
         (bind ?n (- ?n 1))))

(run-n-times 1000)

(printout t "Elapsed time: " (- (time) ?*time*) crlf)


    