This commit is contained in:
Simon Cruanes 2019-01-25 17:53:14 -06:00 committed by Guillaume Bury
parent 9024b0f0a9
commit cf6147c500
2 changed files with 5 additions and 2 deletions

View file

@ -1376,6 +1376,9 @@ module Make(Plugin : PLUGIN)
| _ -> assert false | _ -> assert false
done; done;
List.iter (fun q -> Var.clear q.var) !seen; List.iter (fun q -> Var.clear q.var) !seen;
(* put high-level literals first, so that:
- they make adequate watch lits
- the first literal is the UIP, if any *)
let l = List.fast_sort (fun p q -> compare q.var.v_level p.var.v_level) !learnt in let l = List.fast_sort (fun p q -> compare q.var.v_level p.var.v_level) !learnt in
let level, is_uip = backtrack_lvl st l in let level, is_uip = backtrack_lvl st l in
{ cr_backtrack_lvl = level; { cr_backtrack_lvl = level;

View file

@ -87,7 +87,7 @@ type ('term, 'formula, 'proof) slice = {
iter_assumptions: (('term,'formula) assumption -> unit) -> unit; iter_assumptions: (('term,'formula) assumption -> unit) -> unit;
(** Traverse the new assumptions on the boolean trail. *) (** Traverse the new assumptions on the boolean trail. *)
push : ?keep:bool -> 'formula list -> 'proof -> unit; push: ?keep:bool -> 'formula list -> 'proof -> unit;
(** Add a clause to the solver. (** Add a clause to the solver.
@param keep if true, the clause will be kept by the solver. @param keep if true, the clause will be kept by the solver.
Otherwise the solver is allowed to GC the clause and propose this Otherwise the solver is allowed to GC the clause and propose this
@ -99,7 +99,7 @@ type ('term, 'formula, 'proof) slice = {
The list of atoms must be a valid theory lemma that is false in the The list of atoms must be a valid theory lemma that is false in the
current trail. *) current trail. *)
propagate : 'formula -> ('term, 'formula, 'proof) reason -> unit; propagate: 'formula -> ('term, 'formula, 'proof) reason -> unit;
(** Propagate a formula, i.e. the theory can evaluate the formula to be true (** Propagate a formula, i.e. the theory can evaluate the formula to be true
(see the definition of {!type:eval_res} *) (see the definition of {!type:eval_res} *)
} }