
(/VERSIONCHECK 2) 

(DEFUN |PATMATCH;ist| (|s| |p| $)
  (SPADCALL |s| (SPADCALL |p| (QREFELT $ 10)) (SPADCALL (QREFELT $ 12))
      (QREFELT $ 14))) 

(DEFUN |PATMATCH;is?;SubjectPatB;2| (|s| |p| $)
  (COND
    ((SPADCALL (|PATMATCH;ist| |s| |p| $) (QREFELT $ 16)) 'NIL)
    ('T 'T))) 

(DEFUN |PATMATCH;is?;LPatB;3| (|s| |p| $)
  (COND
    ((SPADCALL (SPADCALL |s| |p| (QREFELT $ 20)) (QREFELT $ 21)) 'NIL)
    ('T 'T))) 

(DEFUN |PATMATCH;Is;LPatPmlr;4| (|s| |p| $)
  (SPADCALL |s| (SPADCALL |p| (QREFELT $ 10)) (SPADCALL (QREFELT $ 23))
      (QREFELT $ 25))) 

(DEFUN |PATMATCH;Is;SubjectPatL;5| (|s| |p| $)
  (PROG (|r| #0=#:G1832 |rec| #1=#:G1833)
    (RETURN
      (SEQ (COND
             ((SPADCALL
                  (LETT |r| (|PATMATCH;ist| |s| |p| $)
                        . #2=(|PATMATCH;Is;SubjectPatL;5|))
                  (QREFELT $ 16))
              NIL)
             ('T
              (PROGN
                (LETT #0# NIL . #2#)
                (SEQ (LETT |rec| NIL . #2#)
                     (LETT #1# (SPADCALL |r| (QREFELT $ 28)) . #2#)
                     G190
                     (COND
                       ((OR (ATOM #1#)
                            (PROGN (LETT |rec| (CAR #1#) . #2#) NIL))
                        (GO G191)))
                     (SEQ (EXIT (LETT #0#
                                      (CONS
                                       (SPADCALL
                                        (SPADCALL (QCAR |rec|)
                                         (QREFELT $ 30))
                                        (QCDR |rec|) (QREFELT $ 32))
                                       #0#) . #2#)))
                     (LETT #1# (CDR #1#) . #2#) (GO G190) G191
                     (EXIT (NREVERSE0 #0#)))))))))) 

(DEFUN |PATMATCH;Is;SubjectPatL;6| (|s| |p| $)
  (PROG (|r| #0=#:G1838 |rec| #1=#:G1839)
    (RETURN
      (SEQ (COND
             ((SPADCALL
                  (LETT |r| (|PATMATCH;ist| |s| |p| $)
                        . #2=(|PATMATCH;Is;SubjectPatL;6|))
                  (QREFELT $ 16))
              NIL)
             ('T
              (PROGN
                (LETT #0# NIL . #2#)
                (SEQ (LETT |rec| NIL . #2#)
                     (LETT #1# (SPADCALL |r| (QREFELT $ 28)) . #2#)
                     G190
                     (COND
                       ((OR (ATOM #1#)
                            (PROGN (LETT |rec| (CAR #1#) . #2#) NIL))
                        (GO G191)))
                     (SEQ (EXIT (LETT #0#
                                      (CONS
                                       (SPADCALL
                                        (SPADCALL (QCAR |rec|)
                                         (QREFELT $ 36))
                                        (SPADCALL (QCDR |rec|)
                                         (QREFELT $ 37))
                                        (QREFELT $ 39))
                                       #0#) . #2#)))
                     (LETT #1# (CDR #1#) . #2#) (GO G190) G191
                     (EXIT (NREVERSE0 #0#)))))))))) 

(DEFUN |PATMATCH;Is;SubjectPatPmr;7| (|s| |p| $)
  (|PATMATCH;ist| |s| |p| $)) 

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

(DEFUN |PatternMatch;| (|#1| |#2| |#3|)
  (PROG (DV$1 DV$2 DV$3 |dv$| $ #0=#:G1841 |pv$|)
    (RETURN
      (PROGN
        (LETT DV$1 (|devaluate| |#1|) . #1=(|PatternMatch|))
        (LETT DV$2 (|devaluate| |#2|) . #1#)
        (LETT DV$3 (|devaluate| |#3|) . #1#)
        (LETT |dv$| (LIST '|PatternMatch| DV$1 DV$2 DV$3) . #1#)
        (LETT $ (GETREFV 43) . #1#)
        (QSETREFV $ 0 |dv$|)
        (QSETREFV $ 3
            (LETT |pv$|
                  (|buildPredVector| 0 0
                      (LIST (LETT #0#
                                  (|HasCategory| |#2|
                                      '(|RetractableTo| (|Symbol|))) . #1#)
                            (AND (|not| (|HasCategory| |#2| '(|Ring|)))
                                 (|not| #0#))
                            (AND (|HasCategory| |#2| '(|Ring|))
                                 (|not| #0#)))) . #1#))
        (|haddProp| |$ConstructorCache| '|PatternMatch|
            (LIST DV$1 DV$2 DV$3) (CONS 1 $))
        (|stuffDomainSlots| $)
        (QSETREFV $ 6 |#1|)
        (QSETREFV $ 7 |#2|)
        (QSETREFV $ 8 |#3|)
        (COND
          ((|testBitVector| |pv$| 1)
           (QSETREFV $ 34
               (CONS (|dispatchFunction| |PATMATCH;Is;SubjectPatL;5|)
                     $)))
          ((|HasCategory| |#2| '(|Ring|))
           (QSETREFV $ 41
               (CONS (|dispatchFunction| |PATMATCH;Is;SubjectPatL;6|)
                     $)))
          ('T
           (QSETREFV $ 42
               (CONS (|dispatchFunction| |PATMATCH;Is;SubjectPatPmr;7|)
                     $))))
        $)))) 

(MAKEPROP '|PatternMatch| '|infovec|
    (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
             (|local| |#3|) (|Pattern| 6) (0 . |convert|)
             (|PatternMatchResult| 6 7) (5 . |new|)
             (|PatternMatchResult| 6 $) (9 . |patternMatch|)
             (|Boolean|) (16 . |failed?|) |PATMATCH;is?;SubjectPatB;2|
             (|PatternMatchListResult| 6 7 19) (|List| 7)
             |PATMATCH;Is;LPatPmlr;4| (21 . |failed?|)
             |PATMATCH;is?;LPatB;3| (26 . |new|)
             (|PatternMatchListAggregate| 6 7 19) (30 . |patternMatch|)
             (|Record| (|:| |key| 29) (|:| |entry| 7)) (|List| 26)
             (37 . |destruct|) (|Symbol|) (42 . |coerce|)
             (|Equation| 7) (47 . =) (|List| 31) (53 . |Is|)
             (|Polynomial| 7) (59 . |coerce|) (64 . |coerce|)
             (|Equation| 35) (69 . =) (|List| 38) (75 . |Is|)
             (81 . |Is|))
          '#(|is?| 87 |Is| 99) 'NIL
          (CONS (|makeByteWordVec2| 1 'NIL)
                (CONS '#()
                      (CONS '#()
                            (|makeByteWordVec2| 42
                                '(1 8 9 0 10 0 11 0 12 3 7 13 0 9 13 14
                                  1 11 15 0 16 1 18 15 0 21 0 18 0 23 3
                                  24 18 19 9 18 25 1 11 27 0 28 1 7 0
                                  29 30 2 31 0 7 7 32 2 0 33 7 8 34 1
                                  35 0 29 36 1 35 0 7 37 2 38 0 35 35
                                  39 2 0 40 7 8 41 2 0 11 7 8 42 2 0 15
                                  7 8 17 2 0 15 19 8 22 2 3 40 7 8 41 2
                                  2 11 7 8 42 2 1 33 7 8 34 2 0 18 19 8
                                  20)))))
          '|lookupComplete|)) 
