
(/VERSIONCHECK 2) 

(DEFUN |FM;*;R2$;1| (|r| |x| $)
  (PROG (#0=#:G1825 |u| #1=#:G1826)
    (RETURN
      (SEQ (COND
             ((SPADCALL |r| (QREFELT $ 11)) (|spadConstant| $ 12))
             ((SPADCALL |r| (|spadConstant| $ 13) (QREFELT $ 14)) |x|)
             ('T
              (PROGN
                (LETT #0# NIL . #2=(|FM;*;R2$;1|))
                (SEQ (LETT |u| NIL . #2#) (LETT #1# |x| . #2#) G190
                     (COND
                       ((OR (ATOM #1#)
                            (PROGN (LETT |u| (CAR #1#) . #2#) NIL))
                        (GO G191)))
                     (SEQ (EXIT (LETT #0#
                                      (CONS
                                       (CONS (QCAR |u|)
                                        (SPADCALL |r| (QCDR |u|)
                                         (QREFELT $ 15)))
                                       #0#) . #2#)))
                     (LETT #1# (CDR #1#) . #2#) (GO G190) G191
                     (EXIT (NREVERSE0 #0#)))))))))) 

(DEFUN |FM;*;R2$;2| (|r| |x| $)
  (PROG (#0=#:G1831 |u| #1=#:G1832 |a|)
    (RETURN
      (SEQ (COND
             ((SPADCALL |r| (QREFELT $ 11)) (|spadConstant| $ 12))
             ((SPADCALL |r| (|spadConstant| $ 13) (QREFELT $ 14)) |x|)
             ('T
              (PROGN
                (LETT #0# NIL . #2=(|FM;*;R2$;2|))
                (SEQ (LETT |u| NIL . #2#) (LETT #1# |x| . #2#) G190
                     (COND
                       ((OR (ATOM #1#)
                            (PROGN (LETT |u| (CAR #1#) . #2#) NIL))
                        (GO G191)))
                     (SEQ (EXIT (COND
                                  ((SEQ
                                    (LETT |a|
                                     (SPADCALL |r| (QCDR |u|)
                                      (QREFELT $ 15)) . #2#)
                                    (EXIT
                                     (COND
                                       ((SPADCALL |a|
                                         (|spadConstant| $ 17)
                                         (QREFELT $ 14))
                                        'NIL)
                                       ('T 'T))))
                                   (LETT #0#
                                    (CONS (CONS (QCAR |u|) |a|) #0#) . #2#)))))
                     (LETT #1# (CDR #1#) . #2#) (GO G190) G191
                     (EXIT (NREVERSE0 #0#)))))))))) 

(DEFUN |FM;*;$R$;3| (|x| |r| $)
  (PROG (#0=#:G1836 |u| #1=#:G1837)
    (RETURN
      (SEQ (COND
             ((SPADCALL |r| (QREFELT $ 11)) (|spadConstant| $ 12))
             ((SPADCALL |r| (|spadConstant| $ 13) (QREFELT $ 14)) |x|)
             ('T
              (PROGN
                (LETT #0# NIL . #2=(|FM;*;$R$;3|))
                (SEQ (LETT |u| NIL . #2#) (LETT #1# |x| . #2#) G190
                     (COND
                       ((OR (ATOM #1#)
                            (PROGN (LETT |u| (CAR #1#) . #2#) NIL))
                        (GO G191)))
                     (SEQ (EXIT (LETT #0#
                                      (CONS
                                       (CONS (QCAR |u|)
                                        (SPADCALL (QCDR |u|) |r|
                                         (QREFELT $ 15)))
                                       #0#) . #2#)))
                     (LETT #1# (CDR #1#) . #2#) (GO G190) G191
                     (EXIT (NREVERSE0 #0#)))))))))) 

(DEFUN |FM;*;$R$;4| (|x| |r| $)
  (PROG (#0=#:G1842 |u| #1=#:G1843 |a|)
    (RETURN
      (SEQ (COND
             ((SPADCALL |r| (QREFELT $ 11)) (|spadConstant| $ 12))
             ((SPADCALL |r| (|spadConstant| $ 13) (QREFELT $ 14)) |x|)
             ('T
              (PROGN
                (LETT #0# NIL . #2=(|FM;*;$R$;4|))
                (SEQ (LETT |u| NIL . #2#) (LETT #1# |x| . #2#) G190
                     (COND
                       ((OR (ATOM #1#)
                            (PROGN (LETT |u| (CAR #1#) . #2#) NIL))
                        (GO G191)))
                     (SEQ (EXIT (COND
                                  ((SEQ
                                    (LETT |a|
                                     (SPADCALL (QCDR |u|) |r|
                                      (QREFELT $ 15)) . #2#)
                                    (EXIT
                                     (COND
                                       ((SPADCALL |a|
                                         (|spadConstant| $ 17)
                                         (QREFELT $ 14))
                                        'NIL)
                                       ('T 'T))))
                                   (LETT #0#
                                    (CONS (CONS (QCAR |u|) |a|) #0#) . #2#)))))
                     (LETT #1# (CDR #1#) . #2#) (GO G190) G191
                     (EXIT (NREVERSE0 #0#)))))))))) 

(DEFUN |FM;coerce;$Of;5| (|x| $)
  (PROG (|rec| #0=#:G1849 |le|)
    (RETURN
      (SEQ (COND
             ((NULL |x|)
              (SPADCALL (|spadConstant| $ 17) (QREFELT $ 20)))
             ('T
              (SEQ (LETT |le| NIL . #1=(|FM;coerce;$Of;5|))
                   (SEQ (LETT |rec| NIL . #1#)
                        (LETT #0# (REVERSE |x|) . #1#) G190
                        (COND
                          ((OR (ATOM #0#)
                               (PROGN
                                 (LETT |rec| (CAR #0#) . #1#)
                                 NIL))
                           (GO G191)))
                        (SEQ (EXIT (COND
                                     ((SPADCALL (QCDR |rec|)
                                       (|spadConstant| $ 13)
                                       (QREFELT $ 14))
                                      (LETT |le|
                                       (CONS
                                        (SPADCALL (QCAR |rec|)
                                         (QREFELT $ 21))
                                        |le|) . #1#))
                                     ('T
                                      (LETT |le|
                                       (CONS
                                        (SPADCALL
                                         (SPADCALL (QCDR |rec|)
                                          (QREFELT $ 20))
                                         (SPADCALL (QCAR |rec|)
                                          (QREFELT $ 21))
                                         (QREFELT $ 22))
                                        |le|) . #1#)))))
                        (LETT #0# (CDR #0#) . #1#) (GO G190) G191
                        (EXIT NIL))
                   (EXIT (SPADCALL (ELT $ 23) |le| (QREFELT $ 26)))))))))) 

(DEFUN |FreeModule| (&REST #0=#:G1854)
  (PROG ()
    (RETURN
      (PROG (#1=#:G1855)
        (RETURN
          (COND
            ((LETT #1#
                   (|lassocShiftWithFunction| (|devaluateList| #0#)
                       (HGET |$ConstructorCache| '|FreeModule|)
                       '|domainEqualList|)
                   . #2=(|FreeModule|))
             (|CDRwithIncrement| #1#))
            ('T
             (UNWIND-PROTECT
               (PROG1 (APPLY (|function| |FreeModule;|) #0#)
                 (LETT #1# T . #2#))
               (COND
                 ((NOT #1#) (HREM |$ConstructorCache| '|FreeModule|))))))))))) 

(DEFUN |FreeModule;| (|#1| |#2|)
  (PROG (DV$1 DV$2 |dv$| $ |pv$|)
    (RETURN
      (PROGN
        (LETT DV$1 (|devaluate| |#1|) . #0=(|FreeModule|))
        (LETT DV$2 (|devaluate| |#2|) . #0#)
        (LETT |dv$| (LIST '|FreeModule| DV$1 DV$2) . #0#)
        (LETT $ (GETREFV 35) . #0#)
        (QSETREFV $ 0 |dv$|)
        (QSETREFV $ 3
            (LETT |pv$|
                  (|buildPredVector| 0 0
                      (LIST (|HasCategory| |#1| '(|CommutativeRing|)))) . #0#))
        (|haddProp| |$ConstructorCache| '|FreeModule| (LIST DV$1 DV$2)
            (CONS 1 $))
        (|stuffDomainSlots| $)
        (QSETREFV $ 6 |#1|)
        (QSETREFV $ 7 |#2|)
        (QSETREFV $ 8 (|Record| (|:| |k| |#2|) (|:| |c| |#1|)))
        (QSETREFV $ 9 (|List| (QREFELT $ 8)))
        (COND
          ((|HasCategory| |#1| '(|EntireRing|))
           (QSETREFV $ 16 (CONS (|dispatchFunction| |FM;*;R2$;1|) $)))
          ('T
           (QSETREFV $ 16 (CONS (|dispatchFunction| |FM;*;R2$;2|) $))))
        (COND
          ((|HasCategory| |#1| '(|EntireRing|))
           (QSETREFV $ 18 (CONS (|dispatchFunction| |FM;*;$R$;3|) $)))
          ('T
           (QSETREFV $ 18 (CONS (|dispatchFunction| |FM;*;$R$;4|) $))))
        $)))) 

(MAKEPROP '|FreeModule| '|infovec|
    (LIST '#(NIL NIL NIL NIL NIL
             (|IndexedDirectProductAbelianGroup| 6 7) (|local| |#1|)
             (|local| |#2|) '|Term| '|Rep| (|Boolean|) (0 . |zero?|)
             (5 . |Zero|) (9 . |One|) (13 . =) (19 . *) (25 . *)
             (31 . |Zero|) (35 . *) (|OutputForm|) (41 . |coerce|)
             (46 . |coerce|) (51 . *) (57 . +) (|Mapping| 19 19 19)
             (|List| 19) (63 . |reduce|) |FM;coerce;$Of;5|
             (|Mapping| 6 6) (|Integer|) (|Union| $ '"failed")
             (|NonNegativeInteger|) (|PositiveInteger|)
             (|SingleInteger|) (|String|))
          '#(|coerce| 69 |Zero| 74 * 78) 'NIL
          (CONS (|makeByteWordVec2| 1 '(1 0 0 0 0 0 0 0 0 0 0 0))
                (CONS '#(|Module&| NIL NIL NIL |AbelianGroup&| NIL
                         |AbelianMonoid&| NIL |AbelianSemiGroup&|
                         |SetCategory&| |BasicType&| NIL)
                      (CONS '#((|Module| 6) (|BiModule| 6 6)
                               (|LeftModule| 6) (|RightModule| 6)
                               (|AbelianGroup|)
                               (|CancellationAbelianMonoid|)
                               (|AbelianMonoid|)
                               (|IndexedDirectProductCategory| 6 7)
                               (|AbelianSemiGroup|) (|SetCategory|)
                               (|BasicType|) (|CoercibleTo| 19))
                            (|makeByteWordVec2| 27
                                '(1 6 10 0 11 0 0 0 12 0 6 0 13 2 6 10
                                  0 0 14 2 6 0 0 0 15 2 0 0 6 0 16 0 6
                                  0 17 2 0 0 0 6 18 1 6 19 0 20 1 7 19
                                  0 21 2 19 0 0 0 22 2 19 0 0 0 23 2 25
                                  19 24 0 26 1 0 19 0 27 0 0 0 12 2 0 0
                                  0 6 18 2 0 0 6 0 16)))))
          '|lookupIncomplete|)) 
