
(/VERSIONCHECK 2) 

(DEFUN |COMM;=;2$B;1| (|x| |y| $)
  (PROG (|yy| |xx|)
    (RETURN
     (SEQ
      (COND
       ((QEQCAR |x| 0)
        (COND
         ((QEQCAR |y| 0)
          (EXIT (SPADCALL (QCDR |x|) (QCDR |y|) (QREFELT $ 10)))))))
      (COND
       ((QEQCAR |x| 1)
        (COND
         ((QEQCAR |y| 1)
          (EXIT
           (SEQ (LETT |xx| (QCDR |x|) . #1=(|COMM;=;2$B;1|))
                (LETT |yy| (QCDR |y|) . #1#)
                (EXIT
                 (COND
                  ((SPADCALL (QCDR |xx|) (QCDR |yy|) (QREFELT $ 11))
                   (SPADCALL (QCAR |xx|) (QCAR |yy|) (QREFELT $ 11)))
                  ('T 'NIL)))))))))
      (EXIT 'NIL))))) 

(DEFUN |COMM;mkcomm;I$;2| (|i| $) (CONS 0 (SPADCALL |i| (QREFELT $ 13)))) 

(DEFUN |COMM;mkcomm;3$;3| (|x| |y| $) (CONS 1 (CONS |x| |y|))) 

(DEFUN |COMM;coerce;$Of;4| (|x| $)
  (PROG (|xx|)
    (RETURN
     (SEQ
      (COND ((QEQCAR |x| 0) (SPADCALL (QCDR |x|) (QREFELT $ 17)))
            ('T
             (SEQ (LETT |xx| (QCDR |x|) |COMM;coerce;$Of;4|)
                  (EXIT
                   (SPADCALL
                    (LIST (SPADCALL (QCAR |xx|) (QREFELT $ 18))
                          (SPADCALL (QCDR |xx|) (QREFELT $ 18)))
                    (QREFELT $ 20)))))))))) 

(DEFUN |Commutator| #1=()
  (PROG #1#
    (RETURN
     (PROG (#2=#:G1819)
       (RETURN
        (COND
         ((LETT #2# (HGET |$ConstructorCache| '|Commutator|)
                . #3=(|Commutator|))
          (|CDRwithIncrement| (CDAR #2#)))
         ('T
          (UNWIND-PROTECT
              (PROG1
                  (CDDAR
                   (HPUT |$ConstructorCache| '|Commutator|
                         (LIST (CONS NIL (CONS 1 (|Commutator;|))))))
                (LETT #2# T . #3#))
            (COND ((NOT #2#) (HREM |$ConstructorCache| '|Commutator|))))))))))) 

(DEFUN |Commutator;| ()
  (PROG (|dv$| $ |pv$|)
    (RETURN
     (PROGN
      (LETT |dv$| '(|Commutator|) . #1=(|Commutator|))
      (LETT $ (GETREFV 23) . #1#)
      (QSETREFV $ 0 |dv$|)
      (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#))
      (|haddProp| |$ConstructorCache| '|Commutator| NIL (CONS 1 $))
      (|stuffDomainSlots| $)
      (SETF |pv$| (QREFELT $ 3))
      (QSETREFV $ 6 (|Record| (|:| |left| $) (|:| |right| $)))
      (QSETREFV $ 7 (|Union| (|OrdSetInts|) (QREFELT $ 6)))
      $)))) 

(MAKEPROP '|Commutator| '|infovec|
          (LIST
           '#(NIL NIL NIL NIL NIL NIL 'P '|Rep| (|Boolean|) (|OrdSetInts|)
              (0 . =) |COMM;=;2$B;1| (|Integer|) (6 . |coerce|)
              |COMM;mkcomm;I$;2| |COMM;mkcomm;3$;3| (|OutputForm|)
              (11 . |coerce|) |COMM;coerce;$Of;4| (|List| $) (16 . |bracket|)
              (|String|) (|SingleInteger|))
           '#(~= 21 |mkcomm| 27 |latex| 38 |hash| 43 |coerce| 48 = 53) 'NIL
           (CONS (|makeByteWordVec2| 1 '(0 0 0))
                 (CONS '#(|SetCategory&| |BasicType&| NIL)
                       (CONS
                        '#((|SetCategory|) (|BasicType|) (|CoercibleTo| 16))
                        (|makeByteWordVec2| 22
                                            '(2 9 8 0 0 10 1 9 0 12 13 1 9 16 0
                                              17 1 16 0 19 20 2 0 8 0 0 1 2 0 0
                                              0 0 15 1 0 0 12 14 1 0 21 0 1 1 0
                                              22 0 1 1 0 16 0 18 2 0 8 0 0
                                              11)))))
           '|lookupComplete|)) 

(MAKEPROP '|Commutator| 'NILADIC T) 
