Recognizer for elf-header structures.
(elf-header-p x) → *
Function:
(defun elf-header-p (x) (declare (xargs :guard t)) (let ((__function__ 'elf-header-p)) (declare (ignorable __function__)) (and (mbe :logic (and (alistp x) (equal (strip-cars x) '(magic class dataenc identver osabi abiver padding type machine version entry phoff shoff flags ehsize phentsize phnum shentsize shnum shstrndx))) :exec (fty::alist-with-carsp x '(magic class dataenc identver osabi abiver padding type machine version entry phoff shoff flags ehsize phentsize phnum shentsize shnum shstrndx))) (b* ((magic (cdr (std::da-nth 0 x))) (class (cdr (std::da-nth 1 x))) (dataenc (cdr (std::da-nth 2 x))) (identver (cdr (std::da-nth 3 x))) (osabi (cdr (std::da-nth 4 x))) (abiver (cdr (std::da-nth 5 x))) (padding (cdr (std::da-nth 6 x))) (type (cdr (std::da-nth 7 x))) (machine (cdr (std::da-nth 8 x))) (version (cdr (std::da-nth 9 x))) (entry (cdr (std::da-nth 10 x))) (phoff (cdr (std::da-nth 11 x))) (shoff (cdr (std::da-nth 12 x))) (flags (cdr (std::da-nth 13 x))) (ehsize (cdr (std::da-nth 14 x))) (phentsize (cdr (std::da-nth 15 x))) (phnum (cdr (std::da-nth 16 x))) (shentsize (cdr (std::da-nth 17 x))) (shnum (cdr (std::da-nth 18 x))) (shstrndx (cdr (std::da-nth 19 x)))) (and (byte-listp magic) (natp class) (natp dataenc) (natp identver) (natp osabi) (natp abiver) (byte-listp padding) (natp type) (natp machine) (natp version) (natp entry) (natp phoff) (natp shoff) (natp flags) (natp ehsize) (natp phentsize) (natp phnum) (natp shentsize) (natp shnum) (natp shstrndx))))))
Theorem:
(defthm consp-when-elf-header-p (implies (elf-header-p x) (consp x)) :rule-classes :compound-recognizer)