mirror of
https://github.com/c-cube/sidekick.git
synced 2025-12-06 11:15:43 -05:00
Added if_sat to Theory_intf
This commit is contained in:
parent
eb2850caa6
commit
b56e4e3355
4 changed files with 19 additions and 12 deletions
|
|
@ -75,6 +75,10 @@ module type S = sig
|
||||||
(** Backtrack to the given level. After a call to [backtrack l], the theory should be in the
|
(** Backtrack to the given level. After a call to [backtrack l], the theory should be in the
|
||||||
same state as when it returned the value [l], *)
|
same state as when it returned the value [l], *)
|
||||||
|
|
||||||
|
val if_sat : (term, formula, proof) slice -> unit
|
||||||
|
(** Called at the end of the search in case a model has been found. If no new clause is
|
||||||
|
pushed, then 'sat' is returned, else search is resumed. *)
|
||||||
|
|
||||||
val assign : term -> term
|
val assign : term -> term
|
||||||
(** Returns an assignment value for the given term. *)
|
(** Returns an assignment value for the given term. *)
|
||||||
|
|
||||||
|
|
@ -84,9 +88,5 @@ module type S = sig
|
||||||
val eval : formula -> eval_res
|
val eval : formula -> eval_res
|
||||||
(** Returns the evaluation of the formula in the current assignment *)
|
(** Returns the evaluation of the formula in the current assignment *)
|
||||||
|
|
||||||
val if_sat : (term, formula, proof) slice -> unit
|
|
||||||
(** Called at the end of the search in case a model has been found. If no new clause is
|
|
||||||
pushed, then 'sat' is returned, else search is resumed. *)
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,5 +57,9 @@ module type S = sig
|
||||||
(** Backtrack to the given level. After a call to [backtrack l], the theory should be in the
|
(** Backtrack to the given level. After a call to [backtrack l], the theory should be in the
|
||||||
same state as when it returned the value [l], *)
|
same state as when it returned the value [l], *)
|
||||||
|
|
||||||
|
val if_sat : (formula, proof) slice -> unit
|
||||||
|
(** Called at the end of the search in case a model has been found. If no new clause is
|
||||||
|
pushed, then 'sat' is returned, else search is resumed. *)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,8 @@ module Tsmt = struct
|
||||||
|
|
||||||
let backtrack l = env := l
|
let backtrack l = env := l
|
||||||
|
|
||||||
|
let if_sat _ = ()
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
module Make(Dummy:sig end) = struct
|
module Make(Dummy:sig end) = struct
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ module DummyTheory(F : Formula_intf.S) = struct
|
||||||
let current_level () = ()
|
let current_level () = ()
|
||||||
let assume _ = Theory_intf.Sat
|
let assume _ = Theory_intf.Sat
|
||||||
let backtrack _ = ()
|
let backtrack _ = ()
|
||||||
|
let if_sat _ = ()
|
||||||
end
|
end
|
||||||
|
|
||||||
module Plugin(E : Formula_intf.S)
|
module Plugin(E : Formula_intf.S)
|
||||||
|
|
@ -43,27 +44,27 @@ module Plugin(E : Formula_intf.S)
|
||||||
| Plugin_intf.Lit f -> f
|
| Plugin_intf.Lit f -> f
|
||||||
| _ -> assert false
|
| _ -> assert false
|
||||||
|
|
||||||
let assume s =
|
let mk_slice s = {
|
||||||
let slice = {
|
|
||||||
Theory_intf.start = s.Plugin_intf.start;
|
Theory_intf.start = s.Plugin_intf.start;
|
||||||
length = s.Plugin_intf.length;
|
length = s.Plugin_intf.length;
|
||||||
get = assume_get s;
|
get = assume_get s;
|
||||||
push = s.Plugin_intf.push;
|
push = s.Plugin_intf.push;
|
||||||
} in
|
}
|
||||||
Th.assume slice
|
|
||||||
|
let assume s = Th.assume (mk_slice s)
|
||||||
|
|
||||||
let backtrack = Th.backtrack
|
let backtrack = Th.backtrack
|
||||||
|
|
||||||
|
let if_sat s = Th.if_sat (mk_slice s)
|
||||||
|
|
||||||
|
|
||||||
|
(* McSat specific functions *)
|
||||||
let assign _ = assert false
|
let assign _ = assert false
|
||||||
|
|
||||||
let iter_assignable _ _ = ()
|
let iter_assignable _ _ = ()
|
||||||
|
|
||||||
let eval _ = Plugin_intf.Unknown
|
let eval _ = Plugin_intf.Unknown
|
||||||
|
|
||||||
let if_sat _ = ()
|
|
||||||
|
|
||||||
let proof_debug _ = assert false
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue