Three-valued predicates for software specification and validation