Basic constructor macro for binding structures.
(make-binding [:var <var>] [:expr <expr>] [:type <type>])
This is the usual way to construct binding structures. It simply conses together a structure with the specified fields.
This macro generates a new binding structure from scratch. See also change-binding, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-binding (&rest args) (std::make-aggregate 'binding args '((:var) (:expr) (:type)) 'make-binding nil))
Function:
(defun binding (var expr type) (declare (xargs :guard (and (symbolp var) (pseudo-termp expr) (symbolp type)))) (declare (xargs :guard t)) (let ((acl2::__function__ 'binding)) (declare (ignorable acl2::__function__)) (b* ((var (mbe :logic (symbol-fix var) :exec var)) (expr (mbe :logic (pseudo-term-fix expr) :exec expr)) (type (mbe :logic (symbol-fix type) :exec type))) (list (cons 'var var) (cons 'expr expr) (cons 'type type)))))