aboutsummaryrefslogtreecommitdiffstats
path: root/src/psl/psl-qm.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/psl/psl-qm.adb')
-rw-r--r--src/psl/psl-qm.adb16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/psl/psl-qm.adb b/src/psl/psl-qm.adb
index 722577018..100900212 100644
--- a/src/psl/psl-qm.adb
+++ b/src/psl/psl-qm.adb
@@ -275,6 +275,22 @@ package body PSL.QM is
return Build_Primes_And (Build_Primes (Get_Left (N), False),
Build_Primes (Get_Right (N), True));
end if;
+ when N_Equiv_Bool =>
+ if not Negate then
+ -- a <-> b <-> (a && b) || (!a && !b)
+ return Build_Primes_Or
+ (Build_Primes_And (Build_Primes (Get_Left (N), False),
+ Build_Primes (Get_Right (N), False)),
+ Build_Primes_And (Build_Primes (Get_Left (N), True),
+ Build_Primes (Get_Right (N), True)));
+ else
+ -- !(a <-> b) <-> (!a && b) || (a && !b)
+ return Build_Primes_Or
+ (Build_Primes_And (Build_Primes (Get_Left (N), True),
+ Build_Primes (Get_Right (N), False)),
+ Build_Primes_And (Build_Primes (Get_Left (N), False),
+ Build_Primes (Get_Right (N), True)));
+ end if;
when others =>
Error_Kind ("build_primes", N);
end case;