Included Books
other
(in-package "ACL2")
include-book
(include-book "error-value-tuples")
include-book
(include-book "std/testing/assert-equal" :dir :system)
other
(define zero-vals ((x integerp)) :returns erp (b* (((reterr)) ((when (>= x 0)) (retok))) (reterr (msg "~x0 is negative." x))))
other
(assert-equal (zero-vals 5) nil)
other
(assert-equal (zero-vals -2) (msg "~x0 is negative." -2))
other
(define one-val ((x integerp)) :returns (mv erp (a stringp)) (b* (((reterr) "") ((when (>= x 0)) (retok "okay"))) (reterr (msg "~x0 is negative." x))))
other
(define two-vals ((x integerp)) :returns (mv erp (a stringp) (b symbolp)) (b* (((reterr) "" nil) ((when (>= x 0)) (retok "okay" 'okay))) (reterr (msg "~x0 is negative." x))))
other
(define call-zero-from-zero
((x integerp))
:returns erp
(b* (((reterr)) ((erp) (zero-vals x))) (retok)))
other
(assert-equal (call-zero-from-zero 5) nil)
other
(assert-equal (call-zero-from-zero -2) (msg "~x0 is negative." -2))
other
(define call-zero-from-zero-iferr ((x integerp)) :returns erp (b* (((reterr)) ((erp) (zero-vals x) :iferr "Overwrite.")) (retok)))
other
(assert-equal (call-zero-from-zero-iferr 5) nil)
other
(assert-equal (call-zero-from-zero-iferr -2) "Overwrite.")
other
(define call-zero-from-one ((x integerp)) :returns (mv erp (a stringp)) (b* (((reterr) "") ((erp) (zero-vals x))) (retok "okay")))
other
(define call-zero-from-one-iferr ((x integerp)) :returns (mv erp (a stringp)) (b* (((reterr) "") ((erp) (zero-vals x) :iferr "Overwrite.")) (retok "okay")))
other
(define call-zero-from-two ((x integerp)) :returns (mv erp (a stringp) (b symbolp)) (b* (((reterr) "" nil) ((erp) (zero-vals x))) (retok "okay" 'okay)))
other
(define call-zero-from-two-iferr ((x integerp)) :returns (mv erp (a stringp) (b symbolp)) (b* (((reterr) "" nil) ((erp) (zero-vals x) :iferr "Overwrite.")) (retok "okay" 'okay)))
other
(define call-one-from-zero
((x integerp))
:returns erp
(b* (((reterr)) ((erp &) (one-val x))) (retok)))
other
(assert-equal (call-one-from-zero 5) nil)
other
(assert-equal (call-one-from-zero -2) (msg "~x0 is negative." -2))
other
(define call-one-from-zero-iferr ((x integerp)) :returns erp (b* (((reterr)) ((erp &) (one-val x) :iferr "Overwrite.")) (retok)))
other
(assert-equal (call-one-from-zero-iferr 5) nil)
other
(assert-equal (call-one-from-zero-iferr -2) "Overwrite.")
other
(define call-one-from-one ((x integerp)) :returns (mv erp (a stringp)) (b* (((reterr) "") ((erp &) (one-val x))) (retok "okay")))
other
(define call-one-from-one-iferr ((x integerp)) :returns (mv erp (a stringp)) (b* (((reterr) "") ((erp &) (one-val x) :iferr "Overwrite.")) (retok "okay")))
other
(define call-one-from-two ((x integerp)) :returns (mv erp (a stringp) (b symbolp)) (b* (((reterr) "" nil) ((erp &) (one-val x))) (retok "okay" 'okay)))
other
(define call-one-from-two-iferr ((x integerp)) :returns (mv erp (a stringp) (b symbolp)) (b* (((reterr) "" nil) ((erp &) (one-val x) :iferr "Overwrite.")) (retok "okay" 'okay)))
other
(define call-two-from-zero
((x integerp))
:returns erp
(b* (((reterr)) ((erp & &) (two-vals x))) (retok)))
other
(assert-equal (call-two-from-zero 5) nil)
other
(assert-equal (call-two-from-zero -2) (msg "~x0 is negative." -2))
other
(define call-two-from-zero-iferr ((x integerp)) :returns erp (b* (((reterr)) ((erp & &) (two-vals x) :iferr "Overwrite.")) (retok)))
other
(assert-equal (call-two-from-zero-iferr 5) nil)
other
(assert-equal (call-two-from-zero-iferr -2) "Overwrite.")
other
(define call-two-from-one ((x integerp)) :returns (mv erp (a stringp)) (b* (((reterr) "") ((erp & &) (two-vals x))) (retok "okay")))
other
(define call-two-from-one-iferr ((x integerp)) :returns (mv erp (a stringp)) (b* (((reterr) "") ((erp & &) (two-vals x) :iferr "Overwrite.")) (retok "okay")))
other
(define call-two-from-two ((x integerp)) :returns (mv erp (a stringp) (b symbolp)) (b* (((reterr) "" nil) ((erp & &) (two-vals x))) (retok "okay" 'okay)))
other
(define call-two-from-two-iferr ((x integerp)) :returns (mv erp (a stringp) (b symbolp)) (b* (((reterr) "" nil) ((erp & &) (two-vals x) :iferr "Overwrite.")) (retok "okay" 'okay)))
other
(define h ((i integerp)) :returns (mv erp (x symbolp) (y stringp)) (b* (((reterr) nil "") ((when (= i 0)) (retok 'zero "zero")) ((when (= i 1)) (reterr (msg "ONE")))) (retok :other "Other.")))
other
(define g ((i integerp)) :returns (mv erp (k integerp)) (b* (((reterr) 0) ((erp x y) (h (1+ i))) ((when (equal x y)) (reterr 888)) ((erp z w) (h i) :iferr :rethrow)) (retok (+ (if (eq z 'some) 5 8) (length w)))))
other
(define f ((s stringp)) :returns erp (b* (((reterr)) ((erp k) (g (length s))) ((when (> k 0)) (reterr "bad"))) (retok)))
other
(define e ((x consp)) :returns (mv erp (c characterp)) (b* (((reterr) #\a) ((when (> (len x) 10)) (reterr 'large)) ((erp) (f "abc"))) (retok #\G)))
other
(define a (x state) :returns (mv erp (int integerp) (key keywordp) state) (b* (((reterr) 0 :kwd state) ((when (consp x)) (reterr "ERR"))) (retok 1 :good state)))
other
(defstobj store)