Recognizer for address structures.
(address-p x) → *
Function:
(defun address-p (x) (declare (xargs :guard t)) (let ((__function__ 'address-p)) (declare (ignorable __function__)) (and (b* (((when (or (atom x) (not (eq (car x) :address)))) (path-p x))) (and (eq (car x) :address) (true-listp x) (eql (len x) 4) (not (and (eq (nth 2 x) nil) (equal (nth 3 x) 0))))) (b* ((path (if (or (atom x) (not (eq (car x) :address))) x (nth 1 x))) (index (if (or (atom x) (not (eq (car x) :address))) nil (nth 2 x))) (scope (if (or (atom x) (not (eq (car x) :address))) 0 (nth 3 x)))) (and (path-p path) (maybe-natp index) (addr-scope-p scope))))))