Filtering...

pseudo-termfnp

books/std/system/pseudo-termfnp

Included Books

other
(in-package "ACL2")
include-book
(include-book "pseudo-lambdap")
other
(define pseudo-termfnp
  (x)
  :returns (yes/no booleanp)
  :parents (std/system/term-function-recognizers)
  :short (topstring "Recognize pseudo-term-functions,
    i.e. functions in "
    (seetopic "pseudo-termp" "pseudo-terms")
    ".")
  (or (symbolp x) (pseudo-lambdap x))
  ///
  (defrule pseudo-termfnp-when-symbolp
    (implies (symbolp x) (pseudo-termfnp x)))
  (defrule pseudo-termfnp-when-pseudo-lambdap
    (implies (pseudo-lambdap x) (pseudo-termfnp x)))
  (defrule pseudo-termfnp-of-car-when-pseudo-termp
    (implies (and (pseudo-termp term) (consp term))
      (pseudo-termfnp (car term)))
    :enable pseudo-lambdap)
  (defrule pseudo-termp-of-cons-when-pseudo-termfnp
    (implies (and (pseudo-termfnp fn)
        (pseudo-term-listp terms)
        (or (atom fn) (equal (len terms) (len (lambda-formals fn))))
        (not (eq fn 'quote)))
      (pseudo-termp (cons fn terms)))
    :enable pseudo-lambdap))