(esim-vl-iopattern-entry-p x) recognize lists of vl-emodwire-ps like (A[0] A[1] ... A[N]), i.e., non-empty lists of emodwires with the same basenames and unique indices.
Function:
(defun esim-vl-iopattern-entry-p (x) (declare (xargs :guard t)) (and (consp x) (vl-emodwirelist-p x) (true-listp x) (let ((basename (vl-emodwire->basename (car x)))) (all-equalp-of-vl-emodwirelist->basenames basename (cdr x))) (uniquep (vl-emodwirelist->indices x))))
Theorem:
(defthm vl-emodwirelist-p-when-esim-vl-iopattern-entry-p (implies (esim-vl-iopattern-entry-p x) (vl-emodwirelist-p x)))
Theorem:
(defthm consp-when-esim-vl-iopattern-entry-p (implies (esim-vl-iopattern-entry-p x) (and (true-listp x) (consp x))) :rule-classes :compound-recognizer)