Execute a call of a function on a list of arguments.
(exec-call function arguments program) → outcome
We create an initial state with the function (symbol) and the arguments, and we attempt to exhaustively perform execution steps. We return the execution outcome.
This function is not executable.
Function:
(defun exec-call (function arguments program) (declare (xargs :guard (and (symbol-valuep function) (value-listp arguments) (programp program)))) (let ((__function__ 'exec-call)) (declare (ignorable __function__)) (b* ((start-estate (eval-state-init function arguments))) (step* start-estate program))))
Theorem:
(defthm exec-outcome-p-of-exec-call (b* ((outcome (exec-call function arguments program))) (exec-outcome-p outcome)) :rule-classes :rewrite)