biodivine_lib_bdd/
op_function.rs1pub fn and(l: Option<bool>, r: Option<bool>) -> Option<bool> {
6 match (l, r) {
7 (Some(true), Some(true)) => Some(true),
8 (Some(false), _) => Some(false),
9 (_, Some(false)) => Some(false),
10 _ => None,
11 }
12}
13
14pub fn or(l: Option<bool>, r: Option<bool>) -> Option<bool> {
16 match (l, r) {
17 (Some(false), Some(false)) => Some(false),
18 (Some(true), _) => Some(true),
19 (_, Some(true)) => Some(true),
20 _ => None,
21 }
22}
23
24pub fn imp(l: Option<bool>, r: Option<bool>) -> Option<bool> {
26 match (l, r) {
27 (Some(true), Some(false)) => Some(false),
28 (Some(false), _) => Some(true),
29 (_, Some(true)) => Some(true),
30 _ => None,
31 }
32}
33
34pub fn iff(l: Option<bool>, r: Option<bool>) -> Option<bool> {
36 match (l, r) {
37 (Some(l), Some(r)) => Some(l == r),
38 _ => None,
39 }
40}
41
42pub fn xor(l: Option<bool>, r: Option<bool>) -> Option<bool> {
44 match (l, r) {
45 (Some(l), Some(r)) => Some(l ^ r),
46 _ => None,
47 }
48}
49
50pub fn and_not(l: Option<bool>, r: Option<bool>) -> Option<bool> {
52 match (l, r) {
53 (Some(false), _) => Some(false),
54 (_, Some(true)) => Some(false),
55 (Some(true), Some(false)) => Some(true),
56 _ => None,
57 }
58}