
(/VERSIONCHECK 2) 

(DEFPARAMETER |DirectProductCategory;CAT| 'NIL) 

(DEFPARAMETER |DirectProductCategory;AL| 'NIL) 

(DEFUN |DirectProductCategory| (&REST #0=#:G1820)
  (LET (#1=#:G1821)
    (COND
      ((SETQ #1#
             (|assoc| #2=(|devaluateList| #0#)
                      |DirectProductCategory;AL|))
       (CDR #1#))
      (T (SETQ |DirectProductCategory;AL|
               (|cons5| (CONS #2#
                              (SETQ #1#
                                    (APPLY #'|DirectProductCategory;|
                                     #0#)))
                        |DirectProductCategory;AL|))
         #1#)))) 

(DEFUN |DirectProductCategory;| (|t#1| |t#2|)
  (PROG (#0=#:G1819)
    (RETURN
      (PROG1 (LETT #0#
                   (|sublisV|
                       (PAIR '(|t#1| |t#2|)
                             (LIST (|devaluate| |t#1|)
                                   (|devaluate| |t#2|)))
                       (|sublisV|
                           (PAIR '(#1=#:G1817 #2=#:G1818)
                                 (LIST '(|Integer|) '(|Vector| |t#2|)))
                           (COND
                             (|DirectProductCategory;CAT|)
                             ('T
                              (LETT |DirectProductCategory;CAT|
                                    (|Join|
                                     (|IndexedAggregate| '#1# '|t#2|)
                                     (|CoercibleTo| '#2#)
                                     (|finiteAggregate|)
                                     (|mkCategory| '|domain|
                                      '(((|directProduct|
                                          ($ (|Vector| |t#2|)))
                                         T)
                                        ((|unitVector|
                                          ($ (|PositiveInteger|)))
                                         (|has| |t#2| (|Ring|)))
                                        ((|dot| (|t#2| $ $))
                                         (|has| |t#2| (|Ring|)))
                                        ((* ($ |t#2| $))
                                         (|has| |t#2| (|Monoid|)))
                                        ((* ($ $ |t#2|))
                                         (|has| |t#2| (|Monoid|))))
                                      '(((|FullyRetractableTo| |t#2|)
                                         (|has| |t#2| (|SetCategory|)))
                                        ((|BiModule| |t#2| |t#2|)
                                         (|has| |t#2| (|Ring|)))
                                        ((|DifferentialExtension|
                                          |t#2|)
                                         (|has| |t#2| (|Ring|)))
                                        ((|FullyLinearlyExplicitRingOver|
                                          |t#2|)
                                         (|has| |t#2| (|Ring|)))
                                        ((|AbelianSemiGroup|)
                                         (|has| |t#2|
                                          (|AbelianSemiGroup|)))
                                        ((|CancellationAbelianMonoid|)
                                         (|has| |t#2|
                                          (|CancellationAbelianMonoid|)))
                                        ((|Monoid|)
                                         (|has| |t#2| (|Monoid|)))
                                        ((|Finite|)
                                         (|has| |t#2| (|Finite|)))
                                        ((|Algebra| |t#2|)
                                         (|has| |t#2|
                                          (|CommutativeRing|)))
                                        ((|CommutativeRing|)
                                         (|has| |t#2|
                                          (|CommutativeRing|)))
                                        ((|unitsKnown|)
                                         (|has| |t#2| (|unitsKnown|)))
                                        ((|OrderedRing|)
                                         (|has| |t#2| (|OrderedRing|)))
                                        ((|OrderedAbelianMonoidSup|)
                                         (|has| |t#2|
                                          (|OrderedAbelianMonoidSup|)))
                                        ((|VectorSpace| |t#2|)
                                         (|has| |t#2| (|Field|))))
                                      '((|PositiveInteger|)
                                        (|Vector| |t#2|))
                                      NIL))
                                    . #3=(|DirectProductCategory|)))))) . #3#)
        (SETELT #0# 0
                (LIST '|DirectProductCategory| (|devaluate| |t#1|)
                      (|devaluate| |t#2|))))))) 
