(lnfix x) is logically identical to
(lnfix x) is an inlined, enabled function that just expands into
(mbe :logic (nfix x) :exec x)
Why would you want this? When you defining a function whose guard
assumes
(defun my-function (n ...) (declare (xargs :guard (natp n))) <body>) ---> (defun my-function (n ...) (declare (xargs :guard (natp n))) (let ((n (nfix n))) <body>))
This leads to a nice nat-equiv congruence rule. But since nfix has to check whether its argument is a natural number, and that has some performance cost.
By using lnfix in place of
Function:
(defun lnfix$inline (x) (declare (xargs :guard (natp x))) (mbe :logic (nfix x) :exec x))