sig
type belnap = T | F | N | B
type bnp_expr =
Val of Bnp.belnap
| BVar of string
| Not of Bnp.bnp_expr
| Cnf of Bnp.bnp_expr
| Unop of (Bnp.belnap -> Bnp.belnap) * Bnp.bnp_expr
| And of Bnp.bnp_expr * Bnp.bnp_expr
| Or of Bnp.bnp_expr * Bnp.bnp_expr
| Impl of Bnp.bnp_expr * Bnp.bnp_expr
| Impl_CMI of Bnp.bnp_expr * Bnp.bnp_expr
| Impl_BN of Bnp.bnp_expr * Bnp.bnp_expr
| Impl_ST of Bnp.bnp_expr * Bnp.bnp_expr
| Cns of Bnp.bnp_expr * Bnp.bnp_expr
| Gul of Bnp.bnp_expr * Bnp.bnp_expr
| Binop of (Bnp.belnap -> Bnp.belnap -> Bnp.belnap) * Bnp.bnp_expr *
Bnp.bnp_expr
val not_bnp : Bnp.belnap -> Bnp.belnap
val conf : Bnp.belnap -> Bnp.belnap
val and_bnp : Bnp.belnap -> Bnp.belnap -> Bnp.belnap
val or_bnp : Bnp.belnap -> Bnp.belnap -> Bnp.belnap
val implic : Bnp.belnap -> Bnp.belnap -> Bnp.belnap
val implic_cmi : Bnp.belnap -> Bnp.belnap -> Bnp.belnap
val implic_bn : Bnp.belnap -> Bnp.belnap -> Bnp.belnap
val implic_st : Bnp.belnap -> Bnp.belnap -> Bnp.belnap
val cns : Bnp.belnap -> Bnp.belnap -> Bnp.belnap
val gull : Bnp.belnap -> Bnp.belnap -> Bnp.belnap
val eval_bnp : Bnp.bnp_expr -> (string * Bnp.belnap) list -> Bnp.belnap
end