Commit 7d57b3f 1 parent 12fed8a commit 7d57b3f Copy full SHA for 7d57b3f
File tree 1 file changed +15
-4
lines changed
1 file changed +15
-4
lines changed Original file line number Diff line number Diff line change @@ -630,6 +630,9 @@ module Make
630
630
let size = ref 1 in
631
631
let history = ref [] in
632
632
assert (decision_level () > 0 );
633
+ let conflict_level =
634
+ Array. fold_left (fun acc p -> max acc p.var.v_level) 0 c_clause.atoms
635
+ in
633
636
while ! cond do
634
637
begin match ! c.cpremise with
635
638
| History _ -> clause_bump_activity ! c
@@ -651,8 +654,8 @@ module Make
651
654
seen := q :: ! seen;
652
655
if q.var.v_level > 0 then begin
653
656
var_bump_activity q.var;
654
- if q.var.v_level > = decision_level () then begin
655
- incr pathC
657
+ if q.var.v_level > = conflict_level then begin
658
+ incr pathC;
656
659
end else begin
657
660
learnt := q :: ! learnt;
658
661
incr size;
@@ -663,15 +666,23 @@ module Make
663
666
done ;
664
667
665
668
(* look for the next node to expand *)
666
- while not (get_atom ! tr_ind).var.seen do decr tr_ind done ;
667
- decr pathC;
669
+ while
670
+ let q = get_atom ! tr_ind in
671
+ (not q.var.seen) ||
672
+ (q.var.v_level < conflict_level)
673
+ do
674
+ decr tr_ind;
675
+ done ;
668
676
let p = get_atom ! tr_ind in
677
+ decr pathC;
669
678
decr tr_ind;
670
679
match ! pathC, p.var.reason with
671
680
| 0 , _ ->
672
681
cond := false ;
673
682
learnt := p.neg :: (List. rev ! learnt)
674
683
| n , Some Bcp cl ->
684
+ assert (n > 0 );
685
+ assert (p.var.v_level > = conflict_level);
675
686
c := cl
676
687
| n , _ -> assert false
677
688
done ;
You can’t perform that action at this time.
0 commit comments