Constructor for function call (
(pseudo-term-fncall fn args) → term
Function:
(defun pseudo-term-fncall (fn args) (declare (xargs :guard (and (pseudo-fnsym-p fn) (pseudo-term-listp args)))) (let ((__function__ 'pseudo-term-fncall)) (declare (ignorable __function__)) (cons (pseudo-fnsym-fix fn) (pseudo-term-list-fix args))))
Theorem:
(defthm pseudo-termp-of-pseudo-term-fncall (b* ((term (pseudo-term-fncall fn args))) (pseudo-termp term)) :rule-classes :rewrite)
Theorem:
(defthm kind-of-pseudo-term-fncall (equal (pseudo-term-kind (pseudo-term-fncall fn args)) :fncall))
Theorem:
(defthm pseudo-term-call->args-of-pseudo-term-fncall (equal (pseudo-term-call->args (pseudo-term-fncall fn args)) (pseudo-term-list-fix args)))
Theorem:
(defthm pseudo-term-fncall->fn-of-pseudo-term-fncall (equal (pseudo-term-fncall->fn (pseudo-term-fncall fn args)) (pseudo-fnsym-fix fn)))
Theorem:
(defthm base-ev-of-pseudo-term-fncall (equal (base-ev (pseudo-term-fncall fn args) a) (base-ev (cons (pseudo-fnsym-fix fn) args) a)))
Theorem:
(defthm base-ev-when-pseudo-term-fncall (implies (and (equal (pseudo-term-kind x) :fncall) (equal new-x (cons (pseudo-term-fncall->fn x) (pseudo-term-call->args x))) (syntaxp (not (equal new-x x)))) (equal (base-ev x a) (base-ev new-x a))))
Theorem:
(defthm pseudo-term-fncall-of-accessors (implies (equal (pseudo-term-kind x) :fncall) (equal (pseudo-term-fncall (pseudo-term-fncall->fn x) (pseudo-term-call->args x)) (pseudo-term-fix x))))
Theorem:
(defthm pseudo-term-fncall-of-pseudo-fnsym-fix-fn (equal (pseudo-term-fncall (pseudo-fnsym-fix fn) args) (pseudo-term-fncall fn args)))
Theorem:
(defthm pseudo-term-fncall-pseudo-fnsym-equiv-congruence-on-fn (implies (pseudo-fnsym-equiv fn fn-equiv) (equal (pseudo-term-fncall fn args) (pseudo-term-fncall fn-equiv args))) :rule-classes :congruence)
Theorem:
(defthm pseudo-term-fncall-of-pseudo-term-list-fix-args (equal (pseudo-term-fncall fn (pseudo-term-list-fix args)) (pseudo-term-fncall fn args)))
Theorem:
(defthm pseudo-term-fncall-pseudo-term-list-equiv-congruence-on-args (implies (pseudo-term-list-equiv args args-equiv) (equal (pseudo-term-fncall fn args) (pseudo-term-fncall fn args-equiv))) :rule-classes :congruence)