The (std) Z typechecker sometimes crashes with a class cast error instead of returning a proper type error (see attached temp.out for the stack trace and the incorrectly typed input that causes it).
Note that a correctly typed version of this spec would define and use a Boolean type like follows:
False == [ | false ]
True == [ | true ]
Boolean == { False, True }
Thanks to Julian Rose for reporting this bug.