• Top
  • Asgop

Asgopp

Recognizer for asgop structures.

Signature
(asgopp x) → *

Definitions and Theorems

Function: asgopp

(defun asgopp (x)
  (declare (xargs :guard t))
  (let ((__function__ 'asgopp))
    (declare (ignorable __function__))
    (and (consp x)
         (cond ((or (atom x) (eq (car x) :asg))
                (and (true-listp (cdr x))
                     (eql (len (cdr x)) 0)
                     (b* nil t)))
               ((eq (car x) :asg-add)
                (and (true-listp (cdr x))
                     (eql (len (cdr x)) 0)
                     (b* nil t)))
               ((eq (car x) :asg-sub)
                (and (true-listp (cdr x))
                     (eql (len (cdr x)) 0)
                     (b* nil t)))
               ((eq (car x) :asg-mul)
                (and (true-listp (cdr x))
                     (eql (len (cdr x)) 0)
                     (b* nil t)))
               ((eq (car x) :asg-div)
                (and (true-listp (cdr x))
                     (eql (len (cdr x)) 0)
                     (b* nil t)))
               ((eq (car x) :asg-rem)
                (and (true-listp (cdr x))
                     (eql (len (cdr x)) 0)
                     (b* nil t)))
               ((eq (car x) :asg-pow)
                (and (true-listp (cdr x))
                     (eql (len (cdr x)) 0)
                     (b* nil t)))
               ((eq (car x) :asg-shl)
                (and (true-listp (cdr x))
                     (eql (len (cdr x)) 0)
                     (b* nil t)))
               ((eq (car x) :asg-shr)
                (and (true-listp (cdr x))
                     (eql (len (cdr x)) 0)
                     (b* nil t)))
               ((eq (car x) :asg-bitand)
                (and (true-listp (cdr x))
                     (eql (len (cdr x)) 0)
                     (b* nil t)))
               ((eq (car x) :asg-bitior)
                (and (true-listp (cdr x))
                     (eql (len (cdr x)) 0)
                     (b* nil t)))
               ((eq (car x) :asg-bitxor)
                (and (true-listp (cdr x))
                     (eql (len (cdr x)) 0)
                     (b* nil t)))
               ((eq (car x) :asg-and)
                (and (true-listp (cdr x))
                     (eql (len (cdr x)) 0)
                     (b* nil t)))
               (t (and (eq (car x) :asg-or)
                       (and (true-listp (cdr x))
                            (eql (len (cdr x)) 0))
                       (b* nil t)))))))

Theorem: consp-when-asgopp

(defthm consp-when-asgopp
  (implies (asgopp x) (consp x))
  :rule-classes :compound-recognizer)