
(DEFPARAMETER |TwoDimensionalArrayCategory;CAT| 'NIL) 

(DECLAIM (NOTINLINE |TwoDimensionalArrayCategory;|)) 

(DEFPARAMETER |TwoDimensionalArrayCategory;AL| 'NIL) 

(DEFUN |TwoDimensionalArrayCategory| (&REST #1=#:G790)
  (LET (#2=#:G791)
    (COND
     ((SETQ #2#
              (|assoc| #3=(|devaluateList| #1#)
                       |TwoDimensionalArrayCategory;AL|))
      (CDR #2#))
     (T
      (SETQ |TwoDimensionalArrayCategory;AL|
              (|cons5|
               (CONS #3#
                     (SETQ #2# (APPLY #'|TwoDimensionalArrayCategory;| #1#)))
               |TwoDimensionalArrayCategory;AL|))
      #2#)))) 

(DEFUN |TwoDimensionalArrayCategory;| (|t#1| |t#2| |t#3|)
  (SPROG ((#1=#:G789 NIL))
         (PROG1
             (LETT #1#
                   (|sublisV|
                    (PAIR '(|t#1| |t#2| |t#3|)
                          (LIST (|devaluate| |t#1|) (|devaluate| |t#2|)
                                (|devaluate| |t#3|)))
                    (COND (|TwoDimensionalArrayCategory;CAT|)
                          ('T
                           (LETT |TwoDimensionalArrayCategory;CAT|
                                 (|Join| (|HomogeneousAggregate| '|t#1|)
                                         (|shallowlyMutable|)
                                         (|finiteAggregate|)
                                         (|mkCategory|
                                          '(((|new|
                                              ($ (|NonNegativeInteger|)
                                               (|NonNegativeInteger|) |t#1|))
                                             T)
                                            ((|qnew|
                                              ($ (|NonNegativeInteger|)
                                               (|NonNegativeInteger|)))
                                             T)
                                            ((|fill!| ($ $ |t#1|)) T)
                                            ((|minRowIndex| ((|Integer|) $)) T)
                                            ((|maxRowIndex| ((|Integer|) $)) T)
                                            ((|minColIndex| ((|Integer|) $)) T)
                                            ((|maxColIndex| ((|Integer|) $)) T)
                                            ((|nrows|
                                              ((|NonNegativeInteger|) $))
                                             T)
                                            ((|ncols|
                                              ((|NonNegativeInteger|) $))
                                             T)
                                            ((|elt|
                                              (|t#1| $ (|Integer|)
                                               (|Integer|)))
                                             T)
                                            ((|qelt|
                                              (|t#1| $ (|Integer|)
                                               (|Integer|)))
                                             T)
                                            ((|elt|
                                              (|t#1| $ (|Integer|) (|Integer|)
                                               |t#1|))
                                             T)
                                            ((|row| (|t#2| $ (|Integer|))) T)
                                            ((|column| (|t#3| $ (|Integer|)))
                                             T)
                                            ((|parts| ((|List| |t#1|) $)) T)
                                            ((|listOfLists|
                                              ((|List| (|List| |t#1|)) $))
                                             T)
                                            ((|subMatrix|
                                              ($ $ (|Integer|) (|Integer|)
                                               (|Integer|) (|Integer|)))
                                             T)
                                            ((|elt|
                                              ($ $ (|Integer|)
                                               (|List| (|Integer|))))
                                             T)
                                            ((|elt|
                                              ($ $ (|List| (|Integer|))
                                               (|Integer|)))
                                             T)
                                            ((|elt|
                                              ($ $ (|List| (|Integer|))
                                               (|List| (|Integer|))))
                                             T)
                                            ((|elt|
                                              ($ $ (|Segment| (|Integer|))
                                               (|Segment| (|Integer|))))
                                             T)
                                            ((|elt|
                                              ($ $ (|List| (|Integer|))
                                               (|Segment| (|Integer|))))
                                             T)
                                            ((|elt|
                                              ($ $ (|Segment| (|Integer|))
                                               (|List| (|Integer|))))
                                             T)
                                            ((|elt|
                                              ($ $ (|Integer|)
                                               (|List|
                                                (|Segment| (|Integer|)))))
                                             T)
                                            ((|elt|
                                              ($ $
                                               (|List| (|Segment| (|Integer|)))
                                               (|Integer|)))
                                             T)
                                            ((|setelt!|
                                              ($ $ (|Integer|)
                                               (|List| (|Segment| (|Integer|)))
                                               $))
                                             T)
                                            ((|setelt!|
                                              ($ $
                                               (|List| (|Segment| (|Integer|)))
                                               (|Integer|) $))
                                             T)
                                            ((|elt|
                                              ($ $ (|Segment| (|Integer|))
                                               (|List|
                                                (|Segment| (|Integer|)))))
                                             T)
                                            ((|elt|
                                              ($ $
                                               (|List| (|Segment| (|Integer|)))
                                               (|Segment| (|Integer|))))
                                             T)
                                            ((|elt|
                                              ($ $
                                               (|List| (|Segment| (|Integer|)))
                                               (|List|
                                                (|Segment| (|Integer|)))))
                                             T)
                                            ((|rowSlice|
                                              ((|Segment| (|Integer|)) $))
                                             T)
                                            ((|colSlice|
                                              ((|Segment| (|Integer|)) $))
                                             T)
                                            ((|setelt!|
                                              (|t#1| $ (|Integer|) (|Integer|)
                                               |t#1|))
                                             T)
                                            ((|qsetelt!|
                                              (|t#1| $ (|Integer|) (|Integer|)
                                               |t#1|))
                                             T)
                                            ((|setRow!|
                                              ($ $ (|Integer|) |t#2|))
                                             T)
                                            ((|setColumn!|
                                              ($ $ (|Integer|) |t#3|))
                                             T)
                                            ((|setelt!|
                                              ($ $ (|Integer|)
                                               (|List| (|Integer|)) $))
                                             T)
                                            ((|setelt!|
                                              ($ $ (|List| (|Integer|))
                                               (|Integer|) $))
                                             T)
                                            ((|setelt!|
                                              ($ $ (|List| (|Integer|))
                                               (|List| (|Integer|)) $))
                                             T)
                                            ((|setelt!|
                                              ($ $ (|Segment| (|Integer|))
                                               (|Segment| (|Integer|)) $))
                                             T)
                                            ((|setelt!|
                                              ($ $ (|List| (|Integer|))
                                               (|Segment| (|Integer|)) $))
                                             T)
                                            ((|setelt!|
                                              ($ $ (|Segment| (|Integer|))
                                               (|List| (|Integer|)) $))
                                             T)
                                            ((|setelt!|
                                              ($ $ (|Segment| (|Integer|))
                                               (|List| (|Segment| (|Integer|)))
                                               $))
                                             T)
                                            ((|setelt!|
                                              ($ $
                                               (|List| (|Segment| (|Integer|)))
                                               (|Segment| (|Integer|)) $))
                                             T)
                                            ((|setelt!|
                                              ($ $
                                               (|List| (|Segment| (|Integer|)))
                                               (|List| (|Segment| (|Integer|)))
                                               $))
                                             T)
                                            ((|setsubMatrix!|
                                              ($ $ (|Integer|) (|Integer|) $))
                                             T)
                                            ((|swapRows!|
                                              ($ $ (|Integer|) (|Integer|)))
                                             T)
                                            ((|swapColumns!|
                                              ($ $ (|Integer|) (|Integer|)))
                                             T)
                                            ((|transpose| ($ $)) T)
                                            ((|squareTop| ($ $)) T)
                                            ((|horizConcat| ($ $ $)) T)
                                            ((|horizConcat| ($ (|List| $))) T)
                                            ((|vertConcat| ($ $ $)) T)
                                            ((|vertConcat| ($ (|List| $))) T)
                                            ((|blockConcat|
                                              ($ (|List| (|List| $))))
                                             T)
                                            ((|vertSplit|
                                              ((|List| $) $
                                               (|PositiveInteger|)))
                                             T)
                                            ((|vertSplit|
                                              ((|List| $) $
                                               (|List|
                                                (|NonNegativeInteger|))))
                                             T)
                                            ((|horizSplit|
                                              ((|List| $) $
                                               (|PositiveInteger|)))
                                             T)
                                            ((|horizSplit|
                                              ((|List| $) $
                                               (|List|
                                                (|NonNegativeInteger|))))
                                             T)
                                            ((|blockSplit|
                                              ((|List| (|List| $)) $
                                               (|PositiveInteger|)
                                               (|PositiveInteger|)))
                                             T)
                                            ((|blockSplit|
                                              ((|List| (|List| $)) $
                                               (|List| (|NonNegativeInteger|))
                                               (|List|
                                                (|NonNegativeInteger|))))
                                             T)
                                            ((|map|
                                              ($ (|Mapping| |t#1| |t#1|) $))
                                             T)
                                            ((|map!|
                                              ($ (|Mapping| |t#1| |t#1|) $))
                                             T)
                                            ((|map|
                                              ($ (|Mapping| |t#1| |t#1| |t#1|)
                                               $ $))
                                             T)
                                            ((|map|
                                              ($ (|Mapping| |t#1| |t#1| |t#1|)
                                               $ $ |t#1|))
                                             T))
                                          '(((|Comparable|)
                                             (|has| |t#1| (|Comparable|))))
                                          '((|List| (|List| $))
                                            (|List| (|NonNegativeInteger|))
                                            (|PositiveInteger|) (|List| $)
                                            (|Integer|)
                                            (|List| (|Segment| (|Integer|)))
                                            (|Segment| (|Integer|))
                                            (|List| (|Integer|))
                                            (|List| (|List| |t#1|))
                                            (|List| |t#1|)
                                            (|NonNegativeInteger|))
                                          NIL))
                                 . #2=(|TwoDimensionalArrayCategory|)))))
                   . #2#)
           (SETELT #1# 0
                   (LIST '|TwoDimensionalArrayCategory| (|devaluate| |t#1|)
                         (|devaluate| |t#2|) (|devaluate| |t#3|)))))) 
