21 lines
677 B
Plaintext
21 lines
677 B
Plaintext
SIGNATURE SafeNat
|
|
|
|
IMPORT Nat ONLY nat
|
|
IMPORT Seq[safeNat] ONLY seq
|
|
IMPORT Seq[nat] ONLY seq
|
|
|
|
TYPE safeNat == ok (value : nat)
|
|
error (message : denotation)
|
|
|
|
FUN ` : safeNat -> denotation
|
|
FUN safePred : safeNat -> safeNat
|
|
FUN safeSucc : safeNat -> safeNat
|
|
FUN safeLift : (nat->nat)**(nat->bool)**denotation->safeNat->safeNat
|
|
FUN safeLift2 : (nat**nat->nat)**(nat**nat->bool)**denotation->safeNat**safeNat->safeNat
|
|
FUN safeAdd : safeNat**safeNat -> safeNat
|
|
FUN safeSub : safeNat**safeNat -> safeNat
|
|
FUN safeMult : safeNat**safeNat -> safeNat
|
|
FUN safeDiv : safeNat**safeNat -> safeNat
|
|
FUN safeMap : (nat->nat)**(nat->bool)**denotation->seq[safeNat]->seq[safeNat]
|
|
|