aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorBESSON Frederic2020-09-02 15:44:51 +0200
committerBESSON Frederic2020-11-18 09:49:22 +0100
commit8aa451b1e31889ef2beffbbd4764190ca61939a6 (patch)
tree742da6005911ed2d7f0e4c89895d90e7f8c5b1be /plugins
parent0a6507acc9f6ba896e10d1442d8ff869f0178942 (diff)
[micromega] Optimised cnf in case an hypothesis is trivially False.
This optimisation reduces (sometimes) the dependencies of a proof.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/micromega/micromega.ml12
1 files changed, 7 insertions, 5 deletions
diff --git a/plugins/micromega/micromega.ml b/plugins/micromega/micromega.ml
index b231779c7b..1556ec31b5 100644
--- a/plugins/micromega/micromega.ml
+++ b/plugins/micromega/micromega.ml
@@ -1384,11 +1384,13 @@ let rxcnf_or unsat deduce rXCNF polarity k e1 e2 =
let rxcnf_impl unsat deduce rXCNF polarity k e1 e2 =
let e3,t1 = rXCNF (negb polarity) k e1 in
if polarity
- then if is_cnf_ff e3
- then rXCNF polarity k e2
- else let e4,t2 = rXCNF polarity k e2 in
- let f',t' = ror_cnf_opt unsat deduce e3 e4 in
- f',(rev_append t1 (rev_append t2 t'))
+ then if is_cnf_tt e3
+ then e3,t1
+ else if is_cnf_ff e3
+ then rXCNF polarity k e2
+ else let e4,t2 = rXCNF polarity k e2 in
+ let f',t' = ror_cnf_opt unsat deduce e3 e4 in
+ f',(rev_append t1 (rev_append t2 t'))
else let e4,t2 = rXCNF polarity k e2 in
(and_cnf_opt e3 e4),(rev_append t1 t2)