Fundamental operation to extend
Signature:
In the logic, this sets:
nrev' := (rcons a nrev)
In the pure ACL2 implementation, the underlying representation of
In the optimized implementation, this operation creates a cons and then
destructively extends the rightmost cons cell, like a Common Lisp
Function:
(defun nrev$a-push (a nrev$a) (declare (xargs :guard t)) (rcons a nrev$a))
Function:
(defun nrev$c-push (a nrev$c) (declare (xargs :stobjs nrev$c)) (let* ((acc (nrev$c-acc nrev$c)) (acc (cons a acc))) (update-nrev$c-acc acc nrev$c)))