mirror of
https://github.com/c-cube/sidekick.git
synced 2026-01-21 16:56:41 -05:00
rename to sidekick
This commit is contained in:
parent
eb40cfa5e3
commit
24bbe97ceb
38 changed files with 85 additions and 85 deletions
10
README.md
10
README.md
|
|
@ -1,6 +1,6 @@
|
|||
# dagon [](https://travis-ci.org/c-cube/CDCL)
|
||||
# Sidekick [](https://travis-ci.org/c-cube/sidekick)
|
||||
|
||||
Dagon is an OCaml library with a functor to create SMT solvers following
|
||||
Sidekick is an OCaml library with a functor to create SMT solvers following
|
||||
the CDCL(T) approach (so called "lazy SMT").
|
||||
|
||||
It derives from [Alt-Ergo Zero](http://cubicle.lri.fr/alt-ergo-zero)
|
||||
|
|
@ -9,16 +9,16 @@ and its fork [mSAT](https://github.com/gbury/msat).
|
|||
|
||||
## Documentation
|
||||
|
||||
See https://c-cube.github.io/dagon/
|
||||
See https://c-cube.github.io/sidekick/
|
||||
|
||||
## Installation
|
||||
|
||||
### Via opam
|
||||
|
||||
Once the package is on [opam](http://opam.ocaml.org), just `opam install dagon`.
|
||||
Once the package is on [opam](http://opam.ocaml.org), just `opam install sidekick`.
|
||||
For the development version, use:
|
||||
|
||||
opam pin add dagon https://github.com/c-cube/dagon.git
|
||||
opam pin https://github.com/c-cube/sidekick.git
|
||||
|
||||
### Manual installation
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
opam-version: "1.2"
|
||||
name: "dagon"
|
||||
name: "sidekick"
|
||||
license: "Apache"
|
||||
version: "dev"
|
||||
author: ["Simon Cruanes" "Guillaume Bury" "Sylvain Conchon" "Alain Mebsout" "Stephane Lecuyer"]
|
||||
|
|
@ -19,7 +19,7 @@ available: [
|
|||
ocaml-version >= "4.03.0"
|
||||
]
|
||||
tags: [ "sat" "smt" ]
|
||||
homepage: "https://github.com/c-cube/dagon"
|
||||
dev-repo: "https://github.com/c-cube/dagon.git"
|
||||
bug-reports: "https://github.com/c-cube/dagon/issues/"
|
||||
homepage: "https://github.com/c-cube/sidekick"
|
||||
dev-repo: "https://github.com/c-cube/sidekick.git"
|
||||
bug-reports: "https://github.com/c-cube/sidekick/issues/"
|
||||
|
||||
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
; main binary
|
||||
(library
|
||||
((name Dagon_backend)
|
||||
(public_name dagon.backend)
|
||||
(synopsis "proof backends for Dagon")
|
||||
(libraries (dagon.sat))
|
||||
(flags (:standard -w +a-4-42-44-48-50-58-32-60@8 -color always -safe-string -open Dagon_sat))
|
||||
((name Sidekick_backend)
|
||||
(public_name sidekick.backend)
|
||||
(synopsis "proof backends for Sidekick")
|
||||
(libraries (sidekick.sat))
|
||||
(flags (:standard -w +a-4-42-44-48-50-58-32-60@8 -color always -safe-string -open Sidekick_sat))
|
||||
(ocamlopt_flags (:standard -O3 -bin-annot
|
||||
-unbox-closures -unbox-closures-factor 20))
|
||||
))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
(* Copyright 2005 INRIA *)
|
||||
{
|
||||
open Dagon_util
|
||||
open Sidekick_util
|
||||
open Parser
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/* Copyright 2005 INRIA */
|
||||
|
||||
%{
|
||||
open Dagon_util
|
||||
open Sidekick_util
|
||||
|
||||
let lnum pos = pos.Lexing.pos_lnum
|
||||
let cnum pos = pos.Lexing.pos_cnum - pos.Lexing.pos_bol
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
; main binary
|
||||
(library
|
||||
((name dagon_dimacs)
|
||||
(public_name dagon.dimacs)
|
||||
((name sidekick_dimacs)
|
||||
(public_name sidekick.dimacs)
|
||||
(optional) ; only if deps present
|
||||
(libraries (containers dagon.util))
|
||||
(libraries (containers sidekick.util))
|
||||
(flags (:standard -w +a-4-42-44-48-50-58-32-60@8))
|
||||
(ocamlopt_flags (:standard -O3 -color always -bin-annot
|
||||
-unbox-closures -unbox-closures-factor 20))
|
||||
|
|
|
|||
|
|
@ -5,13 +5,13 @@
|
|||
; main binary
|
||||
(executable
|
||||
((name main)
|
||||
(public_name dagon)
|
||||
(package dagon)
|
||||
(public_name sidekick)
|
||||
(package sidekick)
|
||||
(libraries (containers sequence result
|
||||
dagon.sat dagon.smt dagon.smtlib dagon.backend
|
||||
dagon.dimacs))
|
||||
sidekick.sat sidekick.smt sidekick.smtlib sidekick.backend
|
||||
sidekick.dimacs))
|
||||
(flags (:standard -w +a-4-42-44-48-50-58-32-60@8
|
||||
-safe-string -color always -open Dagon_util))
|
||||
-safe-string -color always -open Sidekick_util))
|
||||
(ocamlopt_flags (:standard -O3 -color always
|
||||
-unbox-closures -unbox-closures-factor 20))
|
||||
))
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@ open CCResult.Infix
|
|||
|
||||
module E = CCResult
|
||||
module Fmt = CCFormat
|
||||
module Term = Dagon_smt.Term
|
||||
module Ast = Dagon_smt.Ast
|
||||
module Solver = Dagon_smt.Solver
|
||||
module Process = Dagon_smtlib.Process
|
||||
module Term = Sidekick_smt.Term
|
||||
module Ast = Sidekick_smt.Ast
|
||||
module Solver = Sidekick_smt.Solver
|
||||
module Process = Sidekick_smtlib.Process
|
||||
|
||||
type 'a or_error = ('a, string) E.t
|
||||
|
||||
|
|
@ -34,7 +34,7 @@ let p_progress = ref false
|
|||
|
||||
let hyps : Ast.term list ref = ref []
|
||||
|
||||
module Dot = Dagon_backend.Dot.Make(Solver.Sat_solver.Proof)(Dagon_backend.Dot.Default(Solver.Sat_solver.Proof))
|
||||
module Dot = Sidekick_backend.Dot.Make(Solver.Sat_solver.Proof)(Sidekick_backend.Dot.Default(Solver.Sat_solver.Proof))
|
||||
|
||||
let check_model _state =
|
||||
let check_clause _c =
|
||||
|
|
@ -43,7 +43,7 @@ let check_model _state =
|
|||
let l =
|
||||
List.map
|
||||
(fun a ->
|
||||
Dagon_sat.Log.debugf 99
|
||||
Sidekick_sat.Log.debugf 99
|
||||
(fun k -> k "Checking value of %a" Term.pp (Sat.Atom.term a));
|
||||
Sat_solver.Sat_state.eval state a)
|
||||
c
|
||||
|
|
@ -98,7 +98,7 @@ let argspec = Arg.align [
|
|||
"-no-p", Arg.Clear p_progress, " no progress bar";
|
||||
"-size", Arg.String (int_arg size_limit), " <s>[kMGT] sets the size limit for the sat solver";
|
||||
"-time", Arg.String (int_arg time_limit), " <t>[smhd] sets the time limit for the sat solver";
|
||||
"-v", Arg.Int Dagon_sat.Log.set_debug, "<lvl> sets the debug verbose level";
|
||||
"-v", Arg.Int Sidekick_sat.Log.set_debug, "<lvl> sets the debug verbose level";
|
||||
]
|
||||
|
||||
type syntax =
|
||||
|
|
@ -122,19 +122,19 @@ let main () =
|
|||
let solver =
|
||||
let theories = match syn with
|
||||
| Dimacs ->
|
||||
[Dagon_th_bool.th]
|
||||
[Sidekick_th_bool.th]
|
||||
| Smtlib ->
|
||||
[Dagon_th_bool.th] (* TODO: more theories *)
|
||||
[Sidekick_th_bool.th] (* TODO: more theories *)
|
||||
in
|
||||
Dagon_smt.Solver.create ~theories ()
|
||||
Sidekick_smt.Solver.create ~theories ()
|
||||
in
|
||||
let dot_proof = if !p_dot_proof = "" then None else Some !p_dot_proof in
|
||||
begin match syn with
|
||||
| Smtlib ->
|
||||
(* parse pb *)
|
||||
Dagon_smtlib.parse !file
|
||||
Sidekick_smtlib.parse !file
|
||||
| Dimacs ->
|
||||
Dagon_dimacs.parse !file >|= fun cs ->
|
||||
Sidekick_dimacs.parse !file >|= fun cs ->
|
||||
List.rev_append
|
||||
(List.rev_map (fun c -> Ast.Assert_bool c) cs)
|
||||
[Ast.CheckSat]
|
||||
|
|
@ -155,7 +155,7 @@ let main () =
|
|||
E.return()
|
||||
in
|
||||
if !p_stat then (
|
||||
Format.printf "%a@." Dagon_smt.Solver.pp_stats solver;
|
||||
Format.printf "%a@." Sidekick_smt.Solver.pp_stats solver;
|
||||
);
|
||||
if !p_gc_stat then (
|
||||
Printf.printf "(gc_stats\n%t)\n" Gc.print_stat;
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
(executable
|
||||
((name main_test)
|
||||
(libraries (dagon_sat dagon.backend dagon.th_sat dolmen))
|
||||
(flags (:standard -w +a-4-42-44-48-50-58-32-60@8 -color always -safe-string -open Dagon_sat))
|
||||
(libraries (sidekick_sat sidekick.backend sidekick.th_sat dolmen))
|
||||
(flags (:standard -w +a-4-42-44-48-50-58-32-60@8 -color always -safe-string -open Sidekick_sat))
|
||||
(ocamlopt_flags (:standard -O3 -bin-annot
|
||||
-unbox-closures -unbox-closures-factor 20))
|
||||
))
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
; vim:ft=lisp:
|
||||
|
||||
(library
|
||||
((name Dagon_sat)
|
||||
(public_name dagon.sat)
|
||||
(synopsis "core SAT solver for Dagon")
|
||||
(libraries (dagon.util))
|
||||
((name Sidekick_sat)
|
||||
(public_name sidekick.sat)
|
||||
(synopsis "core SAT solver for Sidekick")
|
||||
(libraries (sidekick.util))
|
||||
(flags (:standard -w +a-4-42-44-48-50-58-32-60@8
|
||||
-color always -safe-string -open Dagon_util))
|
||||
-color always -safe-string -open Sidekick_util))
|
||||
(ocamlopt_flags (:standard -O3 -bin-annot
|
||||
-unbox-closures -unbox-closures-factor 20))
|
||||
))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
module Vec = Dagon_sat.Vec
|
||||
module Log = Dagon_sat.Log
|
||||
module Vec = Sidekick_sat.Vec
|
||||
module Log = Sidekick_sat.Log
|
||||
open Solver_types
|
||||
|
||||
type node = Equiv_class.t
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ let pp = pp_lit
|
|||
let print = pp
|
||||
|
||||
let norm l =
|
||||
if l.lit_sign then l, Dagon_sat.Same_sign else neg l, Dagon_sat.Negated
|
||||
if l.lit_sign then l, Sidekick_sat.Same_sign else neg l, Sidekick_sat.Negated
|
||||
|
||||
module Set = CCSet.Make(struct type t = lit let compare=compare end)
|
||||
module Tbl = CCHashtbl.Make(struct type t = lit let equal=equal let hash=hash end)
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ val compare : t -> t -> int
|
|||
val equal : t -> t -> bool
|
||||
val print : t Fmt.printer
|
||||
val pp : t Fmt.printer
|
||||
val norm : t -> t * Dagon_sat.negated
|
||||
val norm : t -> t * Sidekick_sat.negated
|
||||
module Set : CCSet.S with type elt = t
|
||||
module Tbl : CCHashtbl.S with type key = t
|
||||
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ let equal_as_values (_:A.term) (_:A.term) : partial_eq =
|
|||
@param st the "stack trace" (terms around currently being evaluated)
|
||||
@param t the term to eval *)
|
||||
let rec eval_whnf (m:t) (st:term list) (subst:subst) (t:term): term =
|
||||
Dagon_sat.Log.debugf 5
|
||||
Sidekick_sat.Log.debugf 5
|
||||
(fun k->k "%s@[<2>eval_whnf `@[%a@]`@ in @[%a@]@]"
|
||||
(String.make (List.length st) ' ') (* indent *)
|
||||
A.pp_term t pp_subst subst);
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ let get_time : unit -> float = Sys.time
|
|||
|
||||
type level = int
|
||||
|
||||
module Sat_solver = Dagon_sat.Make(Theory_combine)
|
||||
module Sat_solver = Sidekick_sat.Make(Theory_combine)
|
||||
|
||||
let[@inline] clause_of_mclause (c:Sat_solver.clause): Lit.t IArray.t =
|
||||
Sat_solver.Clause.atoms c
|
||||
|
|
@ -407,14 +407,14 @@ type unsat_core = Sat.clause list
|
|||
let solve ?on_exit:(_=[]) ?check:(_=true) ~assumptions (self:t) : res =
|
||||
let r = Sat_solver.solve ~assumptions (solver self) () in
|
||||
match r with
|
||||
| Sat_solver.Sat (Dagon_sat.Sat_state _st) ->
|
||||
| Sat_solver.Sat (Sidekick_sat.Sat_state _st) ->
|
||||
Log.debugf 0 (fun k->k "SAT");
|
||||
Unknown U_incomplete (* TODO *)
|
||||
(*
|
||||
let env = Ast.env_empty in
|
||||
let m = Model.make ~env
|
||||
Sat m *)
|
||||
| Sat_solver.Unsat (Dagon_sat.Unsat_state us) ->
|
||||
| Sat_solver.Unsat (Sidekick_sat.Unsat_state us) ->
|
||||
let pr = us.get_proof () in
|
||||
Unsat pr
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
The solving algorithm, based on MCSat *)
|
||||
|
||||
module Sat_solver : Dagon_sat.S
|
||||
module Sat_solver : Sidekick_sat.S
|
||||
with type formula = Lit.t
|
||||
and type theory = Theory_combine.t
|
||||
and type Proof.lemma = Theory_combine.proof
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
(** Combine the congruence closure with a number of plugins *)
|
||||
|
||||
module Sat_solver = Dagon_sat
|
||||
module Sat_solver = Sidekick_sat
|
||||
open Solver_types
|
||||
|
||||
module Proof = struct
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ module Proof : sig
|
|||
type t = Proof
|
||||
end
|
||||
|
||||
include Dagon_sat.Theory_intf.S
|
||||
include Sidekick_sat.Theory_intf.S
|
||||
with type formula = Lit.t
|
||||
and type proof = Proof.t
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
; vim:ft=lisp:
|
||||
|
||||
(library
|
||||
((name Dagon_smt)
|
||||
(public_name dagon.smt)
|
||||
(libraries (containers containers.data sequence dagon.util dagon.sat zarith))
|
||||
((name Sidekick_smt)
|
||||
(public_name sidekick.smt)
|
||||
(libraries (containers containers.data sequence sidekick.util sidekick.sat zarith))
|
||||
(flags (:standard -w +a-4-44-48-58-60@8
|
||||
-color always -safe-string -short-paths -open Dagon_util))
|
||||
-color always -safe-string -short-paths -open Sidekick_util))
|
||||
(ocamlopt_flags (:standard -O3 -color always
|
||||
-unbox-closures -unbox-closures-factor 20))))
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
(** {1 Theory of Booleans} *)
|
||||
|
||||
open Dagon_smt
|
||||
open Sidekick_smt
|
||||
|
||||
module Fmt = CCFormat
|
||||
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
(** {1 Theory of Booleans} *)
|
||||
|
||||
open Dagon_smt
|
||||
open Sidekick_smt
|
||||
|
||||
type term = Term.t
|
||||
|
||||
|
|
@ -45,4 +45,4 @@ module Lit : sig
|
|||
val neq : Term.state -> term -> term -> t
|
||||
end
|
||||
|
||||
val th : Dagon_smt.Theory.t
|
||||
val th : Sidekick_smt.Theory.t
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
; vim:ft=lisp:
|
||||
(library
|
||||
((name Dagon_th_bool)
|
||||
(public_name dagon.smt.th_bool)
|
||||
(libraries (containers dagon.smt))
|
||||
((name Sidekick_th_bool)
|
||||
(public_name sidekick.smt.th_bool)
|
||||
(libraries (containers sidekick.smt))
|
||||
(flags (:standard -w +a-4-44-48-58-60@8
|
||||
-color always -safe-string -short-paths -open Dagon_util))
|
||||
-color always -safe-string -short-paths -open Sidekick_util))
|
||||
(ocamlopt_flags (:standard -O3 -color always
|
||||
-unbox-closures -unbox-closures-factor 20))))
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
|
||||
(** {2 Conversion into {!Term.t}} *)
|
||||
|
||||
open Dagon_smt
|
||||
open Sidekick_smt
|
||||
|
||||
type 'a or_error = ('a, string) CCResult.t
|
||||
|
||||
module E = CCResult
|
||||
module A = Ast
|
||||
module Form = Dagon_th_bool
|
||||
module Form = Sidekick_th_bool
|
||||
module Fmt = CCFormat
|
||||
|
||||
module Subst = struct
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
(** {1 Process Statements} *)
|
||||
|
||||
open Dagon_smt
|
||||
open Sidekick_smt
|
||||
|
||||
type 'a or_error = ('a, string) CCResult.t
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
(** {1 Process Statements} *)
|
||||
|
||||
module Fmt = CCFormat
|
||||
module Ast = Dagon_smt.Ast
|
||||
module Ast = Sidekick_smt.Ast
|
||||
module E = CCResult
|
||||
module Loc = Locations
|
||||
module Process = Process
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
type 'a or_error = ('a, string) CCResult.t
|
||||
|
||||
module Ast = Dagon_smt.Ast
|
||||
module Ast = Sidekick_smt.Ast
|
||||
module Process = Process
|
||||
|
||||
val parse : string -> Ast.statement list or_error
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
module Loc = Locations
|
||||
module Fmt = CCFormat
|
||||
|
||||
module A = Dagon_smt.Ast
|
||||
module A = Sidekick_smt.Ast
|
||||
module PA = Parse_ast
|
||||
|
||||
type 'a or_error = ('a, string) CCResult.t
|
||||
|
|
@ -314,7 +314,7 @@ let rec conv_term ctx (t:PA.term) : A.term = match t with
|
|||
errorf_ctx ctx "unsupported term %a" PA.pp_term t
|
||||
|
||||
let find_file_ name ~dir : string option =
|
||||
Dagon_sat.Log.debugf 2 (fun k->k "search %s in %s" name dir);
|
||||
Sidekick_sat.Log.debugf 2 (fun k->k "search %s in %s" name dir);
|
||||
let abs_path = Filename.concat dir name in
|
||||
if Sys.file_exists abs_path
|
||||
then Some abs_path
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ module Ctx : sig
|
|||
end
|
||||
|
||||
module PA = Parse_ast
|
||||
module A = Dagon_smt.Ast
|
||||
module A = Sidekick_smt.Ast
|
||||
|
||||
val conv_term : Ctx.t -> PA.term -> A.term
|
||||
|
||||
|
|
|
|||
|
|
@ -4,12 +4,12 @@
|
|||
|
||||
; main binary
|
||||
(library
|
||||
((name dagon_smtlib)
|
||||
(public_name dagon.smtlib)
|
||||
((name sidekick_smtlib)
|
||||
(public_name sidekick.smtlib)
|
||||
(optional) ; only if deps present
|
||||
(libraries (containers dagon.smt dagon.util dagon.smt.th_bool zarith))
|
||||
(libraries (containers sidekick.smt sidekick.util sidekick.smt.th_bool zarith))
|
||||
(flags (:standard -w +a-4-42-44-48-50-58-32-60@8
|
||||
-safe-string -color always -open Dagon_util))
|
||||
-safe-string -color always -open Sidekick_util))
|
||||
(ocamlopt_flags (:standard -O3 -color always -bin-annot
|
||||
-unbox-closures -unbox-closures-factor 20))
|
||||
))
|
||||
|
|
|
|||
|
|
@ -11,6 +11,6 @@ Copyright 2016 Guillaume Bury
|
|||
|
||||
module Th = Th_sat
|
||||
|
||||
include module type of Dagon_sat.Make(Th)
|
||||
include module type of Sidekick_sat.Make(Th)
|
||||
(** A functor that can generate as many solvers as needed. *)
|
||||
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
; vim:ft=lisp:
|
||||
|
||||
(library
|
||||
((name Dagon_th_sat)
|
||||
(public_name dagon.th_sat)
|
||||
(libraries (dagon.sat cdcl.tseitin))
|
||||
((name Sidekick_th_sat)
|
||||
(public_name sidekick.th_sat)
|
||||
(libraries (sidekick.sat cdcl.tseitin))
|
||||
(synopsis "sat interface")
|
||||
(flags (:standard -w +a-4-42-44-48-50-58-32-60@8 -color always -safe-string -open CDCL))
|
||||
(ocamlopt_flags (:standard -O3 -bin-annot
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
(library
|
||||
((name CDCL_tseitin)
|
||||
(public_name dagon.tseitin)
|
||||
(public_name sidekick.tseitin)
|
||||
(synopsis "Tseitin transformation for CDCL")
|
||||
(libraries ())
|
||||
(flags (:standard -w +a-4-42-44-48-50-58-32-60@8 -color always -safe-string))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
(library
|
||||
((name dagon_util)
|
||||
(public_name dagon.util)
|
||||
((name sidekick_util)
|
||||
(public_name sidekick.util)
|
||||
(libraries (containers sequence))
|
||||
(flags (:standard -w +a-4-42-44-48-50-58-32-60@8 -color always -safe-string))
|
||||
(ocamlopt_flags (:standard -O3 -bin-annot
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue