Filtering...

apply-constraints

apply-constraints
other
(in-package "ACL2")
other
(when-pass-2 (encapsulate ((badge-userfn (fn) t))
    (local (defun badge-userfn (fn) (declare (ignore fn)) nil))
    (defthm badge-userfn-type
      (implies (badge-userfn fn)
        (apply$-badgep (badge-userfn fn)))
      :rule-classes ((:forward-chaining))))
  (encapsulate ((apply$-userfn (fn args) t :guard (true-listp args)))
    (local (defun apply$-userfn
        (fn args)
        (declare (ignore fn args))
        nil))
    (defthm apply$-userfn-takes-arity-args
      (implies (badge-userfn fn)
        (equal (apply$-userfn fn args)
          (apply$-userfn fn
            (take (apply$-badge-arity (badge-userfn fn)) args))))
      :rule-classes nil))
  (encapsulate (((untame-apply$ * *) =>
       *
       :formals (fn args)
       :guard (true-listp args)))
    (local (defun untame-apply$
        (fn args)
        (declare (ignore fn args))
        nil))
    (defthm untame-apply$-takes-arity-args
      (implies (badge-userfn fn)
        (equal (untame-apply$ fn args)
          (untame-apply$ fn
            (take (apply$-badge-arity (badge-userfn fn)) args))))
      :rule-classes ((:rewrite :corollary (implies (and (syntaxp (and (quotep fn) (symbolp args)))
             (badge-userfn fn))
           (equal (untame-apply$ fn args)
             (untame-apply$ fn
               (take (apply$-badge-arity (badge-userfn fn)) args))))))))
  (defstub untame-ev$ (x a) t)
  (defconst *apply$-boot-fns-badge-alist*
    `((badge . ,*GENERIC-TAME-BADGE-1*) (tamep . ,*GENERIC-TAME-BADGE-1*)
      (tamep-functionp . ,*GENERIC-TAME-BADGE-1*)
      (suitably-tamep-listp . ,*GENERIC-TAME-BADGE-2*)
      (apply$ . ,*APPLY$-BADGE*)
      (ev$ . ,*EV$-BADGE*))))