(assign evalable-ld-printingp nil) (defun exor (p q) ; Return t if p or q is true but not both. (if p (if q nil t) (if q t nil))) (exor nil nil) (exor nil t) (exor t nil) (exor t t) (defun maj (p q r) ; return t if any two of p, q, and r are true. (or (and p q) (and p r) (and q r))) (maj t t nil) (maj t nil t) (maj nil t nil) (defun badd (x y c) (if (and (endp x) (endp y)) (list c) (cons (exor (car x) (exor (car y) c)) (badd (cdr x) (cdr y) (maj (car x) (car y) c))))) (badd '(t t) '(nil t) nil) (badd '(t t) '(nil t) t) (badd '(nil t t) '(t t t) nil) (defun bin (n) (if (zp n) nil (cons (not (evenp n)) (bin (floor n 2))))) (bin 13) (bin 10) (defun nat (x) (if (endp x) 0 (+ (if (car x) 1 0) (* 2 (nat (cdr x)))))) (nat '(t nil t t)) (bin 123456) (nat (bin 123456)) (badd (bin 123) (bin 456) nil) (nat (badd (bin 123) (bin 456) nil))#|ACL2s-ToDo-Line|#