Basic constructor macro for iconst structures.
(make-iconst [:value <value>] [:base <base>] [:unsignedp <unsignedp>] [:length <length>])
This is the usual way to construct iconst structures. It simply conses together a structure with the specified fields.
This macro generates a new iconst structure from scratch. See also change-iconst, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-iconst (&rest args) (std::make-aggregate 'iconst args '((:value) (:base) (:unsignedp) (:length)) 'make-iconst nil))
Function:
(defun iconst (value base unsignedp length) (declare (xargs :guard (and (natp value) (iconst-basep base) (booleanp unsignedp) (iconst-lengthp length)))) (declare (xargs :guard t)) (let ((__function__ 'iconst)) (declare (ignorable __function__)) (b* ((value (mbe :logic (nfix value) :exec value)) (base (mbe :logic (iconst-base-fix base) :exec base)) (unsignedp (mbe :logic (acl2::bool-fix unsignedp) :exec unsignedp)) (length (mbe :logic (iconst-length-fix length) :exec length))) (cons :iconst (list (cons 'value value) (cons 'base base) (cons 'unsignedp unsignedp) (cons 'length length))))))