From 61760859650c3af21d1991d0f456adaab569babb Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Fri, 7 Jun 2019 18:05:28 -0500 Subject: [PATCH] update dev docs --- index.html | 18 --------------- index.md | 5 +++++ msat_test/index.html | 2 -- sidekick/CDCL_tseitin/.jbuilder-keep | 0 .../Make/argument-1-A/Form/index.html | 2 -- .../CDCL_tseitin/Make/argument-1-A/index.html | 2 -- sidekick/CDCL_tseitin/Make/index.html | 2 -- sidekick/CDCL_tseitin/index.html | 2 -- .../module-type-Arg/Form/index.html | 2 -- .../CDCL_tseitin/module-type-Arg/index.html | 2 -- .../CDCL_tseitin/module-type-S/index.html | 2 -- sidekick/CDCL_tseitin__/.jbuilder-keep | 0 .../CDCL_tseitin__/Tseitin_intf/index.html | 2 -- .../module-type-Arg/Form/index.html | 2 -- .../Tseitin_intf/module-type-Arg/index.html | 2 -- .../Tseitin_intf/module-type-S/index.html | 2 -- sidekick/CDCL_tseitin__/index.html | 2 -- .../CDCL_tseitin__Tseitin_intf/.jbuilder-keep | 0 .../CDCL_tseitin__Tseitin_intf/index.html | 2 -- .../module-type-Arg/Form/index.html | 2 -- .../module-type-Arg/index.html | 2 -- .../module-type-S/index.html | 2 -- sidekick/Sidekick_backend/.jbuilder-keep | 0 .../Sidekick_backend/Backend_intf/index.html | 3 --- .../Backend_intf/module-type-S/index.html | 3 --- .../Coq/Make/argument-1-S/Atom/index.html | 2 -- .../Coq/Make/argument-1-S/Clause/index.html | 2 -- .../Coq/Make/argument-1-S/index.html | 14 ------------ .../Coq/Make/argument-2-A/index.html | 8 ------- sidekick/Sidekick_backend/Coq/Make/index.html | 3 --- .../Coq/Simple/argument-1-S/Atom/index.html | 2 -- .../Coq/Simple/argument-1-S/Clause/index.html | 2 -- .../Coq/Simple/argument-1-S/index.html | 14 ------------ .../Coq/Simple/argument-2-A/index.html | 8 ------- .../Sidekick_backend/Coq/Simple/index.html | 3 --- sidekick/Sidekick_backend/Coq/index.html | 4 ---- .../Coq/module-type-Arg/index.html | 8 ------- .../Coq/module-type-S/index.html | 3 --- .../Dedukti/Make/argument-1-S/Atom/index.html | 2 -- .../Make/argument-1-S/Clause/index.html | 2 -- .../Dedukti/Make/argument-1-S/index.html | 14 ------------ .../Dedukti/Make/argument-2-A/index.html | 2 -- .../Sidekick_backend/Dedukti/Make/index.html | 3 --- sidekick/Sidekick_backend/Dedukti/index.html | 2 -- .../Dedukti/module-type-Arg/index.html | 2 -- .../Dedukti/module-type-S/index.html | 3 --- .../Dimacs/Make/argument-1-St/Atom/index.html | 2 -- .../Make/argument-1-St/Clause/index.html | 5 ----- .../Make/argument-1-St/Formula/index.html | 2 -- .../Dimacs/Make/argument-1-St/Var/index.html | 4 ---- .../Dimacs/Make/argument-1-St/index.html | 20 ----------------- .../Sidekick_backend/Dimacs/Make/index.html | 8 ------- sidekick/Sidekick_backend/Dimacs/index.html | 3 --- .../Dimacs/module-type-S/index.html | 8 ------- .../Dot/Default/argument-1-S/Atom/index.html | 2 -- .../Default/argument-1-S/Clause/index.html | 2 -- .../Dot/Default/argument-1-S/index.html | 14 ------------ .../Sidekick_backend/Dot/Default/index.html | 10 --------- .../Dot/Make/argument-1-S/Atom/index.html | 2 -- .../Dot/Make/argument-1-S/Clause/index.html | 2 -- .../Dot/Make/argument-1-S/index.html | 14 ------------ .../Dot/Make/argument-2-A/index.html | 9 -------- sidekick/Sidekick_backend/Dot/Make/index.html | 3 --- .../Dot/Simple/argument-1-S/Atom/index.html | 2 -- .../Dot/Simple/argument-1-S/Clause/index.html | 2 -- .../Dot/Simple/argument-1-S/index.html | 14 ------------ .../Dot/Simple/argument-2-A/index.html | 9 -------- .../Sidekick_backend/Dot/Simple/index.html | 5 ----- sidekick/Sidekick_backend/Dot/index.html | 6 ----- .../Dot/module-type-Arg/index.html | 9 -------- .../Dot/module-type-S/index.html | 3 --- sidekick/Sidekick_backend/index.html | 2 -- .../.jbuilder-keep | 0 .../Sidekick_backend__Backend_intf/index.html | 3 --- .../module-type-S/index.html | 3 --- sidekick/Sidekick_backend__Coq/.jbuilder-keep | 0 .../Make/argument-1-S/Atom/index.html | 2 -- .../Make/argument-1-S/Clause/index.html | 2 -- .../Make/argument-1-S/index.html | 14 ------------ .../Make/argument-2-A/index.html | 8 ------- .../Sidekick_backend__Coq/Make/index.html | 3 --- .../Simple/argument-1-S/Atom/index.html | 2 -- .../Simple/argument-1-S/Clause/index.html | 2 -- .../Simple/argument-1-S/index.html | 14 ------------ .../Simple/argument-2-A/index.html | 8 ------- .../Sidekick_backend__Coq/Simple/index.html | 3 --- sidekick/Sidekick_backend__Coq/index.html | 4 ---- .../module-type-Arg/index.html | 8 ------- .../module-type-S/index.html | 3 --- .../Sidekick_backend__Dedukti/.jbuilder-keep | 0 .../Make/argument-1-S/Atom/index.html | 2 -- .../Make/argument-1-S/Clause/index.html | 2 -- .../Make/argument-1-S/index.html | 14 ------------ .../Make/argument-2-A/index.html | 2 -- .../Sidekick_backend__Dedukti/Make/index.html | 3 --- sidekick/Sidekick_backend__Dedukti/index.html | 2 -- .../module-type-Arg/index.html | 2 -- .../module-type-S/index.html | 3 --- .../Sidekick_backend__Dimacs/.jbuilder-keep | 0 .../Make/argument-1-St/Atom/index.html | 2 -- .../Make/argument-1-St/Clause/index.html | 5 ----- .../Make/argument-1-St/Formula/index.html | 2 -- .../Make/argument-1-St/Var/index.html | 4 ---- .../Make/argument-1-St/index.html | 20 ----------------- .../Sidekick_backend__Dimacs/Make/index.html | 8 ------- sidekick/Sidekick_backend__Dimacs/index.html | 3 --- .../module-type-S/index.html | 8 ------- sidekick/Sidekick_backend__Dot/.jbuilder-keep | 0 .../Default/argument-1-S/Atom/index.html | 2 -- .../Default/argument-1-S/Clause/index.html | 2 -- .../Default/argument-1-S/index.html | 14 ------------ .../Sidekick_backend__Dot/Default/index.html | 10 --------- .../Make/argument-1-S/Atom/index.html | 2 -- .../Make/argument-1-S/Clause/index.html | 2 -- .../Make/argument-1-S/index.html | 14 ------------ .../Make/argument-2-A/index.html | 9 -------- .../Sidekick_backend__Dot/Make/index.html | 3 --- .../Simple/argument-1-S/Atom/index.html | 2 -- .../Simple/argument-1-S/Clause/index.html | 2 -- .../Simple/argument-1-S/index.html | 14 ------------ .../Simple/argument-2-A/index.html | 9 -------- .../Sidekick_backend__Dot/Simple/index.html | 5 ----- sidekick/Sidekick_backend__Dot/index.html | 6 ----- .../module-type-Arg/index.html | 9 -------- .../module-type-S/index.html | 3 --- sidekick/Sidekick_dimacs/.jbuilder-keep | 0 sidekick/Sidekick_dimacs/index.html | 3 --- sidekick/Sidekick_dimacs__/.jbuilder-keep | 0 sidekick/Sidekick_dimacs__/Lexer/index.html | 2 -- sidekick/Sidekick_dimacs__/Parser/index.html | 2 -- sidekick/Sidekick_dimacs__/index.html | 2 -- .../Sidekick_dimacs__Lexer/.jbuilder-keep | 0 sidekick/Sidekick_dimacs__Lexer/index.html | 2 -- .../Sidekick_dimacs__Parser/.jbuilder-keep | 0 sidekick/Sidekick_dimacs__Parser/index.html | 2 -- sidekick/Sidekick_sat/.jbuilder-keep | 0 sidekick/Sidekick_sat/Make/Clause/index.html | 2 -- sidekick/Sidekick_sat/Make/Formula/index.html | 2 -- sidekick/Sidekick_sat/Make/Lit/index.html | 2 -- .../Sidekick_sat/Make/Proof/Atom/index.html | 2 -- .../Make/Proof/Clause/Tbl/index.html | 2 -- .../Sidekick_sat/Make/Proof/Clause/index.html | 2 -- .../Sidekick_sat/Make/Proof/Tbl/index.html | 2 -- sidekick/Sidekick_sat/Make/Proof/index.html | 2 -- .../Make/argument-1-E/Form/index.html | 8 ------- .../Sidekick_sat/Make/argument-1-E/index.html | 4 ---- sidekick/Sidekick_sat/Make/index.html | 2 -- .../Sidekick_sat/Res/Make/Atom/index.html | 2 -- .../Sidekick_sat/Res/Make/Clause/index.html | 2 -- .../Res/Make/argument-1-St/Atom/index.html | 2 -- .../Res/Make/argument-1-St/Clause/index.html | 5 ----- .../Res/Make/argument-1-St/Formula/index.html | 2 -- .../Res/Make/argument-1-St/Var/index.html | 4 ---- .../Res/Make/argument-1-St/index.html | 20 ----------------- sidekick/Sidekick_sat/Res/Make/index.html | 14 ------------ sidekick/Sidekick_sat/Res/index.html | 2 -- .../Res/module-type-FULL/Atom/index.html | 2 -- .../Res/module-type-FULL/Clause/index.html | 2 -- .../Res/module-type-FULL/St/Atom/index.html | 2 -- .../Res/module-type-FULL/St/Clause/index.html | 5 ----- .../module-type-FULL/St/Formula/index.html | 2 -- .../Res/module-type-FULL/St/Var/index.html | 4 ---- .../Res/module-type-FULL/St/index.html | 20 ----------------- .../Res/module-type-FULL/index.html | 14 ------------ .../Res/module-type-S/Atom/index.html | 2 -- .../Res/module-type-S/Clause/index.html | 2 -- .../Sidekick_sat/Res/module-type-S/index.html | 14 ------------ .../Solver_types_intf/C_fields/index.html | 4 ---- .../Solver_types_intf/Var_fields/index.html | 4 ---- .../Sidekick_sat/Solver_types_intf/index.html | 3 --- .../module-type-S/Atom/index.html | 2 -- .../module-type-S/Clause/index.html | 5 ----- .../module-type-S/Formula/index.html | 2 -- .../module-type-S/Var/index.html | 4 ---- .../module-type-S/index.html | 20 ----------------- sidekick/Sidekick_sat/Theory_intf/index.html | 14 ------------ .../Theory_intf/module-type-S/Form/index.html | 8 ------- .../Theory_intf/module-type-S/index.html | 4 ---- sidekick/Sidekick_sat/index.html | 5 ----- .../module-type-S/Clause/index.html | 3 --- .../module-type-S/Formula/index.html | 2 -- .../Sidekick_sat/module-type-S/Lit/index.html | 2 -- .../module-type-S/Proof/Atom/index.html | 2 -- .../module-type-S/Proof/Clause/index.html | 2 -- .../module-type-S/Proof/index.html | 14 ------------ .../Sidekick_sat/module-type-S/index.html | 18 --------------- sidekick/Sidekick_sat__/.jbuilder-keep | 0 .../Sidekick_sat__/Internal/Make/H/index.html | 2 -- .../Internal/Make/Proof/Atom/index.html | 2 -- .../Internal/Make/Proof/Clause/Tbl/index.html | 2 -- .../Internal/Make/Proof/Clause/index.html | 2 -- .../Internal/Make/Proof/St/Atom/index.html | 2 -- .../Make/Proof/St/Clause/Tbl/index.html | 2 -- .../Internal/Make/Proof/St/Clause/index.html | 2 -- .../Internal/Make/Proof/St/Formula/index.html | 2 -- .../Internal/Make/Proof/St/Var/index.html | 2 -- .../Internal/Make/Proof/St/index.html | 2 -- .../Internal/Make/Proof/Tbl/index.html | 2 -- .../Internal/Make/Proof/index.html | 2 -- .../Make/argument-1-St/Atom/index.html | 2 -- .../Make/argument-1-St/Clause/index.html | 5 ----- .../Make/argument-1-St/Formula/index.html | 2 -- .../Make/argument-1-St/Var/index.html | 4 ---- .../Internal/Make/argument-1-St/index.html | 20 ----------------- .../Make/argument-2-Th/Form/index.html | 8 ------- .../Internal/Make/argument-2-Th/index.html | 4 ---- .../Sidekick_sat__/Internal/Make/index.html | 2 -- sidekick/Sidekick_sat__/Internal/index.html | 2 -- .../Sidekick_sat__/Res/Make/Atom/index.html | 2 -- .../Sidekick_sat__/Res/Make/Clause/index.html | 2 -- .../Res/Make/argument-1-St/Atom/index.html | 2 -- .../Res/Make/argument-1-St/Clause/index.html | 5 ----- .../Res/Make/argument-1-St/Formula/index.html | 2 -- .../Res/Make/argument-1-St/Var/index.html | 4 ---- .../Res/Make/argument-1-St/index.html | 20 ----------------- sidekick/Sidekick_sat__/Res/Make/index.html | 14 ------------ sidekick/Sidekick_sat__/Res/index.html | 2 -- .../Res/module-type-FULL/Atom/index.html | 2 -- .../Res/module-type-FULL/Clause/index.html | 2 -- .../Res/module-type-FULL/St/Atom/index.html | 2 -- .../Res/module-type-FULL/St/Clause/index.html | 5 ----- .../module-type-FULL/St/Formula/index.html | 2 -- .../Res/module-type-FULL/St/Var/index.html | 4 ---- .../Res/module-type-FULL/St/index.html | 20 ----------------- .../Res/module-type-FULL/index.html | 14 ------------ .../Res/module-type-S/Atom/index.html | 2 -- .../Res/module-type-S/Clause/index.html | 2 -- .../Res/module-type-S/index.html | 14 ------------ sidekick/Sidekick_sat__/Res_intf/index.html | 2 -- .../Res_intf/module-type-FULL/Atom/index.html | 2 -- .../module-type-FULL/Clause/index.html | 2 -- .../module-type-FULL/St/Atom/index.html | 2 -- .../module-type-FULL/St/Clause/index.html | 5 ----- .../module-type-FULL/St/Formula/index.html | 2 -- .../module-type-FULL/St/Var/index.html | 4 ---- .../Res_intf/module-type-FULL/St/index.html | 20 ----------------- .../Res_intf/module-type-FULL/index.html | 14 ------------ .../Res_intf/module-type-S/Atom/index.html | 2 -- .../Res_intf/module-type-S/Clause/index.html | 2 -- .../Res_intf/module-type-S/index.html | 14 ------------ .../Solver/Make/Clause/index.html | 3 --- .../Solver/Make/Formula/index.html | 2 -- .../Sidekick_sat__/Solver/Make/Lit/index.html | 2 -- .../Solver/Make/Proof/Atom/index.html | 2 -- .../Solver/Make/Proof/Clause/index.html | 2 -- .../Solver/Make/Proof/index.html | 14 ------------ .../Solver/Make/argument-1-St/Atom/index.html | 2 -- .../Make/argument-1-St/Clause/index.html | 5 ----- .../Make/argument-1-St/Formula/index.html | 2 -- .../Solver/Make/argument-1-St/Var/index.html | 4 ---- .../Solver/Make/argument-1-St/index.html | 20 ----------------- .../Solver/Make/argument-2-Th/Form/index.html | 8 ------- .../Solver/Make/argument-2-Th/index.html | 4 ---- .../Sidekick_sat__/Solver/Make/index.html | 18 --------------- sidekick/Sidekick_sat__/Solver/index.html | 3 --- .../Solver/module-type-S/Clause/index.html | 3 --- .../Solver/module-type-S/Formula/index.html | 2 -- .../Solver/module-type-S/Lit/index.html | 2 -- .../module-type-S/Proof/Atom/index.html | 2 -- .../module-type-S/Proof/Clause/index.html | 2 -- .../Solver/module-type-S/Proof/index.html | 14 ------------ .../Solver/module-type-S/index.html | 18 --------------- .../Sidekick_sat__/Solver_intf/index.html | 10 --------- .../module-type-S/Clause/index.html | 3 --- .../module-type-S/Formula/index.html | 2 -- .../Solver_intf/module-type-S/Lit/index.html | 2 -- .../module-type-S/Proof/Atom/index.html | 2 -- .../module-type-S/Proof/Clause/index.html | 2 -- .../module-type-S/Proof/index.html | 14 ------------ .../Solver_intf/module-type-S/index.html | 19 ---------------- .../Solver_types/Make/Atom/index.html | 2 -- .../Solver_types/Make/Clause/index.html | 5 ----- .../Solver_types/Make/Formula/index.html | 2 -- .../Solver_types/Make/Var/index.html | 4 ---- .../Make/argument-1-E/Form/index.html | 8 ------- .../Solver_types/Make/argument-1-E/index.html | 4 ---- .../Solver_types/Make/index.html | 20 ----------------- .../Sidekick_sat__/Solver_types/index.html | 6 ----- .../module-type-S/Atom/index.html | 2 -- .../module-type-S/Clause/index.html | 5 ----- .../module-type-S/Formula/index.html | 2 -- .../Solver_types/module-type-S/Var/index.html | 4 ---- .../Solver_types/module-type-S/index.html | 20 ----------------- .../Solver_types_intf/C_fields/index.html | 4 ---- .../Solver_types_intf/Var_fields/index.html | 4 ---- .../Solver_types_intf/index.html | 3 --- .../module-type-S/Atom/index.html | 2 -- .../module-type-S/Clause/index.html | 5 ----- .../module-type-S/Formula/index.html | 2 -- .../module-type-S/Var/index.html | 4 ---- .../module-type-S/index.html | 20 ----------------- .../Sidekick_sat__/Theory_intf/index.html | 14 ------------ .../Theory_intf/module-type-S/Form/index.html | 8 ------- .../Theory_intf/module-type-S/index.html | 4 ---- sidekick/Sidekick_sat__/index.html | 2 -- .../Sidekick_sat__Internal/.jbuilder-keep | 0 .../Sidekick_sat__Internal/Make/H/index.html | 2 -- .../Make/Proof/Atom/index.html | 2 -- .../Make/Proof/Clause/Tbl/index.html | 2 -- .../Make/Proof/Clause/index.html | 2 -- .../Make/Proof/St/Atom/index.html | 2 -- .../Make/Proof/St/Clause/Tbl/index.html | 2 -- .../Make/Proof/St/Clause/index.html | 2 -- .../Make/Proof/St/Formula/index.html | 2 -- .../Make/Proof/St/Var/index.html | 2 -- .../Make/Proof/St/index.html | 2 -- .../Make/Proof/Tbl/index.html | 2 -- .../Make/Proof/index.html | 2 -- .../Make/argument-1-St/Atom/index.html | 2 -- .../Make/argument-1-St/Clause/index.html | 5 ----- .../Make/argument-1-St/Formula/index.html | 2 -- .../Make/argument-1-St/Var/index.html | 4 ---- .../Make/argument-1-St/index.html | 20 ----------------- .../Make/argument-2-Th/Form/index.html | 8 ------- .../Make/argument-2-Th/index.html | 4 ---- .../Sidekick_sat__Internal/Make/index.html | 2 -- sidekick/Sidekick_sat__Internal/index.html | 2 -- sidekick/Sidekick_sat__Res/.jbuilder-keep | 0 .../Sidekick_sat__Res/Make/Atom/index.html | 2 -- .../Sidekick_sat__Res/Make/Clause/index.html | 2 -- .../Make/argument-1-St/Atom/index.html | 2 -- .../Make/argument-1-St/Clause/index.html | 5 ----- .../Make/argument-1-St/Formula/index.html | 2 -- .../Make/argument-1-St/Var/index.html | 4 ---- .../Make/argument-1-St/index.html | 20 ----------------- sidekick/Sidekick_sat__Res/Make/index.html | 14 ------------ sidekick/Sidekick_sat__Res/index.html | 2 -- .../module-type-FULL/Atom/index.html | 2 -- .../module-type-FULL/Clause/index.html | 2 -- .../module-type-FULL/St/Atom/index.html | 2 -- .../module-type-FULL/St/Clause/index.html | 5 ----- .../module-type-FULL/St/Formula/index.html | 2 -- .../module-type-FULL/St/Var/index.html | 4 ---- .../module-type-FULL/St/index.html | 20 ----------------- .../module-type-FULL/index.html | 14 ------------ .../module-type-S/Atom/index.html | 2 -- .../module-type-S/Clause/index.html | 2 -- .../module-type-S/index.html | 14 ------------ .../Sidekick_sat__Res_intf/.jbuilder-keep | 0 sidekick/Sidekick_sat__Res_intf/index.html | 2 -- .../module-type-FULL/Atom/index.html | 2 -- .../module-type-FULL/Clause/index.html | 2 -- .../module-type-FULL/St/Atom/index.html | 2 -- .../module-type-FULL/St/Clause/index.html | 5 ----- .../module-type-FULL/St/Formula/index.html | 2 -- .../module-type-FULL/St/Var/index.html | 4 ---- .../module-type-FULL/St/index.html | 20 ----------------- .../module-type-FULL/index.html | 14 ------------ .../module-type-S/Atom/index.html | 2 -- .../module-type-S/Clause/index.html | 2 -- .../module-type-S/index.html | 14 ------------ sidekick/Sidekick_sat__Solver/.jbuilder-keep | 0 .../Make/Clause/index.html | 3 --- .../Make/Formula/index.html | 2 -- .../Sidekick_sat__Solver/Make/Lit/index.html | 2 -- .../Make/Proof/Atom/index.html | 2 -- .../Make/Proof/Clause/index.html | 2 -- .../Make/Proof/index.html | 14 ------------ .../Make/argument-1-St/Atom/index.html | 2 -- .../Make/argument-1-St/Clause/index.html | 5 ----- .../Make/argument-1-St/Formula/index.html | 2 -- .../Make/argument-1-St/Var/index.html | 4 ---- .../Make/argument-1-St/index.html | 20 ----------------- .../Make/argument-2-Th/Form/index.html | 8 ------- .../Make/argument-2-Th/index.html | 4 ---- sidekick/Sidekick_sat__Solver/Make/index.html | 18 --------------- sidekick/Sidekick_sat__Solver/index.html | 3 --- .../module-type-S/Clause/index.html | 3 --- .../module-type-S/Formula/index.html | 2 -- .../module-type-S/Lit/index.html | 2 -- .../module-type-S/Proof/Atom/index.html | 2 -- .../module-type-S/Proof/Clause/index.html | 2 -- .../module-type-S/Proof/index.html | 14 ------------ .../module-type-S/index.html | 18 --------------- .../Sidekick_sat__Solver_intf/.jbuilder-keep | 0 sidekick/Sidekick_sat__Solver_intf/index.html | 10 --------- .../module-type-S/Clause/index.html | 3 --- .../module-type-S/Formula/index.html | 2 -- .../module-type-S/Lit/index.html | 2 -- .../module-type-S/Proof/Atom/index.html | 2 -- .../module-type-S/Proof/Clause/index.html | 2 -- .../module-type-S/Proof/index.html | 14 ------------ .../module-type-S/index.html | 19 ---------------- .../Sidekick_sat__Solver_types/.jbuilder-keep | 0 .../Make/Atom/index.html | 2 -- .../Make/Clause/index.html | 5 ----- .../Make/Formula/index.html | 2 -- .../Make/Var/index.html | 4 ---- .../Make/argument-1-E/Form/index.html | 8 ------- .../Make/argument-1-E/index.html | 4 ---- .../Make/index.html | 20 ----------------- .../Sidekick_sat__Solver_types/index.html | 6 ----- .../module-type-S/Atom/index.html | 2 -- .../module-type-S/Clause/index.html | 5 ----- .../module-type-S/Formula/index.html | 2 -- .../module-type-S/Var/index.html | 4 ---- .../module-type-S/index.html | 20 ----------------- .../.jbuilder-keep | 0 .../C_fields/index.html | 4 ---- .../Var_fields/index.html | 4 ---- .../index.html | 3 --- .../module-type-S/Atom/index.html | 2 -- .../module-type-S/Clause/index.html | 5 ----- .../module-type-S/Formula/index.html | 2 -- .../module-type-S/Var/index.html | 4 ---- .../module-type-S/index.html | 20 ----------------- .../Sidekick_sat__Theory_intf/.jbuilder-keep | 0 sidekick/Sidekick_sat__Theory_intf/index.html | 14 ------------ .../module-type-S/Form/index.html | 8 ------- .../module-type-S/index.html | 4 ---- sidekick/Sidekick_smt/.jbuilder-keep | 0 sidekick/Sidekick_smt/Ast/Ty/index.html | 3 --- sidekick/Sidekick_smt/Ast/Var/index.html | 2 -- sidekick/Sidekick_smt/Ast/index.html | 2 -- sidekick/Sidekick_smt/Bag/index.html | 3 --- sidekick/Sidekick_smt/Config/Key/index.html | 2 -- sidekick/Sidekick_smt/Config/index.html | 2 -- .../Congruence_closure/index.html | 7 ------ sidekick/Sidekick_smt/Cst/index.html | 2 -- sidekick/Sidekick_smt/Equiv_class/index.html | 15 ------------- .../Sidekick_smt/Explanation/Set/index.html | 2 -- sidekick/Sidekick_smt/Explanation/index.html | 2 -- sidekick/Sidekick_smt/Hash/index.html | 2 -- sidekick/Sidekick_smt/Het_map/Key/index.html | 2 -- sidekick/Sidekick_smt/Het_map/Map/index.html | 2 -- sidekick/Sidekick_smt/Het_map/Tbl/index.html | 2 -- sidekick/Sidekick_smt/Het_map/index.html | 2 -- sidekick/Sidekick_smt/Lit/index.html | 2 -- sidekick/Sidekick_smt/Model/index.html | 2 -- sidekick/Sidekick_smt/Solver/Proof/index.html | 2 -- .../Solver/Sat_solver/Clause/index.html | 3 --- .../Solver/Sat_solver/Formula/index.html | 2 -- .../Solver/Sat_solver/Lit/index.html | 2 -- .../Solver/Sat_solver/Proof/Atom/index.html | 2 -- .../Solver/Sat_solver/Proof/Clause/index.html | 2 -- .../Solver/Sat_solver/Proof/index.html | 14 ------------ .../Sidekick_smt/Solver/Sat_solver/index.html | 18 --------------- sidekick/Sidekick_smt/Solver/index.html | 2 -- sidekick/Sidekick_smt/Solver_types/index.html | 16 -------------- sidekick/Sidekick_smt/Stat/index.html | 2 -- sidekick/Sidekick_smt/Term/index.html | 2 -- .../Term_cell/Make_eq/argument-1-X/index.html | 2 -- .../Sidekick_smt/Term_cell/Make_eq/index.html | 2 -- sidekick/Sidekick_smt/Term_cell/index.html | 2 -- .../Term_cell/module-type-ARG/index.html | 2 -- .../Sidekick_smt/Theory/Clause/index.html | 2 -- sidekick/Sidekick_smt/Theory/index.html | 9 -------- .../Theory_combine/Form/index.html | 8 ------- .../Theory_combine/Proof/index.html | 2 -- .../Sidekick_smt/Theory_combine/index.html | 4 ---- sidekick/Sidekick_smt/Ty/index.html | 2 -- sidekick/Sidekick_smt/Ty_card/index.html | 2 -- sidekick/Sidekick_smt/index.html | 2 -- sidekick/Sidekick_smt__Ast/.jbuilder-keep | 0 sidekick/Sidekick_smt__Ast/Ty/index.html | 3 --- sidekick/Sidekick_smt__Ast/Var/index.html | 2 -- sidekick/Sidekick_smt__Ast/index.html | 2 -- sidekick/Sidekick_smt__Bag/.jbuilder-keep | 0 sidekick/Sidekick_smt__Bag/index.html | 3 --- sidekick/Sidekick_smt__Config/.jbuilder-keep | 0 sidekick/Sidekick_smt__Config/Key/index.html | 2 -- sidekick/Sidekick_smt__Config/index.html | 2 -- .../.jbuilder-keep | 0 .../index.html | 7 ------ sidekick/Sidekick_smt__Cst/.jbuilder-keep | 0 sidekick/Sidekick_smt__Cst/index.html | 2 -- .../Sidekick_smt__Equiv_class/.jbuilder-keep | 0 sidekick/Sidekick_smt__Equiv_class/index.html | 15 ------------- .../Sidekick_smt__Explanation/.jbuilder-keep | 0 .../Sidekick_smt__Explanation/Set/index.html | 2 -- sidekick/Sidekick_smt__Explanation/index.html | 2 -- sidekick/Sidekick_smt__Hash/.jbuilder-keep | 0 sidekick/Sidekick_smt__Hash/index.html | 2 -- sidekick/Sidekick_smt__Het_map/.jbuilder-keep | 0 sidekick/Sidekick_smt__Het_map/Key/index.html | 2 -- sidekick/Sidekick_smt__Het_map/Map/index.html | 2 -- sidekick/Sidekick_smt__Het_map/Tbl/index.html | 2 -- sidekick/Sidekick_smt__Het_map/index.html | 2 -- sidekick/Sidekick_smt__Lit/.jbuilder-keep | 0 sidekick/Sidekick_smt__Lit/index.html | 2 -- sidekick/Sidekick_smt__Model/.jbuilder-keep | 0 sidekick/Sidekick_smt__Model/index.html | 2 -- sidekick/Sidekick_smt__Solver/.jbuilder-keep | 0 .../Sidekick_smt__Solver/Proof/index.html | 2 -- .../Sat_solver/Clause/index.html | 3 --- .../Sat_solver/Formula/index.html | 2 -- .../Sat_solver/Lit/index.html | 2 -- .../Sat_solver/Proof/Atom/index.html | 2 -- .../Sat_solver/Proof/Clause/index.html | 2 -- .../Sat_solver/Proof/index.html | 14 ------------ .../Sat_solver/index.html | 18 --------------- sidekick/Sidekick_smt__Solver/index.html | 2 -- .../Sidekick_smt__Solver_types/.jbuilder-keep | 0 .../Sidekick_smt__Solver_types/index.html | 16 -------------- sidekick/Sidekick_smt__Stat/.jbuilder-keep | 0 sidekick/Sidekick_smt__Stat/index.html | 2 -- sidekick/Sidekick_smt__Term/.jbuilder-keep | 0 sidekick/Sidekick_smt__Term/index.html | 2 -- .../Sidekick_smt__Term_cell/.jbuilder-keep | 0 .../Make_eq/argument-1-X/index.html | 2 -- .../Make_eq/index.html | 2 -- sidekick/Sidekick_smt__Term_cell/index.html | 2 -- .../module-type-ARG/index.html | 2 -- sidekick/Sidekick_smt__Theory/.jbuilder-keep | 0 .../Sidekick_smt__Theory/Clause/index.html | 2 -- sidekick/Sidekick_smt__Theory/index.html | 9 -------- .../.jbuilder-keep | 0 .../Form/index.html | 8 ------- .../Proof/index.html | 2 -- .../Sidekick_smt__Theory_combine/index.html | 4 ---- sidekick/Sidekick_smt__Ty/.jbuilder-keep | 0 sidekick/Sidekick_smt__Ty/index.html | 2 -- sidekick/Sidekick_smt__Ty_card/.jbuilder-keep | 0 sidekick/Sidekick_smt__Ty_card/index.html | 2 -- sidekick/Sidekick_smtlib/.jbuilder-keep | 0 sidekick/Sidekick_smtlib/Process/index.html | 2 -- sidekick/Sidekick_smtlib/index.html | 3 --- sidekick/Sidekick_smtlib__/.jbuilder-keep | 0 sidekick/Sidekick_smtlib__/Lexer/index.html | 2 -- .../Sidekick_smtlib__/Locations/index.html | 2 -- .../Sidekick_smtlib__/Parse_ast/index.html | 2 -- sidekick/Sidekick_smtlib__/Parser/index.html | 2 -- sidekick/Sidekick_smtlib__/Process/index.html | 2 -- .../Typecheck/Ctx/index.html | 2 -- .../Sidekick_smtlib__/Typecheck/index.html | 2 -- sidekick/Sidekick_smtlib__/index.html | 2 -- .../Sidekick_smtlib__Lexer/.jbuilder-keep | 0 sidekick/Sidekick_smtlib__Lexer/index.html | 2 -- .../Sidekick_smtlib__Locations/.jbuilder-keep | 0 .../Sidekick_smtlib__Locations/index.html | 2 -- .../Sidekick_smtlib__Parse_ast/.jbuilder-keep | 0 .../Sidekick_smtlib__Parse_ast/index.html | 2 -- .../Sidekick_smtlib__Parser/.jbuilder-keep | 0 sidekick/Sidekick_smtlib__Parser/index.html | 2 -- .../Sidekick_smtlib__Process/.jbuilder-keep | 0 sidekick/Sidekick_smtlib__Process/index.html | 2 -- .../Sidekick_smtlib__Typecheck/.jbuilder-keep | 0 .../Sidekick_smtlib__Typecheck/Ctx/index.html | 2 -- .../Sidekick_smtlib__Typecheck/index.html | 2 -- sidekick/Sidekick_th_bool/.jbuilder-keep | 0 sidekick/Sidekick_th_bool/Lit/index.html | 2 -- sidekick/Sidekick_th_bool/T_cell/index.html | 2 -- sidekick/Sidekick_th_bool/index.html | 2 -- sidekick/Sidekick_util/.jbuilder-keep | 0 .../Sidekick_util/BitField/Make/index.html | 4 ---- sidekick/Sidekick_util/BitField/index.html | 17 -------------- .../BitField/module-type-S/index.html | 4 ---- .../Heap/Make/argument-1-X/index.html | 2 -- sidekick/Sidekick_util/Heap/Make/index.html | 6 ----- sidekick/Sidekick_util/Heap/index.html | 2 -- .../Heap/module-type-RANKED/index.html | 2 -- .../Heap/module-type-S/index.html | 6 ----- sidekick/Sidekick_util/Heap_intf/index.html | 2 -- .../Heap_intf/module-type-RANKED/index.html | 2 -- .../Heap_intf/module-type-S/index.html | 6 ----- sidekick/Sidekick_util/IArray/index.html | 4 ---- sidekick/Sidekick_util/ID/B/index.html | 2 -- sidekick/Sidekick_util/ID/index.html | 2 -- sidekick/Sidekick_util/Intf/index.html | 2 -- .../Intf/module-type-EQ/index.html | 2 -- .../Intf/module-type-HASH/index.html | 2 -- .../Intf/module-type-ORD/index.html | 2 -- .../Intf/module-type-PRINT/index.html | 2 -- sidekick/Sidekick_util/Log/index.html | 3 --- sidekick/Sidekick_util/Util/index.html | 2 -- sidekick/Sidekick_util/Vec/index.html | 11 ---------- sidekick/Sidekick_util/index.html | 2 -- .../Sidekick_util__BitField/.jbuilder-keep | 0 .../Sidekick_util__BitField/Make/index.html | 4 ---- sidekick/Sidekick_util__BitField/index.html | 17 -------------- .../module-type-S/index.html | 4 ---- sidekick/Sidekick_util__Heap/.jbuilder-keep | 0 .../Make/argument-1-X/index.html | 2 -- sidekick/Sidekick_util__Heap/Make/index.html | 6 ----- sidekick/Sidekick_util__Heap/index.html | 2 -- .../module-type-RANKED/index.html | 2 -- .../module-type-S/index.html | 6 ----- .../Sidekick_util__Heap_intf/.jbuilder-keep | 0 sidekick/Sidekick_util__Heap_intf/index.html | 2 -- .../module-type-RANKED/index.html | 2 -- .../module-type-S/index.html | 6 ----- sidekick/Sidekick_util__IArray/.jbuilder-keep | 0 sidekick/Sidekick_util__IArray/index.html | 4 ---- sidekick/Sidekick_util__ID/.jbuilder-keep | 0 sidekick/Sidekick_util__ID/B/index.html | 2 -- sidekick/Sidekick_util__ID/index.html | 2 -- sidekick/Sidekick_util__Intf/.jbuilder-keep | 0 sidekick/Sidekick_util__Intf/index.html | 2 -- .../module-type-EQ/index.html | 2 -- .../module-type-HASH/index.html | 2 -- .../module-type-ORD/index.html | 2 -- .../module-type-PRINT/index.html | 2 -- sidekick/Sidekick_util__Log/.jbuilder-keep | 0 sidekick/Sidekick_util__Log/index.html | 3 --- sidekick/Sidekick_util__Util/.jbuilder-keep | 0 sidekick/Sidekick_util__Util/index.html | 2 -- sidekick/Sidekick_util__Vec/.jbuilder-keep | 0 sidekick/Sidekick_util__Vec/index.html | 11 ---------- sidekick/index.html | 22 ------------------- 599 files changed, 5 insertions(+), 2654 deletions(-) delete mode 100644 index.html create mode 100644 index.md delete mode 100644 msat_test/index.html delete mode 100644 sidekick/CDCL_tseitin/.jbuilder-keep delete mode 100644 sidekick/CDCL_tseitin/Make/argument-1-A/Form/index.html delete mode 100644 sidekick/CDCL_tseitin/Make/argument-1-A/index.html delete mode 100644 sidekick/CDCL_tseitin/Make/index.html delete mode 100644 sidekick/CDCL_tseitin/index.html delete mode 100644 sidekick/CDCL_tseitin/module-type-Arg/Form/index.html delete mode 100644 sidekick/CDCL_tseitin/module-type-Arg/index.html delete mode 100644 sidekick/CDCL_tseitin/module-type-S/index.html delete mode 100644 sidekick/CDCL_tseitin__/.jbuilder-keep delete mode 100644 sidekick/CDCL_tseitin__/Tseitin_intf/index.html delete mode 100644 sidekick/CDCL_tseitin__/Tseitin_intf/module-type-Arg/Form/index.html delete mode 100644 sidekick/CDCL_tseitin__/Tseitin_intf/module-type-Arg/index.html delete mode 100644 sidekick/CDCL_tseitin__/Tseitin_intf/module-type-S/index.html delete mode 100644 sidekick/CDCL_tseitin__/index.html delete mode 100644 sidekick/CDCL_tseitin__Tseitin_intf/.jbuilder-keep delete mode 100644 sidekick/CDCL_tseitin__Tseitin_intf/index.html delete mode 100644 sidekick/CDCL_tseitin__Tseitin_intf/module-type-Arg/Form/index.html delete mode 100644 sidekick/CDCL_tseitin__Tseitin_intf/module-type-Arg/index.html delete mode 100644 sidekick/CDCL_tseitin__Tseitin_intf/module-type-S/index.html delete mode 100644 sidekick/Sidekick_backend/.jbuilder-keep delete mode 100644 sidekick/Sidekick_backend/Backend_intf/index.html delete mode 100644 sidekick/Sidekick_backend/Backend_intf/module-type-S/index.html delete mode 100644 sidekick/Sidekick_backend/Coq/Make/argument-1-S/Atom/index.html delete mode 100644 sidekick/Sidekick_backend/Coq/Make/argument-1-S/Clause/index.html delete mode 100644 sidekick/Sidekick_backend/Coq/Make/argument-1-S/index.html delete mode 100644 sidekick/Sidekick_backend/Coq/Make/argument-2-A/index.html delete mode 100644 sidekick/Sidekick_backend/Coq/Make/index.html delete mode 100644 sidekick/Sidekick_backend/Coq/Simple/argument-1-S/Atom/index.html delete mode 100644 sidekick/Sidekick_backend/Coq/Simple/argument-1-S/Clause/index.html delete mode 100644 sidekick/Sidekick_backend/Coq/Simple/argument-1-S/index.html delete mode 100644 sidekick/Sidekick_backend/Coq/Simple/argument-2-A/index.html delete mode 100644 sidekick/Sidekick_backend/Coq/Simple/index.html delete mode 100644 sidekick/Sidekick_backend/Coq/index.html delete mode 100644 sidekick/Sidekick_backend/Coq/module-type-Arg/index.html delete mode 100644 sidekick/Sidekick_backend/Coq/module-type-S/index.html delete mode 100644 sidekick/Sidekick_backend/Dedukti/Make/argument-1-S/Atom/index.html delete mode 100644 sidekick/Sidekick_backend/Dedukti/Make/argument-1-S/Clause/index.html delete mode 100644 sidekick/Sidekick_backend/Dedukti/Make/argument-1-S/index.html delete mode 100644 sidekick/Sidekick_backend/Dedukti/Make/argument-2-A/index.html delete mode 100644 sidekick/Sidekick_backend/Dedukti/Make/index.html delete mode 100644 sidekick/Sidekick_backend/Dedukti/index.html delete mode 100644 sidekick/Sidekick_backend/Dedukti/module-type-Arg/index.html delete mode 100644 sidekick/Sidekick_backend/Dedukti/module-type-S/index.html delete mode 100644 sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Atom/index.html delete mode 100644 sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Clause/index.html delete mode 100644 sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Formula/index.html delete mode 100644 sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Var/index.html delete mode 100644 sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/index.html delete mode 100644 sidekick/Sidekick_backend/Dimacs/Make/index.html delete mode 100644 sidekick/Sidekick_backend/Dimacs/index.html delete mode 100644 sidekick/Sidekick_backend/Dimacs/module-type-S/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/Default/argument-1-S/Atom/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/Default/argument-1-S/Clause/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/Default/argument-1-S/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/Default/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/Make/argument-1-S/Atom/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/Make/argument-1-S/Clause/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/Make/argument-1-S/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/Make/argument-2-A/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/Make/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/Simple/argument-1-S/Atom/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/Simple/argument-1-S/Clause/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/Simple/argument-1-S/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/Simple/argument-2-A/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/Simple/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/module-type-Arg/index.html delete mode 100644 sidekick/Sidekick_backend/Dot/module-type-S/index.html delete mode 100644 sidekick/Sidekick_backend/index.html delete mode 100644 sidekick/Sidekick_backend__Backend_intf/.jbuilder-keep delete mode 100644 sidekick/Sidekick_backend__Backend_intf/index.html delete mode 100644 sidekick/Sidekick_backend__Backend_intf/module-type-S/index.html delete mode 100644 sidekick/Sidekick_backend__Coq/.jbuilder-keep delete mode 100644 sidekick/Sidekick_backend__Coq/Make/argument-1-S/Atom/index.html delete mode 100644 sidekick/Sidekick_backend__Coq/Make/argument-1-S/Clause/index.html delete mode 100644 sidekick/Sidekick_backend__Coq/Make/argument-1-S/index.html delete mode 100644 sidekick/Sidekick_backend__Coq/Make/argument-2-A/index.html delete mode 100644 sidekick/Sidekick_backend__Coq/Make/index.html delete mode 100644 sidekick/Sidekick_backend__Coq/Simple/argument-1-S/Atom/index.html delete mode 100644 sidekick/Sidekick_backend__Coq/Simple/argument-1-S/Clause/index.html delete mode 100644 sidekick/Sidekick_backend__Coq/Simple/argument-1-S/index.html delete mode 100644 sidekick/Sidekick_backend__Coq/Simple/argument-2-A/index.html delete mode 100644 sidekick/Sidekick_backend__Coq/Simple/index.html delete mode 100644 sidekick/Sidekick_backend__Coq/index.html delete mode 100644 sidekick/Sidekick_backend__Coq/module-type-Arg/index.html delete mode 100644 sidekick/Sidekick_backend__Coq/module-type-S/index.html delete mode 100644 sidekick/Sidekick_backend__Dedukti/.jbuilder-keep delete mode 100644 sidekick/Sidekick_backend__Dedukti/Make/argument-1-S/Atom/index.html delete mode 100644 sidekick/Sidekick_backend__Dedukti/Make/argument-1-S/Clause/index.html delete mode 100644 sidekick/Sidekick_backend__Dedukti/Make/argument-1-S/index.html delete mode 100644 sidekick/Sidekick_backend__Dedukti/Make/argument-2-A/index.html delete mode 100644 sidekick/Sidekick_backend__Dedukti/Make/index.html delete mode 100644 sidekick/Sidekick_backend__Dedukti/index.html delete mode 100644 sidekick/Sidekick_backend__Dedukti/module-type-Arg/index.html delete mode 100644 sidekick/Sidekick_backend__Dedukti/module-type-S/index.html delete mode 100644 sidekick/Sidekick_backend__Dimacs/.jbuilder-keep delete mode 100644 sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Atom/index.html delete mode 100644 sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Clause/index.html delete mode 100644 sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Formula/index.html delete mode 100644 sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Var/index.html delete mode 100644 sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/index.html delete mode 100644 sidekick/Sidekick_backend__Dimacs/Make/index.html delete mode 100644 sidekick/Sidekick_backend__Dimacs/index.html delete mode 100644 sidekick/Sidekick_backend__Dimacs/module-type-S/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/.jbuilder-keep delete mode 100644 sidekick/Sidekick_backend__Dot/Default/argument-1-S/Atom/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/Default/argument-1-S/Clause/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/Default/argument-1-S/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/Default/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/Make/argument-1-S/Atom/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/Make/argument-1-S/Clause/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/Make/argument-1-S/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/Make/argument-2-A/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/Make/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/Simple/argument-1-S/Atom/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/Simple/argument-1-S/Clause/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/Simple/argument-1-S/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/Simple/argument-2-A/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/Simple/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/module-type-Arg/index.html delete mode 100644 sidekick/Sidekick_backend__Dot/module-type-S/index.html delete mode 100644 sidekick/Sidekick_dimacs/.jbuilder-keep delete mode 100644 sidekick/Sidekick_dimacs/index.html delete mode 100644 sidekick/Sidekick_dimacs__/.jbuilder-keep delete mode 100644 sidekick/Sidekick_dimacs__/Lexer/index.html delete mode 100644 sidekick/Sidekick_dimacs__/Parser/index.html delete mode 100644 sidekick/Sidekick_dimacs__/index.html delete mode 100644 sidekick/Sidekick_dimacs__Lexer/.jbuilder-keep delete mode 100644 sidekick/Sidekick_dimacs__Lexer/index.html delete mode 100644 sidekick/Sidekick_dimacs__Parser/.jbuilder-keep delete mode 100644 sidekick/Sidekick_dimacs__Parser/index.html delete mode 100644 sidekick/Sidekick_sat/.jbuilder-keep delete mode 100644 sidekick/Sidekick_sat/Make/Clause/index.html delete mode 100644 sidekick/Sidekick_sat/Make/Formula/index.html delete mode 100644 sidekick/Sidekick_sat/Make/Lit/index.html delete mode 100644 sidekick/Sidekick_sat/Make/Proof/Atom/index.html delete mode 100644 sidekick/Sidekick_sat/Make/Proof/Clause/Tbl/index.html delete mode 100644 sidekick/Sidekick_sat/Make/Proof/Clause/index.html delete mode 100644 sidekick/Sidekick_sat/Make/Proof/Tbl/index.html delete mode 100644 sidekick/Sidekick_sat/Make/Proof/index.html delete mode 100644 sidekick/Sidekick_sat/Make/argument-1-E/Form/index.html delete mode 100644 sidekick/Sidekick_sat/Make/argument-1-E/index.html delete mode 100644 sidekick/Sidekick_sat/Make/index.html delete mode 100644 sidekick/Sidekick_sat/Res/Make/Atom/index.html delete mode 100644 sidekick/Sidekick_sat/Res/Make/Clause/index.html delete mode 100644 sidekick/Sidekick_sat/Res/Make/argument-1-St/Atom/index.html delete mode 100644 sidekick/Sidekick_sat/Res/Make/argument-1-St/Clause/index.html delete mode 100644 sidekick/Sidekick_sat/Res/Make/argument-1-St/Formula/index.html delete mode 100644 sidekick/Sidekick_sat/Res/Make/argument-1-St/Var/index.html delete mode 100644 sidekick/Sidekick_sat/Res/Make/argument-1-St/index.html delete mode 100644 sidekick/Sidekick_sat/Res/Make/index.html delete mode 100644 sidekick/Sidekick_sat/Res/index.html delete mode 100644 sidekick/Sidekick_sat/Res/module-type-FULL/Atom/index.html delete mode 100644 sidekick/Sidekick_sat/Res/module-type-FULL/Clause/index.html delete mode 100644 sidekick/Sidekick_sat/Res/module-type-FULL/St/Atom/index.html delete mode 100644 sidekick/Sidekick_sat/Res/module-type-FULL/St/Clause/index.html delete mode 100644 sidekick/Sidekick_sat/Res/module-type-FULL/St/Formula/index.html delete mode 100644 sidekick/Sidekick_sat/Res/module-type-FULL/St/Var/index.html delete mode 100644 sidekick/Sidekick_sat/Res/module-type-FULL/St/index.html delete mode 100644 sidekick/Sidekick_sat/Res/module-type-FULL/index.html delete mode 100644 sidekick/Sidekick_sat/Res/module-type-S/Atom/index.html delete mode 100644 sidekick/Sidekick_sat/Res/module-type-S/Clause/index.html delete mode 100644 sidekick/Sidekick_sat/Res/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat/Solver_types_intf/C_fields/index.html delete mode 100644 sidekick/Sidekick_sat/Solver_types_intf/Var_fields/index.html delete mode 100644 sidekick/Sidekick_sat/Solver_types_intf/index.html delete mode 100644 sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Atom/index.html delete mode 100644 sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Clause/index.html delete mode 100644 sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Formula/index.html delete mode 100644 sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Var/index.html delete mode 100644 sidekick/Sidekick_sat/Solver_types_intf/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat/Theory_intf/index.html delete mode 100644 sidekick/Sidekick_sat/Theory_intf/module-type-S/Form/index.html delete mode 100644 sidekick/Sidekick_sat/Theory_intf/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat/index.html delete mode 100644 sidekick/Sidekick_sat/module-type-S/Clause/index.html delete mode 100644 sidekick/Sidekick_sat/module-type-S/Formula/index.html delete mode 100644 sidekick/Sidekick_sat/module-type-S/Lit/index.html delete mode 100644 sidekick/Sidekick_sat/module-type-S/Proof/Atom/index.html delete mode 100644 sidekick/Sidekick_sat/module-type-S/Proof/Clause/index.html delete mode 100644 sidekick/Sidekick_sat/module-type-S/Proof/index.html delete mode 100644 sidekick/Sidekick_sat/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat__/.jbuilder-keep delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/H/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/Proof/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/Proof/Clause/Tbl/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/Proof/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/Proof/St/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/Proof/St/Clause/Tbl/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/Proof/St/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/Proof/St/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/Proof/St/Var/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/Proof/St/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/Proof/Tbl/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/Proof/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Var/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/argument-1-St/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/argument-2-Th/Form/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/argument-2-Th/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/Make/index.html delete mode 100644 sidekick/Sidekick_sat__/Internal/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/Make/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/Make/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/Make/argument-1-St/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/Make/argument-1-St/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/Make/argument-1-St/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/Make/argument-1-St/Var/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/Make/argument-1-St/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/Make/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/module-type-FULL/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/module-type-FULL/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/module-type-FULL/St/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/module-type-FULL/St/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/module-type-FULL/St/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/module-type-FULL/St/Var/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/module-type-FULL/St/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/module-type-FULL/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/module-type-S/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/module-type-S/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Res/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat__/Res_intf/index.html delete mode 100644 sidekick/Sidekick_sat__/Res_intf/module-type-FULL/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Res_intf/module-type-FULL/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Var/index.html delete mode 100644 sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/index.html delete mode 100644 sidekick/Sidekick_sat__/Res_intf/module-type-FULL/index.html delete mode 100644 sidekick/Sidekick_sat__/Res_intf/module-type-S/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Res_intf/module-type-S/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Res_intf/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/Make/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/Make/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/Make/Lit/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/Make/Proof/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/Make/Proof/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/Make/Proof/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Var/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/Make/argument-1-St/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/Make/argument-2-Th/Form/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/Make/argument-2-Th/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/Make/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/module-type-S/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/module-type-S/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/module-type-S/Lit/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/module-type-S/Proof/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/module-type-S/Proof/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/module-type-S/Proof/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_intf/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_intf/module-type-S/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_intf/module-type-S/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_intf/module-type-S/Lit/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_intf/module-type-S/Proof/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_intf/module-type-S/Proof/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_intf/module-type-S/Proof/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_intf/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types/Make/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types/Make/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types/Make/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types/Make/Var/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types/Make/argument-1-E/Form/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types/Make/argument-1-E/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types/Make/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types/module-type-S/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types/module-type-S/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types/module-type-S/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types/module-type-S/Var/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types_intf/C_fields/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types_intf/Var_fields/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types_intf/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Var/index.html delete mode 100644 sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat__/Theory_intf/index.html delete mode 100644 sidekick/Sidekick_sat__/Theory_intf/module-type-S/Form/index.html delete mode 100644 sidekick/Sidekick_sat__/Theory_intf/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat__/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/.jbuilder-keep delete mode 100644 sidekick/Sidekick_sat__Internal/Make/H/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/Proof/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/Proof/Clause/Tbl/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/Proof/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/Proof/St/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/Proof/St/Clause/Tbl/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/Proof/St/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/Proof/St/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/Proof/St/Var/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/Proof/St/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/Proof/Tbl/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/Proof/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/argument-1-St/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/argument-1-St/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/argument-1-St/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/argument-1-St/Var/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/argument-1-St/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/argument-2-Th/Form/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/argument-2-Th/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/Make/index.html delete mode 100644 sidekick/Sidekick_sat__Internal/index.html delete mode 100644 sidekick/Sidekick_sat__Res/.jbuilder-keep delete mode 100644 sidekick/Sidekick_sat__Res/Make/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Res/Make/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Res/Make/argument-1-St/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Res/Make/argument-1-St/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Res/Make/argument-1-St/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__Res/Make/argument-1-St/Var/index.html delete mode 100644 sidekick/Sidekick_sat__Res/Make/argument-1-St/index.html delete mode 100644 sidekick/Sidekick_sat__Res/Make/index.html delete mode 100644 sidekick/Sidekick_sat__Res/index.html delete mode 100644 sidekick/Sidekick_sat__Res/module-type-FULL/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Res/module-type-FULL/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Res/module-type-FULL/St/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Res/module-type-FULL/St/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Res/module-type-FULL/St/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__Res/module-type-FULL/St/Var/index.html delete mode 100644 sidekick/Sidekick_sat__Res/module-type-FULL/St/index.html delete mode 100644 sidekick/Sidekick_sat__Res/module-type-FULL/index.html delete mode 100644 sidekick/Sidekick_sat__Res/module-type-S/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Res/module-type-S/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Res/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat__Res_intf/.jbuilder-keep delete mode 100644 sidekick/Sidekick_sat__Res_intf/index.html delete mode 100644 sidekick/Sidekick_sat__Res_intf/module-type-FULL/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Res_intf/module-type-FULL/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Var/index.html delete mode 100644 sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/index.html delete mode 100644 sidekick/Sidekick_sat__Res_intf/module-type-FULL/index.html delete mode 100644 sidekick/Sidekick_sat__Res_intf/module-type-S/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Res_intf/module-type-S/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Res_intf/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/.jbuilder-keep delete mode 100644 sidekick/Sidekick_sat__Solver/Make/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/Make/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/Make/Lit/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/Make/Proof/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/Make/Proof/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/Make/Proof/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/Make/argument-1-St/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/Make/argument-1-St/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/Make/argument-1-St/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/Make/argument-1-St/Var/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/Make/argument-1-St/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/Make/argument-2-Th/Form/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/Make/argument-2-Th/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/Make/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/module-type-S/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/module-type-S/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/module-type-S/Lit/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/module-type-S/Proof/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/module-type-S/Proof/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/module-type-S/Proof/index.html delete mode 100644 sidekick/Sidekick_sat__Solver/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_intf/.jbuilder-keep delete mode 100644 sidekick/Sidekick_sat__Solver_intf/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_intf/module-type-S/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_intf/module-type-S/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_intf/module-type-S/Lit/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_intf/module-type-S/Proof/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_intf/module-type-S/Proof/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_intf/module-type-S/Proof/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_intf/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types/.jbuilder-keep delete mode 100644 sidekick/Sidekick_sat__Solver_types/Make/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types/Make/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types/Make/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types/Make/Var/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types/Make/argument-1-E/Form/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types/Make/argument-1-E/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types/Make/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types/module-type-S/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types/module-type-S/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types/module-type-S/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types/module-type-S/Var/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types_intf/.jbuilder-keep delete mode 100644 sidekick/Sidekick_sat__Solver_types_intf/C_fields/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types_intf/Var_fields/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types_intf/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Atom/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Clause/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Formula/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Var/index.html delete mode 100644 sidekick/Sidekick_sat__Solver_types_intf/module-type-S/index.html delete mode 100644 sidekick/Sidekick_sat__Theory_intf/.jbuilder-keep delete mode 100644 sidekick/Sidekick_sat__Theory_intf/index.html delete mode 100644 sidekick/Sidekick_sat__Theory_intf/module-type-S/Form/index.html delete mode 100644 sidekick/Sidekick_sat__Theory_intf/module-type-S/index.html delete mode 100644 sidekick/Sidekick_smt/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt/Ast/Ty/index.html delete mode 100644 sidekick/Sidekick_smt/Ast/Var/index.html delete mode 100644 sidekick/Sidekick_smt/Ast/index.html delete mode 100644 sidekick/Sidekick_smt/Bag/index.html delete mode 100644 sidekick/Sidekick_smt/Config/Key/index.html delete mode 100644 sidekick/Sidekick_smt/Config/index.html delete mode 100644 sidekick/Sidekick_smt/Congruence_closure/index.html delete mode 100644 sidekick/Sidekick_smt/Cst/index.html delete mode 100644 sidekick/Sidekick_smt/Equiv_class/index.html delete mode 100644 sidekick/Sidekick_smt/Explanation/Set/index.html delete mode 100644 sidekick/Sidekick_smt/Explanation/index.html delete mode 100644 sidekick/Sidekick_smt/Hash/index.html delete mode 100644 sidekick/Sidekick_smt/Het_map/Key/index.html delete mode 100644 sidekick/Sidekick_smt/Het_map/Map/index.html delete mode 100644 sidekick/Sidekick_smt/Het_map/Tbl/index.html delete mode 100644 sidekick/Sidekick_smt/Het_map/index.html delete mode 100644 sidekick/Sidekick_smt/Lit/index.html delete mode 100644 sidekick/Sidekick_smt/Model/index.html delete mode 100644 sidekick/Sidekick_smt/Solver/Proof/index.html delete mode 100644 sidekick/Sidekick_smt/Solver/Sat_solver/Clause/index.html delete mode 100644 sidekick/Sidekick_smt/Solver/Sat_solver/Formula/index.html delete mode 100644 sidekick/Sidekick_smt/Solver/Sat_solver/Lit/index.html delete mode 100644 sidekick/Sidekick_smt/Solver/Sat_solver/Proof/Atom/index.html delete mode 100644 sidekick/Sidekick_smt/Solver/Sat_solver/Proof/Clause/index.html delete mode 100644 sidekick/Sidekick_smt/Solver/Sat_solver/Proof/index.html delete mode 100644 sidekick/Sidekick_smt/Solver/Sat_solver/index.html delete mode 100644 sidekick/Sidekick_smt/Solver/index.html delete mode 100644 sidekick/Sidekick_smt/Solver_types/index.html delete mode 100644 sidekick/Sidekick_smt/Stat/index.html delete mode 100644 sidekick/Sidekick_smt/Term/index.html delete mode 100644 sidekick/Sidekick_smt/Term_cell/Make_eq/argument-1-X/index.html delete mode 100644 sidekick/Sidekick_smt/Term_cell/Make_eq/index.html delete mode 100644 sidekick/Sidekick_smt/Term_cell/index.html delete mode 100644 sidekick/Sidekick_smt/Term_cell/module-type-ARG/index.html delete mode 100644 sidekick/Sidekick_smt/Theory/Clause/index.html delete mode 100644 sidekick/Sidekick_smt/Theory/index.html delete mode 100644 sidekick/Sidekick_smt/Theory_combine/Form/index.html delete mode 100644 sidekick/Sidekick_smt/Theory_combine/Proof/index.html delete mode 100644 sidekick/Sidekick_smt/Theory_combine/index.html delete mode 100644 sidekick/Sidekick_smt/Ty/index.html delete mode 100644 sidekick/Sidekick_smt/Ty_card/index.html delete mode 100644 sidekick/Sidekick_smt/index.html delete mode 100644 sidekick/Sidekick_smt__Ast/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Ast/Ty/index.html delete mode 100644 sidekick/Sidekick_smt__Ast/Var/index.html delete mode 100644 sidekick/Sidekick_smt__Ast/index.html delete mode 100644 sidekick/Sidekick_smt__Bag/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Bag/index.html delete mode 100644 sidekick/Sidekick_smt__Config/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Config/Key/index.html delete mode 100644 sidekick/Sidekick_smt__Config/index.html delete mode 100644 sidekick/Sidekick_smt__Congruence_closure/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Congruence_closure/index.html delete mode 100644 sidekick/Sidekick_smt__Cst/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Cst/index.html delete mode 100644 sidekick/Sidekick_smt__Equiv_class/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Equiv_class/index.html delete mode 100644 sidekick/Sidekick_smt__Explanation/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Explanation/Set/index.html delete mode 100644 sidekick/Sidekick_smt__Explanation/index.html delete mode 100644 sidekick/Sidekick_smt__Hash/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Hash/index.html delete mode 100644 sidekick/Sidekick_smt__Het_map/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Het_map/Key/index.html delete mode 100644 sidekick/Sidekick_smt__Het_map/Map/index.html delete mode 100644 sidekick/Sidekick_smt__Het_map/Tbl/index.html delete mode 100644 sidekick/Sidekick_smt__Het_map/index.html delete mode 100644 sidekick/Sidekick_smt__Lit/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Lit/index.html delete mode 100644 sidekick/Sidekick_smt__Model/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Model/index.html delete mode 100644 sidekick/Sidekick_smt__Solver/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Solver/Proof/index.html delete mode 100644 sidekick/Sidekick_smt__Solver/Sat_solver/Clause/index.html delete mode 100644 sidekick/Sidekick_smt__Solver/Sat_solver/Formula/index.html delete mode 100644 sidekick/Sidekick_smt__Solver/Sat_solver/Lit/index.html delete mode 100644 sidekick/Sidekick_smt__Solver/Sat_solver/Proof/Atom/index.html delete mode 100644 sidekick/Sidekick_smt__Solver/Sat_solver/Proof/Clause/index.html delete mode 100644 sidekick/Sidekick_smt__Solver/Sat_solver/Proof/index.html delete mode 100644 sidekick/Sidekick_smt__Solver/Sat_solver/index.html delete mode 100644 sidekick/Sidekick_smt__Solver/index.html delete mode 100644 sidekick/Sidekick_smt__Solver_types/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Solver_types/index.html delete mode 100644 sidekick/Sidekick_smt__Stat/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Stat/index.html delete mode 100644 sidekick/Sidekick_smt__Term/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Term/index.html delete mode 100644 sidekick/Sidekick_smt__Term_cell/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Term_cell/Make_eq/argument-1-X/index.html delete mode 100644 sidekick/Sidekick_smt__Term_cell/Make_eq/index.html delete mode 100644 sidekick/Sidekick_smt__Term_cell/index.html delete mode 100644 sidekick/Sidekick_smt__Term_cell/module-type-ARG/index.html delete mode 100644 sidekick/Sidekick_smt__Theory/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Theory/Clause/index.html delete mode 100644 sidekick/Sidekick_smt__Theory/index.html delete mode 100644 sidekick/Sidekick_smt__Theory_combine/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Theory_combine/Form/index.html delete mode 100644 sidekick/Sidekick_smt__Theory_combine/Proof/index.html delete mode 100644 sidekick/Sidekick_smt__Theory_combine/index.html delete mode 100644 sidekick/Sidekick_smt__Ty/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Ty/index.html delete mode 100644 sidekick/Sidekick_smt__Ty_card/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smt__Ty_card/index.html delete mode 100644 sidekick/Sidekick_smtlib/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smtlib/Process/index.html delete mode 100644 sidekick/Sidekick_smtlib/index.html delete mode 100644 sidekick/Sidekick_smtlib__/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smtlib__/Lexer/index.html delete mode 100644 sidekick/Sidekick_smtlib__/Locations/index.html delete mode 100644 sidekick/Sidekick_smtlib__/Parse_ast/index.html delete mode 100644 sidekick/Sidekick_smtlib__/Parser/index.html delete mode 100644 sidekick/Sidekick_smtlib__/Process/index.html delete mode 100644 sidekick/Sidekick_smtlib__/Typecheck/Ctx/index.html delete mode 100644 sidekick/Sidekick_smtlib__/Typecheck/index.html delete mode 100644 sidekick/Sidekick_smtlib__/index.html delete mode 100644 sidekick/Sidekick_smtlib__Lexer/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smtlib__Lexer/index.html delete mode 100644 sidekick/Sidekick_smtlib__Locations/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smtlib__Locations/index.html delete mode 100644 sidekick/Sidekick_smtlib__Parse_ast/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smtlib__Parse_ast/index.html delete mode 100644 sidekick/Sidekick_smtlib__Parser/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smtlib__Parser/index.html delete mode 100644 sidekick/Sidekick_smtlib__Process/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smtlib__Process/index.html delete mode 100644 sidekick/Sidekick_smtlib__Typecheck/.jbuilder-keep delete mode 100644 sidekick/Sidekick_smtlib__Typecheck/Ctx/index.html delete mode 100644 sidekick/Sidekick_smtlib__Typecheck/index.html delete mode 100644 sidekick/Sidekick_th_bool/.jbuilder-keep delete mode 100644 sidekick/Sidekick_th_bool/Lit/index.html delete mode 100644 sidekick/Sidekick_th_bool/T_cell/index.html delete mode 100644 sidekick/Sidekick_th_bool/index.html delete mode 100644 sidekick/Sidekick_util/.jbuilder-keep delete mode 100644 sidekick/Sidekick_util/BitField/Make/index.html delete mode 100644 sidekick/Sidekick_util/BitField/index.html delete mode 100644 sidekick/Sidekick_util/BitField/module-type-S/index.html delete mode 100644 sidekick/Sidekick_util/Heap/Make/argument-1-X/index.html delete mode 100644 sidekick/Sidekick_util/Heap/Make/index.html delete mode 100644 sidekick/Sidekick_util/Heap/index.html delete mode 100644 sidekick/Sidekick_util/Heap/module-type-RANKED/index.html delete mode 100644 sidekick/Sidekick_util/Heap/module-type-S/index.html delete mode 100644 sidekick/Sidekick_util/Heap_intf/index.html delete mode 100644 sidekick/Sidekick_util/Heap_intf/module-type-RANKED/index.html delete mode 100644 sidekick/Sidekick_util/Heap_intf/module-type-S/index.html delete mode 100644 sidekick/Sidekick_util/IArray/index.html delete mode 100644 sidekick/Sidekick_util/ID/B/index.html delete mode 100644 sidekick/Sidekick_util/ID/index.html delete mode 100644 sidekick/Sidekick_util/Intf/index.html delete mode 100644 sidekick/Sidekick_util/Intf/module-type-EQ/index.html delete mode 100644 sidekick/Sidekick_util/Intf/module-type-HASH/index.html delete mode 100644 sidekick/Sidekick_util/Intf/module-type-ORD/index.html delete mode 100644 sidekick/Sidekick_util/Intf/module-type-PRINT/index.html delete mode 100644 sidekick/Sidekick_util/Log/index.html delete mode 100644 sidekick/Sidekick_util/Util/index.html delete mode 100644 sidekick/Sidekick_util/Vec/index.html delete mode 100644 sidekick/Sidekick_util/index.html delete mode 100644 sidekick/Sidekick_util__BitField/.jbuilder-keep delete mode 100644 sidekick/Sidekick_util__BitField/Make/index.html delete mode 100644 sidekick/Sidekick_util__BitField/index.html delete mode 100644 sidekick/Sidekick_util__BitField/module-type-S/index.html delete mode 100644 sidekick/Sidekick_util__Heap/.jbuilder-keep delete mode 100644 sidekick/Sidekick_util__Heap/Make/argument-1-X/index.html delete mode 100644 sidekick/Sidekick_util__Heap/Make/index.html delete mode 100644 sidekick/Sidekick_util__Heap/index.html delete mode 100644 sidekick/Sidekick_util__Heap/module-type-RANKED/index.html delete mode 100644 sidekick/Sidekick_util__Heap/module-type-S/index.html delete mode 100644 sidekick/Sidekick_util__Heap_intf/.jbuilder-keep delete mode 100644 sidekick/Sidekick_util__Heap_intf/index.html delete mode 100644 sidekick/Sidekick_util__Heap_intf/module-type-RANKED/index.html delete mode 100644 sidekick/Sidekick_util__Heap_intf/module-type-S/index.html delete mode 100644 sidekick/Sidekick_util__IArray/.jbuilder-keep delete mode 100644 sidekick/Sidekick_util__IArray/index.html delete mode 100644 sidekick/Sidekick_util__ID/.jbuilder-keep delete mode 100644 sidekick/Sidekick_util__ID/B/index.html delete mode 100644 sidekick/Sidekick_util__ID/index.html delete mode 100644 sidekick/Sidekick_util__Intf/.jbuilder-keep delete mode 100644 sidekick/Sidekick_util__Intf/index.html delete mode 100644 sidekick/Sidekick_util__Intf/module-type-EQ/index.html delete mode 100644 sidekick/Sidekick_util__Intf/module-type-HASH/index.html delete mode 100644 sidekick/Sidekick_util__Intf/module-type-ORD/index.html delete mode 100644 sidekick/Sidekick_util__Intf/module-type-PRINT/index.html delete mode 100644 sidekick/Sidekick_util__Log/.jbuilder-keep delete mode 100644 sidekick/Sidekick_util__Log/index.html delete mode 100644 sidekick/Sidekick_util__Util/.jbuilder-keep delete mode 100644 sidekick/Sidekick_util__Util/index.html delete mode 100644 sidekick/Sidekick_util__Vec/.jbuilder-keep delete mode 100644 sidekick/Sidekick_util__Vec/index.html delete mode 100644 sidekick/index.html diff --git a/index.html b/index.html deleted file mode 100644 index d0792f55..00000000 --- a/index.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - index - - - - - -
-

OCaml package documentation

-
    -
  1. msat_test dev
  2. -
  3. sidekick dev
  4. -
-
- - \ No newline at end of file diff --git a/index.md b/index.md new file mode 100644 index 00000000..646ec4ce --- /dev/null +++ b/index.md @@ -0,0 +1,5 @@ +# Sidekick + +## Documentation + +- [dev](dev) diff --git a/msat_test/index.html b/msat_test/index.html deleted file mode 100644 index 48c555c8..00000000 --- a/msat_test/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -index (msat_test.index)
\ No newline at end of file diff --git a/sidekick/CDCL_tseitin/.jbuilder-keep b/sidekick/CDCL_tseitin/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/CDCL_tseitin/Make/argument-1-A/Form/index.html b/sidekick/CDCL_tseitin/Make/argument-1-A/Form/index.html deleted file mode 100644 index ea0c6b68..00000000 --- a/sidekick/CDCL_tseitin/Make/argument-1-A/Form/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Form (sidekick.CDCL_tseitin.Make.1-A.Form)

Module CDCL_tseitin.Make.1-A.Form

type t

Type of atomic formulas.

val neg : t ‑> t

Negation of atomic formulas.

val print : Format.formatter ‑> t ‑> unit

Print the given formula.

\ No newline at end of file diff --git a/sidekick/CDCL_tseitin/Make/argument-1-A/index.html b/sidekick/CDCL_tseitin/Make/argument-1-A/index.html deleted file mode 100644 index d451c9c4..00000000 --- a/sidekick/CDCL_tseitin/Make/argument-1-A/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-A (sidekick.CDCL_tseitin.Make.1-A)

Parameter CDCL_tseitin.Make.1-A

module Form : sig ... end
type t

State

val fresh : t ‑> Form.t

Generate fresh formulas (that are different from any other).

\ No newline at end of file diff --git a/sidekick/CDCL_tseitin/Make/index.html b/sidekick/CDCL_tseitin/Make/index.html deleted file mode 100644 index bf8e4c8e..00000000 --- a/sidekick/CDCL_tseitin/Make/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Make (sidekick.CDCL_tseitin.Make)

Module CDCL_tseitin.Make

This functor provides an implementation of Tseitin's CNF conversion.

Parameters

A : Arg

Signature

type atom = A.Form.t

The type of atomic formulas.

type t

The type of arbitrary boolean formulas. Arbitrary boolean formulas can be built using functions in this module, and then converted to a CNF, which is a list of clauses that only use atomic formulas.

val f_true : t

The true formula, i.e a formula that is always satisfied.

val f_false : t

The false formula, i.e a formula that cannot be satisfied.

val make_atom : atom ‑> t

make_atom p builds the boolean formula equivalent to the atomic formula p.

val make_not : t ‑> t

Creates the negation of a boolean formula.

val make_and : t list ‑> t

Creates the conjunction of a list of formulas. An empty conjunction is always satisfied.

val make_or : t list ‑> t

Creates the disjunction of a list of formulas. An empty disjunction is never satisfied.

val make_xor : t ‑> t ‑> t

make_xor p q creates the boolean formula "p xor q".

val make_imply : t ‑> t ‑> t

make_imply p q creates the boolean formula "p implies q".

val make_equiv : t ‑> t ‑> t

make_equiv p q creates the boolena formula "p is equivalent to q".

type fresh_state = A.t

State used to produce fresh atoms

type state

State used for the Tseitin transformation

val create : fresh_state ‑> state
val make_cnf : state ‑> t ‑> atom list list

make_cnf f returns a conjunctive normal form of f under the form: a list (which is a conjunction) of lists (which are disjunctions) of atomic formulas.

val print : Format.formatter ‑> t ‑> unit

print fmt f prints the formula on the formatter fmt.

\ No newline at end of file diff --git a/sidekick/CDCL_tseitin/index.html b/sidekick/CDCL_tseitin/index.html deleted file mode 100644 index 5ffd9dea..00000000 --- a/sidekick/CDCL_tseitin/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -CDCL_tseitin (sidekick.CDCL_tseitin)

Module CDCL_tseitin

Tseitin CNF conversion

This modules implements Tseitin's Conjunctive Normal Form conversion, i.e. the ability to transform an arbitrary boolean formula into an equi-satisfiable CNF, that can then be fed to a SAT/SMT/McSat solver.

module type Arg = CDCL_tseitin__.Tseitin_intf.Arg
module type S = CDCL_tseitin__.Tseitin_intf.S
module Make : functor (A : Arg) -> S with type atom = A.Form.t and type fresh_state = A.t
\ No newline at end of file diff --git a/sidekick/CDCL_tseitin/module-type-Arg/Form/index.html b/sidekick/CDCL_tseitin/module-type-Arg/Form/index.html deleted file mode 100644 index 10f08be7..00000000 --- a/sidekick/CDCL_tseitin/module-type-Arg/Form/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Form (sidekick.CDCL_tseitin.Arg.Form)

Module CDCL_tseitin.Arg.Form

type t

Type of atomic formulas.

val neg : t ‑> t

Negation of atomic formulas.

val print : Format.formatter ‑> t ‑> unit

Print the given formula.

\ No newline at end of file diff --git a/sidekick/CDCL_tseitin/module-type-Arg/index.html b/sidekick/CDCL_tseitin/module-type-Arg/index.html deleted file mode 100644 index e2098af7..00000000 --- a/sidekick/CDCL_tseitin/module-type-Arg/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Arg (sidekick.CDCL_tseitin.Arg)

Module type CDCL_tseitin.Arg

The implementation of formulas required to implement Tseitin's CNF conversion.

module Form : sig ... end
type t

State

val fresh : t ‑> Form.t

Generate fresh formulas (that are different from any other).

\ No newline at end of file diff --git a/sidekick/CDCL_tseitin/module-type-S/index.html b/sidekick/CDCL_tseitin/module-type-S/index.html deleted file mode 100644 index c151b1b8..00000000 --- a/sidekick/CDCL_tseitin/module-type-S/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -S (sidekick.CDCL_tseitin.S)

Module type CDCL_tseitin.S

The exposed interface of Tseitin's CNF conversion.

type atom

The type of atomic formulas.

type t

The type of arbitrary boolean formulas. Arbitrary boolean formulas can be built using functions in this module, and then converted to a CNF, which is a list of clauses that only use atomic formulas.

val f_true : t

The true formula, i.e a formula that is always satisfied.

val f_false : t

The false formula, i.e a formula that cannot be satisfied.

val make_atom : atom ‑> t

make_atom p builds the boolean formula equivalent to the atomic formula p.

val make_not : t ‑> t

Creates the negation of a boolean formula.

val make_and : t list ‑> t

Creates the conjunction of a list of formulas. An empty conjunction is always satisfied.

val make_or : t list ‑> t

Creates the disjunction of a list of formulas. An empty disjunction is never satisfied.

val make_xor : t ‑> t ‑> t

make_xor p q creates the boolean formula "p xor q".

val make_imply : t ‑> t ‑> t

make_imply p q creates the boolean formula "p implies q".

val make_equiv : t ‑> t ‑> t

make_equiv p q creates the boolena formula "p is equivalent to q".

type fresh_state

State used to produce fresh atoms

type state

State used for the Tseitin transformation

val create : fresh_state ‑> state
val make_cnf : state ‑> t ‑> atom list list

make_cnf f returns a conjunctive normal form of f under the form: a list (which is a conjunction) of lists (which are disjunctions) of atomic formulas.

val print : Format.formatter ‑> t ‑> unit

print fmt f prints the formula on the formatter fmt.

\ No newline at end of file diff --git a/sidekick/CDCL_tseitin__/.jbuilder-keep b/sidekick/CDCL_tseitin__/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/CDCL_tseitin__/Tseitin_intf/index.html b/sidekick/CDCL_tseitin__/Tseitin_intf/index.html deleted file mode 100644 index d9ca07b7..00000000 --- a/sidekick/CDCL_tseitin__/Tseitin_intf/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Tseitin_intf (sidekick.CDCL_tseitin__.Tseitin_intf)

Module CDCL_tseitin__.Tseitin_intf

module type Arg : sig ... end
module type S : sig ... end
\ No newline at end of file diff --git a/sidekick/CDCL_tseitin__/Tseitin_intf/module-type-Arg/Form/index.html b/sidekick/CDCL_tseitin__/Tseitin_intf/module-type-Arg/Form/index.html deleted file mode 100644 index e92a75f9..00000000 --- a/sidekick/CDCL_tseitin__/Tseitin_intf/module-type-Arg/Form/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Form (sidekick.CDCL_tseitin__.Tseitin_intf.Arg.Form)

Module CDCL_tseitin__.Tseitin_intf.Arg.Form

type t

Type of atomic formulas.

val neg : t ‑> t

Negation of atomic formulas.

val print : Format.formatter ‑> t ‑> unit

Print the given formula.

\ No newline at end of file diff --git a/sidekick/CDCL_tseitin__/Tseitin_intf/module-type-Arg/index.html b/sidekick/CDCL_tseitin__/Tseitin_intf/module-type-Arg/index.html deleted file mode 100644 index 734f5805..00000000 --- a/sidekick/CDCL_tseitin__/Tseitin_intf/module-type-Arg/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Arg (sidekick.CDCL_tseitin__.Tseitin_intf.Arg)

Module type CDCL_tseitin__.Tseitin_intf.Arg

module Form : sig ... end
type t

State

val fresh : t ‑> Form.t

Generate fresh formulas (that are different from any other).

\ No newline at end of file diff --git a/sidekick/CDCL_tseitin__/Tseitin_intf/module-type-S/index.html b/sidekick/CDCL_tseitin__/Tseitin_intf/module-type-S/index.html deleted file mode 100644 index 9a7d5ef5..00000000 --- a/sidekick/CDCL_tseitin__/Tseitin_intf/module-type-S/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -S (sidekick.CDCL_tseitin__.Tseitin_intf.S)

Module type CDCL_tseitin__.Tseitin_intf.S

type atom

The type of atomic formulas.

type t

The type of arbitrary boolean formulas. Arbitrary boolean formulas can be built using functions in this module, and then converted to a CNF, which is a list of clauses that only use atomic formulas.

val f_true : t

The true formula, i.e a formula that is always satisfied.

val f_false : t

The false formula, i.e a formula that cannot be satisfied.

val make_atom : atom ‑> t

make_atom p builds the boolean formula equivalent to the atomic formula p.

val make_not : t ‑> t

Creates the negation of a boolean formula.

val make_and : t list ‑> t

Creates the conjunction of a list of formulas. An empty conjunction is always satisfied.

val make_or : t list ‑> t

Creates the disjunction of a list of formulas. An empty disjunction is never satisfied.

val make_xor : t ‑> t ‑> t

make_xor p q creates the boolean formula "p xor q".

val make_imply : t ‑> t ‑> t

make_imply p q creates the boolean formula "p implies q".

val make_equiv : t ‑> t ‑> t

make_equiv p q creates the boolena formula "p is equivalent to q".

type fresh_state

State used to produce fresh atoms

type state

State used for the Tseitin transformation

val create : fresh_state ‑> state
val make_cnf : state ‑> t ‑> atom list list

make_cnf f returns a conjunctive normal form of f under the form: a list (which is a conjunction) of lists (which are disjunctions) of atomic formulas.

val print : Format.formatter ‑> t ‑> unit

print fmt f prints the formula on the formatter fmt.

\ No newline at end of file diff --git a/sidekick/CDCL_tseitin__/index.html b/sidekick/CDCL_tseitin__/index.html deleted file mode 100644 index 339fa4c2..00000000 --- a/sidekick/CDCL_tseitin__/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -CDCL_tseitin__ (sidekick.CDCL_tseitin__)

Module CDCL_tseitin__

module CDCL_tseitin = CDCL_tseitin
module Tseitin_intf : sig ... end
\ No newline at end of file diff --git a/sidekick/CDCL_tseitin__Tseitin_intf/.jbuilder-keep b/sidekick/CDCL_tseitin__Tseitin_intf/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/CDCL_tseitin__Tseitin_intf/index.html b/sidekick/CDCL_tseitin__Tseitin_intf/index.html deleted file mode 100644 index fd0acfff..00000000 --- a/sidekick/CDCL_tseitin__Tseitin_intf/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -CDCL_tseitin__Tseitin_intf (sidekick.CDCL_tseitin__Tseitin_intf)

Module CDCL_tseitin__Tseitin_intf

Interfaces for Tseitin's CNF conversion

module type Arg : sig ... end
module type S : sig ... end
\ No newline at end of file diff --git a/sidekick/CDCL_tseitin__Tseitin_intf/module-type-Arg/Form/index.html b/sidekick/CDCL_tseitin__Tseitin_intf/module-type-Arg/Form/index.html deleted file mode 100644 index 40dca27a..00000000 --- a/sidekick/CDCL_tseitin__Tseitin_intf/module-type-Arg/Form/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Form (sidekick.CDCL_tseitin__Tseitin_intf.Arg.Form)

Module CDCL_tseitin__Tseitin_intf.Arg.Form

type t

Type of atomic formulas.

val neg : t ‑> t

Negation of atomic formulas.

val print : Format.formatter ‑> t ‑> unit

Print the given formula.

\ No newline at end of file diff --git a/sidekick/CDCL_tseitin__Tseitin_intf/module-type-Arg/index.html b/sidekick/CDCL_tseitin__Tseitin_intf/module-type-Arg/index.html deleted file mode 100644 index bcf4a3e7..00000000 --- a/sidekick/CDCL_tseitin__Tseitin_intf/module-type-Arg/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Arg (sidekick.CDCL_tseitin__Tseitin_intf.Arg)

Module type CDCL_tseitin__Tseitin_intf.Arg

module Form : sig ... end
type t

State

val fresh : t ‑> Form.t

Generate fresh formulas (that are different from any other).

\ No newline at end of file diff --git a/sidekick/CDCL_tseitin__Tseitin_intf/module-type-S/index.html b/sidekick/CDCL_tseitin__Tseitin_intf/module-type-S/index.html deleted file mode 100644 index e9fb8ad1..00000000 --- a/sidekick/CDCL_tseitin__Tseitin_intf/module-type-S/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -S (sidekick.CDCL_tseitin__Tseitin_intf.S)

Module type CDCL_tseitin__Tseitin_intf.S

type atom

The type of atomic formulas.

type t

The type of arbitrary boolean formulas. Arbitrary boolean formulas can be built using functions in this module, and then converted to a CNF, which is a list of clauses that only use atomic formulas.

val f_true : t

The true formula, i.e a formula that is always satisfied.

val f_false : t

The false formula, i.e a formula that cannot be satisfied.

val make_atom : atom ‑> t

make_atom p builds the boolean formula equivalent to the atomic formula p.

val make_not : t ‑> t

Creates the negation of a boolean formula.

val make_and : t list ‑> t

Creates the conjunction of a list of formulas. An empty conjunction is always satisfied.

val make_or : t list ‑> t

Creates the disjunction of a list of formulas. An empty disjunction is never satisfied.

val make_xor : t ‑> t ‑> t

make_xor p q creates the boolean formula "p xor q".

val make_imply : t ‑> t ‑> t

make_imply p q creates the boolean formula "p implies q".

val make_equiv : t ‑> t ‑> t

make_equiv p q creates the boolena formula "p is equivalent to q".

type fresh_state

State used to produce fresh atoms

type state

State used for the Tseitin transformation

val create : fresh_state ‑> state
val make_cnf : state ‑> t ‑> atom list list

make_cnf f returns a conjunctive normal form of f under the form: a list (which is a conjunction) of lists (which are disjunctions) of atomic formulas.

val print : Format.formatter ‑> t ‑> unit

print fmt f prints the formula on the formatter fmt.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/.jbuilder-keep b/sidekick/Sidekick_backend/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_backend/Backend_intf/index.html b/sidekick/Sidekick_backend/Backend_intf/index.html deleted file mode 100644 index dfb22684..00000000 --- a/sidekick/Sidekick_backend/Backend_intf/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Backend_intf (sidekick.Sidekick_backend.Backend_intf)

Module Sidekick_backend.Backend_intf

Backend interface

This modules defines the interface of the modules providing -export of proofs.

module type S : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Backend_intf/module-type-S/index.html b/sidekick/Sidekick_backend/Backend_intf/module-type-S/index.html deleted file mode 100644 index 3efb34f0..00000000 --- a/sidekick/Sidekick_backend/Backend_intf/module-type-S/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -S (sidekick.Sidekick_backend.Backend_intf.S)

Module type Sidekick_backend.Backend_intf.S

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Coq/Make/argument-1-S/Atom/index.html b/sidekick/Sidekick_backend/Coq/Make/argument-1-S/Atom/index.html deleted file mode 100644 index a7f8c15b..00000000 --- a/sidekick/Sidekick_backend/Coq/Make/argument-1-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_backend.Coq.Make.1-S.Atom)

Module Sidekick_backend.Coq.Make.1-S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Coq/Make/argument-1-S/Clause/index.html b/sidekick/Sidekick_backend/Coq/Make/argument-1-S/Clause/index.html deleted file mode 100644 index 187601f1..00000000 --- a/sidekick/Sidekick_backend/Coq/Make/argument-1-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_backend.Coq.Make.1-S.Clause)

Module Sidekick_backend.Coq.Make.1-S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Coq/Make/argument-1-S/index.html b/sidekick/Sidekick_backend/Coq/Make/argument-1-S/index.html deleted file mode 100644 index 0f7eb2ef..00000000 --- a/sidekick/Sidekick_backend/Coq/Make/argument-1-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -1-S (sidekick.Sidekick_backend.Coq.Make.1-S)

Parameter Sidekick_backend.Coq.Make.1-S

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Coq/Make/argument-2-A/index.html b/sidekick/Sidekick_backend/Coq/Make/argument-2-A/index.html deleted file mode 100644 index 95f0f980..00000000 --- a/sidekick/Sidekick_backend/Coq/Make/argument-2-A/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -2-A (sidekick.Sidekick_backend.Coq.Make.2-A)

Parameter Sidekick_backend.Coq.Make.2-A

Term printing for Coq

type hyp
type lemma
type assumption

The types of hypotheses, lemmas, and assumptions

val prove_hyp : Format.formatter ‑> string ‑> hyp ‑> unit
val prove_lemma : Format.formatter ‑> string ‑> lemma ‑> unit
val prove_assumption : Format.formatter ‑> string ‑> assumption ‑> unit

Proving function for hypotheses, lemmas and assumptions. -prove_x fmt name x should prove x, and be such that after -executing it, x is among the coq hypotheses under the name name. -The hypothesis should be the encoding of the given clause, i.e -for a clause a \/ not b \/ c, the proved hypothesis should be: - ~ a -> ~ ~ b -> ~ c -> False , keeping the same order as the -one in the atoms array of the clause.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Coq/Make/index.html b/sidekick/Sidekick_backend/Coq/Make/index.html deleted file mode 100644 index 11dbb341..00000000 --- a/sidekick/Sidekick_backend/Coq/Make/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Make (sidekick.Sidekick_backend.Coq.Make)

Module Sidekick_backend.Coq.Make

Base functor to output Coq proofs

Parameters

A : Arg with type hyp := S.clause and type lemma := S.clause and type assumption := S.clause

Signature

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Coq/Simple/argument-1-S/Atom/index.html b/sidekick/Sidekick_backend/Coq/Simple/argument-1-S/Atom/index.html deleted file mode 100644 index a791073b..00000000 --- a/sidekick/Sidekick_backend/Coq/Simple/argument-1-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_backend.Coq.Simple.1-S.Atom)

Module Sidekick_backend.Coq.Simple.1-S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Coq/Simple/argument-1-S/Clause/index.html b/sidekick/Sidekick_backend/Coq/Simple/argument-1-S/Clause/index.html deleted file mode 100644 index 3d13b130..00000000 --- a/sidekick/Sidekick_backend/Coq/Simple/argument-1-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_backend.Coq.Simple.1-S.Clause)

Module Sidekick_backend.Coq.Simple.1-S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Coq/Simple/argument-1-S/index.html b/sidekick/Sidekick_backend/Coq/Simple/argument-1-S/index.html deleted file mode 100644 index a145c41f..00000000 --- a/sidekick/Sidekick_backend/Coq/Simple/argument-1-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -1-S (sidekick.Sidekick_backend.Coq.Simple.1-S)

Parameter Sidekick_backend.Coq.Simple.1-S

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Coq/Simple/argument-2-A/index.html b/sidekick/Sidekick_backend/Coq/Simple/argument-2-A/index.html deleted file mode 100644 index 0b7fd63e..00000000 --- a/sidekick/Sidekick_backend/Coq/Simple/argument-2-A/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -2-A (sidekick.Sidekick_backend.Coq.Simple.2-A)

Parameter Sidekick_backend.Coq.Simple.2-A

Term printing for Coq

type hyp = S.formula list
type lemma
type assumption

The types of hypotheses, lemmas, and assumptions

val prove_hyp : Format.formatter ‑> string ‑> hyp ‑> unit
val prove_lemma : Format.formatter ‑> string ‑> lemma ‑> unit
val prove_assumption : Format.formatter ‑> string ‑> assumption ‑> unit

Proving function for hypotheses, lemmas and assumptions. -prove_x fmt name x should prove x, and be such that after -executing it, x is among the coq hypotheses under the name name. -The hypothesis should be the encoding of the given clause, i.e -for a clause a \/ not b \/ c, the proved hypothesis should be: - ~ a -> ~ ~ b -> ~ c -> False , keeping the same order as the -one in the atoms array of the clause.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Coq/Simple/index.html b/sidekick/Sidekick_backend/Coq/Simple/index.html deleted file mode 100644 index 2de8858a..00000000 --- a/sidekick/Sidekick_backend/Coq/Simple/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Simple (sidekick.Sidekick_backend.Coq.Simple)

Module Sidekick_backend.Coq.Simple

Simple functo to output Coq proofs

Parameters

A : Arg with type hyp = S.formula list and type lemma := S.lemma and type assumption := S.formula

Signature

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Coq/index.html b/sidekick/Sidekick_backend/Coq/index.html deleted file mode 100644 index af15161d..00000000 --- a/sidekick/Sidekick_backend/Coq/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Coq (sidekick.Sidekick_backend.Coq)

Module Sidekick_backend.Coq

Coq Backend

This module provides an easy way to produce coq scripts -corresponding to the resolution proofs output by the -sat solver.

module type S = Backend_intf.S

Interface for exporting proofs.

module type Arg : sig ... end
module Make : functor (S : Sidekick_sat.Res.S) -> functor (A : Arg with type hyp := S.clause and type lemma := S.clause and type assumption := S.clause) -> S with type t := S.proof

Base functor to output Coq proofs

module Simple : functor (S : Sidekick_sat.Res.S) -> functor (A : Arg with type hyp = S.formula list and type lemma := S.lemma and type assumption := S.formula) -> S with type t := S.proof

Simple functo to output Coq proofs

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Coq/module-type-Arg/index.html b/sidekick/Sidekick_backend/Coq/module-type-Arg/index.html deleted file mode 100644 index 3151e6fa..00000000 --- a/sidekick/Sidekick_backend/Coq/module-type-Arg/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Arg (sidekick.Sidekick_backend.Coq.Arg)

Module type Sidekick_backend.Coq.Arg

Term printing for Coq

type hyp
type lemma
type assumption

The types of hypotheses, lemmas, and assumptions

val prove_hyp : Format.formatter ‑> string ‑> hyp ‑> unit
val prove_lemma : Format.formatter ‑> string ‑> lemma ‑> unit
val prove_assumption : Format.formatter ‑> string ‑> assumption ‑> unit

Proving function for hypotheses, lemmas and assumptions. -prove_x fmt name x should prove x, and be such that after -executing it, x is among the coq hypotheses under the name name. -The hypothesis should be the encoding of the given clause, i.e -for a clause a \/ not b \/ c, the proved hypothesis should be: - ~ a -> ~ ~ b -> ~ c -> False , keeping the same order as the -one in the atoms array of the clause.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Coq/module-type-S/index.html b/sidekick/Sidekick_backend/Coq/module-type-S/index.html deleted file mode 100644 index 675fc9d6..00000000 --- a/sidekick/Sidekick_backend/Coq/module-type-S/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -S (sidekick.Sidekick_backend.Coq.S)

Module type Sidekick_backend.Coq.S

Interface for exporting proofs.

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dedukti/Make/argument-1-S/Atom/index.html b/sidekick/Sidekick_backend/Dedukti/Make/argument-1-S/Atom/index.html deleted file mode 100644 index 37e1f86c..00000000 --- a/sidekick/Sidekick_backend/Dedukti/Make/argument-1-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_backend.Dedukti.Make.1-S.Atom)

Module Sidekick_backend.Dedukti.Make.1-S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dedukti/Make/argument-1-S/Clause/index.html b/sidekick/Sidekick_backend/Dedukti/Make/argument-1-S/Clause/index.html deleted file mode 100644 index 59a26024..00000000 --- a/sidekick/Sidekick_backend/Dedukti/Make/argument-1-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_backend.Dedukti.Make.1-S.Clause)

Module Sidekick_backend.Dedukti.Make.1-S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dedukti/Make/argument-1-S/index.html b/sidekick/Sidekick_backend/Dedukti/Make/argument-1-S/index.html deleted file mode 100644 index d45963a9..00000000 --- a/sidekick/Sidekick_backend/Dedukti/Make/argument-1-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -1-S (sidekick.Sidekick_backend.Dedukti.Make.1-S)

Parameter Sidekick_backend.Dedukti.Make.1-S

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dedukti/Make/argument-2-A/index.html b/sidekick/Sidekick_backend/Dedukti/Make/argument-2-A/index.html deleted file mode 100644 index 10634546..00000000 --- a/sidekick/Sidekick_backend/Dedukti/Make/argument-2-A/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -2-A (sidekick.Sidekick_backend.Dedukti.Make.2-A)

Parameter Sidekick_backend.Dedukti.Make.2-A

type lemma
type proof
type formula
val print : Format.formatter ‑> formula ‑> unit
val prove : Format.formatter ‑> lemma ‑> unit
val context : Format.formatter ‑> proof ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dedukti/Make/index.html b/sidekick/Sidekick_backend/Dedukti/Make/index.html deleted file mode 100644 index 8bc8cbc7..00000000 --- a/sidekick/Sidekick_backend/Dedukti/Make/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Make (sidekick.Sidekick_backend.Dedukti.Make)

Module Sidekick_backend.Dedukti.Make

Functor to generate a backend to output proofs for the dedukti type checker.

Parameters

A : Arg with type formula := S.formula and type lemma := S.lemma and type proof := S.proof

Signature

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dedukti/index.html b/sidekick/Sidekick_backend/Dedukti/index.html deleted file mode 100644 index 4d598852..00000000 --- a/sidekick/Sidekick_backend/Dedukti/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Dedukti (sidekick.Sidekick_backend.Dedukti)

Module Sidekick_backend.Dedukti

Deduki backend for proofs

Work in progress...

module type S = Backend_intf.S
module type Arg : sig ... end
module Make : functor (S : Sidekick_sat.Res.S) -> functor (A : Arg with type formula := S.formula and type lemma := S.lemma and type proof := S.proof) -> S with type t := S.proof

Functor to generate a backend to output proofs for the dedukti type checker.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dedukti/module-type-Arg/index.html b/sidekick/Sidekick_backend/Dedukti/module-type-Arg/index.html deleted file mode 100644 index 2a3df75d..00000000 --- a/sidekick/Sidekick_backend/Dedukti/module-type-Arg/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Arg (sidekick.Sidekick_backend.Dedukti.Arg)

Module type Sidekick_backend.Dedukti.Arg

type lemma
type proof
type formula
val print : Format.formatter ‑> formula ‑> unit
val prove : Format.formatter ‑> lemma ‑> unit
val context : Format.formatter ‑> proof ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dedukti/module-type-S/index.html b/sidekick/Sidekick_backend/Dedukti/module-type-S/index.html deleted file mode 100644 index 6775eec8..00000000 --- a/sidekick/Sidekick_backend/Dedukti/module-type-S/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -S (sidekick.Sidekick_backend.Dedukti.S)

Module type Sidekick_backend.Dedukti.S

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Atom/index.html b/sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Atom/index.html deleted file mode 100644 index f4fc9e23..00000000 --- a/sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_backend.Dimacs.Make.1-St.Atom)

Module Sidekick_backend.Dimacs.Make.1-St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Clause/index.html b/sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Clause/index.html deleted file mode 100644 index 68789380..00000000 --- a/sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_backend.Dimacs.Make.1-St.Clause)

Module Sidekick_backend.Dimacs.Make.1-St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Formula/index.html b/sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Formula/index.html deleted file mode 100644 index 3772d777..00000000 --- a/sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_backend.Dimacs.Make.1-St.Formula)

Module Sidekick_backend.Dimacs.Make.1-St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Var/index.html b/sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Var/index.html deleted file mode 100644 index 89568551..00000000 --- a/sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_backend.Dimacs.Make.1-St.Var)

Module Sidekick_backend.Dimacs.Make.1-St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/index.html b/sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/index.html deleted file mode 100644 index b39282c2..00000000 --- a/sidekick/Sidekick_backend/Dimacs/Make/argument-1-St/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -1-St (sidekick.Sidekick_backend.Dimacs.Make.1-St)

Parameter Sidekick_backend.Dimacs.Make.1-St

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dimacs/Make/index.html b/sidekick/Sidekick_backend/Dimacs/Make/index.html deleted file mode 100644 index b339e79a..00000000 --- a/sidekick/Sidekick_backend/Dimacs/Make/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Make (sidekick.Sidekick_backend.Dimacs.Make)

Module Sidekick_backend.Dimacs.Make

Functor to create a module for exporting probems to the dimacs (& iCNF) formats.

Parameters

Signature

type st = St.t
type clause

The type of clauses

val export : st ‑> Format.formatter ‑> hyps:clause Sidekick_sat.Vec.t ‑> history:clause Sidekick_sat.Vec.t ‑> local:clause Sidekick_sat.Vec.t ‑> unit

Export the given clause vectors to the dimacs format. -The arguments should be transmitted directly from the corresponding -function of the module.

val export_icnf : Format.formatter ‑> hyps:clause Sidekick_sat.Vec.t ‑> history:clause Sidekick_sat.Vec.t ‑> local:clause Sidekick_sat.Vec.t ‑> unit

Export the given clause vectors to the dimacs format. -The arguments should be transmitted directly from the corresponding -function of the module. -This function may be called multiple times in order to add -new clauses (and new local hyps) to the problem.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dimacs/index.html b/sidekick/Sidekick_backend/Dimacs/index.html deleted file mode 100644 index 6aea7181..00000000 --- a/sidekick/Sidekick_backend/Dimacs/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Dimacs (sidekick.Sidekick_backend.Dimacs)

Module Sidekick_backend.Dimacs

Dimacs backend for problems

This module provides functiosn to export problems to the dimacs and -iCNF formats.

module type S : sig ... end
module Make : functor (St : Sidekick_sat.Solver_types_intf.S) -> S with type clause := St.clause and type st = St.t

Functor to create a module for exporting probems to the dimacs (& iCNF) formats.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dimacs/module-type-S/index.html b/sidekick/Sidekick_backend/Dimacs/module-type-S/index.html deleted file mode 100644 index 2039abe6..00000000 --- a/sidekick/Sidekick_backend/Dimacs/module-type-S/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -S (sidekick.Sidekick_backend.Dimacs.S)

Module type Sidekick_backend.Dimacs.S

type st
type clause

The type of clauses

val export : st ‑> Format.formatter ‑> hyps:clause Sidekick_sat.Vec.t ‑> history:clause Sidekick_sat.Vec.t ‑> local:clause Sidekick_sat.Vec.t ‑> unit

Export the given clause vectors to the dimacs format. -The arguments should be transmitted directly from the corresponding -function of the module.

val export_icnf : Format.formatter ‑> hyps:clause Sidekick_sat.Vec.t ‑> history:clause Sidekick_sat.Vec.t ‑> local:clause Sidekick_sat.Vec.t ‑> unit

Export the given clause vectors to the dimacs format. -The arguments should be transmitted directly from the corresponding -function of the module. -This function may be called multiple times in order to add -new clauses (and new local hyps) to the problem.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/Default/argument-1-S/Atom/index.html b/sidekick/Sidekick_backend/Dot/Default/argument-1-S/Atom/index.html deleted file mode 100644 index 7129a255..00000000 --- a/sidekick/Sidekick_backend/Dot/Default/argument-1-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_backend.Dot.Default.1-S.Atom)

Module Sidekick_backend.Dot.Default.1-S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/Default/argument-1-S/Clause/index.html b/sidekick/Sidekick_backend/Dot/Default/argument-1-S/Clause/index.html deleted file mode 100644 index 855e6a63..00000000 --- a/sidekick/Sidekick_backend/Dot/Default/argument-1-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_backend.Dot.Default.1-S.Clause)

Module Sidekick_backend.Dot.Default.1-S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/Default/argument-1-S/index.html b/sidekick/Sidekick_backend/Dot/Default/argument-1-S/index.html deleted file mode 100644 index f2030514..00000000 --- a/sidekick/Sidekick_backend/Dot/Default/argument-1-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -1-S (sidekick.Sidekick_backend.Dot.Default.1-S)

Parameter Sidekick_backend.Dot.Default.1-S

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/Default/index.html b/sidekick/Sidekick_backend/Dot/Default/index.html deleted file mode 100644 index 97124fb5..00000000 --- a/sidekick/Sidekick_backend/Dot/Default/index.html +++ /dev/null @@ -1,10 +0,0 @@ - -Default (sidekick.Sidekick_backend.Dot.Default)

Module Sidekick_backend.Dot.Default

Provides a reasonnable default to instantiate the Make functor, assuming -the original printing functions are compatible with DOT html labels.

Parameters

Signature

Term printing for DOT

This module defines what functions are required in order to export -a proof to the DOT format.

type atom

The type of atomic formuals

type hyp
type lemma
type assumption

The type of theory-specifi proofs (also called lemmas).

val print_atom : Format.formatter ‑> atom ‑> unit

Print the contents of the given atomic formulas. -WARNING: this function should take care to escape and/or not output special -reserved characters for the dot format (such as quotes and so on).

val hyp_info : hyp ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val lemma_info : lemma ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val assumption_info : assumption ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list

Generate some information about the leafs of the proof tree. Currently this backend -print each lemma/assumption/hypothesis as a single leaf of the proof tree. -These function should return a triplet (rule, color, l), such that: -

  • rule is a name for the proof (arbitrary, does not need to be unique, but -should rather be descriptive)
  • color is a color name (optional) understood by DOT
  • l is a list of printers that will be called to print some additional information
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/Make/argument-1-S/Atom/index.html b/sidekick/Sidekick_backend/Dot/Make/argument-1-S/Atom/index.html deleted file mode 100644 index 8639f638..00000000 --- a/sidekick/Sidekick_backend/Dot/Make/argument-1-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_backend.Dot.Make.1-S.Atom)

Module Sidekick_backend.Dot.Make.1-S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/Make/argument-1-S/Clause/index.html b/sidekick/Sidekick_backend/Dot/Make/argument-1-S/Clause/index.html deleted file mode 100644 index 38075c85..00000000 --- a/sidekick/Sidekick_backend/Dot/Make/argument-1-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_backend.Dot.Make.1-S.Clause)

Module Sidekick_backend.Dot.Make.1-S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/Make/argument-1-S/index.html b/sidekick/Sidekick_backend/Dot/Make/argument-1-S/index.html deleted file mode 100644 index ef86a828..00000000 --- a/sidekick/Sidekick_backend/Dot/Make/argument-1-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -1-S (sidekick.Sidekick_backend.Dot.Make.1-S)

Parameter Sidekick_backend.Dot.Make.1-S

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/Make/argument-2-A/index.html b/sidekick/Sidekick_backend/Dot/Make/argument-2-A/index.html deleted file mode 100644 index 6e070670..00000000 --- a/sidekick/Sidekick_backend/Dot/Make/argument-2-A/index.html +++ /dev/null @@ -1,9 +0,0 @@ - -2-A (sidekick.Sidekick_backend.Dot.Make.2-A)

Parameter Sidekick_backend.Dot.Make.2-A

Term printing for DOT

This module defines what functions are required in order to export -a proof to the DOT format.

type atom

The type of atomic formuals

type hyp
type lemma
type assumption

The type of theory-specifi proofs (also called lemmas).

val print_atom : Format.formatter ‑> atom ‑> unit

Print the contents of the given atomic formulas. -WARNING: this function should take care to escape and/or not output special -reserved characters for the dot format (such as quotes and so on).

val hyp_info : hyp ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val lemma_info : lemma ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val assumption_info : assumption ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list

Generate some information about the leafs of the proof tree. Currently this backend -print each lemma/assumption/hypothesis as a single leaf of the proof tree. -These function should return a triplet (rule, color, l), such that: -

  • rule is a name for the proof (arbitrary, does not need to be unique, but -should rather be descriptive)
  • color is a color name (optional) understood by DOT
  • l is a list of printers that will be called to print some additional information
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/Make/index.html b/sidekick/Sidekick_backend/Dot/Make/index.html deleted file mode 100644 index 0280e467..00000000 --- a/sidekick/Sidekick_backend/Dot/Make/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Make (sidekick.Sidekick_backend.Dot.Make)

Module Sidekick_backend.Dot.Make

Functor for making a module to export proofs to the DOT format.

Parameters

A : Arg with type atom := S.atom and type hyp := S.clause and type lemma := S.clause and type assumption := S.clause

Signature

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/Simple/argument-1-S/Atom/index.html b/sidekick/Sidekick_backend/Dot/Simple/argument-1-S/Atom/index.html deleted file mode 100644 index 8a3cd8db..00000000 --- a/sidekick/Sidekick_backend/Dot/Simple/argument-1-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_backend.Dot.Simple.1-S.Atom)

Module Sidekick_backend.Dot.Simple.1-S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/Simple/argument-1-S/Clause/index.html b/sidekick/Sidekick_backend/Dot/Simple/argument-1-S/Clause/index.html deleted file mode 100644 index 8034098e..00000000 --- a/sidekick/Sidekick_backend/Dot/Simple/argument-1-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_backend.Dot.Simple.1-S.Clause)

Module Sidekick_backend.Dot.Simple.1-S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/Simple/argument-1-S/index.html b/sidekick/Sidekick_backend/Dot/Simple/argument-1-S/index.html deleted file mode 100644 index 912df5ca..00000000 --- a/sidekick/Sidekick_backend/Dot/Simple/argument-1-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -1-S (sidekick.Sidekick_backend.Dot.Simple.1-S)

Parameter Sidekick_backend.Dot.Simple.1-S

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/Simple/argument-2-A/index.html b/sidekick/Sidekick_backend/Dot/Simple/argument-2-A/index.html deleted file mode 100644 index e06667e9..00000000 --- a/sidekick/Sidekick_backend/Dot/Simple/argument-2-A/index.html +++ /dev/null @@ -1,9 +0,0 @@ - -2-A (sidekick.Sidekick_backend.Dot.Simple.2-A)

Parameter Sidekick_backend.Dot.Simple.2-A

Term printing for DOT

This module defines what functions are required in order to export -a proof to the DOT format.

type atom

The type of atomic formuals

type hyp = S.formula list
type lemma
type assumption = S.formula

The type of theory-specifi proofs (also called lemmas).

val print_atom : Format.formatter ‑> atom ‑> unit

Print the contents of the given atomic formulas. -WARNING: this function should take care to escape and/or not output special -reserved characters for the dot format (such as quotes and so on).

val hyp_info : hyp ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val lemma_info : lemma ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val assumption_info : assumption ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list

Generate some information about the leafs of the proof tree. Currently this backend -print each lemma/assumption/hypothesis as a single leaf of the proof tree. -These function should return a triplet (rule, color, l), such that: -

  • rule is a name for the proof (arbitrary, does not need to be unique, but -should rather be descriptive)
  • color is a color name (optional) understood by DOT
  • l is a list of printers that will be called to print some additional information
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/Simple/index.html b/sidekick/Sidekick_backend/Dot/Simple/index.html deleted file mode 100644 index d615026c..00000000 --- a/sidekick/Sidekick_backend/Dot/Simple/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Simple (sidekick.Sidekick_backend.Dot.Simple)

Module Sidekick_backend.Dot.Simple

Functor for making a module to export proofs to the DOT format. -The substitution of the hyp type is non-destructive due to a restriction -of destructive substitutions on earlier versions of ocaml.

Parameters

A : Arg with type atom := S.formula and type hyp = S.formula list and type lemma := S.lemma and type assumption = S.formula

Signature

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/index.html b/sidekick/Sidekick_backend/Dot/index.html deleted file mode 100644 index 7f7ecf73..00000000 --- a/sidekick/Sidekick_backend/Dot/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -Dot (sidekick.Sidekick_backend.Dot)

Module Sidekick_backend.Dot

Dot backend for proofs

This module provides functions to export proofs into the dot graph format. -Graphs in dot format can be used to generates images using the graphviz tool.

module type S = Backend_intf.S

Interface for exporting proofs.

module type Arg : sig ... end
module Default : functor (S : Sidekick_sat.Res.S) -> Arg with type atom := S.atom and type hyp := S.clause and type lemma := S.clause and type assumption := S.clause

Provides a reasonnable default to instantiate the Make functor, assuming -the original printing functions are compatible with DOT html labels.

module Make : functor (S : Sidekick_sat.Res.S) -> functor (A : Arg with type atom := S.atom and type hyp := S.clause and type lemma := S.clause and type assumption := S.clause) -> S with type t := S.proof

Functor for making a module to export proofs to the DOT format.

module Simple : functor (S : Sidekick_sat.Res.S) -> functor (A : Arg with type atom := S.formula and type hyp = S.formula list and type lemma := S.lemma and type assumption = S.formula) -> S with type t := S.proof

Functor for making a module to export proofs to the DOT format. -The substitution of the hyp type is non-destructive due to a restriction -of destructive substitutions on earlier versions of ocaml.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/module-type-Arg/index.html b/sidekick/Sidekick_backend/Dot/module-type-Arg/index.html deleted file mode 100644 index 0bec1d6e..00000000 --- a/sidekick/Sidekick_backend/Dot/module-type-Arg/index.html +++ /dev/null @@ -1,9 +0,0 @@ - -Arg (sidekick.Sidekick_backend.Dot.Arg)

Module type Sidekick_backend.Dot.Arg

Term printing for DOT

This module defines what functions are required in order to export -a proof to the DOT format.

type atom

The type of atomic formuals

type hyp
type lemma
type assumption

The type of theory-specifi proofs (also called lemmas).

val print_atom : Format.formatter ‑> atom ‑> unit

Print the contents of the given atomic formulas. -WARNING: this function should take care to escape and/or not output special -reserved characters for the dot format (such as quotes and so on).

val hyp_info : hyp ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val lemma_info : lemma ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val assumption_info : assumption ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list

Generate some information about the leafs of the proof tree. Currently this backend -print each lemma/assumption/hypothesis as a single leaf of the proof tree. -These function should return a triplet (rule, color, l), such that: -

  • rule is a name for the proof (arbitrary, does not need to be unique, but -should rather be descriptive)
  • color is a color name (optional) understood by DOT
  • l is a list of printers that will be called to print some additional information
\ No newline at end of file diff --git a/sidekick/Sidekick_backend/Dot/module-type-S/index.html b/sidekick/Sidekick_backend/Dot/module-type-S/index.html deleted file mode 100644 index c10b9329..00000000 --- a/sidekick/Sidekick_backend/Dot/module-type-S/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -S (sidekick.Sidekick_backend.Dot.S)

Module type Sidekick_backend.Dot.S

Interface for exporting proofs.

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend/index.html b/sidekick/Sidekick_backend/index.html deleted file mode 100644 index 4ac9fa30..00000000 --- a/sidekick/Sidekick_backend/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_backend (sidekick.Sidekick_backend)

Module Sidekick_backend

module Backend_intf : sig ... end
module Coq : sig ... end
module Dedukti : sig ... end
module Dimacs : sig ... end
module Dot : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Backend_intf/.jbuilder-keep b/sidekick/Sidekick_backend__Backend_intf/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_backend__Backend_intf/index.html b/sidekick/Sidekick_backend__Backend_intf/index.html deleted file mode 100644 index 657d655f..00000000 --- a/sidekick/Sidekick_backend__Backend_intf/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Sidekick_backend__Backend_intf (sidekick.Sidekick_backend__Backend_intf)

Module Sidekick_backend__Backend_intf

Backend interface

This modules defines the interface of the modules providing -export of proofs.

module type S : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Backend_intf/module-type-S/index.html b/sidekick/Sidekick_backend__Backend_intf/module-type-S/index.html deleted file mode 100644 index 5ddf92e6..00000000 --- a/sidekick/Sidekick_backend__Backend_intf/module-type-S/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -S (sidekick.Sidekick_backend__Backend_intf.S)

Module type Sidekick_backend__Backend_intf.S

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Coq/.jbuilder-keep b/sidekick/Sidekick_backend__Coq/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_backend__Coq/Make/argument-1-S/Atom/index.html b/sidekick/Sidekick_backend__Coq/Make/argument-1-S/Atom/index.html deleted file mode 100644 index a327435b..00000000 --- a/sidekick/Sidekick_backend__Coq/Make/argument-1-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_backend__Coq.Make.1-S.Atom)

Module Sidekick_backend__Coq.Make.1-S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Coq/Make/argument-1-S/Clause/index.html b/sidekick/Sidekick_backend__Coq/Make/argument-1-S/Clause/index.html deleted file mode 100644 index 1a600c9f..00000000 --- a/sidekick/Sidekick_backend__Coq/Make/argument-1-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_backend__Coq.Make.1-S.Clause)

Module Sidekick_backend__Coq.Make.1-S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Coq/Make/argument-1-S/index.html b/sidekick/Sidekick_backend__Coq/Make/argument-1-S/index.html deleted file mode 100644 index 360275ba..00000000 --- a/sidekick/Sidekick_backend__Coq/Make/argument-1-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -1-S (sidekick.Sidekick_backend__Coq.Make.1-S)

Parameter Sidekick_backend__Coq.Make.1-S

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Coq/Make/argument-2-A/index.html b/sidekick/Sidekick_backend__Coq/Make/argument-2-A/index.html deleted file mode 100644 index 554c9a99..00000000 --- a/sidekick/Sidekick_backend__Coq/Make/argument-2-A/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -2-A (sidekick.Sidekick_backend__Coq.Make.2-A)

Parameter Sidekick_backend__Coq.Make.2-A

Term printing for Coq

type hyp
type lemma
type assumption

The types of hypotheses, lemmas, and assumptions

val prove_hyp : Format.formatter ‑> string ‑> hyp ‑> unit
val prove_lemma : Format.formatter ‑> string ‑> lemma ‑> unit
val prove_assumption : Format.formatter ‑> string ‑> assumption ‑> unit

Proving function for hypotheses, lemmas and assumptions. -prove_x fmt name x should prove x, and be such that after -executing it, x is among the coq hypotheses under the name name. -The hypothesis should be the encoding of the given clause, i.e -for a clause a \/ not b \/ c, the proved hypothesis should be: - ~ a -> ~ ~ b -> ~ c -> False , keeping the same order as the -one in the atoms array of the clause.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Coq/Make/index.html b/sidekick/Sidekick_backend__Coq/Make/index.html deleted file mode 100644 index 8132c4d1..00000000 --- a/sidekick/Sidekick_backend__Coq/Make/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Make (sidekick.Sidekick_backend__Coq.Make)

Module Sidekick_backend__Coq.Make

Base functor to output Coq proofs

Parameters

A : Arg with type hyp := S.clause and type lemma := S.clause and type assumption := S.clause

Signature

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Coq/Simple/argument-1-S/Atom/index.html b/sidekick/Sidekick_backend__Coq/Simple/argument-1-S/Atom/index.html deleted file mode 100644 index c1e08f47..00000000 --- a/sidekick/Sidekick_backend__Coq/Simple/argument-1-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_backend__Coq.Simple.1-S.Atom)

Module Sidekick_backend__Coq.Simple.1-S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Coq/Simple/argument-1-S/Clause/index.html b/sidekick/Sidekick_backend__Coq/Simple/argument-1-S/Clause/index.html deleted file mode 100644 index c4778d17..00000000 --- a/sidekick/Sidekick_backend__Coq/Simple/argument-1-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_backend__Coq.Simple.1-S.Clause)

Module Sidekick_backend__Coq.Simple.1-S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Coq/Simple/argument-1-S/index.html b/sidekick/Sidekick_backend__Coq/Simple/argument-1-S/index.html deleted file mode 100644 index 3ad3fc2f..00000000 --- a/sidekick/Sidekick_backend__Coq/Simple/argument-1-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -1-S (sidekick.Sidekick_backend__Coq.Simple.1-S)

Parameter Sidekick_backend__Coq.Simple.1-S

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Coq/Simple/argument-2-A/index.html b/sidekick/Sidekick_backend__Coq/Simple/argument-2-A/index.html deleted file mode 100644 index 23c48063..00000000 --- a/sidekick/Sidekick_backend__Coq/Simple/argument-2-A/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -2-A (sidekick.Sidekick_backend__Coq.Simple.2-A)

Parameter Sidekick_backend__Coq.Simple.2-A

Term printing for Coq

type hyp = S.formula list
type lemma
type assumption

The types of hypotheses, lemmas, and assumptions

val prove_hyp : Format.formatter ‑> string ‑> hyp ‑> unit
val prove_lemma : Format.formatter ‑> string ‑> lemma ‑> unit
val prove_assumption : Format.formatter ‑> string ‑> assumption ‑> unit

Proving function for hypotheses, lemmas and assumptions. -prove_x fmt name x should prove x, and be such that after -executing it, x is among the coq hypotheses under the name name. -The hypothesis should be the encoding of the given clause, i.e -for a clause a \/ not b \/ c, the proved hypothesis should be: - ~ a -> ~ ~ b -> ~ c -> False , keeping the same order as the -one in the atoms array of the clause.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Coq/Simple/index.html b/sidekick/Sidekick_backend__Coq/Simple/index.html deleted file mode 100644 index aef606e4..00000000 --- a/sidekick/Sidekick_backend__Coq/Simple/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Simple (sidekick.Sidekick_backend__Coq.Simple)

Module Sidekick_backend__Coq.Simple

Simple functo to output Coq proofs

Parameters

A : Arg with type hyp = S.formula list and type lemma := S.lemma and type assumption := S.formula

Signature

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Coq/index.html b/sidekick/Sidekick_backend__Coq/index.html deleted file mode 100644 index 5ff23d75..00000000 --- a/sidekick/Sidekick_backend__Coq/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Sidekick_backend__Coq (sidekick.Sidekick_backend__Coq)

Module Sidekick_backend__Coq

Coq Backend

This module provides an easy way to produce coq scripts -corresponding to the resolution proofs output by the -sat solver.

Interface for exporting proofs.

module type Arg : sig ... end
module Make : functor (S : Sidekick_sat.Res.S) -> functor (A : Arg with type hyp := S.clause and type lemma := S.clause and type assumption := S.clause) -> S with type t := S.proof

Base functor to output Coq proofs

module Simple : functor (S : Sidekick_sat.Res.S) -> functor (A : Arg with type hyp = S.formula list and type lemma := S.lemma and type assumption := S.formula) -> S with type t := S.proof

Simple functo to output Coq proofs

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Coq/module-type-Arg/index.html b/sidekick/Sidekick_backend__Coq/module-type-Arg/index.html deleted file mode 100644 index e5ce2e61..00000000 --- a/sidekick/Sidekick_backend__Coq/module-type-Arg/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Arg (sidekick.Sidekick_backend__Coq.Arg)

Module type Sidekick_backend__Coq.Arg

Term printing for Coq

type hyp
type lemma
type assumption

The types of hypotheses, lemmas, and assumptions

val prove_hyp : Format.formatter ‑> string ‑> hyp ‑> unit
val prove_lemma : Format.formatter ‑> string ‑> lemma ‑> unit
val prove_assumption : Format.formatter ‑> string ‑> assumption ‑> unit

Proving function for hypotheses, lemmas and assumptions. -prove_x fmt name x should prove x, and be such that after -executing it, x is among the coq hypotheses under the name name. -The hypothesis should be the encoding of the given clause, i.e -for a clause a \/ not b \/ c, the proved hypothesis should be: - ~ a -> ~ ~ b -> ~ c -> False , keeping the same order as the -one in the atoms array of the clause.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Coq/module-type-S/index.html b/sidekick/Sidekick_backend__Coq/module-type-S/index.html deleted file mode 100644 index adfeaf8b..00000000 --- a/sidekick/Sidekick_backend__Coq/module-type-S/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -S (sidekick.Sidekick_backend__Coq.S)

Module type Sidekick_backend__Coq.S

Interface for exporting proofs.

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dedukti/.jbuilder-keep b/sidekick/Sidekick_backend__Dedukti/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_backend__Dedukti/Make/argument-1-S/Atom/index.html b/sidekick/Sidekick_backend__Dedukti/Make/argument-1-S/Atom/index.html deleted file mode 100644 index 1f43ff52..00000000 --- a/sidekick/Sidekick_backend__Dedukti/Make/argument-1-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_backend__Dedukti.Make.1-S.Atom)

Module Sidekick_backend__Dedukti.Make.1-S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dedukti/Make/argument-1-S/Clause/index.html b/sidekick/Sidekick_backend__Dedukti/Make/argument-1-S/Clause/index.html deleted file mode 100644 index 897b35ac..00000000 --- a/sidekick/Sidekick_backend__Dedukti/Make/argument-1-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_backend__Dedukti.Make.1-S.Clause)

Module Sidekick_backend__Dedukti.Make.1-S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dedukti/Make/argument-1-S/index.html b/sidekick/Sidekick_backend__Dedukti/Make/argument-1-S/index.html deleted file mode 100644 index b50e2aa1..00000000 --- a/sidekick/Sidekick_backend__Dedukti/Make/argument-1-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -1-S (sidekick.Sidekick_backend__Dedukti.Make.1-S)

Parameter Sidekick_backend__Dedukti.Make.1-S

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dedukti/Make/argument-2-A/index.html b/sidekick/Sidekick_backend__Dedukti/Make/argument-2-A/index.html deleted file mode 100644 index 9d6efdbe..00000000 --- a/sidekick/Sidekick_backend__Dedukti/Make/argument-2-A/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -2-A (sidekick.Sidekick_backend__Dedukti.Make.2-A)

Parameter Sidekick_backend__Dedukti.Make.2-A

type lemma
type proof
type formula
val print : Format.formatter ‑> formula ‑> unit
val prove : Format.formatter ‑> lemma ‑> unit
val context : Format.formatter ‑> proof ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dedukti/Make/index.html b/sidekick/Sidekick_backend__Dedukti/Make/index.html deleted file mode 100644 index 8ab79541..00000000 --- a/sidekick/Sidekick_backend__Dedukti/Make/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Make (sidekick.Sidekick_backend__Dedukti.Make)

Module Sidekick_backend__Dedukti.Make

Functor to generate a backend to output proofs for the dedukti type checker.

Parameters

A : Arg with type formula := S.formula and type lemma := S.lemma and type proof := S.proof

Signature

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dedukti/index.html b/sidekick/Sidekick_backend__Dedukti/index.html deleted file mode 100644 index 47030547..00000000 --- a/sidekick/Sidekick_backend__Dedukti/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_backend__Dedukti (sidekick.Sidekick_backend__Dedukti)

Module Sidekick_backend__Dedukti

Deduki backend for proofs

Work in progress...

module type Arg : sig ... end
module Make : functor (S : Sidekick_sat.Res.S) -> functor (A : Arg with type formula := S.formula and type lemma := S.lemma and type proof := S.proof) -> S with type t := S.proof

Functor to generate a backend to output proofs for the dedukti type checker.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dedukti/module-type-Arg/index.html b/sidekick/Sidekick_backend__Dedukti/module-type-Arg/index.html deleted file mode 100644 index dd27a36e..00000000 --- a/sidekick/Sidekick_backend__Dedukti/module-type-Arg/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Arg (sidekick.Sidekick_backend__Dedukti.Arg)

Module type Sidekick_backend__Dedukti.Arg

type lemma
type proof
type formula
val print : Format.formatter ‑> formula ‑> unit
val prove : Format.formatter ‑> lemma ‑> unit
val context : Format.formatter ‑> proof ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dedukti/module-type-S/index.html b/sidekick/Sidekick_backend__Dedukti/module-type-S/index.html deleted file mode 100644 index 06f90b4f..00000000 --- a/sidekick/Sidekick_backend__Dedukti/module-type-S/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -S (sidekick.Sidekick_backend__Dedukti.S)

Module type Sidekick_backend__Dedukti.S

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dimacs/.jbuilder-keep b/sidekick/Sidekick_backend__Dimacs/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Atom/index.html b/sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Atom/index.html deleted file mode 100644 index 0c35beda..00000000 --- a/sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_backend__Dimacs.Make.1-St.Atom)

Module Sidekick_backend__Dimacs.Make.1-St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Clause/index.html b/sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Clause/index.html deleted file mode 100644 index 045d35f2..00000000 --- a/sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_backend__Dimacs.Make.1-St.Clause)

Module Sidekick_backend__Dimacs.Make.1-St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Formula/index.html b/sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Formula/index.html deleted file mode 100644 index 50421bbc..00000000 --- a/sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_backend__Dimacs.Make.1-St.Formula)

Module Sidekick_backend__Dimacs.Make.1-St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Var/index.html b/sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Var/index.html deleted file mode 100644 index a0ad7688..00000000 --- a/sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_backend__Dimacs.Make.1-St.Var)

Module Sidekick_backend__Dimacs.Make.1-St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/index.html b/sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/index.html deleted file mode 100644 index 27972c85..00000000 --- a/sidekick/Sidekick_backend__Dimacs/Make/argument-1-St/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -1-St (sidekick.Sidekick_backend__Dimacs.Make.1-St)

Parameter Sidekick_backend__Dimacs.Make.1-St

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dimacs/Make/index.html b/sidekick/Sidekick_backend__Dimacs/Make/index.html deleted file mode 100644 index 22098b2a..00000000 --- a/sidekick/Sidekick_backend__Dimacs/Make/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Make (sidekick.Sidekick_backend__Dimacs.Make)

Module Sidekick_backend__Dimacs.Make

Functor to create a module for exporting probems to the dimacs (& iCNF) formats.

Parameters

Signature

type st = St.t
type clause

The type of clauses

val export : st ‑> Format.formatter ‑> hyps:clause Sidekick_sat.Vec.t ‑> history:clause Sidekick_sat.Vec.t ‑> local:clause Sidekick_sat.Vec.t ‑> unit

Export the given clause vectors to the dimacs format. -The arguments should be transmitted directly from the corresponding -function of the module.

val export_icnf : Format.formatter ‑> hyps:clause Sidekick_sat.Vec.t ‑> history:clause Sidekick_sat.Vec.t ‑> local:clause Sidekick_sat.Vec.t ‑> unit

Export the given clause vectors to the dimacs format. -The arguments should be transmitted directly from the corresponding -function of the module. -This function may be called multiple times in order to add -new clauses (and new local hyps) to the problem.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dimacs/index.html b/sidekick/Sidekick_backend__Dimacs/index.html deleted file mode 100644 index 0086310a..00000000 --- a/sidekick/Sidekick_backend__Dimacs/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Sidekick_backend__Dimacs (sidekick.Sidekick_backend__Dimacs)

Module Sidekick_backend__Dimacs

Dimacs backend for problems

This module provides functiosn to export problems to the dimacs and -iCNF formats.

module type S : sig ... end
module Make : functor (St : Sidekick_sat.Solver_types_intf.S) -> S with type clause := St.clause and type st = St.t

Functor to create a module for exporting probems to the dimacs (& iCNF) formats.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dimacs/module-type-S/index.html b/sidekick/Sidekick_backend__Dimacs/module-type-S/index.html deleted file mode 100644 index 80b612f3..00000000 --- a/sidekick/Sidekick_backend__Dimacs/module-type-S/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -S (sidekick.Sidekick_backend__Dimacs.S)

Module type Sidekick_backend__Dimacs.S

type st
type clause

The type of clauses

val export : st ‑> Format.formatter ‑> hyps:clause Sidekick_sat.Vec.t ‑> history:clause Sidekick_sat.Vec.t ‑> local:clause Sidekick_sat.Vec.t ‑> unit

Export the given clause vectors to the dimacs format. -The arguments should be transmitted directly from the corresponding -function of the module.

val export_icnf : Format.formatter ‑> hyps:clause Sidekick_sat.Vec.t ‑> history:clause Sidekick_sat.Vec.t ‑> local:clause Sidekick_sat.Vec.t ‑> unit

Export the given clause vectors to the dimacs format. -The arguments should be transmitted directly from the corresponding -function of the module. -This function may be called multiple times in order to add -new clauses (and new local hyps) to the problem.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/.jbuilder-keep b/sidekick/Sidekick_backend__Dot/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_backend__Dot/Default/argument-1-S/Atom/index.html b/sidekick/Sidekick_backend__Dot/Default/argument-1-S/Atom/index.html deleted file mode 100644 index c8d763cf..00000000 --- a/sidekick/Sidekick_backend__Dot/Default/argument-1-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_backend__Dot.Default.1-S.Atom)

Module Sidekick_backend__Dot.Default.1-S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/Default/argument-1-S/Clause/index.html b/sidekick/Sidekick_backend__Dot/Default/argument-1-S/Clause/index.html deleted file mode 100644 index 9da95510..00000000 --- a/sidekick/Sidekick_backend__Dot/Default/argument-1-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_backend__Dot.Default.1-S.Clause)

Module Sidekick_backend__Dot.Default.1-S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/Default/argument-1-S/index.html b/sidekick/Sidekick_backend__Dot/Default/argument-1-S/index.html deleted file mode 100644 index b5855246..00000000 --- a/sidekick/Sidekick_backend__Dot/Default/argument-1-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -1-S (sidekick.Sidekick_backend__Dot.Default.1-S)

Parameter Sidekick_backend__Dot.Default.1-S

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/Default/index.html b/sidekick/Sidekick_backend__Dot/Default/index.html deleted file mode 100644 index f58dd29e..00000000 --- a/sidekick/Sidekick_backend__Dot/Default/index.html +++ /dev/null @@ -1,10 +0,0 @@ - -Default (sidekick.Sidekick_backend__Dot.Default)

Module Sidekick_backend__Dot.Default

Provides a reasonnable default to instantiate the Make functor, assuming -the original printing functions are compatible with DOT html labels.

Parameters

Signature

Term printing for DOT

This module defines what functions are required in order to export -a proof to the DOT format.

type atom

The type of atomic formuals

type hyp
type lemma
type assumption

The type of theory-specifi proofs (also called lemmas).

val print_atom : Format.formatter ‑> atom ‑> unit

Print the contents of the given atomic formulas. -WARNING: this function should take care to escape and/or not output special -reserved characters for the dot format (such as quotes and so on).

val hyp_info : hyp ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val lemma_info : lemma ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val assumption_info : assumption ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list

Generate some information about the leafs of the proof tree. Currently this backend -print each lemma/assumption/hypothesis as a single leaf of the proof tree. -These function should return a triplet (rule, color, l), such that: -

  • rule is a name for the proof (arbitrary, does not need to be unique, but -should rather be descriptive)
  • color is a color name (optional) understood by DOT
  • l is a list of printers that will be called to print some additional information
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/Make/argument-1-S/Atom/index.html b/sidekick/Sidekick_backend__Dot/Make/argument-1-S/Atom/index.html deleted file mode 100644 index f73bd372..00000000 --- a/sidekick/Sidekick_backend__Dot/Make/argument-1-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_backend__Dot.Make.1-S.Atom)

Module Sidekick_backend__Dot.Make.1-S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/Make/argument-1-S/Clause/index.html b/sidekick/Sidekick_backend__Dot/Make/argument-1-S/Clause/index.html deleted file mode 100644 index 9ddc723a..00000000 --- a/sidekick/Sidekick_backend__Dot/Make/argument-1-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_backend__Dot.Make.1-S.Clause)

Module Sidekick_backend__Dot.Make.1-S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/Make/argument-1-S/index.html b/sidekick/Sidekick_backend__Dot/Make/argument-1-S/index.html deleted file mode 100644 index 715bc8ae..00000000 --- a/sidekick/Sidekick_backend__Dot/Make/argument-1-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -1-S (sidekick.Sidekick_backend__Dot.Make.1-S)

Parameter Sidekick_backend__Dot.Make.1-S

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/Make/argument-2-A/index.html b/sidekick/Sidekick_backend__Dot/Make/argument-2-A/index.html deleted file mode 100644 index 2bc507aa..00000000 --- a/sidekick/Sidekick_backend__Dot/Make/argument-2-A/index.html +++ /dev/null @@ -1,9 +0,0 @@ - -2-A (sidekick.Sidekick_backend__Dot.Make.2-A)

Parameter Sidekick_backend__Dot.Make.2-A

Term printing for DOT

This module defines what functions are required in order to export -a proof to the DOT format.

type atom

The type of atomic formuals

type hyp
type lemma
type assumption

The type of theory-specifi proofs (also called lemmas).

val print_atom : Format.formatter ‑> atom ‑> unit

Print the contents of the given atomic formulas. -WARNING: this function should take care to escape and/or not output special -reserved characters for the dot format (such as quotes and so on).

val hyp_info : hyp ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val lemma_info : lemma ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val assumption_info : assumption ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list

Generate some information about the leafs of the proof tree. Currently this backend -print each lemma/assumption/hypothesis as a single leaf of the proof tree. -These function should return a triplet (rule, color, l), such that: -

  • rule is a name for the proof (arbitrary, does not need to be unique, but -should rather be descriptive)
  • color is a color name (optional) understood by DOT
  • l is a list of printers that will be called to print some additional information
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/Make/index.html b/sidekick/Sidekick_backend__Dot/Make/index.html deleted file mode 100644 index 9f415185..00000000 --- a/sidekick/Sidekick_backend__Dot/Make/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Make (sidekick.Sidekick_backend__Dot.Make)

Module Sidekick_backend__Dot.Make

Functor for making a module to export proofs to the DOT format.

Parameters

A : Arg with type atom := S.atom and type hyp := S.clause and type lemma := S.clause and type assumption := S.clause

Signature

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/Simple/argument-1-S/Atom/index.html b/sidekick/Sidekick_backend__Dot/Simple/argument-1-S/Atom/index.html deleted file mode 100644 index d300f7b1..00000000 --- a/sidekick/Sidekick_backend__Dot/Simple/argument-1-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_backend__Dot.Simple.1-S.Atom)

Module Sidekick_backend__Dot.Simple.1-S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/Simple/argument-1-S/Clause/index.html b/sidekick/Sidekick_backend__Dot/Simple/argument-1-S/Clause/index.html deleted file mode 100644 index f45c80d1..00000000 --- a/sidekick/Sidekick_backend__Dot/Simple/argument-1-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_backend__Dot.Simple.1-S.Clause)

Module Sidekick_backend__Dot.Simple.1-S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/Simple/argument-1-S/index.html b/sidekick/Sidekick_backend__Dot/Simple/argument-1-S/index.html deleted file mode 100644 index a8532e86..00000000 --- a/sidekick/Sidekick_backend__Dot/Simple/argument-1-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -1-S (sidekick.Sidekick_backend__Dot.Simple.1-S)

Parameter Sidekick_backend__Dot.Simple.1-S

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/Simple/argument-2-A/index.html b/sidekick/Sidekick_backend__Dot/Simple/argument-2-A/index.html deleted file mode 100644 index 0f524a0e..00000000 --- a/sidekick/Sidekick_backend__Dot/Simple/argument-2-A/index.html +++ /dev/null @@ -1,9 +0,0 @@ - -2-A (sidekick.Sidekick_backend__Dot.Simple.2-A)

Parameter Sidekick_backend__Dot.Simple.2-A

Term printing for DOT

This module defines what functions are required in order to export -a proof to the DOT format.

type atom

The type of atomic formuals

type hyp = S.formula list
type lemma
type assumption = S.formula

The type of theory-specifi proofs (also called lemmas).

val print_atom : Format.formatter ‑> atom ‑> unit

Print the contents of the given atomic formulas. -WARNING: this function should take care to escape and/or not output special -reserved characters for the dot format (such as quotes and so on).

val hyp_info : hyp ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val lemma_info : lemma ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val assumption_info : assumption ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list

Generate some information about the leafs of the proof tree. Currently this backend -print each lemma/assumption/hypothesis as a single leaf of the proof tree. -These function should return a triplet (rule, color, l), such that: -

  • rule is a name for the proof (arbitrary, does not need to be unique, but -should rather be descriptive)
  • color is a color name (optional) understood by DOT
  • l is a list of printers that will be called to print some additional information
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/Simple/index.html b/sidekick/Sidekick_backend__Dot/Simple/index.html deleted file mode 100644 index 7e10162c..00000000 --- a/sidekick/Sidekick_backend__Dot/Simple/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Simple (sidekick.Sidekick_backend__Dot.Simple)

Module Sidekick_backend__Dot.Simple

Functor for making a module to export proofs to the DOT format. -The substitution of the hyp type is non-destructive due to a restriction -of destructive substitutions on earlier versions of ocaml.

Parameters

A : Arg with type atom := S.formula and type hyp = S.formula list and type lemma := S.lemma and type assumption = S.formula

Signature

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/index.html b/sidekick/Sidekick_backend__Dot/index.html deleted file mode 100644 index 7d98511b..00000000 --- a/sidekick/Sidekick_backend__Dot/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -Sidekick_backend__Dot (sidekick.Sidekick_backend__Dot)

Module Sidekick_backend__Dot

Dot backend for proofs

This module provides functions to export proofs into the dot graph format. -Graphs in dot format can be used to generates images using the graphviz tool.

Interface for exporting proofs.

module type Arg : sig ... end
module Default : functor (S : Sidekick_sat.Res.S) -> Arg with type atom := S.atom and type hyp := S.clause and type lemma := S.clause and type assumption := S.clause

Provides a reasonnable default to instantiate the Make functor, assuming -the original printing functions are compatible with DOT html labels.

module Make : functor (S : Sidekick_sat.Res.S) -> functor (A : Arg with type atom := S.atom and type hyp := S.clause and type lemma := S.clause and type assumption := S.clause) -> S with type t := S.proof

Functor for making a module to export proofs to the DOT format.

module Simple : functor (S : Sidekick_sat.Res.S) -> functor (A : Arg with type atom := S.formula and type hyp = S.formula list and type lemma := S.lemma and type assumption = S.formula) -> S with type t := S.proof

Functor for making a module to export proofs to the DOT format. -The substitution of the hyp type is non-destructive due to a restriction -of destructive substitutions on earlier versions of ocaml.

\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/module-type-Arg/index.html b/sidekick/Sidekick_backend__Dot/module-type-Arg/index.html deleted file mode 100644 index 2608d926..00000000 --- a/sidekick/Sidekick_backend__Dot/module-type-Arg/index.html +++ /dev/null @@ -1,9 +0,0 @@ - -Arg (sidekick.Sidekick_backend__Dot.Arg)

Module type Sidekick_backend__Dot.Arg

Term printing for DOT

This module defines what functions are required in order to export -a proof to the DOT format.

type atom

The type of atomic formuals

type hyp
type lemma
type assumption

The type of theory-specifi proofs (also called lemmas).

val print_atom : Format.formatter ‑> atom ‑> unit

Print the contents of the given atomic formulas. -WARNING: this function should take care to escape and/or not output special -reserved characters for the dot format (such as quotes and so on).

val hyp_info : hyp ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val lemma_info : lemma ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list
val assumption_info : assumption ‑> string * string option * (Format.formatter ‑> unit ‑> unit) list

Generate some information about the leafs of the proof tree. Currently this backend -print each lemma/assumption/hypothesis as a single leaf of the proof tree. -These function should return a triplet (rule, color, l), such that: -

  • rule is a name for the proof (arbitrary, does not need to be unique, but -should rather be descriptive)
  • color is a color name (optional) understood by DOT
  • l is a list of printers that will be called to print some additional information
\ No newline at end of file diff --git a/sidekick/Sidekick_backend__Dot/module-type-S/index.html b/sidekick/Sidekick_backend__Dot/module-type-S/index.html deleted file mode 100644 index 2ff130c1..00000000 --- a/sidekick/Sidekick_backend__Dot/module-type-S/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -S (sidekick.Sidekick_backend__Dot.S)

Module type Sidekick_backend__Dot.S

Interface for exporting proofs.

Proof exporting

Currently, exporting a proof means printing it into a file -according to the conventions of a given format.

type t

The type of proofs.

val print : Format.formatter ‑> t ‑> unit

A function for printing proofs in the desired format.

\ No newline at end of file diff --git a/sidekick/Sidekick_dimacs/.jbuilder-keep b/sidekick/Sidekick_dimacs/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_dimacs/index.html b/sidekick/Sidekick_dimacs/index.html deleted file mode 100644 index c30f9b68..00000000 --- a/sidekick/Sidekick_dimacs/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Sidekick_dimacs (sidekick.Sidekick_dimacs)

Module Sidekick_dimacs

Main for dimacs

This library provides a parser for DIMACS files, to represent -SAT problems.

http://www.satcompetition.org/2009/format-benchmarks2009.html

type 'a or_error = ('a, string) CCResult.t
val parse : string ‑> int list list or_error

Parse a file into a list of clauses.

\ No newline at end of file diff --git a/sidekick/Sidekick_dimacs__/.jbuilder-keep b/sidekick/Sidekick_dimacs__/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_dimacs__/Lexer/index.html b/sidekick/Sidekick_dimacs__/Lexer/index.html deleted file mode 100644 index 0a18ee19..00000000 --- a/sidekick/Sidekick_dimacs__/Lexer/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Lexer (sidekick.Sidekick_dimacs__.Lexer)

Module Sidekick_dimacs__.Lexer

val __ocaml_lex_tables : Lexing.lex_tables
val token : Lexing.lexbuf ‑> Sidekick_dimacs__.Parser.token
val __ocaml_lex_token_rec : Lexing.lexbuf ‑> int ‑> Sidekick_dimacs__.Parser.token
val comment : Lexing.lexbuf ‑> Sidekick_dimacs__.Parser.token
val __ocaml_lex_comment_rec : Lexing.lexbuf ‑> int ‑> Sidekick_dimacs__.Parser.token
\ No newline at end of file diff --git a/sidekick/Sidekick_dimacs__/Parser/index.html b/sidekick/Sidekick_dimacs__/Parser/index.html deleted file mode 100644 index 08cf2544..00000000 --- a/sidekick/Sidekick_dimacs__/Parser/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Parser (sidekick.Sidekick_dimacs__.Parser)

Module Sidekick_dimacs__.Parser

type token =
| ZERO
| P
| LIT of int
| EOF
| CNF
exception Error
val file : (Lexing.lexbuf ‑> token) ‑> Lexing.lexbuf ‑> int list list
\ No newline at end of file diff --git a/sidekick/Sidekick_dimacs__/index.html b/sidekick/Sidekick_dimacs__/index.html deleted file mode 100644 index 97482b1e..00000000 --- a/sidekick/Sidekick_dimacs__/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_dimacs__ (sidekick.Sidekick_dimacs__)

Module Sidekick_dimacs__

module Lexer : sig ... end
module Parser : sig ... end
module Sidekick_dimacs = Sidekick_dimacs
\ No newline at end of file diff --git a/sidekick/Sidekick_dimacs__Lexer/.jbuilder-keep b/sidekick/Sidekick_dimacs__Lexer/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_dimacs__Lexer/index.html b/sidekick/Sidekick_dimacs__Lexer/index.html deleted file mode 100644 index f31202e9..00000000 --- a/sidekick/Sidekick_dimacs__Lexer/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_dimacs__Lexer (sidekick.Sidekick_dimacs__Lexer)

Module Sidekick_dimacs__Lexer

val __ocaml_lex_tables : Lexing.lex_tables
val token : Lexing.lexbuf ‑> Sidekick_dimacs__.Parser.token
val __ocaml_lex_token_rec : Lexing.lexbuf ‑> int ‑> Sidekick_dimacs__.Parser.token
val comment : Lexing.lexbuf ‑> Sidekick_dimacs__.Parser.token
val __ocaml_lex_comment_rec : Lexing.lexbuf ‑> int ‑> Sidekick_dimacs__.Parser.token
\ No newline at end of file diff --git a/sidekick/Sidekick_dimacs__Parser/.jbuilder-keep b/sidekick/Sidekick_dimacs__Parser/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_dimacs__Parser/index.html b/sidekick/Sidekick_dimacs__Parser/index.html deleted file mode 100644 index 07910b81..00000000 --- a/sidekick/Sidekick_dimacs__Parser/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_dimacs__Parser (sidekick.Sidekick_dimacs__Parser)

Module Sidekick_dimacs__Parser

type token =
| ZERO
| P
| LIT of int
| EOF
| CNF
exception Error
val file : (Lexing.lexbuf ‑> token) ‑> Lexing.lexbuf ‑> int list list
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/.jbuilder-keep b/sidekick/Sidekick_sat/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_sat/Make/Clause/index.html b/sidekick/Sidekick_sat/Make/Clause/index.html deleted file mode 100644 index b93d2d14..00000000 --- a/sidekick/Sidekick_sat/Make/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat.Make.Clause)

Module Sidekick_sat.Make.Clause

type t = clause
val atoms : t ‑> atom Sidekick_util.IArray.t
val atoms_l : t ‑> atom list
val tag : t ‑> int option
val equal : t ‑> t ‑> bool
val make : ?⁠tag:int ‑> lit array ‑> t
val make_l : ?⁠tag:int ‑> lit list ‑> t
val of_atoms : solver ‑> ?⁠tag:int ‑> atom list ‑> t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Make/Formula/index.html b/sidekick/Sidekick_sat/Make/Formula/index.html deleted file mode 100644 index 657d3315..00000000 --- a/sidekick/Sidekick_sat/Make/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat.Make.Formula)

Module Sidekick_sat.Make.Formula

type t = formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Make/Lit/index.html b/sidekick/Sidekick_sat/Make/Lit/index.html deleted file mode 100644 index d1c39c33..00000000 --- a/sidekick/Sidekick_sat/Make/Lit/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Lit (sidekick.Sidekick_sat.Make.Lit)

Module Sidekick_sat.Make.Lit

type t = lit
val make : solver ‑> atom ‑> t
val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Make/Proof/Atom/index.html b/sidekick/Sidekick_sat/Make/Proof/Atom/index.html deleted file mode 100644 index a0b3e774..00000000 --- a/sidekick/Sidekick_sat/Make/Proof/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat.Make.Proof.Atom)

Module Sidekick_sat.Make.Proof.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Make/Proof/Clause/Tbl/index.html b/sidekick/Sidekick_sat/Make/Proof/Clause/Tbl/index.html deleted file mode 100644 index 22580689..00000000 --- a/sidekick/Sidekick_sat/Make/Proof/Clause/Tbl/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Tbl (sidekick.Sidekick_sat.Make.Proof.Clause.Tbl)

Module Sidekick_sat.Make.Proof.Clause.Tbl

type key = t
val create : int ‑> 'a t
val clear : 'a t ‑> unit
val reset : 'a t ‑> unit
val copy : 'a t ‑> 'a t
val add : 'a t ‑> key ‑> 'a ‑> unit
val remove : 'a t ‑> key ‑> unit
val find : 'a t ‑> key ‑> 'a
val find_opt : 'a t ‑> key ‑> 'a option
val find_all : 'a t ‑> key ‑> 'a list
val replace : 'a t ‑> key ‑> 'a ‑> unit
val mem : 'a t ‑> key ‑> bool
val iter : (key ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val filter_map_inplace : (key ‑> 'a ‑> 'a option) ‑> 'a t ‑> unit
val fold : (key ‑> 'a ‑> 'b ‑> 'b) ‑> 'a t ‑> 'b ‑> 'b
val length : 'a t ‑> int
val stats : 'a t ‑> Hashtbl.statistics
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Make/Proof/Clause/index.html b/sidekick/Sidekick_sat/Make/Proof/Clause/index.html deleted file mode 100644 index 898ce7a0..00000000 --- a/sidekick/Sidekick_sat/Make/Proof/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat.Make.Proof.Clause)

Module Sidekick_sat.Make.Proof.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list
module Tbl : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Make/Proof/Tbl/index.html b/sidekick/Sidekick_sat/Make/Proof/Tbl/index.html deleted file mode 100644 index 7e58fc73..00000000 --- a/sidekick/Sidekick_sat/Make/Proof/Tbl/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Tbl (sidekick.Sidekick_sat.Make.Proof.Tbl)

Module Sidekick_sat.Make.Proof.Tbl

type key = proof
val create : int ‑> 'a t
val clear : 'a t ‑> unit
val reset : 'a t ‑> unit
val copy : 'a t ‑> 'a t
val add : 'a t ‑> key ‑> 'a ‑> unit
val remove : 'a t ‑> key ‑> unit
val find : 'a t ‑> key ‑> 'a
val find_opt : 'a t ‑> key ‑> 'a option
val find_all : 'a t ‑> key ‑> 'a list
val replace : 'a t ‑> key ‑> 'a ‑> unit
val mem : 'a t ‑> key ‑> bool
val iter : (key ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val filter_map_inplace : (key ‑> 'a ‑> 'a option) ‑> 'a t ‑> unit
val fold : (key ‑> 'a ‑> 'b ‑> 'b) ‑> 'a t ‑> 'b ‑> 'b
val length : 'a t ‑> int
val stats : 'a t ‑> Hashtbl.statistics
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Make/Proof/index.html b/sidekick/Sidekick_sat/Make/Proof/index.html deleted file mode 100644 index f2d3576c..00000000 --- a/sidekick/Sidekick_sat/Make/Proof/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Proof (sidekick.Sidekick_sat.Make.Proof)

Module Sidekick_sat.Make.Proof

exception Insufficient_hyps
type clause = clause
type step = Sidekick_sat__Solver.Make(Sidekick_sat__.Solver_types.Make(E))(E).Proof.step =
| Hypothesis
| Assumption
| Lemma of lemma
| Duplicate of proof * atom list
| Resolution of proof * proof * atom
val prove : clause ‑> proof
val prove_unsat : clause ‑> proof
val prove_atom : atom ‑> proof option
val is_leaf : step ‑> bool
val expl : step ‑> string
val parents : step ‑> proof list
val expand : proof ‑> proof_node
val conclusion : proof ‑> clause
val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a
val unsat_core : proof ‑> clause list
val check : proof ‑> unit
module Clause : sig ... end
module Atom : sig ... end
module Tbl : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Make/argument-1-E/Form/index.html b/sidekick/Sidekick_sat/Make/argument-1-E/Form/index.html deleted file mode 100644 index 765e8326..00000000 --- a/sidekick/Sidekick_sat/Make/argument-1-E/Form/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Form (sidekick.Sidekick_sat.Make.1-E.Form)

Module Sidekick_sat.Make.1-E.Form

type t = formula

The type of atomic formulas.

val equal : t ‑> t ‑> bool

Equality over formulas.

val hash : t ‑> int

Hashing function for formulas. Should be such that two formulas equal according -to Expr_intf.S.equal have the same hash.

val print : Format.formatter ‑> t ‑> unit

Printing function used among other thing for debugging.

val dummy : t

Formula constant. A valid formula should never be physically equal to dummy

val neg : t ‑> t

Formula negation. Should be an involution, i.e. equal a (neg neg a) should -always hold.

val norm : t ‑> t * Theory_intf.negated

Returns a 'normalized' form of the formula, possibly negated -(in which case return Negated). This function is used to recognize -the link between a formula a and its negation neg a, so the goal is -that a and neg a normalise to the same formula, -but one returns Same_sign and the other one returns Negated

\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Make/argument-1-E/index.html b/sidekick/Sidekick_sat/Make/argument-1-E/index.html deleted file mode 100644 index 7522f339..00000000 --- a/sidekick/Sidekick_sat/Make/argument-1-E/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -1-E (sidekick.Sidekick_sat.Make.1-E)

Parameter Sidekick_sat.Make.1-E

type t

State of the theory

type formula

The type of formulas. Should be compatble with Formula_intf.S

type proof

A custom type for the proofs of lemmas produced by the theory.

module Form : sig ... end
val create : (formulaproofTheory_intf.actions ‑> t

Create a new instance of the theory

Assume the formulas in the slice, possibly pushing new formulas to be propagated, -and returns the result of the new assumptions.

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.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Make/index.html b/sidekick/Sidekick_sat/Make/index.html deleted file mode 100644 index 9d852164..00000000 --- a/sidekick/Sidekick_sat/Make/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Make (sidekick.Sidekick_sat.Make)

Module Sidekick_sat.Make

Parameters

Signature

type theory = E.t
module Proof : sig ... end
val create : ?⁠size:[ `Big | `Small | `Tiny ] ‑> unit ‑> t
type atom = formula
exception UndecidedLit
val theory : t ‑> theory
val assume : ?⁠permanent:bool ‑> t ‑> ?⁠tag:int ‑> atom list list ‑> unit
val add_clause : permanent:bool ‑> t ‑> clause ‑> unit
val solve : t ‑> ?⁠assumptions:atom list ‑> unit ‑> res
val new_atom : permanent:bool ‑> t ‑> atom ‑> unit
val unsat_core : Proof.proof ‑> clause list
val true_at_level0 : t ‑> atom ‑> bool
val get_tag : clause ‑> int option
val push : t ‑> unit
val pop : t ‑> unit
val actions : t ‑> (formulaProof.lemmaTheory_intf.actions
type solver = t
module Lit : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/Make/Atom/index.html b/sidekick/Sidekick_sat/Res/Make/Atom/index.html deleted file mode 100644 index a86b6f6a..00000000 --- a/sidekick/Sidekick_sat/Res/Make/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat.Res.Make.Atom)

Module Sidekick_sat.Res.Make.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/Make/Clause/index.html b/sidekick/Sidekick_sat/Res/Make/Clause/index.html deleted file mode 100644 index 33b9106e..00000000 --- a/sidekick/Sidekick_sat/Res/Make/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat.Res.Make.Clause)

Module Sidekick_sat.Res.Make.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/Make/argument-1-St/Atom/index.html b/sidekick/Sidekick_sat/Res/Make/argument-1-St/Atom/index.html deleted file mode 100644 index 0375bb68..00000000 --- a/sidekick/Sidekick_sat/Res/Make/argument-1-St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat.Res.Make.1-St.Atom)

Module Sidekick_sat.Res.Make.1-St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

val pp_a : t array Solver_types_intf.printer
val debug_a : t array Solver_types_intf.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/Make/argument-1-St/Clause/index.html b/sidekick/Sidekick_sat/Res/Make/argument-1-St/Clause/index.html deleted file mode 100644 index 3a2a02a5..00000000 --- a/sidekick/Sidekick_sat/Res/Make/argument-1-St/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat.Res.Make.1-St.Clause)

Module Sidekick_sat.Res.Make.1-St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/Make/argument-1-St/Formula/index.html b/sidekick/Sidekick_sat/Res/Make/argument-1-St/Formula/index.html deleted file mode 100644 index d51f1b0c..00000000 --- a/sidekick/Sidekick_sat/Res/Make/argument-1-St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat.Res.Make.1-St.Formula)

Module Sidekick_sat.Res.Make.1-St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/Make/argument-1-St/Var/index.html b/sidekick/Sidekick_sat/Res/Make/argument-1-St/Var/index.html deleted file mode 100644 index 6ff0dc27..00000000 --- a/sidekick/Sidekick_sat/Res/Make/argument-1-St/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat.Res.Make.1-St.Var)

Module Sidekick_sat.Res.Make.1-St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool
val make : state ‑> formula ‑> t * Theory_intf.negated

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/Make/argument-1-St/index.html b/sidekick/Sidekick_sat/Res/Make/argument-1-St/index.html deleted file mode 100644 index f3de6bc1..00000000 --- a/sidekick/Sidekick_sat/Res/Make/argument-1-St/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -1-St (sidekick.Sidekick_sat.Res.Make.1-St)

Parameter Sidekick_sat.Res.Make.1-St

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/Make/index.html b/sidekick/Sidekick_sat/Res/Make/index.html deleted file mode 100644 index 60cf5359..00000000 --- a/sidekick/Sidekick_sat/Res/Make/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -Make (sidekick.Sidekick_sat.Res.Make)

Module Sidekick_sat.Res.Make

Functor to create a module building proofs from a sat-solver unsat trace.

Parameters

Signature

module St = St

Module defining atom and clauses

include Sidekick_sat__.Res_intf.S with type atom = St.atom and type lemma = St.proof and type clause = St.clause and type formula = St.formula

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula = St.formula
type atom = St.atom
type lemma = St.proof
type clause = St.clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/index.html b/sidekick/Sidekick_sat/Res/index.html deleted file mode 100644 index a359e539..00000000 --- a/sidekick/Sidekick_sat/Res/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Res (sidekick.Sidekick_sat.Res)

Module Sidekick_sat.Res

Resolution proofs

This modules defines functions to create and manipulate resolution proofs.

Interface for a module manipulating resolution proofs.

module Make : functor (St : Sidekick_sat__.Solver_types.S) -> FULL with module St = St

Functor to create a module building proofs from a sat-solver unsat trace.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/module-type-FULL/Atom/index.html b/sidekick/Sidekick_sat/Res/module-type-FULL/Atom/index.html deleted file mode 100644 index 59716151..00000000 --- a/sidekick/Sidekick_sat/Res/module-type-FULL/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat.Res.FULL.Atom)

Module Sidekick_sat.Res.FULL.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/module-type-FULL/Clause/index.html b/sidekick/Sidekick_sat/Res/module-type-FULL/Clause/index.html deleted file mode 100644 index c3db6be4..00000000 --- a/sidekick/Sidekick_sat/Res/module-type-FULL/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat.Res.FULL.Clause)

Module Sidekick_sat.Res.FULL.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/module-type-FULL/St/Atom/index.html b/sidekick/Sidekick_sat/Res/module-type-FULL/St/Atom/index.html deleted file mode 100644 index 60db0d68..00000000 --- a/sidekick/Sidekick_sat/Res/module-type-FULL/St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat.Res.FULL.St.Atom)

Module Sidekick_sat.Res.FULL.St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

val pp_a : t array Solver_types_intf.printer
val debug_a : t array Solver_types_intf.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/module-type-FULL/St/Clause/index.html b/sidekick/Sidekick_sat/Res/module-type-FULL/St/Clause/index.html deleted file mode 100644 index d5243708..00000000 --- a/sidekick/Sidekick_sat/Res/module-type-FULL/St/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat.Res.FULL.St.Clause)

Module Sidekick_sat.Res.FULL.St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/module-type-FULL/St/Formula/index.html b/sidekick/Sidekick_sat/Res/module-type-FULL/St/Formula/index.html deleted file mode 100644 index b4e2ab70..00000000 --- a/sidekick/Sidekick_sat/Res/module-type-FULL/St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat.Res.FULL.St.Formula)

Module Sidekick_sat.Res.FULL.St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/module-type-FULL/St/Var/index.html b/sidekick/Sidekick_sat/Res/module-type-FULL/St/Var/index.html deleted file mode 100644 index 86ab9d49..00000000 --- a/sidekick/Sidekick_sat/Res/module-type-FULL/St/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat.Res.FULL.St.Var)

Module Sidekick_sat.Res.FULL.St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool
val make : state ‑> formula ‑> t * Theory_intf.negated

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/module-type-FULL/St/index.html b/sidekick/Sidekick_sat/Res/module-type-FULL/St/index.html deleted file mode 100644 index 5cebb6c5..00000000 --- a/sidekick/Sidekick_sat/Res/module-type-FULL/St/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -St (sidekick.Sidekick_sat.Res.FULL.St)

Module Sidekick_sat.Res.FULL.St

Module defining atom and clauses

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/module-type-FULL/index.html b/sidekick/Sidekick_sat/Res/module-type-FULL/index.html deleted file mode 100644 index 64f9a9fa..00000000 --- a/sidekick/Sidekick_sat/Res/module-type-FULL/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -FULL (sidekick.Sidekick_sat.Res.FULL)

Module type Sidekick_sat.Res.FULL

Module defining atom and clauses

include Sidekick_sat__.Res_intf.S with type atom = St.atom and type lemma = St.proof and type clause = St.clause and type formula = St.formula

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula = St.formula
type atom = St.atom
type lemma = St.proof
type clause = St.clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/module-type-S/Atom/index.html b/sidekick/Sidekick_sat/Res/module-type-S/Atom/index.html deleted file mode 100644 index cc17bcc5..00000000 --- a/sidekick/Sidekick_sat/Res/module-type-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat.Res.S.Atom)

Module Sidekick_sat.Res.S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/module-type-S/Clause/index.html b/sidekick/Sidekick_sat/Res/module-type-S/Clause/index.html deleted file mode 100644 index 15dcc5ec..00000000 --- a/sidekick/Sidekick_sat/Res/module-type-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat.Res.S.Clause)

Module Sidekick_sat.Res.S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Res/module-type-S/index.html b/sidekick/Sidekick_sat/Res/module-type-S/index.html deleted file mode 100644 index e35813d3..00000000 --- a/sidekick/Sidekick_sat/Res/module-type-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -S (sidekick.Sidekick_sat.Res.S)

Module type Sidekick_sat.Res.S

Interface for a module manipulating resolution proofs.

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Solver_types_intf/C_fields/index.html b/sidekick/Sidekick_sat/Solver_types_intf/C_fields/index.html deleted file mode 100644 index 64208a46..00000000 --- a/sidekick/Sidekick_sat/Solver_types_intf/C_fields/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -C_fields (sidekick.Sidekick_sat.Solver_types_intf.C_fields)

Module Sidekick_sat.Solver_types_intf.C_fields

type t = private int

Generative type of bitfields. Each instantiation of the functor -should create a new, incompatible type

val empty : t

Empty bitfields (all bits 0)

type field
val get : field ‑> t ‑> bool

Get the value of this field

val set : field ‑> bool ‑> t ‑> t

Set the value of this field

val mk_field : unit ‑> field

Make a new field

val freeze : unit ‑> unit

Prevent new fields from being added. From now on, creating -a field will raise Frozen

val total_width : unit ‑> int

Current width of the bitfield

\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Solver_types_intf/Var_fields/index.html b/sidekick/Sidekick_sat/Solver_types_intf/Var_fields/index.html deleted file mode 100644 index 17596524..00000000 --- a/sidekick/Sidekick_sat/Solver_types_intf/Var_fields/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var_fields (sidekick.Sidekick_sat.Solver_types_intf.Var_fields)

Module Sidekick_sat.Solver_types_intf.Var_fields

type t = private int

Generative type of bitfields. Each instantiation of the functor -should create a new, incompatible type

val empty : t

Empty bitfields (all bits 0)

type field
val get : field ‑> t ‑> bool

Get the value of this field

val set : field ‑> bool ‑> t ‑> t

Set the value of this field

val mk_field : unit ‑> field

Make a new field

val freeze : unit ‑> unit

Prevent new fields from being added. From now on, creating -a field will raise Frozen

val total_width : unit ‑> int

Current width of the bitfield

\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Solver_types_intf/index.html b/sidekick/Sidekick_sat/Solver_types_intf/index.html deleted file mode 100644 index c0ab2a6c..00000000 --- a/sidekick/Sidekick_sat/Solver_types_intf/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Solver_types_intf (sidekick.Sidekick_sat.Solver_types_intf)

Module Sidekick_sat.Solver_types_intf

Internal types (interface)

This modules defines the interface of most of the internal types -used in the core solver.

type 'a printer = Format.formatter ‑> 'a ‑> unit
module type S : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Atom/index.html b/sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Atom/index.html deleted file mode 100644 index 094047af..00000000 --- a/sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat.Solver_types_intf.S.Atom)

Module Sidekick_sat.Solver_types_intf.S.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

val pp : t printer
val pp_a : t array printer
val debug : t printer
val debug_a : t array printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Clause/index.html b/sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Clause/index.html deleted file mode 100644 index ced1857f..00000000 --- a/sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat.Solver_types_intf.S.Clause)

Module Sidekick_sat.Solver_types_intf.S.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
val pp : t printer
val pp_dimacs : t printer
val debug : t printer
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Formula/index.html b/sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Formula/index.html deleted file mode 100644 index 1ab18b39..00000000 --- a/sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat.Solver_types_intf.S.Formula)

Module Sidekick_sat.Solver_types_intf.S.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val pp : t printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Var/index.html b/sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Var/index.html deleted file mode 100644 index 5c6341f3..00000000 --- a/sidekick/Sidekick_sat/Solver_types_intf/module-type-S/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat.Solver_types_intf.S.Var)

Module Sidekick_sat.Solver_types_intf.S.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool
val make : state ‑> formula ‑> t * Theory_intf.negated

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Solver_types_intf/module-type-S/index.html b/sidekick/Sidekick_sat/Solver_types_intf/module-type-S/index.html deleted file mode 100644 index 5f12d3e7..00000000 --- a/sidekick/Sidekick_sat/Solver_types_intf/module-type-S/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -S (sidekick.Sidekick_sat.Solver_types_intf.S)

Module type Sidekick_sat.Solver_types_intf.S

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Theory_intf/index.html b/sidekick/Sidekick_sat/Theory_intf/index.html deleted file mode 100644 index 50123a43..00000000 --- a/sidekick/Sidekick_sat/Theory_intf/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -Theory_intf (sidekick.Sidekick_sat.Theory_intf)

Module Sidekick_sat.Theory_intf

SMT Theory

This module defines what a theory must implement in order to -be used in an SMT solver.

type negated =
| Negated

(** changed sign *)

| Same_sign

(** kept sign *)

This type is used during the normalisation of formulas. -See Expr_intf.S.norm for more details.

type ('formula, 'proof) res =
| Sat

(** The current set of assumptions is satisfiable. *)

| Unsat of 'formula list * 'proof

(** The current set of assumptions is *NOT* satisfiable, and here is a -theory tautology (with its proof), for which every literal is false -under the current assumptions. *)

Type returned by the theory. Formulas in the unsat clause must come from the -current set of assumptions, i.e must have been encountered in a slice.

type ('form, 'proof) actions =
| Actions of {
push_persistent : 'form Sidekick_util.IArray.t ‑> 'proof ‑> unit;

(** Allows to add a persistent clause to the solver. *)

push_local : 'form Sidekick_util.IArray.t ‑> 'proof ‑> unit;

(** Allows to add a local clause to the solver. The clause -will be removed after backtracking. *)

on_backtrack : (unit ‑> unit) ‑> unit;

(** on_backtrack f calls f when the main solver backtracks *)

propagate : 'form ‑> 'form list ‑> 'proof ‑> unit;

(** propagate lit causes proof informs the solver to propagate lit, with the reason -that the clause causes => lit is a theory tautology. It is faster than pushing -the associated clause but the clause will not be remembered by the sat solver, -i.e it will not be used by the solver to do boolean propagation. *)

}

Actions given to the theory during initialization, to be used -at any time

type ('form, 'proof) slice_actions =
| Slice_acts of {
slice_iter : ('form ‑> unit) ‑> unit;

(** iterate on the slice of the trail *)

}

(** The type for a slice. Slices are some kind of view of the current -propagation queue. They allow to look at the propagated literals, -and to add new clauses to the solver. *)

module type S : sig ... end

Signature for theories to be given to the Solver.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Theory_intf/module-type-S/Form/index.html b/sidekick/Sidekick_sat/Theory_intf/module-type-S/Form/index.html deleted file mode 100644 index bec12fd8..00000000 --- a/sidekick/Sidekick_sat/Theory_intf/module-type-S/Form/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Form (sidekick.Sidekick_sat.Theory_intf.S.Form)

Module Sidekick_sat.Theory_intf.S.Form

type t = formula

The type of atomic formulas.

val equal : t ‑> t ‑> bool

Equality over formulas.

val hash : t ‑> int

Hashing function for formulas. Should be such that two formulas equal according -to Expr_intf.S.equal have the same hash.

val print : Format.formatter ‑> t ‑> unit

Printing function used among other thing for debugging.

val dummy : t

Formula constant. A valid formula should never be physically equal to dummy

val neg : t ‑> t

Formula negation. Should be an involution, i.e. equal a (neg neg a) should -always hold.

val norm : t ‑> t * negated

Returns a 'normalized' form of the formula, possibly negated -(in which case return Negated). This function is used to recognize -the link between a formula a and its negation neg a, so the goal is -that a and neg a normalise to the same formula, -but one returns Same_sign and the other one returns Negated

\ No newline at end of file diff --git a/sidekick/Sidekick_sat/Theory_intf/module-type-S/index.html b/sidekick/Sidekick_sat/Theory_intf/module-type-S/index.html deleted file mode 100644 index 5ba02771..00000000 --- a/sidekick/Sidekick_sat/Theory_intf/module-type-S/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -S (sidekick.Sidekick_sat.Theory_intf.S)

Module type Sidekick_sat.Theory_intf.S

Signature for theories to be given to the Solver.

type t

State of the theory

type formula

The type of formulas. Should be compatble with Formula_intf.S

type proof

A custom type for the proofs of lemmas produced by the theory.

module Form : sig ... end
val create : (formulaproofactions ‑> t

Create a new instance of the theory

val assume : t ‑> (formulaproofslice_actions ‑> (formulaproofres

Assume the formulas in the slice, possibly pushing new formulas to be propagated, -and returns the result of the new assumptions.

val if_sat : t ‑> (formulaproofslice_actions ‑> (formulaproofres

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.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat/index.html b/sidekick/Sidekick_sat/index.html deleted file mode 100644 index cb961cc0..00000000 --- a/sidekick/Sidekick_sat/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Sidekick_sat (sidekick.Sidekick_sat)

Module Sidekick_sat

Main API

module Theory_intf : sig ... end

SMT Theory

module Solver_types_intf : sig ... end

Internal types (interface)

module Res : sig ... end

Resolution proofs

type negated = Theory_intf.negated =
| Negated
| Same_sign
type ('formula, 'proof) res = ('formula'proofTheory_intf.res =
| Sat

(** The current set of assumptions is satisfiable. *)

| Unsat of 'formula list * 'proof

(** The current set of assumptions is *NOT* satisfiable, and here is a -theory tautology (with its proof), for which every literal is false -under the current assumptions. *)

Type returned by the theory. Formulas in the unsat clause must come from the -current set of assumptions, i.e must have been encountered in a slice.

type 'form sat_state = 'form Sidekick_sat__.Solver_intf.sat_state =
| Sat_state of {
eval : 'form ‑> bool;
eval_level : 'form ‑> bool * int;
iter_trail : ('form ‑> unit) ‑> unit;
}
type ('clause, 'proof) unsat_state = ('clause'proofSidekick_sat__.Solver_intf.unsat_state =
| Unsat_state of {
unsat_conflict : unit ‑> 'clause;
get_proof : unit ‑> 'proof;
}
type 'clause export = 'clause Sidekick_sat__.Solver_intf.export = {
hyps : 'clause Sidekick_util.Vec.t;
history : 'clause Sidekick_util.Vec.t;
local : 'clause Sidekick_util.Vec.t;
}
type ('form, 'proof) actions = ('form'proofTheory_intf.actions =
| Actions of {
push_persistent : 'form Sidekick_util.IArray.t ‑> 'proof ‑> unit;
push_local : 'form Sidekick_util.IArray.t ‑> 'proof ‑> unit;
on_backtrack : (unit ‑> unit) ‑> unit;
propagate : 'form ‑> 'form list ‑> 'proof ‑> unit;
}
type ('form, 'proof) slice_actions = ('form'proofTheory_intf.slice_actions =
| Slice_acts of {
slice_iter : ('form ‑> unit) ‑> unit;
}
module Make : functor (E : Theory_intf.S) -> sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/module-type-S/Clause/index.html b/sidekick/Sidekick_sat/module-type-S/Clause/index.html deleted file mode 100644 index 25b2cf85..00000000 --- a/sidekick/Sidekick_sat/module-type-S/Clause/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Clause (sidekick.Sidekick_sat.S.Clause)

Module Sidekick_sat.S.Clause

type t = clause
val atoms : t ‑> atom Sidekick_util.IArray.t
val atoms_l : t ‑> atom list
val tag : t ‑> int option
val equal : t ‑> t ‑> bool
val make : ?⁠tag:int ‑> lit array ‑> t

Make a clause from this array of SAT literals. -The array's ownership is transferred to the clause, do not mutate it

val make_l : ?⁠tag:int ‑> lit list ‑> t
val of_atoms : solver ‑> ?⁠tag:int ‑> atom list ‑> t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/module-type-S/Formula/index.html b/sidekick/Sidekick_sat/module-type-S/Formula/index.html deleted file mode 100644 index ca8efa21..00000000 --- a/sidekick/Sidekick_sat/module-type-S/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat.S.Formula)

Module Sidekick_sat.S.Formula

type t = formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/module-type-S/Lit/index.html b/sidekick/Sidekick_sat/module-type-S/Lit/index.html deleted file mode 100644 index 2d3e2be4..00000000 --- a/sidekick/Sidekick_sat/module-type-S/Lit/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Lit (sidekick.Sidekick_sat.S.Lit)

Module Sidekick_sat.S.Lit

type t = lit
val make : solver ‑> atom ‑> t
val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/module-type-S/Proof/Atom/index.html b/sidekick/Sidekick_sat/module-type-S/Proof/Atom/index.html deleted file mode 100644 index 7821258a..00000000 --- a/sidekick/Sidekick_sat/module-type-S/Proof/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat.S.Proof.Atom)

Module Sidekick_sat.S.Proof.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/module-type-S/Proof/Clause/index.html b/sidekick/Sidekick_sat/module-type-S/Proof/Clause/index.html deleted file mode 100644 index 84253039..00000000 --- a/sidekick/Sidekick_sat/module-type-S/Proof/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat.S.Proof.Clause)

Module Sidekick_sat.S.Proof.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/module-type-S/Proof/index.html b/sidekick/Sidekick_sat/module-type-S/Proof/index.html deleted file mode 100644 index e2411038..00000000 --- a/sidekick/Sidekick_sat/module-type-S/Proof/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -Proof (sidekick.Sidekick_sat.S.Proof)

Module Sidekick_sat.S.Proof

A module to manipulate proofs.

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause = clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat/module-type-S/index.html b/sidekick/Sidekick_sat/module-type-S/index.html deleted file mode 100644 index 622123ad..00000000 --- a/sidekick/Sidekick_sat/module-type-S/index.html +++ /dev/null @@ -1,18 +0,0 @@ - -S (sidekick.Sidekick_sat.S)

Module type Sidekick_sat.S

Internal modules

-These are the internal modules used, you should probably not use them -if you're not familiar with the internals of mSAT.

type formula

user formulas

type lit

SAT solver literals

type clause

SAT solver clauses

type theory

user theory

module Proof : Res.S with type clause = clause

A module to manipulate proofs.

type t

Main solver type, containing all state for solving.

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Create new solver

  • Parameter size: the initial size of internal data structures. The bigger, -the faster, but also the more RAM it uses.

Types

type atom = formula

The type of atoms given by the module argument for formulas. -An atom is a user-defined atomic formula whose truth value is -picked by Msat.

type res =
| Sat of formula Sidekick_sat__.Solver_intf.sat_state

(** Returned when the solver reaches SAT, with a model *)

| Unsat of (clauseProof.proofSidekick_sat__.Solver_intf.unsat_state

(** Returned when the solver reaches UNSAT, with a proof *)

Result type for the solver

exception UndecidedLit

Exception raised by the evaluating functions when a literal -has not yet been assigned a value.

Base operations

val theory : t ‑> theory
val assume : ?⁠permanent:bool ‑> t ‑> ?⁠tag:int ‑> atom list list ‑> unit

Add the list of clauses to the current set of assumptions. -Modifies the sat solver state in place.

  • Parameter permanent: if true, kept after backtracking (default true)
val add_clause : permanent:bool ‑> t ‑> clause ‑> unit

Lower level addition of clauses. See Clause to create clauses.

  • Parameter permanent: if true, kept after backtracking
val solve : t ‑> ?⁠assumptions:atom list ‑> unit ‑> res

Try and solves the current set of clauses.

  • Parameter assumptions: additional atomic assumptions to be temporarily added. -The assumptions are just used for this call to solve, they are -not saved in the solver's state.
val new_atom : permanent:bool ‑> t ‑> atom ‑> unit

Add a new atom (i.e propositional formula) to the solver. -This formula will be decided on at some point during solving, -whether it appears in clauses or not.

  • Parameter permanent: if true, kept after backtracking
val unsat_core : Proof.proof ‑> clause list

Returns the unsat core of a given proof, ie a subset of all the added -clauses that is sufficient to establish unsatisfiability.

val true_at_level0 : t ‑> atom ‑> bool

true_at_level0 a returns true if a was proved at level0, i.e. -it must hold in all models

val get_tag : clause ‑> int option

Recover tag from a clause, if any

val push : t ‑> unit

Push a new save point. Clauses added after this call to push will -be added as normal, but the corresponding call to pop will -remove these clauses.

val pop : t ‑> unit

Return to last save point, discarding clauses added since last -call to push

val actions : t ‑> (formulaProof.lemmaTheory_intf.actions

Obtain actions

Re-export some functions

type solver = t
module Lit : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/.jbuilder-keep b/sidekick/Sidekick_sat__/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_sat__/Internal/Make/H/index.html b/sidekick/Sidekick_sat__/Internal/Make/H/index.html deleted file mode 100644 index 6b6b3d27..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/H/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -H (sidekick.Sidekick_sat__.Internal.Make.H)

Module Sidekick_sat__.Internal.Make.H

type elt = St.var
type t
val create : unit ‑> t
val decrease : t ‑> elt ‑> unit
val in_heap : elt ‑> bool
val size : t ‑> int
val is_empty : t ‑> bool
val clear : t ‑> unit
val insert : t ‑> elt ‑> unit
val grow_to_at_least : t ‑> int ‑> unit
val remove_min : t ‑> elt
val remove : t ‑> elt ‑> unit
val filter : t ‑> (elt ‑> bool) ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/Proof/Atom/index.html b/sidekick/Sidekick_sat__/Internal/Make/Proof/Atom/index.html deleted file mode 100644 index 6a196b39..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/Proof/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Internal.Make.Proof.Atom)

Module Sidekick_sat__.Internal.Make.Proof.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/Proof/Clause/Tbl/index.html b/sidekick/Sidekick_sat__/Internal/Make/Proof/Clause/Tbl/index.html deleted file mode 100644 index 1c1b5648..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/Proof/Clause/Tbl/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Tbl (sidekick.Sidekick_sat__.Internal.Make.Proof.Clause.Tbl)

Module Sidekick_sat__.Internal.Make.Proof.Clause.Tbl

type key = t
val create : int ‑> 'a t
val clear : 'a t ‑> unit
val reset : 'a t ‑> unit
val copy : 'a t ‑> 'a t
val add : 'a t ‑> key ‑> 'a ‑> unit
val remove : 'a t ‑> key ‑> unit
val find : 'a t ‑> key ‑> 'a
val find_opt : 'a t ‑> key ‑> 'a option
val find_all : 'a t ‑> key ‑> 'a list
val replace : 'a t ‑> key ‑> 'a ‑> unit
val mem : 'a t ‑> key ‑> bool
val iter : (key ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val filter_map_inplace : (key ‑> 'a ‑> 'a option) ‑> 'a t ‑> unit
val fold : (key ‑> 'a ‑> 'b ‑> 'b) ‑> 'a t ‑> 'b ‑> 'b
val length : 'a t ‑> int
val stats : 'a t ‑> Hashtbl.statistics
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/Proof/Clause/index.html b/sidekick/Sidekick_sat__/Internal/Make/Proof/Clause/index.html deleted file mode 100644 index 1435ff1e..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/Proof/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Internal.Make.Proof.Clause)

Module Sidekick_sat__.Internal.Make.Proof.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list
module Tbl : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/Proof/St/Atom/index.html b/sidekick/Sidekick_sat__/Internal/Make/Proof/St/Atom/index.html deleted file mode 100644 index fae582af..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/Proof/St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Internal.Make.Proof.St.Atom)

Module Sidekick_sat__.Internal.Make.Proof.St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t
val neg : t ‑> t
val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t
val mark : t ‑> unit
val seen : t ‑> bool
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/Proof/St/Clause/Tbl/index.html b/sidekick/Sidekick_sat__/Internal/Make/Proof/St/Clause/Tbl/index.html deleted file mode 100644 index fcfab7b6..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/Proof/St/Clause/Tbl/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Tbl (sidekick.Sidekick_sat__.Internal.Make.Proof.St.Clause.Tbl)

Module Sidekick_sat__.Internal.Make.Proof.St.Clause.Tbl

type key = t
type 'a t = 'a St.Clause.Tbl.t
val create : int ‑> 'a t
val clear : 'a t ‑> unit
val reset : 'a t ‑> unit
val copy : 'a t ‑> 'a t
val add : 'a t ‑> key ‑> 'a ‑> unit
val remove : 'a t ‑> key ‑> unit
val find : 'a t ‑> key ‑> 'a
val find_opt : 'a t ‑> key ‑> 'a option
val find_all : 'a t ‑> key ‑> 'a list
val replace : 'a t ‑> key ‑> 'a ‑> unit
val mem : 'a t ‑> key ‑> bool
val iter : (key ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val filter_map_inplace : (key ‑> 'a ‑> 'a option) ‑> 'a t ‑> unit
val fold : (key ‑> 'a ‑> 'b ‑> 'b) ‑> 'a t ‑> 'b ‑> 'b
val length : 'a t ‑> int
val stats : 'a t ‑> Hashtbl.statistics
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/Proof/St/Clause/index.html b/sidekick/Sidekick_sat__/Internal/Make/Proof/St/Clause/index.html deleted file mode 100644 index 6073fbca..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/Proof/St/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Internal.Make.Proof.St.Clause)

Module Sidekick_sat__.Internal.Make.Proof.St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t
val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t
val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/Proof/St/Formula/index.html b/sidekick/Sidekick_sat__/Internal/Make/Proof/St/Formula/index.html deleted file mode 100644 index b548f34e..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/Proof/St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__.Internal.Make.Proof.St.Formula)

Module Sidekick_sat__.Internal.Make.Proof.St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/Proof/St/Var/index.html b/sidekick/Sidekick_sat__/Internal/Make/Proof/St/Var/index.html deleted file mode 100644 index f4038d07..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/Proof/St/Var/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Var (sidekick.Sidekick_sat__.Internal.Make.Proof.St.Var)

Module Sidekick_sat__.Internal.Make.Proof.St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool
val seen_both : t ‑> bool
val clear : t ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/Proof/St/index.html b/sidekick/Sidekick_sat__/Internal/Make/Proof/St/index.html deleted file mode 100644 index abaab0f1..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/Proof/St/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -St (sidekick.Sidekick_sat__.Internal.Make.Proof.St)

Module Sidekick_sat__.Internal.Make.Proof.St

type t = St.t
val create : ?⁠size:[ `Big | `Small | `Tiny ] ‑> unit ‑> t
type formula = St.formula
type proof = St.proof
type var = St.var = {
vid : int;
pa : atom;
na : atom;
mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;
mutable v_level : int;
mutable v_idx : int;
mutable v_weight : float;
mutable reason : reason option;
}
type atom = St.atom = {
aid : int;
var : var;
neg : atom;
lit : formula;
mutable is_true : bool;
mutable watched : clause Sidekick_util.Vec.t;
}
type clause = St.clause = {
name : int;
tag : int option;
atoms : atom array;
mutable cpremise : premise;
mutable activity : float;
mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;
}
type reason = St.reason =
| Decision
| Bcp of clause
type premise = St.premise =
| Hyp
| Local
| Lemma of proof
| History of clause list
val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit
type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/Proof/Tbl/index.html b/sidekick/Sidekick_sat__/Internal/Make/Proof/Tbl/index.html deleted file mode 100644 index 9290aac3..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/Proof/Tbl/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Tbl (sidekick.Sidekick_sat__.Internal.Make.Proof.Tbl)

Module Sidekick_sat__.Internal.Make.Proof.Tbl

type key = proof
val create : int ‑> 'a t
val clear : 'a t ‑> unit
val reset : 'a t ‑> unit
val copy : 'a t ‑> 'a t
val add : 'a t ‑> key ‑> 'a ‑> unit
val remove : 'a t ‑> key ‑> unit
val find : 'a t ‑> key ‑> 'a
val find_opt : 'a t ‑> key ‑> 'a option
val find_all : 'a t ‑> key ‑> 'a list
val replace : 'a t ‑> key ‑> 'a ‑> unit
val mem : 'a t ‑> key ‑> bool
val iter : (key ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val filter_map_inplace : (key ‑> 'a ‑> 'a option) ‑> 'a t ‑> unit
val fold : (key ‑> 'a ‑> 'b ‑> 'b) ‑> 'a t ‑> 'b ‑> 'b
val length : 'a t ‑> int
val stats : 'a t ‑> Hashtbl.statistics
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/Proof/index.html b/sidekick/Sidekick_sat__/Internal/Make/Proof/index.html deleted file mode 100644 index 79e92521..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/Proof/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Proof (sidekick.Sidekick_sat__.Internal.Make.Proof)

Module Sidekick_sat__.Internal.Make.Proof

module St : sig ... end
exception Insufficient_hyps
type formula = St.formula
type atom = St.atom
type lemma = St.proof
type clause = St.clause
type proof_node = Sidekick_sat__Res.Make(St).proof_node = {
conclusion : clause;
step : step;
}
type step = Sidekick_sat__Res.Make(St).step =
| Hypothesis
| Assumption
| Lemma of lemma
| Duplicate of proof * atom list
| Resolution of proof * proof * atom
val prove : clause ‑> proof
val prove_unsat : clause ‑> proof
val prove_atom : atom ‑> proof option
val is_leaf : step ‑> bool
val expl : step ‑> string
val parents : step ‑> proof list
val expand : proof ‑> proof_node
val conclusion : proof ‑> clause
val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a
val unsat_core : proof ‑> clause list
val check : proof ‑> unit
module Clause : sig ... end
module Atom : sig ... end
module Tbl : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Atom/index.html b/sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Atom/index.html deleted file mode 100644 index cfac6c0d..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Internal.Make.1-St.Atom)

Module Sidekick_sat__.Internal.Make.1-St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Clause/index.html b/sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Clause/index.html deleted file mode 100644 index 4ed1d6d1..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Internal.Make.1-St.Clause)

Module Sidekick_sat__.Internal.Make.1-St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Formula/index.html b/sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Formula/index.html deleted file mode 100644 index 1e596625..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__.Internal.Make.1-St.Formula)

Module Sidekick_sat__.Internal.Make.1-St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Var/index.html b/sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Var/index.html deleted file mode 100644 index fb0b2571..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/argument-1-St/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__.Internal.Make.1-St.Var)

Module Sidekick_sat__.Internal.Make.1-St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/argument-1-St/index.html b/sidekick/Sidekick_sat__/Internal/Make/argument-1-St/index.html deleted file mode 100644 index 510bd0d5..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/argument-1-St/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -1-St (sidekick.Sidekick_sat__.Internal.Make.1-St)

Parameter Sidekick_sat__.Internal.Make.1-St

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/argument-2-Th/Form/index.html b/sidekick/Sidekick_sat__/Internal/Make/argument-2-Th/Form/index.html deleted file mode 100644 index 6d1f160d..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/argument-2-Th/Form/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Form (sidekick.Sidekick_sat__.Internal.Make.2-Th.Form)

Module Sidekick_sat__.Internal.Make.2-Th.Form

type t = formula

The type of atomic formulas.

val equal : t ‑> t ‑> bool

Equality over formulas.

val hash : t ‑> int

Hashing function for formulas. Should be such that two formulas equal according -to Expr_intf.S.equal have the same hash.

val print : Format.formatter ‑> t ‑> unit

Printing function used among other thing for debugging.

val dummy : t

Formula constant. A valid formula should never be physically equal to dummy

val neg : t ‑> t

Formula negation. Should be an involution, i.e. equal a (neg neg a) should -always hold.

Returns a 'normalized' form of the formula, possibly negated -(in which case return Negated). This function is used to recognize -the link between a formula a and its negation neg a, so the goal is -that a and neg a normalise to the same formula, -but one returns Same_sign and the other one returns Negated

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/argument-2-Th/index.html b/sidekick/Sidekick_sat__/Internal/Make/argument-2-Th/index.html deleted file mode 100644 index 3ae2eb91..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/argument-2-Th/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -2-Th (sidekick.Sidekick_sat__.Internal.Make.2-Th)

Parameter Sidekick_sat__.Internal.Make.2-Th

type t

State of the theory

type formula = St.formula

The type of formulas. Should be compatble with Formula_intf.S

type proof = St.proof

A custom type for the proofs of lemmas produced by the theory.

module Form : sig ... end

Create a new instance of the theory

Assume the formulas in the slice, possibly pushing new formulas to be propagated, -and returns the result of the new assumptions.

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.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/Make/index.html b/sidekick/Sidekick_sat__/Internal/Make/index.html deleted file mode 100644 index e6767d79..00000000 --- a/sidekick/Sidekick_sat__/Internal/Make/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Make (sidekick.Sidekick_sat__.Internal.Make)

Module Sidekick_sat__.Internal.Make

Parameters

Signature

module Proof : sig ... end
module H : sig ... end
exception Sat
exception Unsat
exception UndecidedLit
exception Restart
exception Conflict of St.clause
val var_decay : float
val clause_decay : float
val restart_first : int
val learntsize_factor : float
val restart_inc : float
val learntsize_inc : float
type t = {
st : St.t;
th : Th.t lazy_t;
clauses_hyps : St.clause Sidekick_util.Vec.t;
clauses_learnt : St.clause Sidekick_util.Vec.t;
clauses_temp : St.clause Sidekick_util.Vec.t;
mutable unsat_conflict : St.clause option;
mutable next_decision : St.atom option;
trail : St.atom Sidekick_util.Vec.t;
elt_levels : int Sidekick_util.Vec.t;
user_levels : int Sidekick_util.Vec.t;
backtrack_levels : int Sidekick_util.Vec.t;
backtrack : (unit ‑> unit) Sidekick_util.Vec.t;

(** Actions to call when backtracking *)

to_redo_after_backtrack : (unit ‑> unit) Sidekick_util.Vec.t;

(** Actions to re-do after backtracking *)

mutable th_head : int;
mutable elt_head : int;
order : H.t;
mutable var_incr : float;
mutable clause_incr : float;
to_add : (bool * St.clause) CCVector.vector;
mutable dirty : bool;
}
val create_ : st:St.t ‑> size_trail:int ‑> size_lvl:int ‑> Th.t lazy_t ‑> t
val theory : t ‑> Th.t
val at_level_0 : t ‑> bool
val on_backtrack : t ‑> (unit ‑> unit) ‑> unit
val st : t ‑> St.t
val nb_clauses : t ‑> int
val decision_level : t ‑> int
val base_level : t ‑> int
val redo_down_to_level_0 : t ‑> (unit ‑> unit) ‑> unit
val to_float : int ‑> float
val to_int : float ‑> int
val is_unsat : t ‑> bool
val insert_var_order : t ‑> St.var ‑> unit
val new_atom : permanent:bool ‑> t ‑> St.formula ‑> St.atom
val var_decay_activity : t ‑> unit
val clause_decay_activity : t ‑> unit
val var_bump_activity : t ‑> H.elt ‑> unit
val clause_bump_activity : t ‑> St.clause ‑> unit
exception Trivial
val arr_to_list : 'a array ‑> int ‑> 'a list
val eliminate_duplicates : St.Clause.t ‑> St.clause
val partition : St.atom array ‑> St.atom list * St.clause list
val new_decision_level : t ‑> unit
val attach_clause : t ‑> St.clause ‑> unit
val backtrack_down_to : t ‑> int ‑> unit
val cancel_until : t ‑> int ‑> unit
val report_unsat : t ‑> St.Clause.t ‑> 'a
val simpl_reason : St.reason ‑> St.reason
val enqueue_bool : t ‑> St.Atom.t ‑> St.reason ‑> unit
val swap_arr : 'a array ‑> int ‑> int ‑> unit
val put_high_level_atoms_first : St.atom array ‑> unit
val backtrack_lvl : t ‑> St.atom list ‑> int * bool
type conflict_res = {
cr_backtrack_lvl : int;
cr_learnt : St.atom list;
cr_history : St.clause list;
cr_is_uip : bool;
}
val get_atom : t ‑> int ‑> St.atom
val analyze_sat : t ‑> St.Clause.t ‑> conflict_res
val analyze : t ‑> St.Clause.t ‑> conflict_res
val record_learnt_clause : t ‑> St.clause ‑> conflict_res ‑> unit
val add_boolean_conflict : t ‑> St.clause ‑> unit
val clause_vector : t ‑> St.clause ‑> St.clause Sidekick_util.Vec.t
val add_clause_permanent : t ‑> St.atom list ‑> St.clause ‑> unit
val add_clause : permanent:bool ‑> t ‑> St.clause ‑> unit
val add_clause_user : permanent:bool ‑> t ‑> St.clause ‑> unit
type watch_res =
| Watch_kept
| Watch_removed
exception Exn_remove_watch
val propagate_in_clause : t ‑> St.atom ‑> St.clause ‑> watch_res
val propagate_atom : t ‑> St.atom ‑> unit
val slice_iter : t ‑> int ‑> int ‑> (St.formula ‑> unit) ‑> unit
val act_push_ : permanent:bool ‑> t ‑> St.formula Sidekick_util.IArray.t ‑> St.proof ‑> unit
val act_push_local : t ‑> St.formula Sidekick_util.IArray.t ‑> St.proof ‑> unit
val act_push_persistent : t ‑> St.formula Sidekick_util.IArray.t ‑> St.proof ‑> unit
val act_propagate : t ‑> St.formula ‑> St.formula list ‑> St.proof ‑> unit
val current_slice : t ‑> int ‑> (St.formula'aSidekick_sat.Theory_intf.slice_actions
val act_at_level_0 : t ‑> unit ‑> bool
val create : ?⁠size:[ `Big | `Small | `Tiny ] ‑> ?⁠st:St.t ‑> unit ‑> t
val propagation_fixpoint : t ‑> bool
val theory_propagate : t ‑> St.clause option
val propagate : t ‑> St.clause option
val reduce_db : unit ‑> unit
val pick_branch_aux : t ‑> St.Atom.t ‑> unit
val pick_branch_lit : t ‑> unit
val eval_level : t ‑> St.formula ‑> bool * int
val eval : t ‑> St.formula ‑> bool
val unsat_conflict : t ‑> St.clause option
val pp_trail : t ‑> unit
val solve : t ‑> unit
val assume : permanent:bool ‑> t ‑> ?⁠tag:int ‑> St.formula list list ‑> unit
val push : t ‑> unit
val pop : t ‑> unit
val local : t ‑> St.formula list ‑> unit
val check_clause : St.Clause.t ‑> bool
val check_vec : St.Clause.t Sidekick_util.Vec.t ‑> bool
val check_stack : St.Clause.t Stack.t ‑> bool
val check : t ‑> bool
val history : t ‑> St.clause Sidekick_util.Vec.t
val trail : t ‑> St.atom Sidekick_util.Vec.t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Internal/index.html b/sidekick/Sidekick_sat__/Internal/index.html deleted file mode 100644 index 7d010111..00000000 --- a/sidekick/Sidekick_sat__/Internal/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Internal (sidekick.Sidekick_sat__.Internal)

Module Sidekick_sat__.Internal

module Make : functor (St : Sidekick_sat__.Solver_types.S) -> functor (Th : Sidekick_sat.Theory_intf.S with type formula = St.formula and type proof = St.proof) -> sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/Make/Atom/index.html b/sidekick/Sidekick_sat__/Res/Make/Atom/index.html deleted file mode 100644 index 295327a5..00000000 --- a/sidekick/Sidekick_sat__/Res/Make/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Res.Make.Atom)

Module Sidekick_sat__.Res.Make.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/Make/Clause/index.html b/sidekick/Sidekick_sat__/Res/Make/Clause/index.html deleted file mode 100644 index 0e3b0605..00000000 --- a/sidekick/Sidekick_sat__/Res/Make/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Res.Make.Clause)

Module Sidekick_sat__.Res.Make.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/Make/argument-1-St/Atom/index.html b/sidekick/Sidekick_sat__/Res/Make/argument-1-St/Atom/index.html deleted file mode 100644 index e48d53f6..00000000 --- a/sidekick/Sidekick_sat__/Res/Make/argument-1-St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Res.Make.1-St.Atom)

Module Sidekick_sat__.Res.Make.1-St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/Make/argument-1-St/Clause/index.html b/sidekick/Sidekick_sat__/Res/Make/argument-1-St/Clause/index.html deleted file mode 100644 index e0dbd9b2..00000000 --- a/sidekick/Sidekick_sat__/Res/Make/argument-1-St/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Res.Make.1-St.Clause)

Module Sidekick_sat__.Res.Make.1-St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/Make/argument-1-St/Formula/index.html b/sidekick/Sidekick_sat__/Res/Make/argument-1-St/Formula/index.html deleted file mode 100644 index 7dbae553..00000000 --- a/sidekick/Sidekick_sat__/Res/Make/argument-1-St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__.Res.Make.1-St.Formula)

Module Sidekick_sat__.Res.Make.1-St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/Make/argument-1-St/Var/index.html b/sidekick/Sidekick_sat__/Res/Make/argument-1-St/Var/index.html deleted file mode 100644 index 26de18eb..00000000 --- a/sidekick/Sidekick_sat__/Res/Make/argument-1-St/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__.Res.Make.1-St.Var)

Module Sidekick_sat__.Res.Make.1-St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/Make/argument-1-St/index.html b/sidekick/Sidekick_sat__/Res/Make/argument-1-St/index.html deleted file mode 100644 index 699588b1..00000000 --- a/sidekick/Sidekick_sat__/Res/Make/argument-1-St/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -1-St (sidekick.Sidekick_sat__.Res.Make.1-St)

Parameter Sidekick_sat__.Res.Make.1-St

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/Make/index.html b/sidekick/Sidekick_sat__/Res/Make/index.html deleted file mode 100644 index f2ced771..00000000 --- a/sidekick/Sidekick_sat__/Res/Make/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -Make (sidekick.Sidekick_sat__.Res.Make)

Module Sidekick_sat__.Res.Make

Functor to create a module building proofs from a sat-solver unsat trace.

Parameters

Signature

module St = St

Module defining atom and clauses

include Sidekick_sat__.Res_intf.S with type atom = St.atom and type lemma = St.proof and type clause = St.clause and type formula = St.formula

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula = St.formula
type atom = St.atom
type lemma = St.proof
type clause = St.clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/index.html b/sidekick/Sidekick_sat__/Res/index.html deleted file mode 100644 index cf6cc934..00000000 --- a/sidekick/Sidekick_sat__/Res/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Res (sidekick.Sidekick_sat__.Res)

Module Sidekick_sat__.Res

Resolution proofs

This modules defines functions to create and manipulate resolution proofs.

Interface for a module manipulating resolution proofs.

module Make : functor (St : Sidekick_sat__.Solver_types.S) -> FULL with module St = St

Functor to create a module building proofs from a sat-solver unsat trace.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/module-type-FULL/Atom/index.html b/sidekick/Sidekick_sat__/Res/module-type-FULL/Atom/index.html deleted file mode 100644 index 3e9251e9..00000000 --- a/sidekick/Sidekick_sat__/Res/module-type-FULL/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Res.FULL.Atom)

Module Sidekick_sat__.Res.FULL.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/module-type-FULL/Clause/index.html b/sidekick/Sidekick_sat__/Res/module-type-FULL/Clause/index.html deleted file mode 100644 index 8cde5e31..00000000 --- a/sidekick/Sidekick_sat__/Res/module-type-FULL/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Res.FULL.Clause)

Module Sidekick_sat__.Res.FULL.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/module-type-FULL/St/Atom/index.html b/sidekick/Sidekick_sat__/Res/module-type-FULL/St/Atom/index.html deleted file mode 100644 index 5a2c974b..00000000 --- a/sidekick/Sidekick_sat__/Res/module-type-FULL/St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Res.FULL.St.Atom)

Module Sidekick_sat__.Res.FULL.St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/module-type-FULL/St/Clause/index.html b/sidekick/Sidekick_sat__/Res/module-type-FULL/St/Clause/index.html deleted file mode 100644 index 309e8bb9..00000000 --- a/sidekick/Sidekick_sat__/Res/module-type-FULL/St/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Res.FULL.St.Clause)

Module Sidekick_sat__.Res.FULL.St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/module-type-FULL/St/Formula/index.html b/sidekick/Sidekick_sat__/Res/module-type-FULL/St/Formula/index.html deleted file mode 100644 index d5aed3c1..00000000 --- a/sidekick/Sidekick_sat__/Res/module-type-FULL/St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__.Res.FULL.St.Formula)

Module Sidekick_sat__.Res.FULL.St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/module-type-FULL/St/Var/index.html b/sidekick/Sidekick_sat__/Res/module-type-FULL/St/Var/index.html deleted file mode 100644 index 6240b5e5..00000000 --- a/sidekick/Sidekick_sat__/Res/module-type-FULL/St/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__.Res.FULL.St.Var)

Module Sidekick_sat__.Res.FULL.St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/module-type-FULL/St/index.html b/sidekick/Sidekick_sat__/Res/module-type-FULL/St/index.html deleted file mode 100644 index 1a8d1b43..00000000 --- a/sidekick/Sidekick_sat__/Res/module-type-FULL/St/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -St (sidekick.Sidekick_sat__.Res.FULL.St)

Module Sidekick_sat__.Res.FULL.St

Module defining atom and clauses

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/module-type-FULL/index.html b/sidekick/Sidekick_sat__/Res/module-type-FULL/index.html deleted file mode 100644 index 8ca50412..00000000 --- a/sidekick/Sidekick_sat__/Res/module-type-FULL/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -FULL (sidekick.Sidekick_sat__.Res.FULL)

Module type Sidekick_sat__.Res.FULL

Module defining atom and clauses

include Sidekick_sat__.Res_intf.S with type atom = St.atom and type lemma = St.proof and type clause = St.clause and type formula = St.formula

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula = St.formula
type atom = St.atom
type lemma = St.proof
type clause = St.clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/module-type-S/Atom/index.html b/sidekick/Sidekick_sat__/Res/module-type-S/Atom/index.html deleted file mode 100644 index 3cb66e84..00000000 --- a/sidekick/Sidekick_sat__/Res/module-type-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Res.S.Atom)

Module Sidekick_sat__.Res.S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/module-type-S/Clause/index.html b/sidekick/Sidekick_sat__/Res/module-type-S/Clause/index.html deleted file mode 100644 index 967477dc..00000000 --- a/sidekick/Sidekick_sat__/Res/module-type-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Res.S.Clause)

Module Sidekick_sat__.Res.S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res/module-type-S/index.html b/sidekick/Sidekick_sat__/Res/module-type-S/index.html deleted file mode 100644 index 7227136d..00000000 --- a/sidekick/Sidekick_sat__/Res/module-type-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -S (sidekick.Sidekick_sat__.Res.S)

Module type Sidekick_sat__.Res.S

Interface for a module manipulating resolution proofs.

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res_intf/index.html b/sidekick/Sidekick_sat__/Res_intf/index.html deleted file mode 100644 index a025a38b..00000000 --- a/sidekick/Sidekick_sat__/Res_intf/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Res_intf (sidekick.Sidekick_sat__.Res_intf)

Module Sidekick_sat__.Res_intf

Interface for proofs

type 'a printer = Format.formatter ‑> 'a ‑> unit
module type S : sig ... end
module type FULL : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/Atom/index.html b/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/Atom/index.html deleted file mode 100644 index 0a7c2bfa..00000000 --- a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Res_intf.FULL.Atom)

Module Sidekick_sat__.Res_intf.FULL.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
val pp : t printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/Clause/index.html b/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/Clause/index.html deleted file mode 100644 index e9f0e35a..00000000 --- a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Res_intf.FULL.Clause)

Module Sidekick_sat__.Res_intf.FULL.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list
val pp : t printer

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Atom/index.html b/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Atom/index.html deleted file mode 100644 index 0609341b..00000000 --- a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Res_intf.FULL.St.Atom)

Module Sidekick_sat__.Res_intf.FULL.St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Clause/index.html b/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Clause/index.html deleted file mode 100644 index d8b0dcd3..00000000 --- a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Res_intf.FULL.St.Clause)

Module Sidekick_sat__.Res_intf.FULL.St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Formula/index.html b/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Formula/index.html deleted file mode 100644 index a6112416..00000000 --- a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__.Res_intf.FULL.St.Formula)

Module Sidekick_sat__.Res_intf.FULL.St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Var/index.html b/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Var/index.html deleted file mode 100644 index 277bc7c7..00000000 --- a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__.Res_intf.FULL.St.Var)

Module Sidekick_sat__.Res_intf.FULL.St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/index.html b/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/index.html deleted file mode 100644 index c21e0882..00000000 --- a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/St/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -St (sidekick.Sidekick_sat__.Res_intf.FULL.St)

Module Sidekick_sat__.Res_intf.FULL.St

Module defining atom and clauses

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/index.html b/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/index.html deleted file mode 100644 index b501f3c2..00000000 --- a/sidekick/Sidekick_sat__/Res_intf/module-type-FULL/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -FULL (sidekick.Sidekick_sat__.Res_intf.FULL)

Module type Sidekick_sat__.Res_intf.FULL

Module defining atom and clauses

include S with type atom = St.atom and type lemma = St.proof and type clause = St.clause and type formula = St.formula

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula = St.formula
type atom = St.atom
type lemma = St.proof
type clause = St.clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res_intf/module-type-S/Atom/index.html b/sidekick/Sidekick_sat__/Res_intf/module-type-S/Atom/index.html deleted file mode 100644 index f7d72581..00000000 --- a/sidekick/Sidekick_sat__/Res_intf/module-type-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Res_intf.S.Atom)

Module Sidekick_sat__.Res_intf.S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
val pp : t printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res_intf/module-type-S/Clause/index.html b/sidekick/Sidekick_sat__/Res_intf/module-type-S/Clause/index.html deleted file mode 100644 index 85eb3488..00000000 --- a/sidekick/Sidekick_sat__/Res_intf/module-type-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Res_intf.S.Clause)

Module Sidekick_sat__.Res_intf.S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list
val pp : t printer

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Res_intf/module-type-S/index.html b/sidekick/Sidekick_sat__/Res_intf/module-type-S/index.html deleted file mode 100644 index ce06a822..00000000 --- a/sidekick/Sidekick_sat__/Res_intf/module-type-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -S (sidekick.Sidekick_sat__.Res_intf.S)

Module type Sidekick_sat__.Res_intf.S

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/Make/Clause/index.html b/sidekick/Sidekick_sat__/Solver/Make/Clause/index.html deleted file mode 100644 index e6b758cf..00000000 --- a/sidekick/Sidekick_sat__/Solver/Make/Clause/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Solver.Make.Clause)

Module Sidekick_sat__.Solver.Make.Clause

type t = clause
val atoms : t ‑> atom Sidekick_util.IArray.t
val atoms_l : t ‑> atom list
val tag : t ‑> int option
val equal : t ‑> t ‑> bool
val make : ?⁠tag:int ‑> lit array ‑> t

Make a clause from this array of SAT literals. -The array's ownership is transferred to the clause, do not mutate it

val make_l : ?⁠tag:int ‑> lit list ‑> t
val of_atoms : solver ‑> ?⁠tag:int ‑> atom list ‑> t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/Make/Formula/index.html b/sidekick/Sidekick_sat__/Solver/Make/Formula/index.html deleted file mode 100644 index 1c73892a..00000000 --- a/sidekick/Sidekick_sat__/Solver/Make/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__.Solver.Make.Formula)

Module Sidekick_sat__.Solver.Make.Formula

type t = formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/Make/Lit/index.html b/sidekick/Sidekick_sat__/Solver/Make/Lit/index.html deleted file mode 100644 index 0cb154d5..00000000 --- a/sidekick/Sidekick_sat__/Solver/Make/Lit/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Lit (sidekick.Sidekick_sat__.Solver.Make.Lit)

Module Sidekick_sat__.Solver.Make.Lit

type t = lit
val make : solver ‑> atom ‑> t
val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/Make/Proof/Atom/index.html b/sidekick/Sidekick_sat__/Solver/Make/Proof/Atom/index.html deleted file mode 100644 index 7e606f6c..00000000 --- a/sidekick/Sidekick_sat__/Solver/Make/Proof/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Solver.Make.Proof.Atom)

Module Sidekick_sat__.Solver.Make.Proof.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/Make/Proof/Clause/index.html b/sidekick/Sidekick_sat__/Solver/Make/Proof/Clause/index.html deleted file mode 100644 index 505328ef..00000000 --- a/sidekick/Sidekick_sat__/Solver/Make/Proof/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Solver.Make.Proof.Clause)

Module Sidekick_sat__.Solver.Make.Proof.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/Make/Proof/index.html b/sidekick/Sidekick_sat__/Solver/Make/Proof/index.html deleted file mode 100644 index 0a3a00eb..00000000 --- a/sidekick/Sidekick_sat__/Solver/Make/Proof/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -Proof (sidekick.Sidekick_sat__.Solver.Make.Proof)

Module Sidekick_sat__.Solver.Make.Proof

A module to manipulate proofs.

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma = St.proof
type clause = clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Atom/index.html b/sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Atom/index.html deleted file mode 100644 index 863f39f5..00000000 --- a/sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Solver.Make.1-St.Atom)

Module Sidekick_sat__.Solver.Make.1-St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Clause/index.html b/sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Clause/index.html deleted file mode 100644 index 88a06c89..00000000 --- a/sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Solver.Make.1-St.Clause)

Module Sidekick_sat__.Solver.Make.1-St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Formula/index.html b/sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Formula/index.html deleted file mode 100644 index a415a9ce..00000000 --- a/sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__.Solver.Make.1-St.Formula)

Module Sidekick_sat__.Solver.Make.1-St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Var/index.html b/sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Var/index.html deleted file mode 100644 index 0565b02e..00000000 --- a/sidekick/Sidekick_sat__/Solver/Make/argument-1-St/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__.Solver.Make.1-St.Var)

Module Sidekick_sat__.Solver.Make.1-St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/Make/argument-1-St/index.html b/sidekick/Sidekick_sat__/Solver/Make/argument-1-St/index.html deleted file mode 100644 index df2ba8e2..00000000 --- a/sidekick/Sidekick_sat__/Solver/Make/argument-1-St/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -1-St (sidekick.Sidekick_sat__.Solver.Make.1-St)

Parameter Sidekick_sat__.Solver.Make.1-St

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/Make/argument-2-Th/Form/index.html b/sidekick/Sidekick_sat__/Solver/Make/argument-2-Th/Form/index.html deleted file mode 100644 index 98773c8f..00000000 --- a/sidekick/Sidekick_sat__/Solver/Make/argument-2-Th/Form/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Form (sidekick.Sidekick_sat__.Solver.Make.2-Th.Form)

Module Sidekick_sat__.Solver.Make.2-Th.Form

type t = formula

The type of atomic formulas.

val equal : t ‑> t ‑> bool

Equality over formulas.

val hash : t ‑> int

Hashing function for formulas. Should be such that two formulas equal according -to Expr_intf.S.equal have the same hash.

val print : Format.formatter ‑> t ‑> unit

Printing function used among other thing for debugging.

val dummy : t

Formula constant. A valid formula should never be physically equal to dummy

val neg : t ‑> t

Formula negation. Should be an involution, i.e. equal a (neg neg a) should -always hold.

Returns a 'normalized' form of the formula, possibly negated -(in which case return Negated). This function is used to recognize -the link between a formula a and its negation neg a, so the goal is -that a and neg a normalise to the same formula, -but one returns Same_sign and the other one returns Negated

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/Make/argument-2-Th/index.html b/sidekick/Sidekick_sat__/Solver/Make/argument-2-Th/index.html deleted file mode 100644 index 088ccdbe..00000000 --- a/sidekick/Sidekick_sat__/Solver/Make/argument-2-Th/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -2-Th (sidekick.Sidekick_sat__.Solver.Make.2-Th)

Parameter Sidekick_sat__.Solver.Make.2-Th

type t

State of the theory

type formula = St.formula

The type of formulas. Should be compatble with Formula_intf.S

type proof = St.proof

A custom type for the proofs of lemmas produced by the theory.

module Form : sig ... end

Create a new instance of the theory

Assume the formulas in the slice, possibly pushing new formulas to be propagated, -and returns the result of the new assumptions.

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.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/Make/index.html b/sidekick/Sidekick_sat__/Solver/Make/index.html deleted file mode 100644 index 8c90273d..00000000 --- a/sidekick/Sidekick_sat__/Solver/Make/index.html +++ /dev/null @@ -1,18 +0,0 @@ - -Make (sidekick.Sidekick_sat__.Solver.Make)

Module Sidekick_sat__.Solver.Make

Functor to make a safe external interface.

Parameters

Signature

Internal modules

-These are the internal modules used, you should probably not use them -if you're not familiar with the internals of mSAT.

type formula = St.formula

user formulas

type lit

SAT solver literals

type clause = St.clause

SAT solver clauses

type theory = Th.t

user theory

module Proof : Sidekick_sat.Res.S with type clause = clause and type lemma = St.proof

A module to manipulate proofs.

type t

Main solver type, containing all state for solving.

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Create new solver

  • Parameter size: the initial size of internal data structures. The bigger, -the faster, but also the more RAM it uses.

Types

type atom = formula

The type of atoms given by the module argument for formulas. -An atom is a user-defined atomic formula whose truth value is -picked by Msat.

type res =
| Sat of formula Sidekick_sat__.Solver_intf.sat_state

(** Returned when the solver reaches SAT, with a model *)

| Unsat of (clauseProof.proofSidekick_sat__.Solver_intf.unsat_state

(** Returned when the solver reaches UNSAT, with a proof *)

Result type for the solver

exception UndecidedLit

Exception raised by the evaluating functions when a literal -has not yet been assigned a value.

Base operations

val theory : t ‑> theory
val assume : ?⁠permanent:bool ‑> t ‑> ?⁠tag:int ‑> atom list list ‑> unit

Add the list of clauses to the current set of assumptions. -Modifies the sat solver state in place.

  • Parameter permanent: if true, kept after backtracking (default true)
val add_clause : permanent:bool ‑> t ‑> clause ‑> unit

Lower level addition of clauses. See Clause to create clauses.

  • Parameter permanent: if true, kept after backtracking
val solve : t ‑> ?⁠assumptions:atom list ‑> unit ‑> res

Try and solves the current set of clauses.

  • Parameter assumptions: additional atomic assumptions to be temporarily added. -The assumptions are just used for this call to solve, they are -not saved in the solver's state.
val new_atom : permanent:bool ‑> t ‑> atom ‑> unit

Add a new atom (i.e propositional formula) to the solver. -This formula will be decided on at some point during solving, -whether it appears in clauses or not.

  • Parameter permanent: if true, kept after backtracking
val unsat_core : Proof.proof ‑> clause list

Returns the unsat core of a given proof, ie a subset of all the added -clauses that is sufficient to establish unsatisfiability.

val true_at_level0 : t ‑> atom ‑> bool

true_at_level0 a returns true if a was proved at level0, i.e. -it must hold in all models

val get_tag : clause ‑> int option

Recover tag from a clause, if any

val push : t ‑> unit

Push a new save point. Clauses added after this call to push will -be added as normal, but the corresponding call to pop will -remove these clauses.

val pop : t ‑> unit

Return to last save point, discarding clauses added since last -call to push

Obtain actions

Re-export some functions

type solver = t
module Lit : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/index.html b/sidekick/Sidekick_sat__/Solver/index.html deleted file mode 100644 index 8d61c0cd..00000000 --- a/sidekick/Sidekick_sat__/Solver/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Solver (sidekick.Sidekick_sat__.Solver)

Module Sidekick_sat__.Solver

SAT safe interface

This module defines a safe interface for the core solver. -It is the basis of the Solver and Mcsolver modules.

Safe external interface of solvers.

module Make : functor (St : Sidekick_sat__.Solver_types.S) -> functor (Th : Sidekick_sat.Theory_intf.S with type formula = St.formula and type proof = St.proof) -> S with type formula = St.formula and type clause = St.clause and type Proof.lemma = St.proof and type theory = Th.t

Functor to make a safe external interface.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/module-type-S/Clause/index.html b/sidekick/Sidekick_sat__/Solver/module-type-S/Clause/index.html deleted file mode 100644 index 44caa14e..00000000 --- a/sidekick/Sidekick_sat__/Solver/module-type-S/Clause/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Solver.S.Clause)

Module Sidekick_sat__.Solver.S.Clause

type t = clause
val atoms : t ‑> atom Sidekick_util.IArray.t
val atoms_l : t ‑> atom list
val tag : t ‑> int option
val equal : t ‑> t ‑> bool
val make : ?⁠tag:int ‑> lit array ‑> t

Make a clause from this array of SAT literals. -The array's ownership is transferred to the clause, do not mutate it

val make_l : ?⁠tag:int ‑> lit list ‑> t
val of_atoms : solver ‑> ?⁠tag:int ‑> atom list ‑> t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/module-type-S/Formula/index.html b/sidekick/Sidekick_sat__/Solver/module-type-S/Formula/index.html deleted file mode 100644 index 44b9f225..00000000 --- a/sidekick/Sidekick_sat__/Solver/module-type-S/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__.Solver.S.Formula)

Module Sidekick_sat__.Solver.S.Formula

type t = formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/module-type-S/Lit/index.html b/sidekick/Sidekick_sat__/Solver/module-type-S/Lit/index.html deleted file mode 100644 index 630f0cd9..00000000 --- a/sidekick/Sidekick_sat__/Solver/module-type-S/Lit/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Lit (sidekick.Sidekick_sat__.Solver.S.Lit)

Module Sidekick_sat__.Solver.S.Lit

type t = lit
val make : solver ‑> atom ‑> t
val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/module-type-S/Proof/Atom/index.html b/sidekick/Sidekick_sat__/Solver/module-type-S/Proof/Atom/index.html deleted file mode 100644 index 755cd41d..00000000 --- a/sidekick/Sidekick_sat__/Solver/module-type-S/Proof/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Solver.S.Proof.Atom)

Module Sidekick_sat__.Solver.S.Proof.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/module-type-S/Proof/Clause/index.html b/sidekick/Sidekick_sat__/Solver/module-type-S/Proof/Clause/index.html deleted file mode 100644 index 94eda398..00000000 --- a/sidekick/Sidekick_sat__/Solver/module-type-S/Proof/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Solver.S.Proof.Clause)

Module Sidekick_sat__.Solver.S.Proof.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/module-type-S/Proof/index.html b/sidekick/Sidekick_sat__/Solver/module-type-S/Proof/index.html deleted file mode 100644 index 46ca85f6..00000000 --- a/sidekick/Sidekick_sat__/Solver/module-type-S/Proof/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -Proof (sidekick.Sidekick_sat__.Solver.S.Proof)

Module Sidekick_sat__.Solver.S.Proof

A module to manipulate proofs.

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause = clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver/module-type-S/index.html b/sidekick/Sidekick_sat__/Solver/module-type-S/index.html deleted file mode 100644 index 76eb7d8f..00000000 --- a/sidekick/Sidekick_sat__/Solver/module-type-S/index.html +++ /dev/null @@ -1,18 +0,0 @@ - -S (sidekick.Sidekick_sat__.Solver.S)

Module type Sidekick_sat__.Solver.S

Safe external interface of solvers.

Internal modules

-These are the internal modules used, you should probably not use them -if you're not familiar with the internals of mSAT.

type formula

user formulas

type lit

SAT solver literals

type clause

SAT solver clauses

type theory

user theory

module Proof : Sidekick_sat.Res.S with type clause = clause

A module to manipulate proofs.

type t

Main solver type, containing all state for solving.

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Create new solver

  • Parameter size: the initial size of internal data structures. The bigger, -the faster, but also the more RAM it uses.

Types

type atom = formula

The type of atoms given by the module argument for formulas. -An atom is a user-defined atomic formula whose truth value is -picked by Msat.

type res =
| Sat of formula Sidekick_sat__.Solver_intf.sat_state

(** Returned when the solver reaches SAT, with a model *)

| Unsat of (clauseProof.proofSidekick_sat__.Solver_intf.unsat_state

(** Returned when the solver reaches UNSAT, with a proof *)

Result type for the solver

exception UndecidedLit

Exception raised by the evaluating functions when a literal -has not yet been assigned a value.

Base operations

val theory : t ‑> theory
val assume : ?⁠permanent:bool ‑> t ‑> ?⁠tag:int ‑> atom list list ‑> unit

Add the list of clauses to the current set of assumptions. -Modifies the sat solver state in place.

  • Parameter permanent: if true, kept after backtracking (default true)
val add_clause : permanent:bool ‑> t ‑> clause ‑> unit

Lower level addition of clauses. See Clause to create clauses.

  • Parameter permanent: if true, kept after backtracking
val solve : t ‑> ?⁠assumptions:atom list ‑> unit ‑> res

Try and solves the current set of clauses.

  • Parameter assumptions: additional atomic assumptions to be temporarily added. -The assumptions are just used for this call to solve, they are -not saved in the solver's state.
val new_atom : permanent:bool ‑> t ‑> atom ‑> unit

Add a new atom (i.e propositional formula) to the solver. -This formula will be decided on at some point during solving, -whether it appears in clauses or not.

  • Parameter permanent: if true, kept after backtracking
val unsat_core : Proof.proof ‑> clause list

Returns the unsat core of a given proof, ie a subset of all the added -clauses that is sufficient to establish unsatisfiability.

val true_at_level0 : t ‑> atom ‑> bool

true_at_level0 a returns true if a was proved at level0, i.e. -it must hold in all models

val get_tag : clause ‑> int option

Recover tag from a clause, if any

val push : t ‑> unit

Push a new save point. Clauses added after this call to push will -be added as normal, but the corresponding call to pop will -remove these clauses.

val pop : t ‑> unit

Return to last save point, discarding clauses added since last -call to push

Obtain actions

Re-export some functions

type solver = t
module Lit : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_intf/index.html b/sidekick/Sidekick_sat__/Solver_intf/index.html deleted file mode 100644 index 97a776a7..00000000 --- a/sidekick/Sidekick_sat__/Solver_intf/index.html +++ /dev/null @@ -1,10 +0,0 @@ - -Solver_intf (sidekick.Sidekick_sat__.Solver_intf)

Module Sidekick_sat__.Solver_intf

Interface for Solvers

This modules defines the safe external interface for solvers. -Solvers that implements this interface can be obtained using the Make -functor in Solver or Mcsolver.

type 'form sat_state =
| Sat_state of {
eval : 'form ‑> bool;

(** Returns the valuation of a formula in the current state -of the sat solver.

  • Raises UndecidedLit: if the literal is not decided

*)

eval_level : 'form ‑> bool * int;

(** Return the current assignement of the literals, as well as its -decision level. If the level is 0, then it is necessary for -the atom to have this value; otherwise it is due to choices -that can potentially be backtracked.

  • Raises UndecidedLit: if the literal is not decided

*)

iter_trail : ('form ‑> unit) ‑> unit;

(** Iter through the formulas and terms in order of decision/propagation -(starting from the first propagation, to the last propagation). *)

}

(** The type of values returned when the solver reaches a SAT state. *)

type ('clause, 'proof) unsat_state =
| Unsat_state of {
unsat_conflict : unit ‑> 'clause;

(** Returns the unsat clause found at the toplevel *)

get_proof : unit ‑> 'proof;

(** returns a persistent proof of the empty clause from the Unsat result. *)

}

(** The type of values returned when the solver reaches an UNSAT state. *)

type 'clause export = {
hyps : 'clause Sidekick_util.Vec.t;
history : 'clause Sidekick_util.Vec.t;
local : 'clause Sidekick_util.Vec.t;
}

Export internal state

type 'a printer = Format.formatter ‑> 'a ‑> unit
module type S : sig ... end

The external interface implemented by safe solvers, such as the one -created by the Solver.Make and Mcsolver.Make functors.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Clause/index.html b/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Clause/index.html deleted file mode 100644 index b64c72a0..00000000 --- a/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Clause/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Solver_intf.S.Clause)

Module Sidekick_sat__.Solver_intf.S.Clause

type t = clause
val atoms : t ‑> atom Sidekick_util.IArray.t
val atoms_l : t ‑> atom list
val tag : t ‑> int option
val equal : t ‑> t ‑> bool
val make : ?⁠tag:int ‑> lit array ‑> t

Make a clause from this array of SAT literals. -The array's ownership is transferred to the clause, do not mutate it

val make_l : ?⁠tag:int ‑> lit list ‑> t
val of_atoms : solver ‑> ?⁠tag:int ‑> atom list ‑> t
val pp : t printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Formula/index.html b/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Formula/index.html deleted file mode 100644 index 483c4f67..00000000 --- a/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__.Solver_intf.S.Formula)

Module Sidekick_sat__.Solver_intf.S.Formula

type t = formula
val pp : t printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Lit/index.html b/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Lit/index.html deleted file mode 100644 index 490b487b..00000000 --- a/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Lit/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Lit (sidekick.Sidekick_sat__.Solver_intf.S.Lit)

Module Sidekick_sat__.Solver_intf.S.Lit

type t = lit
val make : solver ‑> atom ‑> t
val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Proof/Atom/index.html b/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Proof/Atom/index.html deleted file mode 100644 index dd5d10aa..00000000 --- a/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Proof/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Solver_intf.S.Proof.Atom)

Module Sidekick_sat__.Solver_intf.S.Proof.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Proof/Clause/index.html b/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Proof/Clause/index.html deleted file mode 100644 index 6be6c639..00000000 --- a/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Proof/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Solver_intf.S.Proof.Clause)

Module Sidekick_sat__.Solver_intf.S.Proof.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Proof/index.html b/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Proof/index.html deleted file mode 100644 index 1f5b85e8..00000000 --- a/sidekick/Sidekick_sat__/Solver_intf/module-type-S/Proof/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -Proof (sidekick.Sidekick_sat__.Solver_intf.S.Proof)

Module Sidekick_sat__.Solver_intf.S.Proof

A module to manipulate proofs.

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause = clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_intf/module-type-S/index.html b/sidekick/Sidekick_sat__/Solver_intf/module-type-S/index.html deleted file mode 100644 index 6fd7c429..00000000 --- a/sidekick/Sidekick_sat__/Solver_intf/module-type-S/index.html +++ /dev/null @@ -1,19 +0,0 @@ - -S (sidekick.Sidekick_sat__.Solver_intf.S)

Module type Sidekick_sat__.Solver_intf.S

The external interface implemented by safe solvers, such as the one -created by the Solver.Make and Mcsolver.Make functors.

Internal modules

-These are the internal modules used, you should probably not use them -if you're not familiar with the internals of mSAT.

type formula

user formulas

type lit

SAT solver literals

type clause

SAT solver clauses

type theory

user theory

module Proof : Sidekick_sat.Res.S with type clause = clause

A module to manipulate proofs.

type t

Main solver type, containing all state for solving.

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Create new solver

  • Parameter size: the initial size of internal data structures. The bigger, -the faster, but also the more RAM it uses.

Types

type atom = formula

The type of atoms given by the module argument for formulas. -An atom is a user-defined atomic formula whose truth value is -picked by Msat.

type res =
| Sat of formula sat_state

(** Returned when the solver reaches SAT, with a model *)

| Unsat of (clauseProof.proofunsat_state

(** Returned when the solver reaches UNSAT, with a proof *)

Result type for the solver

exception UndecidedLit

Exception raised by the evaluating functions when a literal -has not yet been assigned a value.

Base operations

val theory : t ‑> theory
val assume : ?⁠permanent:bool ‑> t ‑> ?⁠tag:int ‑> atom list list ‑> unit

Add the list of clauses to the current set of assumptions. -Modifies the sat solver state in place.

  • Parameter permanent: if true, kept after backtracking (default true)
val add_clause : permanent:bool ‑> t ‑> clause ‑> unit

Lower level addition of clauses. See Clause to create clauses.

  • Parameter permanent: if true, kept after backtracking
val solve : t ‑> ?⁠assumptions:atom list ‑> unit ‑> res

Try and solves the current set of clauses.

  • Parameter assumptions: additional atomic assumptions to be temporarily added. -The assumptions are just used for this call to solve, they are -not saved in the solver's state.
val new_atom : permanent:bool ‑> t ‑> atom ‑> unit

Add a new atom (i.e propositional formula) to the solver. -This formula will be decided on at some point during solving, -whether it appears in clauses or not.

  • Parameter permanent: if true, kept after backtracking
val unsat_core : Proof.proof ‑> clause list

Returns the unsat core of a given proof, ie a subset of all the added -clauses that is sufficient to establish unsatisfiability.

val true_at_level0 : t ‑> atom ‑> bool

true_at_level0 a returns true if a was proved at level0, i.e. -it must hold in all models

val get_tag : clause ‑> int option

Recover tag from a clause, if any

val push : t ‑> unit

Push a new save point. Clauses added after this call to push will -be added as normal, but the corresponding call to pop will -remove these clauses.

val pop : t ‑> unit

Return to last save point, discarding clauses added since last -call to push

Obtain actions

val export : t ‑> clause export

Re-export some functions

type solver = t
module Lit : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types/Make/Atom/index.html b/sidekick/Sidekick_sat__/Solver_types/Make/Atom/index.html deleted file mode 100644 index 56ff0083..00000000 --- a/sidekick/Sidekick_sat__/Solver_types/Make/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Solver_types.Make.Atom)

Module Sidekick_sat__.Solver_types.Make.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types/Make/Clause/index.html b/sidekick/Sidekick_sat__/Solver_types/Make/Clause/index.html deleted file mode 100644 index 35d4d50d..00000000 --- a/sidekick/Sidekick_sat__/Solver_types/Make/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Solver_types.Make.Clause)

Module Sidekick_sat__.Solver_types.Make.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types/Make/Formula/index.html b/sidekick/Sidekick_sat__/Solver_types/Make/Formula/index.html deleted file mode 100644 index 1074e5fd..00000000 --- a/sidekick/Sidekick_sat__/Solver_types/Make/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__.Solver_types.Make.Formula)

Module Sidekick_sat__.Solver_types.Make.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types/Make/Var/index.html b/sidekick/Sidekick_sat__/Solver_types/Make/Var/index.html deleted file mode 100644 index 36cde96b..00000000 --- a/sidekick/Sidekick_sat__/Solver_types/Make/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__.Solver_types.Make.Var)

Module Sidekick_sat__.Solver_types.Make.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types/Make/argument-1-E/Form/index.html b/sidekick/Sidekick_sat__/Solver_types/Make/argument-1-E/Form/index.html deleted file mode 100644 index f9eb332f..00000000 --- a/sidekick/Sidekick_sat__/Solver_types/Make/argument-1-E/Form/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Form (sidekick.Sidekick_sat__.Solver_types.Make.1-E.Form)

Module Sidekick_sat__.Solver_types.Make.1-E.Form

type t = formula

The type of atomic formulas.

val equal : t ‑> t ‑> bool

Equality over formulas.

val hash : t ‑> int

Hashing function for formulas. Should be such that two formulas equal according -to Expr_intf.S.equal have the same hash.

val print : Format.formatter ‑> t ‑> unit

Printing function used among other thing for debugging.

val dummy : t

Formula constant. A valid formula should never be physically equal to dummy

val neg : t ‑> t

Formula negation. Should be an involution, i.e. equal a (neg neg a) should -always hold.

Returns a 'normalized' form of the formula, possibly negated -(in which case return Negated). This function is used to recognize -the link between a formula a and its negation neg a, so the goal is -that a and neg a normalise to the same formula, -but one returns Same_sign and the other one returns Negated

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types/Make/argument-1-E/index.html b/sidekick/Sidekick_sat__/Solver_types/Make/argument-1-E/index.html deleted file mode 100644 index 5094ea2d..00000000 --- a/sidekick/Sidekick_sat__/Solver_types/Make/argument-1-E/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -1-E (sidekick.Sidekick_sat__.Solver_types.Make.1-E)

Parameter Sidekick_sat__.Solver_types.Make.1-E

type t

State of the theory

type formula

The type of formulas. Should be compatble with Formula_intf.S

type proof

A custom type for the proofs of lemmas produced by the theory.

module Form : sig ... end

Create a new instance of the theory

Assume the formulas in the slice, possibly pushing new formulas to be propagated, -and returns the result of the new assumptions.

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.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types/Make/index.html b/sidekick/Sidekick_sat__/Solver_types/Make/index.html deleted file mode 100644 index 76761352..00000000 --- a/sidekick/Sidekick_sat__/Solver_types/Make/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -Make (sidekick.Sidekick_sat__.Solver_types.Make)

Module Sidekick_sat__.Solver_types.Make

Functor to instantiate the types of clauses for a solver.

Parameters

Signature

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula = E.formula
type proof = E.proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types/index.html b/sidekick/Sidekick_sat__/Solver_types/index.html deleted file mode 100644 index c313710c..00000000 --- a/sidekick/Sidekick_sat__/Solver_types/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -Solver_types (sidekick.Sidekick_sat__.Solver_types)

Module Sidekick_sat__.Solver_types

Internal types (implementation)

This modules actually implements the internal types used by the solver. -Since mutation is heavily used in the solver, it is really, really, *really* -discouraged to direclty use the functions in this module if you don't know the -inner working of mSAT perfectly as even the simplest -change can have dramatic effects on the solver.

Interface for the internal types.

module Make : functor (E : Sidekick_sat.Theory_intf.S) -> S with type formula = E.formula and type proof = E.proof

Functor to instantiate the types of clauses for a solver.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types/module-type-S/Atom/index.html b/sidekick/Sidekick_sat__/Solver_types/module-type-S/Atom/index.html deleted file mode 100644 index 6bf82a31..00000000 --- a/sidekick/Sidekick_sat__/Solver_types/module-type-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Solver_types.S.Atom)

Module Sidekick_sat__.Solver_types.S.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types/module-type-S/Clause/index.html b/sidekick/Sidekick_sat__/Solver_types/module-type-S/Clause/index.html deleted file mode 100644 index fc6f732b..00000000 --- a/sidekick/Sidekick_sat__/Solver_types/module-type-S/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Solver_types.S.Clause)

Module Sidekick_sat__.Solver_types.S.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types/module-type-S/Formula/index.html b/sidekick/Sidekick_sat__/Solver_types/module-type-S/Formula/index.html deleted file mode 100644 index 221a9b10..00000000 --- a/sidekick/Sidekick_sat__/Solver_types/module-type-S/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__.Solver_types.S.Formula)

Module Sidekick_sat__.Solver_types.S.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types/module-type-S/Var/index.html b/sidekick/Sidekick_sat__/Solver_types/module-type-S/Var/index.html deleted file mode 100644 index 97ae630a..00000000 --- a/sidekick/Sidekick_sat__/Solver_types/module-type-S/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__.Solver_types.S.Var)

Module Sidekick_sat__.Solver_types.S.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types/module-type-S/index.html b/sidekick/Sidekick_sat__/Solver_types/module-type-S/index.html deleted file mode 100644 index bfdc6891..00000000 --- a/sidekick/Sidekick_sat__/Solver_types/module-type-S/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -S (sidekick.Sidekick_sat__.Solver_types.S)

Module type Sidekick_sat__.Solver_types.S

Interface for the internal types.

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types_intf/C_fields/index.html b/sidekick/Sidekick_sat__/Solver_types_intf/C_fields/index.html deleted file mode 100644 index a9988918..00000000 --- a/sidekick/Sidekick_sat__/Solver_types_intf/C_fields/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -C_fields (sidekick.Sidekick_sat__.Solver_types_intf.C_fields)

Module Sidekick_sat__.Solver_types_intf.C_fields

type t = private int

Generative type of bitfields. Each instantiation of the functor -should create a new, incompatible type

val empty : t

Empty bitfields (all bits 0)

type field
val get : field ‑> t ‑> bool

Get the value of this field

val set : field ‑> bool ‑> t ‑> t

Set the value of this field

val mk_field : unit ‑> field

Make a new field

val freeze : unit ‑> unit

Prevent new fields from being added. From now on, creating -a field will raise Frozen

val total_width : unit ‑> int

Current width of the bitfield

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types_intf/Var_fields/index.html b/sidekick/Sidekick_sat__/Solver_types_intf/Var_fields/index.html deleted file mode 100644 index 0ed61161..00000000 --- a/sidekick/Sidekick_sat__/Solver_types_intf/Var_fields/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var_fields (sidekick.Sidekick_sat__.Solver_types_intf.Var_fields)

Module Sidekick_sat__.Solver_types_intf.Var_fields

type t = private int

Generative type of bitfields. Each instantiation of the functor -should create a new, incompatible type

val empty : t

Empty bitfields (all bits 0)

type field
val get : field ‑> t ‑> bool

Get the value of this field

val set : field ‑> bool ‑> t ‑> t

Set the value of this field

val mk_field : unit ‑> field

Make a new field

val freeze : unit ‑> unit

Prevent new fields from being added. From now on, creating -a field will raise Frozen

val total_width : unit ‑> int

Current width of the bitfield

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types_intf/index.html b/sidekick/Sidekick_sat__/Solver_types_intf/index.html deleted file mode 100644 index 7966f2db..00000000 --- a/sidekick/Sidekick_sat__/Solver_types_intf/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Solver_types_intf (sidekick.Sidekick_sat__.Solver_types_intf)

Module Sidekick_sat__.Solver_types_intf

Internal types (interface)

This modules defines the interface of most of the internal types -used in the core solver.

type 'a printer = Format.formatter ‑> 'a ‑> unit
module type S : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Atom/index.html b/sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Atom/index.html deleted file mode 100644 index 3f72be0b..00000000 --- a/sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__.Solver_types_intf.S.Atom)

Module Sidekick_sat__.Solver_types_intf.S.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

val pp : t printer
val pp_a : t array printer
val debug : t printer
val debug_a : t array printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Clause/index.html b/sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Clause/index.html deleted file mode 100644 index 39d251ff..00000000 --- a/sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__.Solver_types_intf.S.Clause)

Module Sidekick_sat__.Solver_types_intf.S.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
val pp : t printer
val pp_dimacs : t printer
val debug : t printer
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Formula/index.html b/sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Formula/index.html deleted file mode 100644 index ab3006dc..00000000 --- a/sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__.Solver_types_intf.S.Formula)

Module Sidekick_sat__.Solver_types_intf.S.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val pp : t printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Var/index.html b/sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Var/index.html deleted file mode 100644 index 05d779b3..00000000 --- a/sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__.Solver_types_intf.S.Var)

Module Sidekick_sat__.Solver_types_intf.S.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/index.html b/sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/index.html deleted file mode 100644 index b452f711..00000000 --- a/sidekick/Sidekick_sat__/Solver_types_intf/module-type-S/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -S (sidekick.Sidekick_sat__.Solver_types_intf.S)

Module type Sidekick_sat__.Solver_types_intf.S

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Theory_intf/index.html b/sidekick/Sidekick_sat__/Theory_intf/index.html deleted file mode 100644 index 0a0ddd25..00000000 --- a/sidekick/Sidekick_sat__/Theory_intf/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -Theory_intf (sidekick.Sidekick_sat__.Theory_intf)

Module Sidekick_sat__.Theory_intf

SMT Theory

This module defines what a theory must implement in order to -be used in an SMT solver.

type negated =
| Negated

(** changed sign *)

| Same_sign

(** kept sign *)

This type is used during the normalisation of formulas. -See Expr_intf.S.norm for more details.

type ('formula, 'proof) res =
| Sat

(** The current set of assumptions is satisfiable. *)

| Unsat of 'formula list * 'proof

(** The current set of assumptions is *NOT* satisfiable, and here is a -theory tautology (with its proof), for which every literal is false -under the current assumptions. *)

Type returned by the theory. Formulas in the unsat clause must come from the -current set of assumptions, i.e must have been encountered in a slice.

type ('form, 'proof) actions =
| Actions of {
push_persistent : 'form Sidekick_util.IArray.t ‑> 'proof ‑> unit;

(** Allows to add a persistent clause to the solver. *)

push_local : 'form Sidekick_util.IArray.t ‑> 'proof ‑> unit;

(** Allows to add a local clause to the solver. The clause -will be removed after backtracking. *)

on_backtrack : (unit ‑> unit) ‑> unit;

(** on_backtrack f calls f when the main solver backtracks *)

propagate : 'form ‑> 'form list ‑> 'proof ‑> unit;

(** propagate lit causes proof informs the solver to propagate lit, with the reason -that the clause causes => lit is a theory tautology. It is faster than pushing -the associated clause but the clause will not be remembered by the sat solver, -i.e it will not be used by the solver to do boolean propagation. *)

}

Actions given to the theory during initialization, to be used -at any time

type ('form, 'proof) slice_actions =
| Slice_acts of {
slice_iter : ('form ‑> unit) ‑> unit;

(** iterate on the slice of the trail *)

}

(** The type for a slice. Slices are some kind of view of the current -propagation queue. They allow to look at the propagated literals, -and to add new clauses to the solver. *)

module type S : sig ... end

Signature for theories to be given to the Solver.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Theory_intf/module-type-S/Form/index.html b/sidekick/Sidekick_sat__/Theory_intf/module-type-S/Form/index.html deleted file mode 100644 index b565ec6b..00000000 --- a/sidekick/Sidekick_sat__/Theory_intf/module-type-S/Form/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Form (sidekick.Sidekick_sat__.Theory_intf.S.Form)

Module Sidekick_sat__.Theory_intf.S.Form

type t = formula

The type of atomic formulas.

val equal : t ‑> t ‑> bool

Equality over formulas.

val hash : t ‑> int

Hashing function for formulas. Should be such that two formulas equal according -to Expr_intf.S.equal have the same hash.

val print : Format.formatter ‑> t ‑> unit

Printing function used among other thing for debugging.

val dummy : t

Formula constant. A valid formula should never be physically equal to dummy

val neg : t ‑> t

Formula negation. Should be an involution, i.e. equal a (neg neg a) should -always hold.

val norm : t ‑> t * negated

Returns a 'normalized' form of the formula, possibly negated -(in which case return Negated). This function is used to recognize -the link between a formula a and its negation neg a, so the goal is -that a and neg a normalise to the same formula, -but one returns Same_sign and the other one returns Negated

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/Theory_intf/module-type-S/index.html b/sidekick/Sidekick_sat__/Theory_intf/module-type-S/index.html deleted file mode 100644 index a01ab3f5..00000000 --- a/sidekick/Sidekick_sat__/Theory_intf/module-type-S/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -S (sidekick.Sidekick_sat__.Theory_intf.S)

Module type Sidekick_sat__.Theory_intf.S

Signature for theories to be given to the Solver.

type t

State of the theory

type formula

The type of formulas. Should be compatble with Formula_intf.S

type proof

A custom type for the proofs of lemmas produced by the theory.

module Form : sig ... end
val create : (formulaproofactions ‑> t

Create a new instance of the theory

val assume : t ‑> (formulaproofslice_actions ‑> (formulaproofres

Assume the formulas in the slice, possibly pushing new formulas to be propagated, -and returns the result of the new assumptions.

val if_sat : t ‑> (formulaproofslice_actions ‑> (formulaproofres

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.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__/index.html b/sidekick/Sidekick_sat__/index.html deleted file mode 100644 index fd32253b..00000000 --- a/sidekick/Sidekick_sat__/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_sat__ (sidekick.Sidekick_sat__)

Module Sidekick_sat__

module Internal : sig ... end
module Res : sig ... end
module Res_intf : sig ... end
module Sidekick_sat = Sidekick_sat
module Solver : sig ... end
module Solver_intf : sig ... end
module Solver_types : sig ... end
module Solver_types_intf : sig ... end
module Theory_intf : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/.jbuilder-keep b/sidekick/Sidekick_sat__Internal/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_sat__Internal/Make/H/index.html b/sidekick/Sidekick_sat__Internal/Make/H/index.html deleted file mode 100644 index f8c6ebe6..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/H/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -H (sidekick.Sidekick_sat__Internal.Make.H)

Module Sidekick_sat__Internal.Make.H

type elt = St.var
type t
val create : unit ‑> t
val decrease : t ‑> elt ‑> unit
val in_heap : elt ‑> bool
val size : t ‑> int
val is_empty : t ‑> bool
val clear : t ‑> unit
val insert : t ‑> elt ‑> unit
val grow_to_at_least : t ‑> int ‑> unit
val remove_min : t ‑> elt
val remove : t ‑> elt ‑> unit
val filter : t ‑> (elt ‑> bool) ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/Proof/Atom/index.html b/sidekick/Sidekick_sat__Internal/Make/Proof/Atom/index.html deleted file mode 100644 index b0872590..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/Proof/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Internal.Make.Proof.Atom)

Module Sidekick_sat__Internal.Make.Proof.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/Proof/Clause/Tbl/index.html b/sidekick/Sidekick_sat__Internal/Make/Proof/Clause/Tbl/index.html deleted file mode 100644 index 7f2e4fe4..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/Proof/Clause/Tbl/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Tbl (sidekick.Sidekick_sat__Internal.Make.Proof.Clause.Tbl)

Module Sidekick_sat__Internal.Make.Proof.Clause.Tbl

type key = t
val create : int ‑> 'a t
val clear : 'a t ‑> unit
val reset : 'a t ‑> unit
val copy : 'a t ‑> 'a t
val add : 'a t ‑> key ‑> 'a ‑> unit
val remove : 'a t ‑> key ‑> unit
val find : 'a t ‑> key ‑> 'a
val find_opt : 'a t ‑> key ‑> 'a option
val find_all : 'a t ‑> key ‑> 'a list
val replace : 'a t ‑> key ‑> 'a ‑> unit
val mem : 'a t ‑> key ‑> bool
val iter : (key ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val filter_map_inplace : (key ‑> 'a ‑> 'a option) ‑> 'a t ‑> unit
val fold : (key ‑> 'a ‑> 'b ‑> 'b) ‑> 'a t ‑> 'b ‑> 'b
val length : 'a t ‑> int
val stats : 'a t ‑> Hashtbl.statistics
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/Proof/Clause/index.html b/sidekick/Sidekick_sat__Internal/Make/Proof/Clause/index.html deleted file mode 100644 index 0802c593..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/Proof/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Internal.Make.Proof.Clause)

Module Sidekick_sat__Internal.Make.Proof.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list
module Tbl : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/Proof/St/Atom/index.html b/sidekick/Sidekick_sat__Internal/Make/Proof/St/Atom/index.html deleted file mode 100644 index 6c6ab229..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/Proof/St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Internal.Make.Proof.St.Atom)

Module Sidekick_sat__Internal.Make.Proof.St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t
val neg : t ‑> t
val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t
val mark : t ‑> unit
val seen : t ‑> bool
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/Proof/St/Clause/Tbl/index.html b/sidekick/Sidekick_sat__Internal/Make/Proof/St/Clause/Tbl/index.html deleted file mode 100644 index 5dcc2e21..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/Proof/St/Clause/Tbl/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Tbl (sidekick.Sidekick_sat__Internal.Make.Proof.St.Clause.Tbl)

Module Sidekick_sat__Internal.Make.Proof.St.Clause.Tbl

type key = t
type 'a t = 'a St.Clause.Tbl.t
val create : int ‑> 'a t
val clear : 'a t ‑> unit
val reset : 'a t ‑> unit
val copy : 'a t ‑> 'a t
val add : 'a t ‑> key ‑> 'a ‑> unit
val remove : 'a t ‑> key ‑> unit
val find : 'a t ‑> key ‑> 'a
val find_opt : 'a t ‑> key ‑> 'a option
val find_all : 'a t ‑> key ‑> 'a list
val replace : 'a t ‑> key ‑> 'a ‑> unit
val mem : 'a t ‑> key ‑> bool
val iter : (key ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val filter_map_inplace : (key ‑> 'a ‑> 'a option) ‑> 'a t ‑> unit
val fold : (key ‑> 'a ‑> 'b ‑> 'b) ‑> 'a t ‑> 'b ‑> 'b
val length : 'a t ‑> int
val stats : 'a t ‑> Hashtbl.statistics
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/Proof/St/Clause/index.html b/sidekick/Sidekick_sat__Internal/Make/Proof/St/Clause/index.html deleted file mode 100644 index 26aeb2d6..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/Proof/St/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Internal.Make.Proof.St.Clause)

Module Sidekick_sat__Internal.Make.Proof.St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t
val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t
val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/Proof/St/Formula/index.html b/sidekick/Sidekick_sat__Internal/Make/Proof/St/Formula/index.html deleted file mode 100644 index d7890731..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/Proof/St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__Internal.Make.Proof.St.Formula)

Module Sidekick_sat__Internal.Make.Proof.St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/Proof/St/Var/index.html b/sidekick/Sidekick_sat__Internal/Make/Proof/St/Var/index.html deleted file mode 100644 index cbb1d00c..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/Proof/St/Var/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Var (sidekick.Sidekick_sat__Internal.Make.Proof.St.Var)

Module Sidekick_sat__Internal.Make.Proof.St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool
val seen_both : t ‑> bool
val clear : t ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/Proof/St/index.html b/sidekick/Sidekick_sat__Internal/Make/Proof/St/index.html deleted file mode 100644 index d8299519..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/Proof/St/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -St (sidekick.Sidekick_sat__Internal.Make.Proof.St)

Module Sidekick_sat__Internal.Make.Proof.St

type t = St.t
val create : ?⁠size:[ `Big | `Small | `Tiny ] ‑> unit ‑> t
type formula = St.formula
type proof = St.proof
type var = St.var = {
vid : int;
pa : atom;
na : atom;
mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;
mutable v_level : int;
mutable v_idx : int;
mutable v_weight : float;
mutable reason : reason option;
}
type atom = St.atom = {
aid : int;
var : var;
neg : atom;
lit : formula;
mutable is_true : bool;
mutable watched : clause Sidekick_util.Vec.t;
}
type clause = St.clause = {
name : int;
tag : int option;
atoms : atom array;
mutable cpremise : premise;
mutable activity : float;
mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;
}
type reason = St.reason =
| Decision
| Bcp of clause
type premise = St.premise =
| Hyp
| Local
| Lemma of proof
| History of clause list
val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit
type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/Proof/Tbl/index.html b/sidekick/Sidekick_sat__Internal/Make/Proof/Tbl/index.html deleted file mode 100644 index 705ee3ac..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/Proof/Tbl/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Tbl (sidekick.Sidekick_sat__Internal.Make.Proof.Tbl)

Module Sidekick_sat__Internal.Make.Proof.Tbl

type key = proof
val create : int ‑> 'a t
val clear : 'a t ‑> unit
val reset : 'a t ‑> unit
val copy : 'a t ‑> 'a t
val add : 'a t ‑> key ‑> 'a ‑> unit
val remove : 'a t ‑> key ‑> unit
val find : 'a t ‑> key ‑> 'a
val find_opt : 'a t ‑> key ‑> 'a option
val find_all : 'a t ‑> key ‑> 'a list
val replace : 'a t ‑> key ‑> 'a ‑> unit
val mem : 'a t ‑> key ‑> bool
val iter : (key ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val filter_map_inplace : (key ‑> 'a ‑> 'a option) ‑> 'a t ‑> unit
val fold : (key ‑> 'a ‑> 'b ‑> 'b) ‑> 'a t ‑> 'b ‑> 'b
val length : 'a t ‑> int
val stats : 'a t ‑> Hashtbl.statistics
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/Proof/index.html b/sidekick/Sidekick_sat__Internal/Make/Proof/index.html deleted file mode 100644 index 68c5d255..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/Proof/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Proof (sidekick.Sidekick_sat__Internal.Make.Proof)

Module Sidekick_sat__Internal.Make.Proof

module St : sig ... end
exception Insufficient_hyps
type formula = St.formula
type atom = St.atom
type lemma = St.proof
type clause = St.clause
type proof_node = Sidekick_sat__Res.Make(St).proof_node = {
conclusion : clause;
step : step;
}
type step = Sidekick_sat__Res.Make(St).step =
| Hypothesis
| Assumption
| Lemma of lemma
| Duplicate of proof * atom list
| Resolution of proof * proof * atom
val prove : clause ‑> proof
val prove_unsat : clause ‑> proof
val prove_atom : atom ‑> proof option
val is_leaf : step ‑> bool
val expl : step ‑> string
val parents : step ‑> proof list
val expand : proof ‑> proof_node
val conclusion : proof ‑> clause
val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a
val unsat_core : proof ‑> clause list
val check : proof ‑> unit
module Clause : sig ... end
module Atom : sig ... end
module Tbl : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/argument-1-St/Atom/index.html b/sidekick/Sidekick_sat__Internal/Make/argument-1-St/Atom/index.html deleted file mode 100644 index 4d951f6b..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/argument-1-St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Internal.Make.1-St.Atom)

Module Sidekick_sat__Internal.Make.1-St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/argument-1-St/Clause/index.html b/sidekick/Sidekick_sat__Internal/Make/argument-1-St/Clause/index.html deleted file mode 100644 index 3abe1f7f..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/argument-1-St/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Internal.Make.1-St.Clause)

Module Sidekick_sat__Internal.Make.1-St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/argument-1-St/Formula/index.html b/sidekick/Sidekick_sat__Internal/Make/argument-1-St/Formula/index.html deleted file mode 100644 index bd44a28d..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/argument-1-St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__Internal.Make.1-St.Formula)

Module Sidekick_sat__Internal.Make.1-St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/argument-1-St/Var/index.html b/sidekick/Sidekick_sat__Internal/Make/argument-1-St/Var/index.html deleted file mode 100644 index 065b6e38..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/argument-1-St/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__Internal.Make.1-St.Var)

Module Sidekick_sat__Internal.Make.1-St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/argument-1-St/index.html b/sidekick/Sidekick_sat__Internal/Make/argument-1-St/index.html deleted file mode 100644 index a74a3c75..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/argument-1-St/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -1-St (sidekick.Sidekick_sat__Internal.Make.1-St)

Parameter Sidekick_sat__Internal.Make.1-St

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/argument-2-Th/Form/index.html b/sidekick/Sidekick_sat__Internal/Make/argument-2-Th/Form/index.html deleted file mode 100644 index e1d02277..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/argument-2-Th/Form/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Form (sidekick.Sidekick_sat__Internal.Make.2-Th.Form)

Module Sidekick_sat__Internal.Make.2-Th.Form

type t = formula

The type of atomic formulas.

val equal : t ‑> t ‑> bool

Equality over formulas.

val hash : t ‑> int

Hashing function for formulas. Should be such that two formulas equal according -to Expr_intf.S.equal have the same hash.

val print : Format.formatter ‑> t ‑> unit

Printing function used among other thing for debugging.

val dummy : t

Formula constant. A valid formula should never be physically equal to dummy

val neg : t ‑> t

Formula negation. Should be an involution, i.e. equal a (neg neg a) should -always hold.

Returns a 'normalized' form of the formula, possibly negated -(in which case return Negated). This function is used to recognize -the link between a formula a and its negation neg a, so the goal is -that a and neg a normalise to the same formula, -but one returns Same_sign and the other one returns Negated

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/argument-2-Th/index.html b/sidekick/Sidekick_sat__Internal/Make/argument-2-Th/index.html deleted file mode 100644 index b9a50b37..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/argument-2-Th/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -2-Th (sidekick.Sidekick_sat__Internal.Make.2-Th)

Parameter Sidekick_sat__Internal.Make.2-Th

type t

State of the theory

type formula = St.formula

The type of formulas. Should be compatble with Formula_intf.S

type proof = St.proof

A custom type for the proofs of lemmas produced by the theory.

module Form : sig ... end

Create a new instance of the theory

Assume the formulas in the slice, possibly pushing new formulas to be propagated, -and returns the result of the new assumptions.

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.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/Make/index.html b/sidekick/Sidekick_sat__Internal/Make/index.html deleted file mode 100644 index 7268a041..00000000 --- a/sidekick/Sidekick_sat__Internal/Make/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Make (sidekick.Sidekick_sat__Internal.Make)

Module Sidekick_sat__Internal.Make

Parameters

Signature

module Proof : sig ... end
module H : sig ... end
exception Sat
exception Unsat
exception UndecidedLit
exception Restart
exception Conflict of St.clause
val var_decay : float
val clause_decay : float
val restart_first : int
val learntsize_factor : float
val restart_inc : float
val learntsize_inc : float
type t = {
st : St.t;
th : Th.t lazy_t;
clauses_hyps : St.clause Sidekick_util.Vec.t;
clauses_learnt : St.clause Sidekick_util.Vec.t;
clauses_temp : St.clause Sidekick_util.Vec.t;
mutable unsat_conflict : St.clause option;
mutable next_decision : St.atom option;
trail : St.atom Sidekick_util.Vec.t;
elt_levels : int Sidekick_util.Vec.t;
user_levels : int Sidekick_util.Vec.t;
backtrack_levels : int Sidekick_util.Vec.t;
backtrack : (unit ‑> unit) Sidekick_util.Vec.t;

(** Actions to call when backtracking *)

to_redo_after_backtrack : (unit ‑> unit) Sidekick_util.Vec.t;

(** Actions to re-do after backtracking *)

mutable th_head : int;
mutable elt_head : int;
order : H.t;
mutable var_incr : float;
mutable clause_incr : float;
to_add : (bool * St.clause) CCVector.vector;
mutable dirty : bool;
}
val create_ : st:St.t ‑> size_trail:int ‑> size_lvl:int ‑> Th.t lazy_t ‑> t
val theory : t ‑> Th.t
val at_level_0 : t ‑> bool
val on_backtrack : t ‑> (unit ‑> unit) ‑> unit
val st : t ‑> St.t
val nb_clauses : t ‑> int
val decision_level : t ‑> int
val base_level : t ‑> int
val redo_down_to_level_0 : t ‑> (unit ‑> unit) ‑> unit
val to_float : int ‑> float
val to_int : float ‑> int
val is_unsat : t ‑> bool
val insert_var_order : t ‑> St.var ‑> unit
val new_atom : permanent:bool ‑> t ‑> St.formula ‑> St.atom
val var_decay_activity : t ‑> unit
val clause_decay_activity : t ‑> unit
val var_bump_activity : t ‑> H.elt ‑> unit
val clause_bump_activity : t ‑> St.clause ‑> unit
exception Trivial
val arr_to_list : 'a array ‑> int ‑> 'a list
val eliminate_duplicates : St.Clause.t ‑> St.clause
val partition : St.atom array ‑> St.atom list * St.clause list
val new_decision_level : t ‑> unit
val attach_clause : t ‑> St.clause ‑> unit
val backtrack_down_to : t ‑> int ‑> unit
val cancel_until : t ‑> int ‑> unit
val report_unsat : t ‑> St.Clause.t ‑> 'a
val simpl_reason : St.reason ‑> St.reason
val enqueue_bool : t ‑> St.Atom.t ‑> St.reason ‑> unit
val swap_arr : 'a array ‑> int ‑> int ‑> unit
val put_high_level_atoms_first : St.atom array ‑> unit
val backtrack_lvl : t ‑> St.atom list ‑> int * bool
type conflict_res = {
cr_backtrack_lvl : int;
cr_learnt : St.atom list;
cr_history : St.clause list;
cr_is_uip : bool;
}
val get_atom : t ‑> int ‑> St.atom
val analyze_sat : t ‑> St.Clause.t ‑> conflict_res
val analyze : t ‑> St.Clause.t ‑> conflict_res
val record_learnt_clause : t ‑> St.clause ‑> conflict_res ‑> unit
val add_boolean_conflict : t ‑> St.clause ‑> unit
val clause_vector : t ‑> St.clause ‑> St.clause Sidekick_util.Vec.t
val add_clause_permanent : t ‑> St.atom list ‑> St.clause ‑> unit
val add_clause : permanent:bool ‑> t ‑> St.clause ‑> unit
val add_clause_user : permanent:bool ‑> t ‑> St.clause ‑> unit
type watch_res =
| Watch_kept
| Watch_removed
exception Exn_remove_watch
val propagate_in_clause : t ‑> St.atom ‑> St.clause ‑> watch_res
val propagate_atom : t ‑> St.atom ‑> unit
val slice_iter : t ‑> int ‑> int ‑> (St.formula ‑> unit) ‑> unit
val act_push_ : permanent:bool ‑> t ‑> St.formula Sidekick_util.IArray.t ‑> St.proof ‑> unit
val act_push_local : t ‑> St.formula Sidekick_util.IArray.t ‑> St.proof ‑> unit
val act_push_persistent : t ‑> St.formula Sidekick_util.IArray.t ‑> St.proof ‑> unit
val act_propagate : t ‑> St.formula ‑> St.formula list ‑> St.proof ‑> unit
val current_slice : t ‑> int ‑> (St.formula'aSidekick_sat.Theory_intf.slice_actions
val act_at_level_0 : t ‑> unit ‑> bool
val create : ?⁠size:[ `Big | `Small | `Tiny ] ‑> ?⁠st:St.t ‑> unit ‑> t
val propagation_fixpoint : t ‑> bool
val theory_propagate : t ‑> St.clause option
val propagate : t ‑> St.clause option
val reduce_db : unit ‑> unit
val pick_branch_aux : t ‑> St.Atom.t ‑> unit
val pick_branch_lit : t ‑> unit
val eval_level : t ‑> St.formula ‑> bool * int
val eval : t ‑> St.formula ‑> bool
val unsat_conflict : t ‑> St.clause option
val pp_trail : t ‑> unit
val solve : t ‑> unit
val assume : permanent:bool ‑> t ‑> ?⁠tag:int ‑> St.formula list list ‑> unit
val push : t ‑> unit
val pop : t ‑> unit
val local : t ‑> St.formula list ‑> unit
val check_clause : St.Clause.t ‑> bool
val check_vec : St.Clause.t Sidekick_util.Vec.t ‑> bool
val check_stack : St.Clause.t Stack.t ‑> bool
val check : t ‑> bool
val history : t ‑> St.clause Sidekick_util.Vec.t
val trail : t ‑> St.atom Sidekick_util.Vec.t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Internal/index.html b/sidekick/Sidekick_sat__Internal/index.html deleted file mode 100644 index 87d177ce..00000000 --- a/sidekick/Sidekick_sat__Internal/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_sat__Internal (sidekick.Sidekick_sat__Internal)

Module Sidekick_sat__Internal

module Make : functor (St : Sidekick_sat__.Solver_types.S) -> functor (Th : Sidekick_sat.Theory_intf.S with type formula = St.formula and type proof = St.proof) -> sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/.jbuilder-keep b/sidekick/Sidekick_sat__Res/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_sat__Res/Make/Atom/index.html b/sidekick/Sidekick_sat__Res/Make/Atom/index.html deleted file mode 100644 index 3ef749fb..00000000 --- a/sidekick/Sidekick_sat__Res/Make/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Res.Make.Atom)

Module Sidekick_sat__Res.Make.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/Make/Clause/index.html b/sidekick/Sidekick_sat__Res/Make/Clause/index.html deleted file mode 100644 index 750d1641..00000000 --- a/sidekick/Sidekick_sat__Res/Make/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Res.Make.Clause)

Module Sidekick_sat__Res.Make.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/Make/argument-1-St/Atom/index.html b/sidekick/Sidekick_sat__Res/Make/argument-1-St/Atom/index.html deleted file mode 100644 index e7cf6f1d..00000000 --- a/sidekick/Sidekick_sat__Res/Make/argument-1-St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Res.Make.1-St.Atom)

Module Sidekick_sat__Res.Make.1-St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/Make/argument-1-St/Clause/index.html b/sidekick/Sidekick_sat__Res/Make/argument-1-St/Clause/index.html deleted file mode 100644 index acbf5ccf..00000000 --- a/sidekick/Sidekick_sat__Res/Make/argument-1-St/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Res.Make.1-St.Clause)

Module Sidekick_sat__Res.Make.1-St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/Make/argument-1-St/Formula/index.html b/sidekick/Sidekick_sat__Res/Make/argument-1-St/Formula/index.html deleted file mode 100644 index 1b572ec6..00000000 --- a/sidekick/Sidekick_sat__Res/Make/argument-1-St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__Res.Make.1-St.Formula)

Module Sidekick_sat__Res.Make.1-St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/Make/argument-1-St/Var/index.html b/sidekick/Sidekick_sat__Res/Make/argument-1-St/Var/index.html deleted file mode 100644 index f531af48..00000000 --- a/sidekick/Sidekick_sat__Res/Make/argument-1-St/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__Res.Make.1-St.Var)

Module Sidekick_sat__Res.Make.1-St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/Make/argument-1-St/index.html b/sidekick/Sidekick_sat__Res/Make/argument-1-St/index.html deleted file mode 100644 index 22b04557..00000000 --- a/sidekick/Sidekick_sat__Res/Make/argument-1-St/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -1-St (sidekick.Sidekick_sat__Res.Make.1-St)

Parameter Sidekick_sat__Res.Make.1-St

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/Make/index.html b/sidekick/Sidekick_sat__Res/Make/index.html deleted file mode 100644 index 14a94d5d..00000000 --- a/sidekick/Sidekick_sat__Res/Make/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -Make (sidekick.Sidekick_sat__Res.Make)

Module Sidekick_sat__Res.Make

Functor to create a module building proofs from a sat-solver unsat trace.

Parameters

Signature

module St = St

Module defining atom and clauses

include Sidekick_sat__.Res_intf.S with type atom = St.atom and type lemma = St.proof and type clause = St.clause and type formula = St.formula

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula = St.formula
type atom = St.atom
type lemma = St.proof
type clause = St.clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/index.html b/sidekick/Sidekick_sat__Res/index.html deleted file mode 100644 index b9a2cb24..00000000 --- a/sidekick/Sidekick_sat__Res/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_sat__Res (sidekick.Sidekick_sat__Res)

Module Sidekick_sat__Res

Resolution proofs

This modules defines functions to create and manipulate resolution proofs.

Interface for a module manipulating resolution proofs.

module Make : functor (St : Sidekick_sat__.Solver_types.S) -> FULL with module St = St

Functor to create a module building proofs from a sat-solver unsat trace.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/module-type-FULL/Atom/index.html b/sidekick/Sidekick_sat__Res/module-type-FULL/Atom/index.html deleted file mode 100644 index be5b4c81..00000000 --- a/sidekick/Sidekick_sat__Res/module-type-FULL/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Res.FULL.Atom)

Module Sidekick_sat__Res.FULL.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/module-type-FULL/Clause/index.html b/sidekick/Sidekick_sat__Res/module-type-FULL/Clause/index.html deleted file mode 100644 index 0dd90480..00000000 --- a/sidekick/Sidekick_sat__Res/module-type-FULL/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Res.FULL.Clause)

Module Sidekick_sat__Res.FULL.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/module-type-FULL/St/Atom/index.html b/sidekick/Sidekick_sat__Res/module-type-FULL/St/Atom/index.html deleted file mode 100644 index bd67b955..00000000 --- a/sidekick/Sidekick_sat__Res/module-type-FULL/St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Res.FULL.St.Atom)

Module Sidekick_sat__Res.FULL.St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/module-type-FULL/St/Clause/index.html b/sidekick/Sidekick_sat__Res/module-type-FULL/St/Clause/index.html deleted file mode 100644 index 045f4631..00000000 --- a/sidekick/Sidekick_sat__Res/module-type-FULL/St/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Res.FULL.St.Clause)

Module Sidekick_sat__Res.FULL.St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/module-type-FULL/St/Formula/index.html b/sidekick/Sidekick_sat__Res/module-type-FULL/St/Formula/index.html deleted file mode 100644 index 35dfead2..00000000 --- a/sidekick/Sidekick_sat__Res/module-type-FULL/St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__Res.FULL.St.Formula)

Module Sidekick_sat__Res.FULL.St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/module-type-FULL/St/Var/index.html b/sidekick/Sidekick_sat__Res/module-type-FULL/St/Var/index.html deleted file mode 100644 index cdbdd42f..00000000 --- a/sidekick/Sidekick_sat__Res/module-type-FULL/St/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__Res.FULL.St.Var)

Module Sidekick_sat__Res.FULL.St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/module-type-FULL/St/index.html b/sidekick/Sidekick_sat__Res/module-type-FULL/St/index.html deleted file mode 100644 index 3fbb6722..00000000 --- a/sidekick/Sidekick_sat__Res/module-type-FULL/St/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -St (sidekick.Sidekick_sat__Res.FULL.St)

Module Sidekick_sat__Res.FULL.St

Module defining atom and clauses

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/module-type-FULL/index.html b/sidekick/Sidekick_sat__Res/module-type-FULL/index.html deleted file mode 100644 index ef917bfd..00000000 --- a/sidekick/Sidekick_sat__Res/module-type-FULL/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -FULL (sidekick.Sidekick_sat__Res.FULL)

Module type Sidekick_sat__Res.FULL

Module defining atom and clauses

include Sidekick_sat__.Res_intf.S with type atom = St.atom and type lemma = St.proof and type clause = St.clause and type formula = St.formula

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula = St.formula
type atom = St.atom
type lemma = St.proof
type clause = St.clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/module-type-S/Atom/index.html b/sidekick/Sidekick_sat__Res/module-type-S/Atom/index.html deleted file mode 100644 index 64a1cf83..00000000 --- a/sidekick/Sidekick_sat__Res/module-type-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Res.S.Atom)

Module Sidekick_sat__Res.S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/module-type-S/Clause/index.html b/sidekick/Sidekick_sat__Res/module-type-S/Clause/index.html deleted file mode 100644 index 50272ef6..00000000 --- a/sidekick/Sidekick_sat__Res/module-type-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Res.S.Clause)

Module Sidekick_sat__Res.S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res/module-type-S/index.html b/sidekick/Sidekick_sat__Res/module-type-S/index.html deleted file mode 100644 index e16f9139..00000000 --- a/sidekick/Sidekick_sat__Res/module-type-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -S (sidekick.Sidekick_sat__Res.S)

Module type Sidekick_sat__Res.S

Interface for a module manipulating resolution proofs.

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res_intf/.jbuilder-keep b/sidekick/Sidekick_sat__Res_intf/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_sat__Res_intf/index.html b/sidekick/Sidekick_sat__Res_intf/index.html deleted file mode 100644 index f1bcca84..00000000 --- a/sidekick/Sidekick_sat__Res_intf/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_sat__Res_intf (sidekick.Sidekick_sat__Res_intf)

Module Sidekick_sat__Res_intf

Interface for proofs

type 'a printer = Format.formatter ‑> 'a ‑> unit
module type S : sig ... end
module type FULL : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/Atom/index.html b/sidekick/Sidekick_sat__Res_intf/module-type-FULL/Atom/index.html deleted file mode 100644 index 61d10b67..00000000 --- a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Res_intf.FULL.Atom)

Module Sidekick_sat__Res_intf.FULL.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
val pp : t printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/Clause/index.html b/sidekick/Sidekick_sat__Res_intf/module-type-FULL/Clause/index.html deleted file mode 100644 index 955d0adc..00000000 --- a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Res_intf.FULL.Clause)

Module Sidekick_sat__Res_intf.FULL.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list
val pp : t printer

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Atom/index.html b/sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Atom/index.html deleted file mode 100644 index 71d1ac4d..00000000 --- a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Res_intf.FULL.St.Atom)

Module Sidekick_sat__Res_intf.FULL.St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Clause/index.html b/sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Clause/index.html deleted file mode 100644 index d31ae147..00000000 --- a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Res_intf.FULL.St.Clause)

Module Sidekick_sat__Res_intf.FULL.St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Formula/index.html b/sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Formula/index.html deleted file mode 100644 index 6e3673de..00000000 --- a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__Res_intf.FULL.St.Formula)

Module Sidekick_sat__Res_intf.FULL.St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Var/index.html b/sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Var/index.html deleted file mode 100644 index 7c7dba1e..00000000 --- a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__Res_intf.FULL.St.Var)

Module Sidekick_sat__Res_intf.FULL.St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/index.html b/sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/index.html deleted file mode 100644 index 7ea48f4c..00000000 --- a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/St/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -St (sidekick.Sidekick_sat__Res_intf.FULL.St)

Module Sidekick_sat__Res_intf.FULL.St

Module defining atom and clauses

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/index.html b/sidekick/Sidekick_sat__Res_intf/module-type-FULL/index.html deleted file mode 100644 index 0962c29b..00000000 --- a/sidekick/Sidekick_sat__Res_intf/module-type-FULL/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -FULL (sidekick.Sidekick_sat__Res_intf.FULL)

Module type Sidekick_sat__Res_intf.FULL

Module defining atom and clauses

include S with type atom = St.atom and type lemma = St.proof and type clause = St.clause and type formula = St.formula

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula = St.formula
type atom = St.atom
type lemma = St.proof
type clause = St.clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res_intf/module-type-S/Atom/index.html b/sidekick/Sidekick_sat__Res_intf/module-type-S/Atom/index.html deleted file mode 100644 index 25f80da1..00000000 --- a/sidekick/Sidekick_sat__Res_intf/module-type-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Res_intf.S.Atom)

Module Sidekick_sat__Res_intf.S.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
val pp : t printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res_intf/module-type-S/Clause/index.html b/sidekick/Sidekick_sat__Res_intf/module-type-S/Clause/index.html deleted file mode 100644 index 0799aad8..00000000 --- a/sidekick/Sidekick_sat__Res_intf/module-type-S/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Res_intf.S.Clause)

Module Sidekick_sat__Res_intf.S.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list
val pp : t printer

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Res_intf/module-type-S/index.html b/sidekick/Sidekick_sat__Res_intf/module-type-S/index.html deleted file mode 100644 index 7a6be3cd..00000000 --- a/sidekick/Sidekick_sat__Res_intf/module-type-S/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -S (sidekick.Sidekick_sat__Res_intf.S)

Module type Sidekick_sat__Res_intf.S

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/.jbuilder-keep b/sidekick/Sidekick_sat__Solver/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_sat__Solver/Make/Clause/index.html b/sidekick/Sidekick_sat__Solver/Make/Clause/index.html deleted file mode 100644 index aa787cab..00000000 --- a/sidekick/Sidekick_sat__Solver/Make/Clause/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Solver.Make.Clause)

Module Sidekick_sat__Solver.Make.Clause

type t = clause
val atoms : t ‑> atom Sidekick_util.IArray.t
val atoms_l : t ‑> atom list
val tag : t ‑> int option
val equal : t ‑> t ‑> bool
val make : ?⁠tag:int ‑> lit array ‑> t

Make a clause from this array of SAT literals. -The array's ownership is transferred to the clause, do not mutate it

val make_l : ?⁠tag:int ‑> lit list ‑> t
val of_atoms : solver ‑> ?⁠tag:int ‑> atom list ‑> t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/Make/Formula/index.html b/sidekick/Sidekick_sat__Solver/Make/Formula/index.html deleted file mode 100644 index 39186a28..00000000 --- a/sidekick/Sidekick_sat__Solver/Make/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__Solver.Make.Formula)

Module Sidekick_sat__Solver.Make.Formula

type t = formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/Make/Lit/index.html b/sidekick/Sidekick_sat__Solver/Make/Lit/index.html deleted file mode 100644 index 168261b3..00000000 --- a/sidekick/Sidekick_sat__Solver/Make/Lit/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Lit (sidekick.Sidekick_sat__Solver.Make.Lit)

Module Sidekick_sat__Solver.Make.Lit

type t = lit
val make : solver ‑> atom ‑> t
val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/Make/Proof/Atom/index.html b/sidekick/Sidekick_sat__Solver/Make/Proof/Atom/index.html deleted file mode 100644 index 5e17117b..00000000 --- a/sidekick/Sidekick_sat__Solver/Make/Proof/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Solver.Make.Proof.Atom)

Module Sidekick_sat__Solver.Make.Proof.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/Make/Proof/Clause/index.html b/sidekick/Sidekick_sat__Solver/Make/Proof/Clause/index.html deleted file mode 100644 index d1cb4704..00000000 --- a/sidekick/Sidekick_sat__Solver/Make/Proof/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Solver.Make.Proof.Clause)

Module Sidekick_sat__Solver.Make.Proof.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/Make/Proof/index.html b/sidekick/Sidekick_sat__Solver/Make/Proof/index.html deleted file mode 100644 index 34121b87..00000000 --- a/sidekick/Sidekick_sat__Solver/Make/Proof/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -Proof (sidekick.Sidekick_sat__Solver.Make.Proof)

Module Sidekick_sat__Solver.Make.Proof

A module to manipulate proofs.

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma = St.proof
type clause = clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/Make/argument-1-St/Atom/index.html b/sidekick/Sidekick_sat__Solver/Make/argument-1-St/Atom/index.html deleted file mode 100644 index c7356b20..00000000 --- a/sidekick/Sidekick_sat__Solver/Make/argument-1-St/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Solver.Make.1-St.Atom)

Module Sidekick_sat__Solver.Make.1-St.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/Make/argument-1-St/Clause/index.html b/sidekick/Sidekick_sat__Solver/Make/argument-1-St/Clause/index.html deleted file mode 100644 index 0210a38d..00000000 --- a/sidekick/Sidekick_sat__Solver/Make/argument-1-St/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Solver.Make.1-St.Clause)

Module Sidekick_sat__Solver.Make.1-St.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/Make/argument-1-St/Formula/index.html b/sidekick/Sidekick_sat__Solver/Make/argument-1-St/Formula/index.html deleted file mode 100644 index 6aff7083..00000000 --- a/sidekick/Sidekick_sat__Solver/Make/argument-1-St/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__Solver.Make.1-St.Formula)

Module Sidekick_sat__Solver.Make.1-St.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/Make/argument-1-St/Var/index.html b/sidekick/Sidekick_sat__Solver/Make/argument-1-St/Var/index.html deleted file mode 100644 index 3eeb5de6..00000000 --- a/sidekick/Sidekick_sat__Solver/Make/argument-1-St/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__Solver.Make.1-St.Var)

Module Sidekick_sat__Solver.Make.1-St.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/Make/argument-1-St/index.html b/sidekick/Sidekick_sat__Solver/Make/argument-1-St/index.html deleted file mode 100644 index 5c720309..00000000 --- a/sidekick/Sidekick_sat__Solver/Make/argument-1-St/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -1-St (sidekick.Sidekick_sat__Solver.Make.1-St)

Parameter Sidekick_sat__Solver.Make.1-St

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/Make/argument-2-Th/Form/index.html b/sidekick/Sidekick_sat__Solver/Make/argument-2-Th/Form/index.html deleted file mode 100644 index 2cad8382..00000000 --- a/sidekick/Sidekick_sat__Solver/Make/argument-2-Th/Form/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Form (sidekick.Sidekick_sat__Solver.Make.2-Th.Form)

Module Sidekick_sat__Solver.Make.2-Th.Form

type t = formula

The type of atomic formulas.

val equal : t ‑> t ‑> bool

Equality over formulas.

val hash : t ‑> int

Hashing function for formulas. Should be such that two formulas equal according -to Expr_intf.S.equal have the same hash.

val print : Format.formatter ‑> t ‑> unit

Printing function used among other thing for debugging.

val dummy : t

Formula constant. A valid formula should never be physically equal to dummy

val neg : t ‑> t

Formula negation. Should be an involution, i.e. equal a (neg neg a) should -always hold.

Returns a 'normalized' form of the formula, possibly negated -(in which case return Negated). This function is used to recognize -the link between a formula a and its negation neg a, so the goal is -that a and neg a normalise to the same formula, -but one returns Same_sign and the other one returns Negated

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/Make/argument-2-Th/index.html b/sidekick/Sidekick_sat__Solver/Make/argument-2-Th/index.html deleted file mode 100644 index 1ab1090e..00000000 --- a/sidekick/Sidekick_sat__Solver/Make/argument-2-Th/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -2-Th (sidekick.Sidekick_sat__Solver.Make.2-Th)

Parameter Sidekick_sat__Solver.Make.2-Th

type t

State of the theory

type formula = St.formula

The type of formulas. Should be compatble with Formula_intf.S

type proof = St.proof

A custom type for the proofs of lemmas produced by the theory.

module Form : sig ... end

Create a new instance of the theory

Assume the formulas in the slice, possibly pushing new formulas to be propagated, -and returns the result of the new assumptions.

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.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/Make/index.html b/sidekick/Sidekick_sat__Solver/Make/index.html deleted file mode 100644 index 505ca8b6..00000000 --- a/sidekick/Sidekick_sat__Solver/Make/index.html +++ /dev/null @@ -1,18 +0,0 @@ - -Make (sidekick.Sidekick_sat__Solver.Make)

Module Sidekick_sat__Solver.Make

Functor to make a safe external interface.

Parameters

Signature

Internal modules

-These are the internal modules used, you should probably not use them -if you're not familiar with the internals of mSAT.

type formula = St.formula

user formulas

type lit

SAT solver literals

type clause = St.clause

SAT solver clauses

type theory = Th.t

user theory

module Proof : Sidekick_sat.Res.S with type clause = clause and type lemma = St.proof

A module to manipulate proofs.

type t

Main solver type, containing all state for solving.

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Create new solver

  • Parameter size: the initial size of internal data structures. The bigger, -the faster, but also the more RAM it uses.

Types

type atom = formula

The type of atoms given by the module argument for formulas. -An atom is a user-defined atomic formula whose truth value is -picked by Msat.

type res =
| Sat of formula Sidekick_sat__.Solver_intf.sat_state

(** Returned when the solver reaches SAT, with a model *)

| Unsat of (clauseProof.proofSidekick_sat__.Solver_intf.unsat_state

(** Returned when the solver reaches UNSAT, with a proof *)

Result type for the solver

exception UndecidedLit

Exception raised by the evaluating functions when a literal -has not yet been assigned a value.

Base operations

val theory : t ‑> theory
val assume : ?⁠permanent:bool ‑> t ‑> ?⁠tag:int ‑> atom list list ‑> unit

Add the list of clauses to the current set of assumptions. -Modifies the sat solver state in place.

  • Parameter permanent: if true, kept after backtracking (default true)
val add_clause : permanent:bool ‑> t ‑> clause ‑> unit

Lower level addition of clauses. See Clause to create clauses.

  • Parameter permanent: if true, kept after backtracking
val solve : t ‑> ?⁠assumptions:atom list ‑> unit ‑> res

Try and solves the current set of clauses.

  • Parameter assumptions: additional atomic assumptions to be temporarily added. -The assumptions are just used for this call to solve, they are -not saved in the solver's state.
val new_atom : permanent:bool ‑> t ‑> atom ‑> unit

Add a new atom (i.e propositional formula) to the solver. -This formula will be decided on at some point during solving, -whether it appears in clauses or not.

  • Parameter permanent: if true, kept after backtracking
val unsat_core : Proof.proof ‑> clause list

Returns the unsat core of a given proof, ie a subset of all the added -clauses that is sufficient to establish unsatisfiability.

val true_at_level0 : t ‑> atom ‑> bool

true_at_level0 a returns true if a was proved at level0, i.e. -it must hold in all models

val get_tag : clause ‑> int option

Recover tag from a clause, if any

val push : t ‑> unit

Push a new save point. Clauses added after this call to push will -be added as normal, but the corresponding call to pop will -remove these clauses.

val pop : t ‑> unit

Return to last save point, discarding clauses added since last -call to push

Obtain actions

Re-export some functions

type solver = t
module Lit : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/index.html b/sidekick/Sidekick_sat__Solver/index.html deleted file mode 100644 index 8c9bb2e1..00000000 --- a/sidekick/Sidekick_sat__Solver/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Sidekick_sat__Solver (sidekick.Sidekick_sat__Solver)

Module Sidekick_sat__Solver

SAT safe interface

This module defines a safe interface for the core solver. -It is the basis of the Solver and Mcsolver modules.

Safe external interface of solvers.

module Make : functor (St : Sidekick_sat__.Solver_types.S) -> functor (Th : Sidekick_sat.Theory_intf.S with type formula = St.formula and type proof = St.proof) -> S with type formula = St.formula and type clause = St.clause and type Proof.lemma = St.proof and type theory = Th.t

Functor to make a safe external interface.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/module-type-S/Clause/index.html b/sidekick/Sidekick_sat__Solver/module-type-S/Clause/index.html deleted file mode 100644 index fe7f8d5d..00000000 --- a/sidekick/Sidekick_sat__Solver/module-type-S/Clause/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Solver.S.Clause)

Module Sidekick_sat__Solver.S.Clause

type t = clause
val atoms : t ‑> atom Sidekick_util.IArray.t
val atoms_l : t ‑> atom list
val tag : t ‑> int option
val equal : t ‑> t ‑> bool
val make : ?⁠tag:int ‑> lit array ‑> t

Make a clause from this array of SAT literals. -The array's ownership is transferred to the clause, do not mutate it

val make_l : ?⁠tag:int ‑> lit list ‑> t
val of_atoms : solver ‑> ?⁠tag:int ‑> atom list ‑> t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/module-type-S/Formula/index.html b/sidekick/Sidekick_sat__Solver/module-type-S/Formula/index.html deleted file mode 100644 index 277b8c82..00000000 --- a/sidekick/Sidekick_sat__Solver/module-type-S/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__Solver.S.Formula)

Module Sidekick_sat__Solver.S.Formula

type t = formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/module-type-S/Lit/index.html b/sidekick/Sidekick_sat__Solver/module-type-S/Lit/index.html deleted file mode 100644 index 90451d2b..00000000 --- a/sidekick/Sidekick_sat__Solver/module-type-S/Lit/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Lit (sidekick.Sidekick_sat__Solver.S.Lit)

Module Sidekick_sat__Solver.S.Lit

type t = lit
val make : solver ‑> atom ‑> t
val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/module-type-S/Proof/Atom/index.html b/sidekick/Sidekick_sat__Solver/module-type-S/Proof/Atom/index.html deleted file mode 100644 index bb1d1fbf..00000000 --- a/sidekick/Sidekick_sat__Solver/module-type-S/Proof/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Solver.S.Proof.Atom)

Module Sidekick_sat__Solver.S.Proof.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/module-type-S/Proof/Clause/index.html b/sidekick/Sidekick_sat__Solver/module-type-S/Proof/Clause/index.html deleted file mode 100644 index 5f7f9bbe..00000000 --- a/sidekick/Sidekick_sat__Solver/module-type-S/Proof/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Solver.S.Proof.Clause)

Module Sidekick_sat__Solver.S.Proof.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/module-type-S/Proof/index.html b/sidekick/Sidekick_sat__Solver/module-type-S/Proof/index.html deleted file mode 100644 index 63d1bff3..00000000 --- a/sidekick/Sidekick_sat__Solver/module-type-S/Proof/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -Proof (sidekick.Sidekick_sat__Solver.S.Proof)

Module Sidekick_sat__Solver.S.Proof

A module to manipulate proofs.

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause = clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver/module-type-S/index.html b/sidekick/Sidekick_sat__Solver/module-type-S/index.html deleted file mode 100644 index e1033d59..00000000 --- a/sidekick/Sidekick_sat__Solver/module-type-S/index.html +++ /dev/null @@ -1,18 +0,0 @@ - -S (sidekick.Sidekick_sat__Solver.S)

Module type Sidekick_sat__Solver.S

Safe external interface of solvers.

Internal modules

-These are the internal modules used, you should probably not use them -if you're not familiar with the internals of mSAT.

type formula

user formulas

type lit

SAT solver literals

type clause

SAT solver clauses

type theory

user theory

module Proof : Sidekick_sat.Res.S with type clause = clause

A module to manipulate proofs.

type t

Main solver type, containing all state for solving.

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Create new solver

  • Parameter size: the initial size of internal data structures. The bigger, -the faster, but also the more RAM it uses.

Types

type atom = formula

The type of atoms given by the module argument for formulas. -An atom is a user-defined atomic formula whose truth value is -picked by Msat.

type res =
| Sat of formula Sidekick_sat__.Solver_intf.sat_state

(** Returned when the solver reaches SAT, with a model *)

| Unsat of (clauseProof.proofSidekick_sat__.Solver_intf.unsat_state

(** Returned when the solver reaches UNSAT, with a proof *)

Result type for the solver

exception UndecidedLit

Exception raised by the evaluating functions when a literal -has not yet been assigned a value.

Base operations

val theory : t ‑> theory
val assume : ?⁠permanent:bool ‑> t ‑> ?⁠tag:int ‑> atom list list ‑> unit

Add the list of clauses to the current set of assumptions. -Modifies the sat solver state in place.

  • Parameter permanent: if true, kept after backtracking (default true)
val add_clause : permanent:bool ‑> t ‑> clause ‑> unit

Lower level addition of clauses. See Clause to create clauses.

  • Parameter permanent: if true, kept after backtracking
val solve : t ‑> ?⁠assumptions:atom list ‑> unit ‑> res

Try and solves the current set of clauses.

  • Parameter assumptions: additional atomic assumptions to be temporarily added. -The assumptions are just used for this call to solve, they are -not saved in the solver's state.
val new_atom : permanent:bool ‑> t ‑> atom ‑> unit

Add a new atom (i.e propositional formula) to the solver. -This formula will be decided on at some point during solving, -whether it appears in clauses or not.

  • Parameter permanent: if true, kept after backtracking
val unsat_core : Proof.proof ‑> clause list

Returns the unsat core of a given proof, ie a subset of all the added -clauses that is sufficient to establish unsatisfiability.

val true_at_level0 : t ‑> atom ‑> bool

true_at_level0 a returns true if a was proved at level0, i.e. -it must hold in all models

val get_tag : clause ‑> int option

Recover tag from a clause, if any

val push : t ‑> unit

Push a new save point. Clauses added after this call to push will -be added as normal, but the corresponding call to pop will -remove these clauses.

val pop : t ‑> unit

Return to last save point, discarding clauses added since last -call to push

Obtain actions

Re-export some functions

type solver = t
module Lit : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_intf/.jbuilder-keep b/sidekick/Sidekick_sat__Solver_intf/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_sat__Solver_intf/index.html b/sidekick/Sidekick_sat__Solver_intf/index.html deleted file mode 100644 index 9e43ca57..00000000 --- a/sidekick/Sidekick_sat__Solver_intf/index.html +++ /dev/null @@ -1,10 +0,0 @@ - -Sidekick_sat__Solver_intf (sidekick.Sidekick_sat__Solver_intf)

Module Sidekick_sat__Solver_intf

Interface for Solvers

This modules defines the safe external interface for solvers. -Solvers that implements this interface can be obtained using the Make -functor in Solver or Mcsolver.

type 'form sat_state =
| Sat_state of {
eval : 'form ‑> bool;

(** Returns the valuation of a formula in the current state -of the sat solver.

  • Raises UndecidedLit: if the literal is not decided

*)

eval_level : 'form ‑> bool * int;

(** Return the current assignement of the literals, as well as its -decision level. If the level is 0, then it is necessary for -the atom to have this value; otherwise it is due to choices -that can potentially be backtracked.

  • Raises UndecidedLit: if the literal is not decided

*)

iter_trail : ('form ‑> unit) ‑> unit;

(** Iter through the formulas and terms in order of decision/propagation -(starting from the first propagation, to the last propagation). *)

}

(** The type of values returned when the solver reaches a SAT state. *)

type ('clause, 'proof) unsat_state =
| Unsat_state of {
unsat_conflict : unit ‑> 'clause;

(** Returns the unsat clause found at the toplevel *)

get_proof : unit ‑> 'proof;

(** returns a persistent proof of the empty clause from the Unsat result. *)

}

(** The type of values returned when the solver reaches an UNSAT state. *)

type 'clause export = {
hyps : 'clause Sidekick_util.Vec.t;
history : 'clause Sidekick_util.Vec.t;
local : 'clause Sidekick_util.Vec.t;
}

Export internal state

type 'a printer = Format.formatter ‑> 'a ‑> unit
module type S : sig ... end

The external interface implemented by safe solvers, such as the one -created by the Solver.Make and Mcsolver.Make functors.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_intf/module-type-S/Clause/index.html b/sidekick/Sidekick_sat__Solver_intf/module-type-S/Clause/index.html deleted file mode 100644 index b4a14435..00000000 --- a/sidekick/Sidekick_sat__Solver_intf/module-type-S/Clause/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Solver_intf.S.Clause)

Module Sidekick_sat__Solver_intf.S.Clause

type t = clause
val atoms : t ‑> atom Sidekick_util.IArray.t
val atoms_l : t ‑> atom list
val tag : t ‑> int option
val equal : t ‑> t ‑> bool
val make : ?⁠tag:int ‑> lit array ‑> t

Make a clause from this array of SAT literals. -The array's ownership is transferred to the clause, do not mutate it

val make_l : ?⁠tag:int ‑> lit list ‑> t
val of_atoms : solver ‑> ?⁠tag:int ‑> atom list ‑> t
val pp : t printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_intf/module-type-S/Formula/index.html b/sidekick/Sidekick_sat__Solver_intf/module-type-S/Formula/index.html deleted file mode 100644 index 9cee036c..00000000 --- a/sidekick/Sidekick_sat__Solver_intf/module-type-S/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__Solver_intf.S.Formula)

Module Sidekick_sat__Solver_intf.S.Formula

type t = formula
val pp : t printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_intf/module-type-S/Lit/index.html b/sidekick/Sidekick_sat__Solver_intf/module-type-S/Lit/index.html deleted file mode 100644 index 123b4164..00000000 --- a/sidekick/Sidekick_sat__Solver_intf/module-type-S/Lit/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Lit (sidekick.Sidekick_sat__Solver_intf.S.Lit)

Module Sidekick_sat__Solver_intf.S.Lit

type t = lit
val make : solver ‑> atom ‑> t
val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_intf/module-type-S/Proof/Atom/index.html b/sidekick/Sidekick_sat__Solver_intf/module-type-S/Proof/Atom/index.html deleted file mode 100644 index d1201916..00000000 --- a/sidekick/Sidekick_sat__Solver_intf/module-type-S/Proof/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Solver_intf.S.Proof.Atom)

Module Sidekick_sat__Solver_intf.S.Proof.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_intf/module-type-S/Proof/Clause/index.html b/sidekick/Sidekick_sat__Solver_intf/module-type-S/Proof/Clause/index.html deleted file mode 100644 index 9b9078ac..00000000 --- a/sidekick/Sidekick_sat__Solver_intf/module-type-S/Proof/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Solver_intf.S.Proof.Clause)

Module Sidekick_sat__Solver_intf.S.Proof.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_intf/module-type-S/Proof/index.html b/sidekick/Sidekick_sat__Solver_intf/module-type-S/Proof/index.html deleted file mode 100644 index 12dc3151..00000000 --- a/sidekick/Sidekick_sat__Solver_intf/module-type-S/Proof/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -Proof (sidekick.Sidekick_sat__Solver_intf.S.Proof)

Module Sidekick_sat__Solver_intf.S.Proof

A module to manipulate proofs.

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type lemma
type clause = clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_intf/module-type-S/index.html b/sidekick/Sidekick_sat__Solver_intf/module-type-S/index.html deleted file mode 100644 index 334aa895..00000000 --- a/sidekick/Sidekick_sat__Solver_intf/module-type-S/index.html +++ /dev/null @@ -1,19 +0,0 @@ - -S (sidekick.Sidekick_sat__Solver_intf.S)

Module type Sidekick_sat__Solver_intf.S

The external interface implemented by safe solvers, such as the one -created by the Solver.Make and Mcsolver.Make functors.

Internal modules

-These are the internal modules used, you should probably not use them -if you're not familiar with the internals of mSAT.

type formula

user formulas

type lit

SAT solver literals

type clause

SAT solver clauses

type theory

user theory

module Proof : Sidekick_sat.Res.S with type clause = clause

A module to manipulate proofs.

type t

Main solver type, containing all state for solving.

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Create new solver

  • Parameter size: the initial size of internal data structures. The bigger, -the faster, but also the more RAM it uses.

Types

type atom = formula

The type of atoms given by the module argument for formulas. -An atom is a user-defined atomic formula whose truth value is -picked by Msat.

type res =
| Sat of formula sat_state

(** Returned when the solver reaches SAT, with a model *)

| Unsat of (clauseProof.proofunsat_state

(** Returned when the solver reaches UNSAT, with a proof *)

Result type for the solver

exception UndecidedLit

Exception raised by the evaluating functions when a literal -has not yet been assigned a value.

Base operations

val theory : t ‑> theory
val assume : ?⁠permanent:bool ‑> t ‑> ?⁠tag:int ‑> atom list list ‑> unit

Add the list of clauses to the current set of assumptions. -Modifies the sat solver state in place.

  • Parameter permanent: if true, kept after backtracking (default true)
val add_clause : permanent:bool ‑> t ‑> clause ‑> unit

Lower level addition of clauses. See Clause to create clauses.

  • Parameter permanent: if true, kept after backtracking
val solve : t ‑> ?⁠assumptions:atom list ‑> unit ‑> res

Try and solves the current set of clauses.

  • Parameter assumptions: additional atomic assumptions to be temporarily added. -The assumptions are just used for this call to solve, they are -not saved in the solver's state.
val new_atom : permanent:bool ‑> t ‑> atom ‑> unit

Add a new atom (i.e propositional formula) to the solver. -This formula will be decided on at some point during solving, -whether it appears in clauses or not.

  • Parameter permanent: if true, kept after backtracking
val unsat_core : Proof.proof ‑> clause list

Returns the unsat core of a given proof, ie a subset of all the added -clauses that is sufficient to establish unsatisfiability.

val true_at_level0 : t ‑> atom ‑> bool

true_at_level0 a returns true if a was proved at level0, i.e. -it must hold in all models

val get_tag : clause ‑> int option

Recover tag from a clause, if any

val push : t ‑> unit

Push a new save point. Clauses added after this call to push will -be added as normal, but the corresponding call to pop will -remove these clauses.

val pop : t ‑> unit

Return to last save point, discarding clauses added since last -call to push

Obtain actions

val export : t ‑> clause export

Re-export some functions

type solver = t
module Lit : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types/.jbuilder-keep b/sidekick/Sidekick_sat__Solver_types/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_sat__Solver_types/Make/Atom/index.html b/sidekick/Sidekick_sat__Solver_types/Make/Atom/index.html deleted file mode 100644 index 84d37251..00000000 --- a/sidekick/Sidekick_sat__Solver_types/Make/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Solver_types.Make.Atom)

Module Sidekick_sat__Solver_types.Make.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types/Make/Clause/index.html b/sidekick/Sidekick_sat__Solver_types/Make/Clause/index.html deleted file mode 100644 index ac39e685..00000000 --- a/sidekick/Sidekick_sat__Solver_types/Make/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Solver_types.Make.Clause)

Module Sidekick_sat__Solver_types.Make.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types/Make/Formula/index.html b/sidekick/Sidekick_sat__Solver_types/Make/Formula/index.html deleted file mode 100644 index 7ae06e82..00000000 --- a/sidekick/Sidekick_sat__Solver_types/Make/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__Solver_types.Make.Formula)

Module Sidekick_sat__Solver_types.Make.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types/Make/Var/index.html b/sidekick/Sidekick_sat__Solver_types/Make/Var/index.html deleted file mode 100644 index 925168b4..00000000 --- a/sidekick/Sidekick_sat__Solver_types/Make/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__Solver_types.Make.Var)

Module Sidekick_sat__Solver_types.Make.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types/Make/argument-1-E/Form/index.html b/sidekick/Sidekick_sat__Solver_types/Make/argument-1-E/Form/index.html deleted file mode 100644 index 4730fa87..00000000 --- a/sidekick/Sidekick_sat__Solver_types/Make/argument-1-E/Form/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Form (sidekick.Sidekick_sat__Solver_types.Make.1-E.Form)

Module Sidekick_sat__Solver_types.Make.1-E.Form

type t = formula

The type of atomic formulas.

val equal : t ‑> t ‑> bool

Equality over formulas.

val hash : t ‑> int

Hashing function for formulas. Should be such that two formulas equal according -to Expr_intf.S.equal have the same hash.

val print : Format.formatter ‑> t ‑> unit

Printing function used among other thing for debugging.

val dummy : t

Formula constant. A valid formula should never be physically equal to dummy

val neg : t ‑> t

Formula negation. Should be an involution, i.e. equal a (neg neg a) should -always hold.

Returns a 'normalized' form of the formula, possibly negated -(in which case return Negated). This function is used to recognize -the link between a formula a and its negation neg a, so the goal is -that a and neg a normalise to the same formula, -but one returns Same_sign and the other one returns Negated

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types/Make/argument-1-E/index.html b/sidekick/Sidekick_sat__Solver_types/Make/argument-1-E/index.html deleted file mode 100644 index 729a196f..00000000 --- a/sidekick/Sidekick_sat__Solver_types/Make/argument-1-E/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -1-E (sidekick.Sidekick_sat__Solver_types.Make.1-E)

Parameter Sidekick_sat__Solver_types.Make.1-E

type t

State of the theory

type formula

The type of formulas. Should be compatble with Formula_intf.S

type proof

A custom type for the proofs of lemmas produced by the theory.

module Form : sig ... end

Create a new instance of the theory

Assume the formulas in the slice, possibly pushing new formulas to be propagated, -and returns the result of the new assumptions.

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.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types/Make/index.html b/sidekick/Sidekick_sat__Solver_types/Make/index.html deleted file mode 100644 index 6f56fd72..00000000 --- a/sidekick/Sidekick_sat__Solver_types/Make/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -Make (sidekick.Sidekick_sat__Solver_types.Make)

Module Sidekick_sat__Solver_types.Make

Functor to instantiate the types of clauses for a solver.

Parameters

Signature

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula = E.formula
type proof = E.proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types/index.html b/sidekick/Sidekick_sat__Solver_types/index.html deleted file mode 100644 index 74958559..00000000 --- a/sidekick/Sidekick_sat__Solver_types/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -Sidekick_sat__Solver_types (sidekick.Sidekick_sat__Solver_types)

Module Sidekick_sat__Solver_types

Internal types (implementation)

This modules actually implements the internal types used by the solver. -Since mutation is heavily used in the solver, it is really, really, *really* -discouraged to direclty use the functions in this module if you don't know the -inner working of mSAT perfectly as even the simplest -change can have dramatic effects on the solver.

Interface for the internal types.

module Make : functor (E : Sidekick_sat.Theory_intf.S) -> S with type formula = E.formula and type proof = E.proof

Functor to instantiate the types of clauses for a solver.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types/module-type-S/Atom/index.html b/sidekick/Sidekick_sat__Solver_types/module-type-S/Atom/index.html deleted file mode 100644 index 6169b1cb..00000000 --- a/sidekick/Sidekick_sat__Solver_types/module-type-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Solver_types.S.Atom)

Module Sidekick_sat__Solver_types.S.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types/module-type-S/Clause/index.html b/sidekick/Sidekick_sat__Solver_types/module-type-S/Clause/index.html deleted file mode 100644 index bb6fa9b8..00000000 --- a/sidekick/Sidekick_sat__Solver_types/module-type-S/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Solver_types.S.Clause)

Module Sidekick_sat__Solver_types.S.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types/module-type-S/Formula/index.html b/sidekick/Sidekick_sat__Solver_types/module-type-S/Formula/index.html deleted file mode 100644 index c4d0ec45..00000000 --- a/sidekick/Sidekick_sat__Solver_types/module-type-S/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__Solver_types.S.Formula)

Module Sidekick_sat__Solver_types.S.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types/module-type-S/Var/index.html b/sidekick/Sidekick_sat__Solver_types/module-type-S/Var/index.html deleted file mode 100644 index 2d701015..00000000 --- a/sidekick/Sidekick_sat__Solver_types/module-type-S/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__Solver_types.S.Var)

Module Sidekick_sat__Solver_types.S.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types/module-type-S/index.html b/sidekick/Sidekick_sat__Solver_types/module-type-S/index.html deleted file mode 100644 index db897a61..00000000 --- a/sidekick/Sidekick_sat__Solver_types/module-type-S/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -S (sidekick.Sidekick_sat__Solver_types.S)

Module type Sidekick_sat__Solver_types.S

Interface for the internal types.

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Sidekick_sat.Solver_types_intf.Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : Sidekick_sat.Solver_types_intf.C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types_intf/.jbuilder-keep b/sidekick/Sidekick_sat__Solver_types_intf/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_sat__Solver_types_intf/C_fields/index.html b/sidekick/Sidekick_sat__Solver_types_intf/C_fields/index.html deleted file mode 100644 index 83573826..00000000 --- a/sidekick/Sidekick_sat__Solver_types_intf/C_fields/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -C_fields (sidekick.Sidekick_sat__Solver_types_intf.C_fields)

Module Sidekick_sat__Solver_types_intf.C_fields

type t = private int

Generative type of bitfields. Each instantiation of the functor -should create a new, incompatible type

val empty : t

Empty bitfields (all bits 0)

type field
val get : field ‑> t ‑> bool

Get the value of this field

val set : field ‑> bool ‑> t ‑> t

Set the value of this field

val mk_field : unit ‑> field

Make a new field

val freeze : unit ‑> unit

Prevent new fields from being added. From now on, creating -a field will raise Frozen

val total_width : unit ‑> int

Current width of the bitfield

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types_intf/Var_fields/index.html b/sidekick/Sidekick_sat__Solver_types_intf/Var_fields/index.html deleted file mode 100644 index 6b33f478..00000000 --- a/sidekick/Sidekick_sat__Solver_types_intf/Var_fields/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var_fields (sidekick.Sidekick_sat__Solver_types_intf.Var_fields)

Module Sidekick_sat__Solver_types_intf.Var_fields

type t = private int

Generative type of bitfields. Each instantiation of the functor -should create a new, incompatible type

val empty : t

Empty bitfields (all bits 0)

type field
val get : field ‑> t ‑> bool

Get the value of this field

val set : field ‑> bool ‑> t ‑> t

Set the value of this field

val mk_field : unit ‑> field

Make a new field

val freeze : unit ‑> unit

Prevent new fields from being added. From now on, creating -a field will raise Frozen

val total_width : unit ‑> int

Current width of the bitfield

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types_intf/index.html b/sidekick/Sidekick_sat__Solver_types_intf/index.html deleted file mode 100644 index 53955256..00000000 --- a/sidekick/Sidekick_sat__Solver_types_intf/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Sidekick_sat__Solver_types_intf (sidekick.Sidekick_sat__Solver_types_intf)

Module Sidekick_sat__Solver_types_intf

Internal types (interface)

This modules defines the interface of most of the internal types -used in the core solver.

type 'a printer = Format.formatter ‑> 'a ‑> unit
module type S : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Atom/index.html b/sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Atom/index.html deleted file mode 100644 index e61f5e41..00000000 --- a/sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_sat__Solver_types_intf.S.Atom)

Module Sidekick_sat__Solver_types_intf.S.Atom

type t = atom
val dummy : t
val level : t ‑> int
val reason : t ‑> reason option
val lit : t ‑> formula
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val var : t ‑> Var.t
val abs : t ‑> t

positive atom

val neg : t ‑> t

positive atom

val id : t ‑> int
val is_pos : t ‑> bool
val is_true : t ‑> bool
val is_false : t ‑> bool
val make : state ‑> formula ‑> t

Returns the atom associated with the given formula

val mark : t ‑> unit

Mark the atom as seen, using the 'seen' field in the variable.

val seen : t ‑> bool

Returns wether the atom has been marked as seen.

val pp : t printer
val pp_a : t array printer
val debug : t printer
val debug_a : t array printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Clause/index.html b/sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Clause/index.html deleted file mode 100644 index 86e82b46..00000000 --- a/sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Clause/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Clause (sidekick.Sidekick_sat__Solver_types_intf.S.Clause)

Module Sidekick_sat__Solver_types_intf.S.Clause

type t = clause
val dummy : t
val name : t ‑> string
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val atoms : t ‑> Atom.t array
val atoms_l : t ‑> Atom.t list
val tag : t ‑> int option
val premise : t ‑> premise
val attached : t ‑> bool
val set_attached : t ‑> bool ‑> unit
val visited : t ‑> bool
val set_visited : t ‑> bool ‑> unit
val empty : t

The empty clause

val make : ?⁠tag:int ‑> Atom.t array ‑> premise ‑> t

make_clause name atoms size premise creates a clause with -the given attributes. -The array's ownership is transferred to the clause, do not -mutate it after that.

val make_l : ?⁠tag:int ‑> Atom.t list ‑> premise ‑> t
val pp : t printer
val pp_dimacs : t printer
val debug : t printer
module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Formula/index.html b/sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Formula/index.html deleted file mode 100644 index 527e0c50..00000000 --- a/sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_sat__Solver_types_intf.S.Formula)

Module Sidekick_sat__Solver_types_intf.S.Formula

type t = formula
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val pp : t printer
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Var/index.html b/sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Var/index.html deleted file mode 100644 index f4675c86..00000000 --- a/sidekick/Sidekick_sat__Solver_types_intf/module-type-S/Var/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Var (sidekick.Sidekick_sat__Solver_types_intf.S.Var)

Module Sidekick_sat__Solver_types_intf.S.Var

type t = var
val dummy : t
val pos : t ‑> atom
val neg : t ‑> atom
val level : t ‑> int
val idx : t ‑> int
val reason : t ‑> reason option
val weight : t ‑> float
val set_level : t ‑> int ‑> unit
val set_idx : t ‑> int ‑> unit
val set_weight : t ‑> float ‑> unit
val in_heap : t ‑> bool

Returns the variable linked with the given formula, -and whether the atom associated with the formula -is var.pa or var.na

val seen_both : t ‑> bool

both atoms have been seen?

val clear : t ‑> unit

Clear the 'seen' field of the variable.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Solver_types_intf/module-type-S/index.html b/sidekick/Sidekick_sat__Solver_types_intf/module-type-S/index.html deleted file mode 100644 index f5ade9e9..00000000 --- a/sidekick/Sidekick_sat__Solver_types_intf/module-type-S/index.html +++ /dev/null @@ -1,20 +0,0 @@ - -S (sidekick.Sidekick_sat__Solver_types_intf.S)

Module type Sidekick_sat__Solver_types_intf.S

The signatures of clauses used in the Solver.

type t

State for creating new terms, literals, clauses

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Type definitions

type formula
type proof

The types of formulas and proofs. All of these are user-provided.

type var = {
vid : int;

(** Unique identifier *)

pa : atom;

(** Link for the positive atom *)

na : atom;

(** Link for the negative atom *)

mutable v_fields : Var_fields.t;

(** bool fields *)

mutable v_level : int;

(** Level of decision/propagation *)

mutable v_idx : int;

(** rank in variable heap *)

mutable v_weight : float;

(** Variable weight (for the heap) *)

mutable reason : reason option;

(** The reason for propagation/decision of the literal *)

}
type atom = {
aid : int;

(** Unique identifier *)

var : var;

(** Link for the parent variable *)

neg : atom;

(** Link for the negation of the atom *)

lit : formula;

(** Wrapped formula *)

mutable is_true : bool;

(** Is the atom true ? Conversely, the atom -is false iff a.neg.is_true *)

mutable watched : clause Sidekick_util.Vec.t;

(** The vector of clauses that watch this atom *)

}

Atoms and variables wrap theory formulas. They exist in the form of -triplet: a variable and two atoms. For a formula f in normal form, -the variable v points to the positive atom a which wraps f, while -a.neg wraps the theory negation of f.

type clause = {
name : int;

(** Clause name, mainly for printing, unique. *)

tag : int option;

(** User-provided tag for clauses. *)

atoms : atom array;

(** The atoms that constitute the clause. *)

mutable cpremise : premise;

(** The premise of the clause, i.e. the justification -of why the clause must be satisfied. *)

mutable activity : float;

(** Clause activity, used for the heap heuristics. *)

mutable c_flags : C_fields.t;

(** Boolean flags for the clause *)

}

The type of clauses. Each clause generated should be true, i.e. enforced -by the current problem (for more information, see the cpremise field).

type reason =
| Decision

(** The atom has been decided by the sat solver *)

| Bcp of clause

(** The atom has been propagated by the given clause *)

Reasons of propagation/decision of atoms.

type premise =
| Hyp

(** The clause is a hypothesis, provided by the user. *)

| Local

(** The clause is a 1-atom clause, -where the atom is a local assumption *)

| Lemma of proof

(** The clause is a theory-provided tautology, with -the given proof. *)

| History of clause list

(** The clause can be obtained by resolution of the clauses -in the list. If the list has a single element c , then -the clause can be obtained by simplifying c (i.e -eliminating doublons in its atom list). -For a premise History [a_1 :: ... :: a_n] (n > 0) -the clause is obtained by performing resolution of -a_1 with a_2, and then performing a resolution step between -the result and a_3, etc... -Of course, each of the clause a_i also has its own premise. *)

Premises for clauses. Indeed each clause generated during a run of the solver -should be satisfied, the premise is the justification of why it should be -satisfied by the solver.

Decisions and propagations

Elements

val nb_elt : t ‑> int
val get_elt : t ‑> int ‑> var
val iter_elt : t ‑> (var ‑> unit) ‑> unit

Read access to the vector of variables created

Variables, Literals & Clauses

type state = t
module Var : sig ... end
module Atom : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Theory_intf/.jbuilder-keep b/sidekick/Sidekick_sat__Theory_intf/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_sat__Theory_intf/index.html b/sidekick/Sidekick_sat__Theory_intf/index.html deleted file mode 100644 index 9f33e243..00000000 --- a/sidekick/Sidekick_sat__Theory_intf/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -Sidekick_sat__Theory_intf (sidekick.Sidekick_sat__Theory_intf)

Module Sidekick_sat__Theory_intf

SMT Theory

This module defines what a theory must implement in order to -be used in an SMT solver.

type negated =
| Negated

(** changed sign *)

| Same_sign

(** kept sign *)

This type is used during the normalisation of formulas. -See Expr_intf.S.norm for more details.

type ('formula, 'proof) res =
| Sat

(** The current set of assumptions is satisfiable. *)

| Unsat of 'formula list * 'proof

(** The current set of assumptions is *NOT* satisfiable, and here is a -theory tautology (with its proof), for which every literal is false -under the current assumptions. *)

Type returned by the theory. Formulas in the unsat clause must come from the -current set of assumptions, i.e must have been encountered in a slice.

type ('form, 'proof) actions =
| Actions of {
push_persistent : 'form Sidekick_util.IArray.t ‑> 'proof ‑> unit;

(** Allows to add a persistent clause to the solver. *)

push_local : 'form Sidekick_util.IArray.t ‑> 'proof ‑> unit;

(** Allows to add a local clause to the solver. The clause -will be removed after backtracking. *)

on_backtrack : (unit ‑> unit) ‑> unit;

(** on_backtrack f calls f when the main solver backtracks *)

propagate : 'form ‑> 'form list ‑> 'proof ‑> unit;

(** propagate lit causes proof informs the solver to propagate lit, with the reason -that the clause causes => lit is a theory tautology. It is faster than pushing -the associated clause but the clause will not be remembered by the sat solver, -i.e it will not be used by the solver to do boolean propagation. *)

}

Actions given to the theory during initialization, to be used -at any time

type ('form, 'proof) slice_actions =
| Slice_acts of {
slice_iter : ('form ‑> unit) ‑> unit;

(** iterate on the slice of the trail *)

}

(** The type for a slice. Slices are some kind of view of the current -propagation queue. They allow to look at the propagated literals, -and to add new clauses to the solver. *)

module type S : sig ... end

Signature for theories to be given to the Solver.

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Theory_intf/module-type-S/Form/index.html b/sidekick/Sidekick_sat__Theory_intf/module-type-S/Form/index.html deleted file mode 100644 index 80095758..00000000 --- a/sidekick/Sidekick_sat__Theory_intf/module-type-S/Form/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Form (sidekick.Sidekick_sat__Theory_intf.S.Form)

Module Sidekick_sat__Theory_intf.S.Form

type t = formula

The type of atomic formulas.

val equal : t ‑> t ‑> bool

Equality over formulas.

val hash : t ‑> int

Hashing function for formulas. Should be such that two formulas equal according -to Expr_intf.S.equal have the same hash.

val print : Format.formatter ‑> t ‑> unit

Printing function used among other thing for debugging.

val dummy : t

Formula constant. A valid formula should never be physically equal to dummy

val neg : t ‑> t

Formula negation. Should be an involution, i.e. equal a (neg neg a) should -always hold.

val norm : t ‑> t * negated

Returns a 'normalized' form of the formula, possibly negated -(in which case return Negated). This function is used to recognize -the link between a formula a and its negation neg a, so the goal is -that a and neg a normalise to the same formula, -but one returns Same_sign and the other one returns Negated

\ No newline at end of file diff --git a/sidekick/Sidekick_sat__Theory_intf/module-type-S/index.html b/sidekick/Sidekick_sat__Theory_intf/module-type-S/index.html deleted file mode 100644 index 1163e996..00000000 --- a/sidekick/Sidekick_sat__Theory_intf/module-type-S/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -S (sidekick.Sidekick_sat__Theory_intf.S)

Module type Sidekick_sat__Theory_intf.S

Signature for theories to be given to the Solver.

type t

State of the theory

type formula

The type of formulas. Should be compatble with Formula_intf.S

type proof

A custom type for the proofs of lemmas produced by the theory.

module Form : sig ... end
val create : (formulaproofactions ‑> t

Create a new instance of the theory

val assume : t ‑> (formulaproofslice_actions ‑> (formulaproofres

Assume the formulas in the slice, possibly pushing new formulas to be propagated, -and returns the result of the new assumptions.

val if_sat : t ‑> (formulaproofslice_actions ‑> (formulaproofres

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.

\ No newline at end of file diff --git a/sidekick/Sidekick_smt/.jbuilder-keep b/sidekick/Sidekick_smt/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt/Ast/Ty/index.html b/sidekick/Sidekick_smt/Ast/Ty/index.html deleted file mode 100644 index 300ab180..00000000 --- a/sidekick/Sidekick_smt/Ast/Ty/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Ty (sidekick.Sidekick_smt.Ast.Ty)

Module Sidekick_smt.Ast.Ty

type t =
| Prop
| App of Sidekick_util.ID.t * t list
| Arrow of t * t
val prop : t
val const : Sidekick_util.ID.t ‑> t
val app : Sidekick_util.ID.t ‑> t list ‑> t
val arrow : t ‑> t ‑> t
val arrow_l : t list ‑> t ‑> t
val rat : t
val int : t
include Sidekick_util.Intf.EQ with type t := t
type t
val equal : t ‑> t ‑> bool
include Sidekick_util.Intf.ORD with type t := t
type t
val compare : t ‑> t ‑> int
include Sidekick_util.Intf.HASH with type t := t
type t
val hash : t ‑> int
include Sidekick_util.Intf.PRINT with type t := t
type t
val pp : t CCFormat.printer
val unfold : t ‑> t list * t

unfold ty will get the list of arguments, and the return type -of any function. An atomic type is just a function with no arguments

Datatypes

type data = {
data_id : Sidekick_util.ID.t;
data_cstors : t Sidekick_util.ID.Map.t;
}

Mutually recursive datatypes

module Map : CCMap.S with type Map.key = t

Error Handling

val ill_typed : ('a, Format.formatter, unit, 'b) Pervasives.format4 ‑> 'a
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Ast/Var/index.html b/sidekick/Sidekick_smt/Ast/Var/index.html deleted file mode 100644 index ad1a1609..00000000 --- a/sidekick/Sidekick_smt/Ast/Var/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Var (sidekick.Sidekick_smt.Ast.Var)

Module Sidekick_smt.Ast.Var

type 'ty t = private {
id : Sidekick_util.ID.t;
ty : 'ty;
}
val make : Sidekick_util.ID.t ‑> 'ty ‑> 'ty t
val makef : ty:'a ‑> ('b, Format.formatter, unit, 'a t) Pervasives.format4 ‑> 'b
val copy : 'a t ‑> 'a t
val id : _ t ‑> Sidekick_util.ID.t
val ty : 'a t ‑> 'a
val equal : 'a t ‑> 'a t ‑> bool
val compare : 'a t ‑> 'a t ‑> int
val pp : _ t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Ast/index.html b/sidekick/Sidekick_smt/Ast/index.html deleted file mode 100644 index 1077de4b..00000000 --- a/sidekick/Sidekick_smt/Ast/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Ast (sidekick.Sidekick_smt.Ast)

Module Sidekick_smt.Ast

Preprocessing AST

type 'a or_error = ('a, string) CCResult.t

Types

module Var : sig ... end
module Ty : sig ... end
type var = Ty.t Var.t
type op =
| And
| Or
| Imply
| Eq
| Distinct
type arith_op =
| Leq
| Lt
| Geq
| Gt
| Add
| Minus
| Mult
| Div
type binder =
| Fun
| Forall
| Exists
| Mu
type term = private {
term : term_cell;
ty : Ty.t;
}
type term_cell =
| Var of var
| Const of Sidekick_util.ID.t
| Num_z of Z.t
| Num_q of Q.t
| App of term * term list
| If of term * term * term
| Match of term * (var list * term) Sidekick_util.ID.Map.t
| Select of select * term
| Bind of binder * var * term
| Arith of arith_op * term list
| Let of (var * term) list * term
| Not of term
| Op of op * term list
| Asserting of {
t : term;
guard : term;
}
| Undefined_value
| Bool of bool
type select = {
select_name : Sidekick_util.ID.t lazy_t;
select_cstor : Sidekick_util.ID.t;
select_i : int;
}
type definition = Sidekick_util.ID.t * Ty.t * term
type statement =
| SetLogic of string
| SetOption of string list
| SetInfo of string list
| Data of Ty.data list
| TyDecl of Sidekick_util.ID.t * int
| Decl of Sidekick_util.ID.t * Ty.t
| Define of definition list
| Assert of term
| Assert_bool of int list
| Goal of var list * term
| CheckSat
| Exit

Constructors

val term_view : term ‑> term_cell
val ty : term ‑> Ty.t
val var : var ‑> term
val const : Sidekick_util.ID.t ‑> Ty.t ‑> term
val app : term ‑> term list ‑> term
val app_a : term ‑> term array ‑> term
val if_ : term ‑> term ‑> term ‑> term
val match_ : term ‑> (var list * term) Sidekick_util.ID.Map.t ‑> term
val let_ : var ‑> term ‑> term ‑> term
val let_l : (var * term) list ‑> term ‑> term
val bind : ty:Ty.t ‑> binder ‑> var ‑> term ‑> term
val select : ty:Ty.t ‑> select ‑> term ‑> term
val fun_ : var ‑> term ‑> term
val fun_l : var list ‑> term ‑> term
val fun_a : var array ‑> term ‑> term
val forall : var ‑> term ‑> term
val forall_l : var list ‑> term ‑> term
val exists : var ‑> term ‑> term
val exists_l : var list ‑> term ‑> term
val mu : var ‑> term ‑> term
val eq : term ‑> term ‑> term
val not_ : term ‑> term
val op : op ‑> term list ‑> term
val and_ : term ‑> term ‑> term
val and_l : term list ‑> term
val or_ : term ‑> term ‑> term
val or_l : term list ‑> term
val imply : term ‑> term ‑> term
val true_ : term
val false_ : term
val undefined_value : Ty.t ‑> term
val asserting : term ‑> term ‑> term
val num_z : Ty.t ‑> Z.t ‑> term
val num_q : Ty.t ‑> Q.t ‑> term
val num_str : Ty.t ‑> string ‑> term

parses int + num

val arith : Ty.t ‑> arith_op ‑> term list ‑> term

parses int + num

helpers

val is_true : term ‑> bool
val is_false : term ‑> bool
val unfold_binder : binder ‑> term ‑> var list * term
val unfold_fun : term ‑> var list * term

Printing

val pp_ty : Ty.t CCFormat.printer
val pp_term : term CCFormat.printer
val pp_statement : statement CCFormat.printer

Environment

type env_entry =
| E_uninterpreted_ty
| E_uninterpreted_cst
| E_const of Ty.t
| E_data of Ty.t Sidekick_util.ID.Map.t
| E_cstor of Ty.t
| E_defined of Ty.t * term
type env = {
defs : env_entry Sidekick_util.ID.Map.t;
}

Environment with definitions and goals

val env_empty : env
val env_add_statement : env ‑> statement ‑> env
val env_of_statements : statement Sequence.t ‑> env
val env_find_def : env ‑> Sidekick_util.ID.t ‑> env_entry option
val env_add_def : env ‑> Sidekick_util.ID.t ‑> env_entry ‑> env
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Bag/index.html b/sidekick/Sidekick_smt/Bag/index.html deleted file mode 100644 index eb6dcbd3..00000000 --- a/sidekick/Sidekick_smt/Bag/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Bag (sidekick.Sidekick_smt.Bag)

Module Sidekick_smt.Bag

Ordered Bag of Elements

A data structure where we can have duplicate elements, optimized for -fast concatenation and size.

type +'a t = private
| E
| L of 'a
| N of 'a t * 'a t * int
val empty : 'a t
val is_empty : _ t ‑> bool
val return : 'a ‑> 'a t
val size : _ t ‑> int

Constant time

val cons : 'a ‑> 'a t ‑> 'a t
val append : 'a t ‑> 'a t ‑> 'a t
val to_seq : 'a t ‑> 'a Sequence.t
val fold : ('a ‑> 'b ‑> 'a) ‑> 'a ‑> 'b t ‑> 'a
val iter : ('a ‑> unit) ‑> 'a t ‑> unit
val equal : ('a ‑> 'a ‑> bool) ‑> 'a t ‑> 'a t ‑> bool

Are the two bags equal, element wise?

\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Config/Key/index.html b/sidekick/Sidekick_smt/Config/Key/index.html deleted file mode 100644 index 1db71df2..00000000 --- a/sidekick/Sidekick_smt/Config/Key/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Key (sidekick.Sidekick_smt.Config.Key)

Module Sidekick_smt.Config.Key

type 'a t
val create : unit ‑> 'a t
val equal : 'a t ‑> 'a t ‑> bool

Compare two keys that have compatible types

\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Config/index.html b/sidekick/Sidekick_smt/Config/index.html deleted file mode 100644 index eed6ffbe..00000000 --- a/sidekick/Sidekick_smt/Config/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Config (sidekick.Sidekick_smt.Config)

Module Sidekick_smt.Config

Configuration

type 'a sequence = ('a ‑> unit) ‑> unit
module Key : sig ... end
type t
val empty : t
val mem : _ Key.t ‑> t ‑> bool
val add : 'a Key.t ‑> 'a ‑> t ‑> t
val length : t ‑> int
val cardinal : t ‑> int
val find : 'a Key.t ‑> t ‑> 'a option
val find_exn : 'a Key.t ‑> t ‑> 'a
  • Raises Not_found: if the key is not in the table
type pair =
| Pair : 'a Key.t * 'a ‑> pair
val iter : (pair ‑> unit) ‑> t ‑> unit
val to_seq : t ‑> pair sequence
val of_seq : pair sequence ‑> t
val add_seq : t ‑> pair sequence ‑> t
val add_list : t ‑> pair list ‑> t
val of_list : pair list ‑> t
val to_list : t ‑> pair list
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Congruence_closure/index.html b/sidekick/Sidekick_smt/Congruence_closure/index.html deleted file mode 100644 index 893d8646..00000000 --- a/sidekick/Sidekick_smt/Congruence_closure/index.html +++ /dev/null @@ -1,7 +0,0 @@ - -Congruence_closure (sidekick.Sidekick_smt.Congruence_closure)

Module Sidekick_smt.Congruence_closure

Congruence Closure

type t

Global state of the congruence closure

type node = Equiv_class.t

Node in the congruence closure

type repr = Equiv_class.t

Node that is currently a representative

type actions = {
on_backtrack : (unit ‑> unit) ‑> unit;

(** Register a callback to be invoked upon backtracking below the current level *)

on_merge : repr ‑> repr ‑> Solver_types.explanation ‑> unit;

(** Call this when two classes are merged *)

raise_conflict : a. Sidekick_smt.Lit.Set.t ‑> 'a;

(** Report a conflict *)

propagate : Lit.t ‑> Explanation.t Bag.t ‑> unit;

(** Propagate a literal *)

}
val create : ?⁠size:int ‑> actions:actions ‑> Term.state ‑> t

Create a new congruence closure.

  • Parameter acts: the actions available to the congruence closure
val find : t ‑> node ‑> repr

Current representative

val same_class : t ‑> node ‑> node ‑> bool

Are these two classes the same in the current CC?

val union : t ‑> node ‑> node ‑> Solver_types.explanation ‑> unit

Merge the two equivalence classes. Will be undone on backtracking.

val mem : t ‑> Solver_types.term ‑> bool

Is the term properly added to the congruence closure?

val add : t ‑> Solver_types.term ‑> node

Add the term to the congruence closure, if not present already. -Will be backtracked.

val add_seq : t ‑> Solver_types.term Sequence.t ‑> unit

Add a sequence of terms to the congruence closure

val all_classes : t ‑> repr Sequence.t

All current classes

val assert_lit : t ‑> Lit.t ‑> unit

Given a literal, assume it in the congruence closure and propagate -its consequences. Will be backtracked.

val assert_eq : t ‑> Solver_types.term ‑> Solver_types.term ‑> Solver_types.explanation ‑> unit
val assert_distinct : t ‑> Solver_types.term list ‑> neq:Solver_types.term ‑> Solver_types.explanation ‑> unit

assert_distinct l ~expl:u e asserts all elements of l are distinct -with explanation e -precond: u = distinct l

val check : t ‑> unit
val final_check : t ‑> unit
val explain_eq_n : ?⁠init:Sidekick_smt.Lit.Set.t ‑> t ‑> node ‑> node ‑> Sidekick_smt.Lit.Set.t

explain why the two nodes are equal

val explain_eq_t : ?⁠init:Sidekick_smt.Lit.Set.t ‑> t ‑> Solver_types.term ‑> Solver_types.term ‑> Sidekick_smt.Lit.Set.t

explain why the two terms are equal

val explain_unfold_bag : ?⁠init:Sidekick_smt.Lit.Set.t ‑> t ‑> Solver_types.explanation Bag.t ‑> Sidekick_smt.Lit.Set.t
val explain_unfold_seq : ?⁠init:Sidekick_smt.Lit.Set.t ‑> t ‑> Solver_types.explanation Sequence.t ‑> Sidekick_smt.Lit.Set.t

Unfold those explanations into a complete set of -literals implying them

\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Cst/index.html b/sidekick/Sidekick_smt/Cst/index.html deleted file mode 100644 index db2069e2..00000000 --- a/sidekick/Sidekick_smt/Cst/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Cst (sidekick.Sidekick_smt.Cst)

Module Sidekick_smt.Cst

val id : t ‑> Sidekick_util.ID.t
val ty : t ‑> Ty.t
val make_cstor : Sidekick_util.ID.t ‑> Ty.t ‑> Solver_types.data_cstor lazy_t ‑> t
val make_proj : Sidekick_util.ID.t ‑> Ty.t ‑> Solver_types.data_cstor lazy_t ‑> int ‑> t
val make_tester : Sidekick_util.ID.t ‑> Ty.t ‑> Solver_types.data_cstor lazy_t ‑> t
val make_defined : Sidekick_util.ID.t ‑> Ty.t ‑> Solver_types.term lazy_t ‑> Solver_types.cst_defined_info ‑> t
val make_undef : Sidekick_util.ID.t ‑> Ty.t ‑> t
val arity : t ‑> int
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val hash : t ‑> int
val as_undefined : t ‑> (t * Ty.t) option
val as_undefined_exn : t ‑> t * Ty.t
val is_finite_cstor : t ‑> bool
module Map : CCMap.S with type Map.key = t
module Tbl : CCHashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Equiv_class/index.html b/sidekick/Sidekick_smt/Equiv_class/index.html deleted file mode 100644 index a55c6796..00000000 --- a/sidekick/Sidekick_smt/Equiv_class/index.html +++ /dev/null @@ -1,15 +0,0 @@ - -Equiv_class (sidekick.Sidekick_smt.Equiv_class)

Module Sidekick_smt.Equiv_class

Equivalence Classes

An equivalence class is a set of terms that are currently equal -in the partial model built by the solver. -The class is represented by a collection of nodes, one of which is -distinguished and is called the "representative".

All information pertaining to the whole equivalence class is stored -in this representative's node.

When two classes become equal (are "merged"), one of the two -representatives is picked as the representative of the new class. -The new class contains the union of the two old classes' nodes.

We also allow theories to store additional information in the -representative. This information can be used when two classes are -merged, to detect conflicts and solve equations à la Shostak.

type payload = Solver_types.cc_node_payload = ..
val field_expanded : Sidekick_smt.Solver_types.Node_bits.field

Term is expanded?

val field_has_expansion_lit : Sidekick_smt.Solver_types.Node_bits.field

Upon expansion, does this term have a special literal Lit_expanded t -that should be asserted?

val field_is_lit : Sidekick_smt.Solver_types.Node_bits.field

Is this term a boolean literal?

val field_is_split : Sidekick_smt.Solver_types.Node_bits.field

Did we perform case split (Split 1) on this term? -This is only relevant for terms whose type is a datatype.

val field_add_level_0 : Sidekick_smt.Solver_types.Node_bits.field

Is the corresponding term to be re-added upon backtracking, -down to level 0?

val field_is_active : Sidekick_smt.Solver_types.Node_bits.field

The term is needed for evaluation. We must try to evaluate it -or to find a value for it using the theory

basics

val term : t ‑> Solver_types.term
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val payload : t ‑> payload list

Helpers

val make : Solver_types.term ‑> t

Make a new equivalence class whose representative is the given term

val payload_find : f:(payload ‑> 'a option) ‑> t ‑> 'a option
val payload_pred : f:(payload ‑> bool) ‑> t ‑> bool
val set_payload : ?⁠can_erase:(payload ‑> bool) ‑> t ‑> payload ‑> unit

Add given payload

  • Parameter can_erase: if provided, checks whether an existing value -is to be replaced instead of adding a new entry
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Explanation/Set/index.html b/sidekick/Sidekick_smt/Explanation/Set/index.html deleted file mode 100644 index bf19bf17..00000000 --- a/sidekick/Sidekick_smt/Explanation/Set/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Set (sidekick.Sidekick_smt.Explanation.Set)

Module Sidekick_smt.Explanation.Set

type t
val empty : t
val is_empty : t ‑> bool
val mem : elt ‑> t ‑> bool
val add : elt ‑> t ‑> t
val singleton : elt ‑> t
val remove : elt ‑> t ‑> t
val union : t ‑> t ‑> t
val inter : t ‑> t ‑> t
val diff : t ‑> t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val subset : t ‑> t ‑> bool
val iter : (elt ‑> unit) ‑> t ‑> unit
val map : (elt ‑> elt) ‑> t ‑> t
val fold : (elt ‑> 'a ‑> 'a) ‑> t ‑> 'a ‑> 'a
val for_all : (elt ‑> bool) ‑> t ‑> bool
val exists : (elt ‑> bool) ‑> t ‑> bool
val filter : (elt ‑> bool) ‑> t ‑> t
val partition : (elt ‑> bool) ‑> t ‑> t * t
val cardinal : t ‑> int
val elements : t ‑> elt list
val min_elt : t ‑> elt
val max_elt : t ‑> elt
val choose : t ‑> elt
val split : elt ‑> t ‑> t * bool * t
val find : elt ‑> t ‑> elt
val min_elt_opt : t ‑> elt option
val max_elt_opt : t ‑> elt option
val choose_opt : t ‑> elt option
val find_opt : elt ‑> t ‑> elt option
val find_first : (elt ‑> bool) ‑> t ‑> elt
val find_first_opt : (elt ‑> bool) ‑> t ‑> elt option
val find_last : (elt ‑> bool) ‑> t ‑> elt
val find_last_opt : (elt ‑> bool) ‑> t ‑> elt option
val of_seq : elt CCSet.sequence ‑> t
val add_seq : t ‑> elt CCSet.sequence ‑> t
val to_seq : t ‑> elt CCSet.sequence
val of_list : elt list ‑> t
val add_list : t ‑> elt list ‑> t
val to_list : t ‑> elt list
val pp : ?⁠start:string ‑> ?⁠stop:string ‑> ?⁠sep:string ‑> elt CCSet.printer ‑> t CCSet.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Explanation/index.html b/sidekick/Sidekick_smt/Explanation/index.html deleted file mode 100644 index d057e51d..00000000 --- a/sidekick/Sidekick_smt/Explanation/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Explanation (sidekick.Sidekick_smt.Explanation)

Module Sidekick_smt.Explanation

val compare : Solver_types.explanation CCOrd.t
val lit : Solver_types.lit ‑> t
module Set : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Hash/index.html b/sidekick/Sidekick_smt/Hash/index.html deleted file mode 100644 index 86246586..00000000 --- a/sidekick/Sidekick_smt/Hash/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Hash (sidekick.Sidekick_smt.Hash)

Module Sidekick_smt.Hash

type 'a t = 'a ‑> int
val bool : bool t
val int : int t
val string : string t
val combine : 'a t ‑> int ‑> 'a ‑> int
val pair : 'a t ‑> 'b t ‑> ('a * 'b) t
val opt : 'a t ‑> 'a option t
val list : 'a t ‑> 'a list t
val array : 'a t ‑> 'a array t
val iarray : 'a t ‑> 'a Sidekick_util.IArray.t t
val seq : 'a t ‑> 'a Sequence.t t
val combine2 : int ‑> int ‑> int
val combine3 : int ‑> int ‑> int ‑> int
val combine4 : int ‑> int ‑> int ‑> int ‑> int
val poly : 'a t

the regular polymorphic hash function

\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Het_map/Key/index.html b/sidekick/Sidekick_smt/Het_map/Key/index.html deleted file mode 100644 index 96418968..00000000 --- a/sidekick/Sidekick_smt/Het_map/Key/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Key (sidekick.Sidekick_smt.Het_map.Key)

Module Sidekick_smt.Het_map.Key

type 'a t
val create : unit ‑> 'a t
val equal : 'a t ‑> 'a t ‑> bool

Compare two keys that have compatible types

\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Het_map/Map/index.html b/sidekick/Sidekick_smt/Het_map/Map/index.html deleted file mode 100644 index 583de6d5..00000000 --- a/sidekick/Sidekick_smt/Het_map/Map/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Map (sidekick.Sidekick_smt.Het_map.Map)

Module Sidekick_smt.Het_map.Map

Immutable map

type t
val empty : t
val mem : _ Key.t ‑> t ‑> bool
val add : 'a Key.t ‑> 'a ‑> t ‑> t
val length : t ‑> int
val cardinal : t ‑> int
val find : 'a Key.t ‑> t ‑> 'a option
val find_exn : 'a Key.t ‑> t ‑> 'a
  • Raises Not_found: if the key is not in the table
val iter : (pair ‑> unit) ‑> t ‑> unit
val to_seq : t ‑> pair sequence
val of_seq : pair sequence ‑> t
val add_seq : t ‑> pair sequence ‑> t
val add_list : t ‑> pair list ‑> t
val of_list : pair list ‑> t
val to_list : t ‑> pair list
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Het_map/Tbl/index.html b/sidekick/Sidekick_smt/Het_map/Tbl/index.html deleted file mode 100644 index 17b805dd..00000000 --- a/sidekick/Sidekick_smt/Het_map/Tbl/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Tbl (sidekick.Sidekick_smt.Het_map.Tbl)

Module Sidekick_smt.Het_map.Tbl

Imperative table indexed by Key

type t
val create : ?⁠size:int ‑> unit ‑> t
val mem : t ‑> _ Key.t ‑> bool
val add : t ‑> 'a Key.t ‑> 'a ‑> unit
val length : t ‑> int
val find : t ‑> 'a Key.t ‑> 'a option
val find_exn : t ‑> 'a Key.t ‑> 'a
  • Raises Not_found: if the key is not in the table
val iter : (pair ‑> unit) ‑> t ‑> unit
val to_seq : t ‑> pair sequence
val of_seq : pair sequence ‑> t
val add_seq : t ‑> pair sequence ‑> unit
val add_list : t ‑> pair list ‑> unit
val of_list : pair list ‑> t
val to_list : t ‑> pair list
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Het_map/index.html b/sidekick/Sidekick_smt/Het_map/index.html deleted file mode 100644 index 278ee25c..00000000 --- a/sidekick/Sidekick_smt/Het_map/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Het_map (sidekick.Sidekick_smt.Het_map)

Module Sidekick_smt.Het_map

Associative containers with Heterogenerous Values

type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option
module Key : sig ... end
type pair =
| Pair : 'a Key.t * 'a ‑> pair
module Tbl : sig ... end

Imperative table indexed by Key

module Map : sig ... end

Immutable map

\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Lit/index.html b/sidekick/Sidekick_smt/Lit/index.html deleted file mode 100644 index 50c2df5d..00000000 --- a/sidekick/Sidekick_smt/Lit/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Lit (sidekick.Sidekick_smt.Lit)

Module Sidekick_smt.Lit

Literals

type t = Solver_types.lit = {
lit_view : Solver_types.lit_view;
lit_sign : bool;
}
type view = Solver_types.lit_view =
| Lit_fresh of Sidekick_util.ID.t
| Lit_atom of Solver_types.term
| Lit_expanded of Solver_types.term
val neg : t ‑> t
val abs : t ‑> t
val sign : t ‑> bool
val view : t ‑> Solver_types.lit_view
val as_atom : t ‑> (Solver_types.term * bool) option
val fresh_with : Sidekick_util.ID.t ‑> t
val fresh : unit ‑> t
val dummy : t
val atom : ?⁠sign:bool ‑> Solver_types.term ‑> t
val cstor_test : Term.state ‑> Solver_types.data_cstor ‑> Solver_types.term ‑> t
val expanded : Solver_types.term ‑> t
val hash : t ‑> int
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val print : t Sidekick_smt.Solver_types.Fmt.printer
val norm : t ‑> t * Sidekick_sat.negated
module Set : CCSet.S with type Set.elt = t
module Tbl : CCHashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Model/index.html b/sidekick/Sidekick_smt/Model/index.html deleted file mode 100644 index 331ac656..00000000 --- a/sidekick/Sidekick_smt/Model/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Model (sidekick.Sidekick_smt.Model)

Module Sidekick_smt.Model

Model

type term = Ast.term
type ty = Ast.Ty.t
type domain = Sidekick_util.ID.t list
type t = private {
env : Ast.env;
domains : domain Sidekick_smt.Ast.Ty.Map.t;
consts : term Sidekick_util.ID.Map.t;
}
val make : env:Ast.env ‑> consts:term Sidekick_util.ID.Map.t ‑> domains:domain Sidekick_smt.Ast.Ty.Map.t ‑> t
val pp : t CCFormat.printer
val eval : t ‑> term ‑> term
exception Bad_model of t * term * term
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Solver/Proof/index.html b/sidekick/Sidekick_smt/Solver/Proof/index.html deleted file mode 100644 index ee3e05b2..00000000 --- a/sidekick/Sidekick_smt/Solver/Proof/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Proof (sidekick.Sidekick_smt.Solver.Proof)

Module Sidekick_smt.Solver.Proof

val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Solver/Sat_solver/Clause/index.html b/sidekick/Sidekick_smt/Solver/Sat_solver/Clause/index.html deleted file mode 100644 index d124b187..00000000 --- a/sidekick/Sidekick_smt/Solver/Sat_solver/Clause/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Clause (sidekick.Sidekick_smt.Solver.Sat_solver.Clause)

Module Sidekick_smt.Solver.Sat_solver.Clause

type t = clause
val atoms : t ‑> atom Sidekick_util.IArray.t
val atoms_l : t ‑> atom list
val tag : t ‑> int option
val equal : t ‑> t ‑> bool
val make : ?⁠tag:int ‑> lit array ‑> t

Make a clause from this array of SAT literals. -The array's ownership is transferred to the clause, do not mutate it

val make_l : ?⁠tag:int ‑> lit list ‑> t
val of_atoms : solver ‑> ?⁠tag:int ‑> atom list ‑> t
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Solver/Sat_solver/Formula/index.html b/sidekick/Sidekick_smt/Solver/Sat_solver/Formula/index.html deleted file mode 100644 index 1295a020..00000000 --- a/sidekick/Sidekick_smt/Solver/Sat_solver/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_smt.Solver.Sat_solver.Formula)

Module Sidekick_smt.Solver.Sat_solver.Formula

type t = formula
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Solver/Sat_solver/Lit/index.html b/sidekick/Sidekick_smt/Solver/Sat_solver/Lit/index.html deleted file mode 100644 index 7dd5d0de..00000000 --- a/sidekick/Sidekick_smt/Solver/Sat_solver/Lit/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Lit (sidekick.Sidekick_smt.Solver.Sat_solver.Lit)

Module Sidekick_smt.Solver.Sat_solver.Lit

type t = lit
val make : solver ‑> atom ‑> t
val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Solver/Sat_solver/Proof/Atom/index.html b/sidekick/Sidekick_smt/Solver/Sat_solver/Proof/Atom/index.html deleted file mode 100644 index e77b9cf9..00000000 --- a/sidekick/Sidekick_smt/Solver/Sat_solver/Proof/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_smt.Solver.Sat_solver.Proof.Atom)

Module Sidekick_smt.Solver.Sat_solver.Proof.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Solver/Sat_solver/Proof/Clause/index.html b/sidekick/Sidekick_smt/Solver/Sat_solver/Proof/Clause/index.html deleted file mode 100644 index ff066376..00000000 --- a/sidekick/Sidekick_smt/Solver/Sat_solver/Proof/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_smt.Solver.Sat_solver.Proof.Clause)

Module Sidekick_smt.Solver.Sat_solver.Proof.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Solver/Sat_solver/Proof/index.html b/sidekick/Sidekick_smt/Solver/Sat_solver/Proof/index.html deleted file mode 100644 index 7b85bebc..00000000 --- a/sidekick/Sidekick_smt/Solver/Sat_solver/Proof/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -Proof (sidekick.Sidekick_smt.Solver.Sat_solver.Proof)

Module Sidekick_smt.Solver.Sat_solver.Proof

A module to manipulate proofs.

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type clause = clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Solver/Sat_solver/index.html b/sidekick/Sidekick_smt/Solver/Sat_solver/index.html deleted file mode 100644 index f574438a..00000000 --- a/sidekick/Sidekick_smt/Solver/Sat_solver/index.html +++ /dev/null @@ -1,18 +0,0 @@ - -Sat_solver (sidekick.Sidekick_smt.Solver.Sat_solver)

Module Sidekick_smt.Solver.Sat_solver

Internal modules

-These are the internal modules used, you should probably not use them -if you're not familiar with the internals of mSAT.

type formula = Lit.t

user formulas

type lit

SAT solver literals

type clause

SAT solver clauses

type theory = Theory_combine.t

user theory

A module to manipulate proofs.

type t

Main solver type, containing all state for solving.

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Create new solver

  • Parameter size: the initial size of internal data structures. The bigger, -the faster, but also the more RAM it uses.

Types

type atom = formula

The type of atoms given by the module argument for formulas. -An atom is a user-defined atomic formula whose truth value is -picked by Msat.

type res =
| Sat of formula Sidekick_sat__.Solver_intf.sat_state

(** Returned when the solver reaches SAT, with a model *)

| Unsat of (clauseProof.proofSidekick_sat__.Solver_intf.unsat_state

(** Returned when the solver reaches UNSAT, with a proof *)

Result type for the solver

exception UndecidedLit

Exception raised by the evaluating functions when a literal -has not yet been assigned a value.

Base operations

val theory : t ‑> theory
val assume : ?⁠permanent:bool ‑> t ‑> ?⁠tag:int ‑> atom list list ‑> unit

Add the list of clauses to the current set of assumptions. -Modifies the sat solver state in place.

  • Parameter permanent: if true, kept after backtracking (default true)
val add_clause : permanent:bool ‑> t ‑> clause ‑> unit

Lower level addition of clauses. See Clause to create clauses.

  • Parameter permanent: if true, kept after backtracking
val solve : t ‑> ?⁠assumptions:atom list ‑> unit ‑> res

Try and solves the current set of clauses.

  • Parameter assumptions: additional atomic assumptions to be temporarily added. -The assumptions are just used for this call to solve, they are -not saved in the solver's state.
val new_atom : permanent:bool ‑> t ‑> atom ‑> unit

Add a new atom (i.e propositional formula) to the solver. -This formula will be decided on at some point during solving, -whether it appears in clauses or not.

  • Parameter permanent: if true, kept after backtracking
val unsat_core : Proof.proof ‑> clause list

Returns the unsat core of a given proof, ie a subset of all the added -clauses that is sufficient to establish unsatisfiability.

val true_at_level0 : t ‑> atom ‑> bool

true_at_level0 a returns true if a was proved at level0, i.e. -it must hold in all models

val get_tag : clause ‑> int option

Recover tag from a clause, if any

val push : t ‑> unit

Push a new save point. Clauses added after this call to push will -be added as normal, but the corresponding call to pop will -remove these clauses.

val pop : t ‑> unit

Return to last save point, discarding clauses added since last -call to push

Obtain actions

Re-export some functions

type solver = t
module Lit : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Solver/index.html b/sidekick/Sidekick_smt/Solver/index.html deleted file mode 100644 index cf4abf91..00000000 --- a/sidekick/Sidekick_smt/Solver/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Solver (sidekick.Sidekick_smt.Solver)

Module Sidekick_smt.Solver

Solver

The solving algorithm, based on MCSat

Result

type model = Model.t
module Proof : sig ... end
type unknown =
| U_timeout
| U_max_depth
| U_incomplete
type res =
| Sat of Model.t
| Unsat of Proof.t
| Unknown of unknown

Main

type t

Solver state

val create : ?⁠size:[ `Big | `Tiny | `Small ] ‑> ?⁠config:Config.t ‑> theories:Theory.t list ‑> unit ‑> t
val solver : t ‑> Sat_solver.t
val th_combine : t ‑> Theory_combine.t
val add_theory : t ‑> Theory.t ‑> unit
val cc : t ‑> Congruence_closure.t
val stats : t ‑> Stat.t
val tst : t ‑> Term.state
val assume : t ‑> Lit.t Sidekick_util.IArray.t ‑> unit
val assume_eq : t ‑> Term.t ‑> Term.t ‑> Lit.t ‑> unit
val assume_distinct : t ‑> Term.t list ‑> neq:Term.t ‑> Lit.t ‑> unit
val solve : ?⁠on_exit:(unit ‑> unit) list ‑> ?⁠check:bool ‑> assumptions:Lit.t list ‑> t ‑> res

solve s checks the satisfiability of the statement added so far to s

  • Parameter check: if true, the model is checked before returning
  • Parameter on_exit: functions to be run before this returns
val pp_term_graph : t CCFormat.printer
val pp_stats : t CCFormat.printer
val pp_unknown : unknown CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Solver_types/index.html b/sidekick/Sidekick_smt/Solver_types/index.html deleted file mode 100644 index 3e89af5e..00000000 --- a/sidekick/Sidekick_smt/Solver_types/index.html +++ /dev/null @@ -1,16 +0,0 @@ - -Solver_types (sidekick.Sidekick_smt.Solver_types)

Module Sidekick_smt.Solver_types

module Fmt = CCFormat
module Node_bits : CCBitField.S
type 'a lazily_expanded =
| Lazy_some of 'a
| Lazy_none
type term = {
mutable term_id : int;
mutable term_ty : ty;
term_cell : term term_cell;
}
type 'a term_cell =
| Bool of bool
| App_cst of cst * 'a Sidekick_util.IArray.t
| If of 'a * 'a * 'a
| Case of 'a * 'a Sidekick_util.ID.Map.t
| Custom of {
view : 'a term_view_custom;
tc : term_view_tc;
}
type term_view_tc = {
tc_t_pp : a. 'a Fmt.printer ‑> 'a term_view_custom Fmt.printer;
tc_t_equal : a. 'a CCEqual.t ‑> 'a term_view_custom CCEqual.t;
tc_t_hash : a. 'a Hash.t ‑> 'a term_view_custom Hash.t;
tc_t_ty : a. ('a ‑> ty) ‑> 'a term_view_custom ‑> ty;
tc_t_is_semantic : a. 'a term_view_custom ‑> bool;
tc_t_solve : cc_node term_view_custom ‑> cc_node term_view_custom ‑> solve_result;
tc_t_sub : a. 'a term_view_custom ‑> 'a Sequence.t;
tc_t_abs : self:term ‑> term term_view_custom ‑> term * bool;
tc_t_relevant : a. 'a term_view_custom ‑> 'a Sequence.t;
tc_t_subst : a b. ('a ‑> 'b) ‑> 'a term_view_custom ‑> 'b term_view_custom option;
tc_t_explain : a. 'a CCEqual.t ‑> 'a term_view_custom ‑> 'a term_view_custom ‑> ('a * 'a) list;
}

Methods on the custom term view whose leaves are 'a. -Terms must be comparable, hashable, printable, and provide -some additional theory handles.

  • tc_t_sub must return all immediate subterms (all 'a contained in the term)
  • tc_t_subst must use the function to replace all subterms (all the 'a -returned by tc_t_sub) by 'b
  • tc_t_relevant must return a subset of tc_t_sub (possibly the same set). -The terms it returns will be activated and evaluated whenever possible. -Terms in tc_t_sub t \ tc_t_relevant t are considered for -congruence but not for evaluation.
  • If t1 and t2 satisfy tc_t_is_semantic and have the same type, -then tc_t_solve t1 t2 must succeed by returning some solve_result.
  • if tc_t_equal eq a b = true, then tc_t_explain eq a b must -return all the pairs of equal subterms that are sufficient -for a and b to be equal.
type 'a term_view_custom = ..

Custom term view for theories

type solve_result =
| Solve_ok of {
subst : (cc_node * term) list;

(** binding leaves to other terms *)

}

(** Success, the two terms being equal is equivalent -to the given substitution *)

| Solve_fail of {
expl : explanation;
}

(** Failure, because of the given explanation. -The two terms cannot be equal *)

The result of a call to solve.

type cc_node = {
n_term : term;
mutable n_bits : Node_bits.t;
mutable n_parents : cc_node Bag.t;
mutable n_root : cc_node;
mutable n_expl : explanation_forest_link;
mutable n_payload : cc_node_payload list;
mutable n_tags : (cc_node * explanation) Sidekick_util.Util.Int_map.t;
}

A node of the congruence closure. -An equivalence class is represented by its "root" element, -the representative.

If there is a normal form in the congruence class, then the -representative is a normal form

type cc_node_payload = ..

Theory-extensible payloads

type explanation =
| E_reduction
| E_lit of lit
| E_congruence of cc_node * cc_node
| E_injectivity of cc_node * cc_node
| E_reduce_eq of cc_node * cc_node
| E_custom of {
name : Sidekick_util.ID.t;
args : explanation list;
pp : (Sidekick_util.ID.t * explanation list) Fmt.printer;
}

(** Custom explanation, typically for theories *)

type lit = {
lit_view : lit_view;
lit_sign : bool;
}
type lit_view =
| Lit_fresh of Sidekick_util.ID.t
| Lit_atom of term
| Lit_expanded of term
type cst = {
cst_id : Sidekick_util.ID.t;
cst_kind : cst_kind;
}
type cst_kind =
| Cst_undef of ty
| Cst_cstor of data_cstor lazy_t
| Cst_proj of ty * data_cstor lazy_t * int
| Cst_test of ty * data_cstor lazy_t
| Cst_defined of ty * term lazy_t * cst_defined_info
type cst_defined_info =
| Cst_recursive
| Cst_non_recursive
type cst_exist_conds = lit lazy_t list Pervasives.ref
type 'a db_env = {
db_st : 'a option list;
db_size : int;
}
type ty = {
mutable ty_id : int;
ty_cell : ty_cell;
ty_card : ty_card lazy_t;
}
type ty_card =
| Finite
| Infinite
type ty_def =
| Uninterpreted
| Data of datatype
type datatype = {
data_cstors : data_cstor Sidekick_util.ID.Map.t lazy_t;
}
type data_cstor = {
cstor_ty : ty;
cstor_args : ty Sidekick_util.IArray.t;
cstor_proj : cst Sidekick_util.IArray.t lazy_t;
cstor_test : cst lazy_t;
cstor_cst : cst;
cstor_card : ty_card;
}
type ty_cell =
| Prop
| Atomic of Sidekick_util.ID.t * ty_def
| Arrow of ty * ty
val term_equal_ : term ‑> term ‑> bool
val term_hash_ : term ‑> int
val term_cmp_ : term ‑> term ‑> int
val cmp_lit : lit ‑> lit ‑> int
val cst_compare : cst ‑> cst ‑> int
val hash_lit : lit ‑> int
val cmp_cc_node : cc_node ‑> cc_node ‑> int
val cmp_exp : explanation CCOrd.t
val pp_cst : CCFormat.t ‑> cst ‑> unit
val id_of_cst : cst ‑> Sidekick_util.ID.t
val pp_db : Format.formatter ‑> (int * 'a) ‑> unit
val ty_unfold : ty ‑> ty list * ty
val pp_term_top : ids:bool ‑> CCFormat.t ‑> term ‑> unit
val pp_term : CCFormat.t ‑> term ‑> unit
val pp_lit : CCFormat.t ‑> lit ‑> unit
val pp_cc_node : CCFormat.t ‑> cc_node ‑> unit
val pp_explanation : Fmt.t ‑> explanation ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Stat/index.html b/sidekick/Sidekick_smt/Stat/index.html deleted file mode 100644 index 178f2b4c..00000000 --- a/sidekick/Sidekick_smt/Stat/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Stat (sidekick.Sidekick_smt.Stat)

Module Sidekick_smt.Stat

type t = {
mutable num_cst_expanded : int;
mutable num_uty_expanded : int;
mutable num_clause_push : int;
mutable num_clause_tautology : int;
mutable num_propagations : int;
mutable num_unif : int;
}
val create : unit ‑> t
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Term/index.html b/sidekick/Sidekick_smt/Term/index.html deleted file mode 100644 index 2bf032b6..00000000 --- a/sidekick/Sidekick_smt/Term/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Term (sidekick.Sidekick_smt.Term)

Module Sidekick_smt.Term

type t = Solver_types.term = {
mutable term_id : int;
mutable term_ty : Solver_types.ty;
term_cell : t Solver_types.term_cell;
}
type 'a cell = 'a Solver_types.term_cell =
| Bool of bool
| App_cst of Solver_types.cst * 'a Sidekick_util.IArray.t
| If of 'a * 'a * 'a
| Case of 'a * 'a Sidekick_util.ID.Map.t
| Custom of {
view : 'a Solver_types.term_view_custom;
tc : Solver_types.term_view_tc;
}
type 'a custom = 'a Solver_types.term_view_custom = ..
type tc = Solver_types.term_view_tc = {
tc_t_pp : a. 'a Sidekick_smt.Solver_types.Fmt.printer ‑> 'a custom Sidekick_smt.Solver_types.Fmt.printer;
tc_t_equal : a. 'a CCEqual.t ‑> 'a custom CCEqual.t;
tc_t_hash : a. 'a Hash.t ‑> 'a custom Hash.t;
tc_t_ty : a. ('a ‑> Solver_types.ty) ‑> 'a custom ‑> Solver_types.ty;
tc_t_is_semantic : a. 'a custom ‑> bool;
tc_t_solve : Solver_types.cc_node custom ‑> Solver_types.cc_node custom ‑> Solver_types.solve_result;
tc_t_sub : a. 'a custom ‑> 'a Sequence.t;
tc_t_abs : self:Solver_types.term ‑> Solver_types.term custom ‑> Solver_types.term * bool;
tc_t_relevant : a. 'a custom ‑> 'a Sequence.t;
tc_t_subst : a b. ('a ‑> 'b) ‑> 'a custom ‑> 'b custom option;
tc_t_explain : a. 'a CCEqual.t ‑> 'a custom ‑> 'a custom ‑> ('a * 'a) list;
}
val id : t ‑> int
val ty : t ‑> Ty.t
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val hash : t ‑> int
type state
val create : ?⁠size:int ‑> unit ‑> state
val make : state ‑> t Solver_types.term_cell ‑> t
val true_ : state ‑> t
val false_ : state ‑> t
val const : state ‑> Solver_types.cst ‑> t
val app_cst : state ‑> Solver_types.cst ‑> t Sidekick_util.IArray.t ‑> t
val if_ : state ‑> t ‑> t ‑> t ‑> t
val case : state ‑> t ‑> t Sidekick_util.ID.Map.t ‑> t
val and_eager : state ‑> t ‑> t ‑> t
val custom : state ‑> tc:tc ‑> t custom ‑> t
val cstor_test : state ‑> Solver_types.data_cstor ‑> Solver_types.term ‑> t
val cstor_proj : state ‑> Solver_types.data_cstor ‑> int ‑> Solver_types.term ‑> t
val abs : t ‑> t * bool
val to_seq : t ‑> t Sequence.t
val all_terms : state ‑> t Sequence.t
Views
val is_true : t ‑> bool
val is_false : t ‑> bool
val is_const : t ‑> bool
val is_custom : t ‑> bool
val is_semantic : t ‑> bool

Custom term that is Shostak-ready (ie can be solved)

val as_cst_undef : t ‑> (Solver_types.cst * Ty.t) option
type unif_form =
| Unif_cst of Solver_types.cst * Ty.t
| Unif_cstor of Solver_types.cst * Solver_types.data_cstor * Solver_types.term Sidekick_util.IArray.t
| Unif_none
val as_unif : t ‑> unif_form
Containers
module Tbl : CCHashtbl.S with type Tbl.key = t
module Map : CCMap.S with type Map.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Term_cell/Make_eq/argument-1-X/index.html b/sidekick/Sidekick_smt/Term_cell/Make_eq/argument-1-X/index.html deleted file mode 100644 index 97467166..00000000 --- a/sidekick/Sidekick_smt/Term_cell/Make_eq/argument-1-X/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-X (sidekick.Sidekick_smt.Term_cell.Make_eq.1-X)

Parameter Sidekick_smt.Term_cell.Make_eq.1-X

type t
val hash : t ‑> int
val equal : t ‑> t ‑> bool
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Term_cell/Make_eq/index.html b/sidekick/Sidekick_smt/Term_cell/Make_eq/index.html deleted file mode 100644 index 0a294679..00000000 --- a/sidekick/Sidekick_smt/Term_cell/Make_eq/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Make_eq (sidekick.Sidekick_smt.Term_cell.Make_eq)

Module Sidekick_smt.Term_cell.Make_eq

Parameters

X : ARG

Signature

val hash : X.t Solver_types.term_cell ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Term_cell/index.html b/sidekick/Sidekick_smt/Term_cell/index.html deleted file mode 100644 index 3dc49dd8..00000000 --- a/sidekick/Sidekick_smt/Term_cell/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Term_cell (sidekick.Sidekick_smt.Term_cell)

Module Sidekick_smt.Term_cell

type 'a cell = 'a Solver_types.term_cell =
| Bool of bool
| App_cst of Solver_types.cst * 'a Sidekick_util.IArray.t
| If of 'a * 'a * 'a
| Case of 'a * 'a Sidekick_util.ID.Map.t
| Custom of {
view : 'a Solver_types.term_view_custom;
tc : Solver_types.term_view_tc;
}
type 'a custom = 'a Solver_types.term_view_custom = ..
type tc = Solver_types.term_view_tc = {
tc_t_pp : a. 'a Sidekick_smt.Solver_types.Fmt.printer ‑> 'a Solver_types.term_view_custom Sidekick_smt.Solver_types.Fmt.printer;
tc_t_equal : a. 'a CCEqual.t ‑> 'a Solver_types.term_view_custom CCEqual.t;
tc_t_hash : a. 'a Hash.t ‑> 'a Solver_types.term_view_custom Hash.t;
tc_t_ty : a. ('a ‑> Solver_types.ty) ‑> 'a Solver_types.term_view_custom ‑> Solver_types.ty;
tc_t_is_semantic : a. 'a Solver_types.term_view_custom ‑> bool;
tc_t_solve : Solver_types.cc_node Solver_types.term_view_custom ‑> Solver_types.cc_node Solver_types.term_view_custom ‑> Solver_types.solve_result;
tc_t_sub : a. 'a Solver_types.term_view_custom ‑> 'a Sequence.t;
tc_t_abs : self:Solver_types.term ‑> Solver_types.term custom ‑> Solver_types.term * bool;
tc_t_relevant : a. 'a Solver_types.term_view_custom ‑> 'a Sequence.t;
tc_t_subst : a b. ('a ‑> 'b) ‑> 'a Solver_types.term_view_custom ‑> 'b Solver_types.term_view_custom option;
tc_t_explain : a. 'a CCEqual.t ‑> 'a Solver_types.term_view_custom ‑> 'a Solver_types.term_view_custom ‑> ('a * 'a) list;
}
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val true_ : t
val false_ : t
val const : Solver_types.cst ‑> t
val cstor_test : Solver_types.data_cstor ‑> Solver_types.term ‑> t
val cstor_proj : Solver_types.data_cstor ‑> int ‑> Solver_types.term ‑> t
val ty : t ‑> Ty.t

Compute the type of this term cell. Not totally free

module Tbl : CCHashtbl.S with type Tbl.key = t
module type ARG : sig ... end
module Make_eq : functor (X : ARG) -> sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Term_cell/module-type-ARG/index.html b/sidekick/Sidekick_smt/Term_cell/module-type-ARG/index.html deleted file mode 100644 index 6ae68c13..00000000 --- a/sidekick/Sidekick_smt/Term_cell/module-type-ARG/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -ARG (sidekick.Sidekick_smt.Term_cell.ARG)

Module type Sidekick_smt.Term_cell.ARG

type t
val hash : t ‑> int
val equal : t ‑> t ‑> bool
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Theory/Clause/index.html b/sidekick/Sidekick_smt/Theory/Clause/index.html deleted file mode 100644 index 56301c4a..00000000 --- a/sidekick/Sidekick_smt/Theory/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_smt.Theory.Clause)

Module Sidekick_smt.Theory.Clause

val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Theory/index.html b/sidekick/Sidekick_smt/Theory/index.html deleted file mode 100644 index c6d79f8b..00000000 --- a/sidekick/Sidekick_smt/Theory/index.html +++ /dev/null @@ -1,9 +0,0 @@ - -Theory (sidekick.Sidekick_smt.Theory)

Module Sidekick_smt.Theory

module Clause : sig ... end
type state =
| State : {
mutable st : 'a;
on_merge : 'a ‑> Equiv_class.t ‑> Equiv_class.t ‑> Explanation.t ‑> unit;

(** Called when two classes are merged *)

on_assert : 'a ‑> Lit.t ‑> unit;

(** Called when a literal becomes true *)

final_check : 'a ‑> Lit.t Sequence.t ‑> unit;

(** Final check, must be complete (i.e. must raise a conflict -if the set of literals is not satisfiable) *)

} ‑> state

Runtime state of a theory, with all the operations it provides. -'a is the internal state

type conflict = Sidekick_smt.Lit.Set.t

Unsatisfiable conjunction. -Its negation will become a conflict clause

type actions = {
on_backtrack : (unit ‑> unit) ‑> unit;

(** Register an action to do when we backtrack *)

raise_conflict : a. conflict ‑> 'a;

(** Give a conflict clause to the solver *)

propagate_eq : Term.t ‑> Term.t ‑> Explanation.t ‑> unit;

(** Propagate an equality t = u because e *)

propagate_distinct : Term.t list ‑> neq:Term.t ‑> Explanation.t ‑> unit;

(** Propagate a distinct l because e (where e = atom neq *)

propagate : Lit.t ‑> Explanation.t Bag.t ‑> unit;

(** Propagate a boolean using a unit clause. -expl => lit must be a theory lemma, that is, a T-tautology *)

add_local_axiom : Lit.t Sidekick_util.IArray.t ‑> unit;

(** Add local clause to the SAT solver. This clause will be -removed when the solver backtracks. *)

add_persistent_axiom : Lit.t Sidekick_util.IArray.t ‑> unit;

(** Add toplevel clause to the SAT solver. This clause will -not be backtracked. *)

find : Term.t ‑> Equiv_class.t;

(** Find representative of this term *)

all_classes : Equiv_class.t Sequence.t;

(** All current equivalence classes -(caution: linear in the number of terms existing in the solver) *)

}

Actions available to a theory during its lifetime

type t = {
name : string;
make : Term.state ‑> actions ‑> state;
}
val make : name:string ‑> make:(Term.state ‑> actions ‑> state) ‑> unit ‑> t
val make_st : ?⁠on_merge:('a ‑> Equiv_class.t ‑> Equiv_class.t ‑> Explanation.t ‑> unit) ‑> ?⁠on_assert:('a ‑> Lit.t ‑> unit) ‑> final_check:('a ‑> Lit.t Sequence.t ‑> unit) ‑> st:'a ‑> unit ‑> state
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Theory_combine/Form/index.html b/sidekick/Sidekick_smt/Theory_combine/Form/index.html deleted file mode 100644 index 56b8005c..00000000 --- a/sidekick/Sidekick_smt/Theory_combine/Form/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Form (sidekick.Sidekick_smt.Theory_combine.Form)

Module Sidekick_smt.Theory_combine.Form

type t = formula

The type of atomic formulas.

val equal : t ‑> t ‑> bool

Equality over formulas.

val hash : t ‑> int

Hashing function for formulas. Should be such that two formulas equal according -to Expr_intf.S.equal have the same hash.

val print : Format.formatter ‑> t ‑> unit

Printing function used among other thing for debugging.

val dummy : t

Formula constant. A valid formula should never be physically equal to dummy

val neg : t ‑> t

Formula negation. Should be an involution, i.e. equal a (neg neg a) should -always hold.

Returns a 'normalized' form of the formula, possibly negated -(in which case return Negated). This function is used to recognize -the link between a formula a and its negation neg a, so the goal is -that a and neg a normalise to the same formula, -but one returns Same_sign and the other one returns Negated

\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Theory_combine/Proof/index.html b/sidekick/Sidekick_smt/Theory_combine/Proof/index.html deleted file mode 100644 index 5e86b17c..00000000 --- a/sidekick/Sidekick_smt/Theory_combine/Proof/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Proof (sidekick.Sidekick_smt.Theory_combine.Proof)

Module Sidekick_smt.Theory_combine.Proof

type t =
| Proof
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Theory_combine/index.html b/sidekick/Sidekick_smt/Theory_combine/index.html deleted file mode 100644 index f9ca61c0..00000000 --- a/sidekick/Sidekick_smt/Theory_combine/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Theory_combine (sidekick.Sidekick_smt.Theory_combine)

Module Sidekick_smt.Theory_combine

Main theory

Combine the congruence closure with a number of plugins

module Proof : sig ... end
include Sidekick_sat.Theory_intf.S with type formula = Lit.t and type proof = Proof.t
type t

State of the theory

type formula = Lit.t

The type of formulas. Should be compatble with Formula_intf.S

type proof = Proof.t

A custom type for the proofs of lemmas produced by the theory.

module Form : sig ... end

Create a new instance of the theory

Assume the formulas in the slice, possibly pushing new formulas to be propagated, -and returns the result of the new assumptions.

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 cc : t ‑> Congruence_closure.t
val tst : t ‑> Term.state
val theories : t ‑> Theory.state Sequence.t
val add_theory : t ‑> Theory.t ‑> unit

How to add new theories

val add_theory_l : t ‑> Theory.t list ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Ty/index.html b/sidekick/Sidekick_smt/Ty/index.html deleted file mode 100644 index 702633a3..00000000 --- a/sidekick/Sidekick_smt/Ty/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Ty (sidekick.Sidekick_smt.Ty)

Module Sidekick_smt.Ty

Hashconsed Types

type def = Solver_types.ty_def =
| Uninterpreted
| Data of datatype
type datatype = Solver_types.datatype = {
data_cstors : data_cstor Sidekick_util.ID.Map.t lazy_t;
}
type data_cstor = Solver_types.data_cstor = {
cstor_ty : Solver_types.ty;
cstor_args : Solver_types.ty Sidekick_util.IArray.t;
cstor_proj : Solver_types.cst Sidekick_util.IArray.t lazy_t;
cstor_test : Solver_types.cst lazy_t;
cstor_cst : Solver_types.cst;
cstor_card : Solver_types.ty_card;
}
val view : t ‑> cell
val prop : t
val atomic : Sidekick_util.ID.t ‑> def ‑> card:Ty_card.t lazy_t ‑> t
val arrow : t ‑> t ‑> t
val arrow_l : t list ‑> t ‑> t
val is_prop : t ‑> bool
val is_data : t ‑> bool
val is_uninterpreted : t ‑> bool
val is_arrow : t ‑> bool
val unfold : t ‑> t list * t
val unfold_n : t ‑> int * t
val mangle : t ‑> string
include Sidekick_util.Intf.EQ with type t := t
type t
val equal : t ‑> t ‑> bool
include Sidekick_util.Intf.ORD with type t := t
type t
val compare : t ‑> t ‑> int
include Sidekick_util.Intf.HASH with type t := t
type t
val hash : t ‑> int
include Sidekick_util.Intf.PRINT with type t := t
type t
val pp : t CCFormat.printer
module Tbl : CCHashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/Ty_card/index.html b/sidekick/Sidekick_smt/Ty_card/index.html deleted file mode 100644 index 28047256..00000000 --- a/sidekick/Sidekick_smt/Ty_card/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Ty_card (sidekick.Sidekick_smt.Ty_card)

Module Sidekick_smt.Ty_card

Type Cardinality

val (+) : t ‑> t ‑> t
val (*) : t ‑> t ‑> t
val (^) : t ‑> t ‑> t
val finite : t
val infinite : t
val sum : t list ‑> t
val product : t list ‑> t
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_smt/index.html b/sidekick/Sidekick_smt/index.html deleted file mode 100644 index cda13f64..00000000 --- a/sidekick/Sidekick_smt/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smt (sidekick.Sidekick_smt)

Module Sidekick_smt

module Ast : sig ... end
module Bag : sig ... end
module Config : sig ... end
module Congruence_closure : sig ... end
module Cst : sig ... end
module Equiv_class : sig ... end
module Explanation : sig ... end
module Hash : sig ... end
module Het_map : sig ... end
module Lit : sig ... end
module Model : sig ... end
module Solver : sig ... end
module Solver_types : sig ... end
module Stat : sig ... end
module Term : sig ... end
module Term_cell : sig ... end
module Theory : sig ... end
module Theory_combine : sig ... end
module Ty : sig ... end
module Ty_card : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Ast/.jbuilder-keep b/sidekick/Sidekick_smt__Ast/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Ast/Ty/index.html b/sidekick/Sidekick_smt__Ast/Ty/index.html deleted file mode 100644 index 9b6f0821..00000000 --- a/sidekick/Sidekick_smt__Ast/Ty/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Ty (sidekick.Sidekick_smt__Ast.Ty)

Module Sidekick_smt__Ast.Ty

type t =
| Prop
| App of Sidekick_util.ID.t * t list
| Arrow of t * t
val prop : t
val const : Sidekick_util.ID.t ‑> t
val app : Sidekick_util.ID.t ‑> t list ‑> t
val arrow : t ‑> t ‑> t
val arrow_l : t list ‑> t ‑> t
val rat : t
val int : t
include Sidekick_util.Intf.EQ with type t := t
type t
val equal : t ‑> t ‑> bool
include Sidekick_util.Intf.ORD with type t := t
type t
val compare : t ‑> t ‑> int
include Sidekick_util.Intf.HASH with type t := t
type t
val hash : t ‑> int
include Sidekick_util.Intf.PRINT with type t := t
type t
val pp : t CCFormat.printer
val unfold : t ‑> t list * t

unfold ty will get the list of arguments, and the return type -of any function. An atomic type is just a function with no arguments

Datatypes

type data = {
data_id : Sidekick_util.ID.t;
data_cstors : t Sidekick_util.ID.Map.t;
}

Mutually recursive datatypes

module Map : CCMap.S with type Map.key = t

Error Handling

val ill_typed : ('a, Format.formatter, unit, 'b) Pervasives.format4 ‑> 'a
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Ast/Var/index.html b/sidekick/Sidekick_smt__Ast/Var/index.html deleted file mode 100644 index a18fff2a..00000000 --- a/sidekick/Sidekick_smt__Ast/Var/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Var (sidekick.Sidekick_smt__Ast.Var)

Module Sidekick_smt__Ast.Var

type 'ty t = private {
id : Sidekick_util.ID.t;
ty : 'ty;
}
val make : Sidekick_util.ID.t ‑> 'ty ‑> 'ty t
val makef : ty:'a ‑> ('b, Format.formatter, unit, 'a t) Pervasives.format4 ‑> 'b
val copy : 'a t ‑> 'a t
val id : _ t ‑> Sidekick_util.ID.t
val ty : 'a t ‑> 'a
val equal : 'a t ‑> 'a t ‑> bool
val compare : 'a t ‑> 'a t ‑> int
val pp : _ t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Ast/index.html b/sidekick/Sidekick_smt__Ast/index.html deleted file mode 100644 index 7600bbb1..00000000 --- a/sidekick/Sidekick_smt__Ast/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smt__Ast (sidekick.Sidekick_smt__Ast)

Module Sidekick_smt__Ast

Preprocessing AST

type 'a or_error = ('a, string) CCResult.t

Types

module Var : sig ... end
module Ty : sig ... end
type var = Ty.t Var.t
type op =
| And
| Or
| Imply
| Eq
| Distinct
type arith_op =
| Leq
| Lt
| Geq
| Gt
| Add
| Minus
| Mult
| Div
type binder =
| Fun
| Forall
| Exists
| Mu
type term = private {
term : term_cell;
ty : Ty.t;
}
type term_cell =
| Var of var
| Const of Sidekick_util.ID.t
| Num_z of Z.t
| Num_q of Q.t
| App of term * term list
| If of term * term * term
| Match of term * (var list * term) Sidekick_util.ID.Map.t
| Select of select * term
| Bind of binder * var * term
| Arith of arith_op * term list
| Let of (var * term) list * term
| Not of term
| Op of op * term list
| Asserting of {
t : term;
guard : term;
}
| Undefined_value
| Bool of bool
type select = {
select_name : Sidekick_util.ID.t lazy_t;
select_cstor : Sidekick_util.ID.t;
select_i : int;
}
type definition = Sidekick_util.ID.t * Ty.t * term
type statement =
| SetLogic of string
| SetOption of string list
| SetInfo of string list
| Data of Ty.data list
| TyDecl of Sidekick_util.ID.t * int
| Decl of Sidekick_util.ID.t * Ty.t
| Define of definition list
| Assert of term
| Assert_bool of int list
| Goal of var list * term
| CheckSat
| Exit

Constructors

val term_view : term ‑> term_cell
val ty : term ‑> Ty.t
val var : var ‑> term
val const : Sidekick_util.ID.t ‑> Ty.t ‑> term
val app : term ‑> term list ‑> term
val app_a : term ‑> term array ‑> term
val if_ : term ‑> term ‑> term ‑> term
val match_ : term ‑> (var list * term) Sidekick_util.ID.Map.t ‑> term
val let_ : var ‑> term ‑> term ‑> term
val let_l : (var * term) list ‑> term ‑> term
val bind : ty:Ty.t ‑> binder ‑> var ‑> term ‑> term
val select : ty:Ty.t ‑> select ‑> term ‑> term
val fun_ : var ‑> term ‑> term
val fun_l : var list ‑> term ‑> term
val fun_a : var array ‑> term ‑> term
val forall : var ‑> term ‑> term
val forall_l : var list ‑> term ‑> term
val exists : var ‑> term ‑> term
val exists_l : var list ‑> term ‑> term
val mu : var ‑> term ‑> term
val eq : term ‑> term ‑> term
val not_ : term ‑> term
val op : op ‑> term list ‑> term
val and_ : term ‑> term ‑> term
val and_l : term list ‑> term
val or_ : term ‑> term ‑> term
val or_l : term list ‑> term
val imply : term ‑> term ‑> term
val true_ : term
val false_ : term
val undefined_value : Ty.t ‑> term
val asserting : term ‑> term ‑> term
val num_z : Ty.t ‑> Z.t ‑> term
val num_q : Ty.t ‑> Q.t ‑> term
val num_str : Ty.t ‑> string ‑> term

parses int + num

val arith : Ty.t ‑> arith_op ‑> term list ‑> term

parses int + num

helpers

val is_true : term ‑> bool
val is_false : term ‑> bool
val unfold_binder : binder ‑> term ‑> var list * term
val unfold_fun : term ‑> var list * term

Printing

val pp_ty : Ty.t CCFormat.printer
val pp_term : term CCFormat.printer
val pp_statement : statement CCFormat.printer

Environment

type env_entry =
| E_uninterpreted_ty
| E_uninterpreted_cst
| E_const of Ty.t
| E_data of Ty.t Sidekick_util.ID.Map.t
| E_cstor of Ty.t
| E_defined of Ty.t * term
type env = {
defs : env_entry Sidekick_util.ID.Map.t;
}

Environment with definitions and goals

val env_empty : env
val env_add_statement : env ‑> statement ‑> env
val env_of_statements : statement Sequence.t ‑> env
val env_find_def : env ‑> Sidekick_util.ID.t ‑> env_entry option
val env_add_def : env ‑> Sidekick_util.ID.t ‑> env_entry ‑> env
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Bag/.jbuilder-keep b/sidekick/Sidekick_smt__Bag/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Bag/index.html b/sidekick/Sidekick_smt__Bag/index.html deleted file mode 100644 index 461dc857..00000000 --- a/sidekick/Sidekick_smt__Bag/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Sidekick_smt__Bag (sidekick.Sidekick_smt__Bag)

Module Sidekick_smt__Bag

Ordered Bag of Elements

A data structure where we can have duplicate elements, optimized for -fast concatenation and size.

type +'a t = private
| E
| L of 'a
| N of 'a t * 'a t * int
val empty : 'a t
val is_empty : _ t ‑> bool
val return : 'a ‑> 'a t
val size : _ t ‑> int

Constant time

val cons : 'a ‑> 'a t ‑> 'a t
val append : 'a t ‑> 'a t ‑> 'a t
val to_seq : 'a t ‑> 'a Sequence.t
val fold : ('a ‑> 'b ‑> 'a) ‑> 'a ‑> 'b t ‑> 'a
val iter : ('a ‑> unit) ‑> 'a t ‑> unit
val equal : ('a ‑> 'a ‑> bool) ‑> 'a t ‑> 'a t ‑> bool

Are the two bags equal, element wise?

\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Config/.jbuilder-keep b/sidekick/Sidekick_smt__Config/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Config/Key/index.html b/sidekick/Sidekick_smt__Config/Key/index.html deleted file mode 100644 index 1de7d203..00000000 --- a/sidekick/Sidekick_smt__Config/Key/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Key (sidekick.Sidekick_smt__Config.Key)

Module Sidekick_smt__Config.Key

type 'a t
val create : unit ‑> 'a t
val equal : 'a t ‑> 'a t ‑> bool

Compare two keys that have compatible types

\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Config/index.html b/sidekick/Sidekick_smt__Config/index.html deleted file mode 100644 index deff47bb..00000000 --- a/sidekick/Sidekick_smt__Config/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smt__Config (sidekick.Sidekick_smt__Config)

Module Sidekick_smt__Config

Configuration

type 'a sequence = ('a ‑> unit) ‑> unit
module Key : sig ... end
type t
val empty : t
val mem : _ Key.t ‑> t ‑> bool
val add : 'a Key.t ‑> 'a ‑> t ‑> t
val length : t ‑> int
val cardinal : t ‑> int
val find : 'a Key.t ‑> t ‑> 'a option
val find_exn : 'a Key.t ‑> t ‑> 'a
  • Raises Not_found: if the key is not in the table
type pair =
| Pair : 'a Key.t * 'a ‑> pair
val iter : (pair ‑> unit) ‑> t ‑> unit
val to_seq : t ‑> pair sequence
val of_seq : pair sequence ‑> t
val add_seq : t ‑> pair sequence ‑> t
val add_list : t ‑> pair list ‑> t
val of_list : pair list ‑> t
val to_list : t ‑> pair list
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Congruence_closure/.jbuilder-keep b/sidekick/Sidekick_smt__Congruence_closure/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Congruence_closure/index.html b/sidekick/Sidekick_smt__Congruence_closure/index.html deleted file mode 100644 index a7fa4068..00000000 --- a/sidekick/Sidekick_smt__Congruence_closure/index.html +++ /dev/null @@ -1,7 +0,0 @@ - -Sidekick_smt__Congruence_closure (sidekick.Sidekick_smt__Congruence_closure)

Module Sidekick_smt__Congruence_closure

Congruence Closure

type t

Global state of the congruence closure

Node in the congruence closure

Node that is currently a representative

type actions = {
on_backtrack : (unit ‑> unit) ‑> unit;

(** Register a callback to be invoked upon backtracking below the current level *)

on_merge : repr ‑> repr ‑> Sidekick_smt.Solver_types.explanation ‑> unit;

(** Call this when two classes are merged *)

raise_conflict : a. Sidekick_smt.Lit.Set.t ‑> 'a;

(** Report a conflict *)

propagate : Sidekick_smt.Lit.t ‑> Sidekick_smt.Explanation.t Sidekick_smt.Bag.t ‑> unit;

(** Propagate a literal *)

}
val create : ?⁠size:int ‑> actions:actions ‑> Sidekick_smt.Term.state ‑> t

Create a new congruence closure.

  • Parameter acts: the actions available to the congruence closure
val find : t ‑> node ‑> repr

Current representative

val same_class : t ‑> node ‑> node ‑> bool

Are these two classes the same in the current CC?

val union : t ‑> node ‑> node ‑> Sidekick_smt.Solver_types.explanation ‑> unit

Merge the two equivalence classes. Will be undone on backtracking.

val mem : t ‑> Sidekick_smt.Solver_types.term ‑> bool

Is the term properly added to the congruence closure?

Add the term to the congruence closure, if not present already. -Will be backtracked.

val add_seq : t ‑> Sidekick_smt.Solver_types.term Sequence.t ‑> unit

Add a sequence of terms to the congruence closure

val all_classes : t ‑> repr Sequence.t

All current classes

val assert_lit : t ‑> Sidekick_smt.Lit.t ‑> unit

Given a literal, assume it in the congruence closure and propagate -its consequences. Will be backtracked.

assert_distinct l ~expl:u e asserts all elements of l are distinct -with explanation e -precond: u = distinct l

val check : t ‑> unit
val final_check : t ‑> unit
val explain_eq_n : ?⁠init:Sidekick_smt.Lit.Set.t ‑> t ‑> node ‑> node ‑> Sidekick_smt.Lit.Set.t

explain why the two nodes are equal

explain why the two terms are equal

val explain_unfold_seq : ?⁠init:Sidekick_smt.Lit.Set.t ‑> t ‑> Sidekick_smt.Solver_types.explanation Sequence.t ‑> Sidekick_smt.Lit.Set.t

Unfold those explanations into a complete set of -literals implying them

\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Cst/.jbuilder-keep b/sidekick/Sidekick_smt__Cst/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Cst/index.html b/sidekick/Sidekick_smt__Cst/index.html deleted file mode 100644 index 00c58a58..00000000 --- a/sidekick/Sidekick_smt__Cst/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smt__Cst (sidekick.Sidekick_smt__Cst)

Module Sidekick_smt__Cst

val id : t ‑> Sidekick_util.ID.t
val ty : t ‑> Sidekick_smt.Ty.t
val make_proj : Sidekick_util.ID.t ‑> Sidekick_smt.Ty.t ‑> Sidekick_smt.Solver_types.data_cstor lazy_t ‑> int ‑> t
val make_undef : Sidekick_util.ID.t ‑> Sidekick_smt.Ty.t ‑> t
val arity : t ‑> int
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val hash : t ‑> int
val as_undefined : t ‑> (t * Sidekick_smt.Ty.t) option
val as_undefined_exn : t ‑> t * Sidekick_smt.Ty.t
val is_finite_cstor : t ‑> bool
module Map : CCMap.S with type Map.key = t
module Tbl : CCHashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Equiv_class/.jbuilder-keep b/sidekick/Sidekick_smt__Equiv_class/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Equiv_class/index.html b/sidekick/Sidekick_smt__Equiv_class/index.html deleted file mode 100644 index 5607a2cf..00000000 --- a/sidekick/Sidekick_smt__Equiv_class/index.html +++ /dev/null @@ -1,15 +0,0 @@ - -Sidekick_smt__Equiv_class (sidekick.Sidekick_smt__Equiv_class)

Module Sidekick_smt__Equiv_class

Equivalence Classes

An equivalence class is a set of terms that are currently equal -in the partial model built by the solver. -The class is represented by a collection of nodes, one of which is -distinguished and is called the "representative".

All information pertaining to the whole equivalence class is stored -in this representative's node.

When two classes become equal (are "merged"), one of the two -representatives is picked as the representative of the new class. -The new class contains the union of the two old classes' nodes.

We also allow theories to store additional information in the -representative. This information can be used when two classes are -merged, to detect conflicts and solve equations à la Shostak.

val field_expanded : Sidekick_smt.Solver_types.Node_bits.field

Term is expanded?

val field_has_expansion_lit : Sidekick_smt.Solver_types.Node_bits.field

Upon expansion, does this term have a special literal Lit_expanded t -that should be asserted?

val field_is_lit : Sidekick_smt.Solver_types.Node_bits.field

Is this term a boolean literal?

val field_is_split : Sidekick_smt.Solver_types.Node_bits.field

Did we perform case split (Split 1) on this term? -This is only relevant for terms whose type is a datatype.

val field_add_level_0 : Sidekick_smt.Solver_types.Node_bits.field

Is the corresponding term to be re-added upon backtracking, -down to level 0?

val field_is_active : Sidekick_smt.Solver_types.Node_bits.field

The term is needed for evaluation. We must try to evaluate it -or to find a value for it using the theory

basics

val equal : t ‑> t ‑> bool
val hash : t ‑> int
val payload : t ‑> payload list

Helpers

Make a new equivalence class whose representative is the given term

val payload_find : f:(payload ‑> 'a option) ‑> t ‑> 'a option
val payload_pred : f:(payload ‑> bool) ‑> t ‑> bool
val set_payload : ?⁠can_erase:(payload ‑> bool) ‑> t ‑> payload ‑> unit

Add given payload

  • Parameter can_erase: if provided, checks whether an existing value -is to be replaced instead of adding a new entry
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Explanation/.jbuilder-keep b/sidekick/Sidekick_smt__Explanation/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Explanation/Set/index.html b/sidekick/Sidekick_smt__Explanation/Set/index.html deleted file mode 100644 index 0887b439..00000000 --- a/sidekick/Sidekick_smt__Explanation/Set/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Set (sidekick.Sidekick_smt__Explanation.Set)

Module Sidekick_smt__Explanation.Set

type t
val empty : t
val is_empty : t ‑> bool
val mem : elt ‑> t ‑> bool
val add : elt ‑> t ‑> t
val singleton : elt ‑> t
val remove : elt ‑> t ‑> t
val union : t ‑> t ‑> t
val inter : t ‑> t ‑> t
val diff : t ‑> t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val subset : t ‑> t ‑> bool
val iter : (elt ‑> unit) ‑> t ‑> unit
val map : (elt ‑> elt) ‑> t ‑> t
val fold : (elt ‑> 'a ‑> 'a) ‑> t ‑> 'a ‑> 'a
val for_all : (elt ‑> bool) ‑> t ‑> bool
val exists : (elt ‑> bool) ‑> t ‑> bool
val filter : (elt ‑> bool) ‑> t ‑> t
val partition : (elt ‑> bool) ‑> t ‑> t * t
val cardinal : t ‑> int
val elements : t ‑> elt list
val min_elt : t ‑> elt
val max_elt : t ‑> elt
val choose : t ‑> elt
val split : elt ‑> t ‑> t * bool * t
val find : elt ‑> t ‑> elt
val min_elt_opt : t ‑> elt option
val max_elt_opt : t ‑> elt option
val choose_opt : t ‑> elt option
val find_opt : elt ‑> t ‑> elt option
val find_first : (elt ‑> bool) ‑> t ‑> elt
val find_first_opt : (elt ‑> bool) ‑> t ‑> elt option
val find_last : (elt ‑> bool) ‑> t ‑> elt
val find_last_opt : (elt ‑> bool) ‑> t ‑> elt option
val of_seq : elt CCSet.sequence ‑> t
val add_seq : t ‑> elt CCSet.sequence ‑> t
val to_seq : t ‑> elt CCSet.sequence
val of_list : elt list ‑> t
val add_list : t ‑> elt list ‑> t
val to_list : t ‑> elt list
val pp : ?⁠start:string ‑> ?⁠stop:string ‑> ?⁠sep:string ‑> elt CCSet.printer ‑> t CCSet.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Explanation/index.html b/sidekick/Sidekick_smt__Explanation/index.html deleted file mode 100644 index fd7d9276..00000000 --- a/sidekick/Sidekick_smt__Explanation/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smt__Explanation (sidekick.Sidekick_smt__Explanation)

Module Sidekick_smt__Explanation

module Set : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Hash/.jbuilder-keep b/sidekick/Sidekick_smt__Hash/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Hash/index.html b/sidekick/Sidekick_smt__Hash/index.html deleted file mode 100644 index 27b933aa..00000000 --- a/sidekick/Sidekick_smt__Hash/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smt__Hash (sidekick.Sidekick_smt__Hash)

Module Sidekick_smt__Hash

type 'a t = 'a ‑> int
val bool : bool t
val int : int t
val string : string t
val combine : 'a t ‑> int ‑> 'a ‑> int
val pair : 'a t ‑> 'b t ‑> ('a * 'b) t
val opt : 'a t ‑> 'a option t
val list : 'a t ‑> 'a list t
val array : 'a t ‑> 'a array t
val iarray : 'a t ‑> 'a Sidekick_util.IArray.t t
val seq : 'a t ‑> 'a Sequence.t t
val combine2 : int ‑> int ‑> int
val combine3 : int ‑> int ‑> int ‑> int
val combine4 : int ‑> int ‑> int ‑> int ‑> int
val poly : 'a t

the regular polymorphic hash function

\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Het_map/.jbuilder-keep b/sidekick/Sidekick_smt__Het_map/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Het_map/Key/index.html b/sidekick/Sidekick_smt__Het_map/Key/index.html deleted file mode 100644 index 88a898ab..00000000 --- a/sidekick/Sidekick_smt__Het_map/Key/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Key (sidekick.Sidekick_smt__Het_map.Key)

Module Sidekick_smt__Het_map.Key

type 'a t
val create : unit ‑> 'a t
val equal : 'a t ‑> 'a t ‑> bool

Compare two keys that have compatible types

\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Het_map/Map/index.html b/sidekick/Sidekick_smt__Het_map/Map/index.html deleted file mode 100644 index 03bfa635..00000000 --- a/sidekick/Sidekick_smt__Het_map/Map/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Map (sidekick.Sidekick_smt__Het_map.Map)

Module Sidekick_smt__Het_map.Map

Immutable map

type t
val empty : t
val mem : _ Key.t ‑> t ‑> bool
val add : 'a Key.t ‑> 'a ‑> t ‑> t
val length : t ‑> int
val cardinal : t ‑> int
val find : 'a Key.t ‑> t ‑> 'a option
val find_exn : 'a Key.t ‑> t ‑> 'a
  • Raises Not_found: if the key is not in the table
val iter : (pair ‑> unit) ‑> t ‑> unit
val to_seq : t ‑> pair sequence
val of_seq : pair sequence ‑> t
val add_seq : t ‑> pair sequence ‑> t
val add_list : t ‑> pair list ‑> t
val of_list : pair list ‑> t
val to_list : t ‑> pair list
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Het_map/Tbl/index.html b/sidekick/Sidekick_smt__Het_map/Tbl/index.html deleted file mode 100644 index cf463119..00000000 --- a/sidekick/Sidekick_smt__Het_map/Tbl/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Tbl (sidekick.Sidekick_smt__Het_map.Tbl)

Module Sidekick_smt__Het_map.Tbl

Imperative table indexed by Key

type t
val create : ?⁠size:int ‑> unit ‑> t
val mem : t ‑> _ Key.t ‑> bool
val add : t ‑> 'a Key.t ‑> 'a ‑> unit
val length : t ‑> int
val find : t ‑> 'a Key.t ‑> 'a option
val find_exn : t ‑> 'a Key.t ‑> 'a
  • Raises Not_found: if the key is not in the table
val iter : (pair ‑> unit) ‑> t ‑> unit
val to_seq : t ‑> pair sequence
val of_seq : pair sequence ‑> t
val add_seq : t ‑> pair sequence ‑> unit
val add_list : t ‑> pair list ‑> unit
val of_list : pair list ‑> t
val to_list : t ‑> pair list
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Het_map/index.html b/sidekick/Sidekick_smt__Het_map/index.html deleted file mode 100644 index cb0b8972..00000000 --- a/sidekick/Sidekick_smt__Het_map/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smt__Het_map (sidekick.Sidekick_smt__Het_map)

Module Sidekick_smt__Het_map

Associative containers with Heterogenerous Values

type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option
module Key : sig ... end
type pair =
| Pair : 'a Key.t * 'a ‑> pair
module Tbl : sig ... end

Imperative table indexed by Key

module Map : sig ... end

Immutable map

\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Lit/.jbuilder-keep b/sidekick/Sidekick_smt__Lit/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Lit/index.html b/sidekick/Sidekick_smt__Lit/index.html deleted file mode 100644 index a6e5086f..00000000 --- a/sidekick/Sidekick_smt__Lit/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smt__Lit (sidekick.Sidekick_smt__Lit)

Module Sidekick_smt__Lit

Literals

type t = Sidekick_smt.Solver_types.lit = {
lit_view : Sidekick_smt.Solver_types.lit_view;
lit_sign : bool;
}
val neg : t ‑> t
val abs : t ‑> t
val sign : t ‑> bool
val as_atom : t ‑> (Sidekick_smt.Solver_types.term * bool) option
val fresh_with : Sidekick_util.ID.t ‑> t
val fresh : unit ‑> t
val dummy : t
val atom : ?⁠sign:bool ‑> Sidekick_smt.Solver_types.term ‑> t
val expanded : Sidekick_smt.Solver_types.term ‑> t
val hash : t ‑> int
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val print : t Sidekick_smt.Solver_types.Fmt.printer
val norm : t ‑> t * Sidekick_sat.negated
module Set : CCSet.S with type Set.elt = t
module Tbl : CCHashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Model/.jbuilder-keep b/sidekick/Sidekick_smt__Model/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Model/index.html b/sidekick/Sidekick_smt__Model/index.html deleted file mode 100644 index 90215e6a..00000000 --- a/sidekick/Sidekick_smt__Model/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smt__Model (sidekick.Sidekick_smt__Model)

Module Sidekick_smt__Model

Model

type domain = Sidekick_util.ID.t list
type t = private {
env : Sidekick_smt.Ast.env;
domains : domain Sidekick_smt.Ast.Ty.Map.t;
consts : term Sidekick_util.ID.Map.t;
}
val make : env:Sidekick_smt.Ast.env ‑> consts:term Sidekick_util.ID.Map.t ‑> domains:domain Sidekick_smt.Ast.Ty.Map.t ‑> t
val pp : t CCFormat.printer
val eval : t ‑> term ‑> term
exception Bad_model of t * term * term
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Solver/.jbuilder-keep b/sidekick/Sidekick_smt__Solver/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Solver/Proof/index.html b/sidekick/Sidekick_smt__Solver/Proof/index.html deleted file mode 100644 index dc71e6f9..00000000 --- a/sidekick/Sidekick_smt__Solver/Proof/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Proof (sidekick.Sidekick_smt__Solver.Proof)

Module Sidekick_smt__Solver.Proof

val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Solver/Sat_solver/Clause/index.html b/sidekick/Sidekick_smt__Solver/Sat_solver/Clause/index.html deleted file mode 100644 index f7a93241..00000000 --- a/sidekick/Sidekick_smt__Solver/Sat_solver/Clause/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Clause (sidekick.Sidekick_smt__Solver.Sat_solver.Clause)

Module Sidekick_smt__Solver.Sat_solver.Clause

type t = clause
val atoms : t ‑> atom Sidekick_util.IArray.t
val atoms_l : t ‑> atom list
val tag : t ‑> int option
val equal : t ‑> t ‑> bool
val make : ?⁠tag:int ‑> lit array ‑> t

Make a clause from this array of SAT literals. -The array's ownership is transferred to the clause, do not mutate it

val make_l : ?⁠tag:int ‑> lit list ‑> t
val of_atoms : solver ‑> ?⁠tag:int ‑> atom list ‑> t
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Solver/Sat_solver/Formula/index.html b/sidekick/Sidekick_smt__Solver/Sat_solver/Formula/index.html deleted file mode 100644 index 85675942..00000000 --- a/sidekick/Sidekick_smt__Solver/Sat_solver/Formula/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Formula (sidekick.Sidekick_smt__Solver.Sat_solver.Formula)

Module Sidekick_smt__Solver.Sat_solver.Formula

type t = formula
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Solver/Sat_solver/Lit/index.html b/sidekick/Sidekick_smt__Solver/Sat_solver/Lit/index.html deleted file mode 100644 index cd507ce2..00000000 --- a/sidekick/Sidekick_smt__Solver/Sat_solver/Lit/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Lit (sidekick.Sidekick_smt__Solver.Sat_solver.Lit)

Module Sidekick_smt__Solver.Sat_solver.Lit

type t = lit
val make : solver ‑> atom ‑> t
val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Solver/Sat_solver/Proof/Atom/index.html b/sidekick/Sidekick_smt__Solver/Sat_solver/Proof/Atom/index.html deleted file mode 100644 index e1c173da..00000000 --- a/sidekick/Sidekick_smt__Solver/Sat_solver/Proof/Atom/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Atom (sidekick.Sidekick_smt__Solver.Sat_solver.Proof.Atom)

Module Sidekick_smt__Solver.Sat_solver.Proof.Atom

type t = atom
val is_pos : t ‑> bool
val neg : t ‑> t
val abs : t ‑> t
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val lit : t ‑> formula
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Solver/Sat_solver/Proof/Clause/index.html b/sidekick/Sidekick_smt__Solver/Sat_solver/Proof/Clause/index.html deleted file mode 100644 index 238d3a6c..00000000 --- a/sidekick/Sidekick_smt__Solver/Sat_solver/Proof/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_smt__Solver.Sat_solver.Proof.Clause)

Module Sidekick_smt__Solver.Sat_solver.Proof.Clause

type t = clause
val name : t ‑> string
val atoms : t ‑> atom array
val atoms_l : t ‑> atom list

A nice looking printer for clauses, which sort the atoms before printing.

module Tbl : Hashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Solver/Sat_solver/Proof/index.html b/sidekick/Sidekick_smt__Solver/Sat_solver/Proof/index.html deleted file mode 100644 index 59d49753..00000000 --- a/sidekick/Sidekick_smt__Solver/Sat_solver/Proof/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -Proof (sidekick.Sidekick_smt__Solver.Sat_solver.Proof)

Module Sidekick_smt__Solver.Sat_solver.Proof

A module to manipulate proofs.

Signature for a module handling proof by resolution from sat solving traces

Type declarations

exception Insufficient_hyps

Raised when a complete resolution derivation cannot be found using the current hypotheses.

type formula
type atom
type clause = clause

Abstract types for atoms, clauses and theory-specific lemmas

type proof

Lazy type for proof trees. Proofs are persistent objects, and can be -extended to proof nodes using functions defined later.

type proof_node = {
conclusion : clause;

(** The conclusion of the proof *)

step : step;

(** The reasoning step used to prove the conclusion *)

}

A proof can be expanded into a proof node, which show the first step of the proof.

type step =
| Hypothesis

(** The conclusion is a user-provided hypothesis *)

| Assumption

(** The conclusion has been locally assumed by the user *)

| Lemma of lemma

(** The conclusion is a tautology provided by the theory, with associated proof *)

| Duplicate of proof * atom list

(** The conclusion is obtained by eliminating multiple occurences of the atom in -the conclusion of the provided proof. *)

| Resolution of proof * proof * atom

(** The conclusion can be deduced by performing a resolution between the conclusions -of the two given proofs. The atom on which to perform the resolution is also given. *)

The type of reasoning steps allowed in a proof.

Proof building functions

val prove : clause ‑> proof

Given a clause, return a proof of that clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_unsat : clause ‑> proof

Given a conflict clause c, returns a proof of the empty clause.

  • Raises Insuficient_hyps: if it does not succeed.
val prove_atom : atom ‑> proof option

Given an atom a, returns a proof of the clause [a] if a is true at level 0

Proof Nodes

val is_leaf : step ‑> bool

Returns wether the the proof node is a leaf, i.e. an hypothesis, -an assumption, or a lemma. -true if and only if returns the empty list.

val expl : step ‑> string

Returns a short string description for the proof step; for instance -"hypothesis" for a Hypothesis -(it currently returns the variant name in lowercase).

val parents : step ‑> proof list

Returns the parents of a proof node.

Proof Manipulation

val expand : proof ‑> proof_node

Return the proof step at the root of a given proof.

val conclusion : proof ‑> clause

What is proved at the root of the clause

val fold : ('a ‑> proof_node ‑> 'a) ‑> 'a ‑> proof ‑> 'a

fold f acc p, fold f over the proof p and all its node. It is guaranteed that -f is executed exactly once on each proof node in the tree, and that the execution of -f on a proof node happens after the execution on the parents of the nodes.

val unsat_core : proof ‑> clause list

Returns the unsat_core of the given proof, i.e the lists of conclusions -of all leafs of the proof. -More efficient than using the fold function since it has -access to the internal representation of proofs

Misc

val check : proof ‑> unit

Check the contents of a proof. Mainly for internal use

module Clause : sig ... end
module Atom : sig ... end
module Tbl : Hashtbl.S with type Tbl.key = proof
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Solver/Sat_solver/index.html b/sidekick/Sidekick_smt__Solver/Sat_solver/index.html deleted file mode 100644 index a9882e6f..00000000 --- a/sidekick/Sidekick_smt__Solver/Sat_solver/index.html +++ /dev/null @@ -1,18 +0,0 @@ - -Sat_solver (sidekick.Sidekick_smt__Solver.Sat_solver)

Module Sidekick_smt__Solver.Sat_solver

Internal modules

-These are the internal modules used, you should probably not use them -if you're not familiar with the internals of mSAT.

type formula = Sidekick_smt.Lit.t

user formulas

type lit

SAT solver literals

type clause

SAT solver clauses

user theory

A module to manipulate proofs.

type t

Main solver type, containing all state for solving.

val create : ?⁠size:[ `Tiny | `Small | `Big ] ‑> unit ‑> t

Create new solver

  • Parameter size: the initial size of internal data structures. The bigger, -the faster, but also the more RAM it uses.

Types

type atom = formula

The type of atoms given by the module argument for formulas. -An atom is a user-defined atomic formula whose truth value is -picked by Msat.

type res =
| Sat of formula Sidekick_sat__.Solver_intf.sat_state

(** Returned when the solver reaches SAT, with a model *)

| Unsat of (clauseProof.proofSidekick_sat__.Solver_intf.unsat_state

(** Returned when the solver reaches UNSAT, with a proof *)

Result type for the solver

exception UndecidedLit

Exception raised by the evaluating functions when a literal -has not yet been assigned a value.

Base operations

val theory : t ‑> theory
val assume : ?⁠permanent:bool ‑> t ‑> ?⁠tag:int ‑> atom list list ‑> unit

Add the list of clauses to the current set of assumptions. -Modifies the sat solver state in place.

  • Parameter permanent: if true, kept after backtracking (default true)
val add_clause : permanent:bool ‑> t ‑> clause ‑> unit

Lower level addition of clauses. See Clause to create clauses.

  • Parameter permanent: if true, kept after backtracking
val solve : t ‑> ?⁠assumptions:atom list ‑> unit ‑> res

Try and solves the current set of clauses.

  • Parameter assumptions: additional atomic assumptions to be temporarily added. -The assumptions are just used for this call to solve, they are -not saved in the solver's state.
val new_atom : permanent:bool ‑> t ‑> atom ‑> unit

Add a new atom (i.e propositional formula) to the solver. -This formula will be decided on at some point during solving, -whether it appears in clauses or not.

  • Parameter permanent: if true, kept after backtracking
val unsat_core : Proof.proof ‑> clause list

Returns the unsat core of a given proof, ie a subset of all the added -clauses that is sufficient to establish unsatisfiability.

val true_at_level0 : t ‑> atom ‑> bool

true_at_level0 a returns true if a was proved at level0, i.e. -it must hold in all models

val get_tag : clause ‑> int option

Recover tag from a clause, if any

val push : t ‑> unit

Push a new save point. Clauses added after this call to push will -be added as normal, but the corresponding call to pop will -remove these clauses.

val pop : t ‑> unit

Return to last save point, discarding clauses added since last -call to push

Obtain actions

Re-export some functions

type solver = t
module Lit : sig ... end
module Clause : sig ... end
module Formula : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Solver/index.html b/sidekick/Sidekick_smt__Solver/index.html deleted file mode 100644 index 02624335..00000000 --- a/sidekick/Sidekick_smt__Solver/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smt__Solver (sidekick.Sidekick_smt__Solver)

Module Sidekick_smt__Solver

Solver

The solving algorithm, based on MCSat

Result

module Proof : sig ... end
type unknown =
| U_timeout
| U_max_depth
| U_incomplete
type res =
| Sat of Sidekick_smt.Model.t
| Unsat of Proof.t
| Unknown of unknown

Main

type t

Solver state

val create : ?⁠size:[ `Big | `Tiny | `Small ] ‑> ?⁠config:Sidekick_smt.Config.t ‑> theories:Sidekick_smt.Theory.t list ‑> unit ‑> t
val solver : t ‑> Sat_solver.t
val th_combine : t ‑> Sidekick_smt.Theory_combine.t
val add_theory : t ‑> Sidekick_smt.Theory.t ‑> unit
val stats : t ‑> Sidekick_smt.Stat.t
val tst : t ‑> Sidekick_smt.Term.state
val assume : t ‑> Sidekick_smt.Lit.t Sidekick_util.IArray.t ‑> unit
val assume_eq : t ‑> Sidekick_smt.Term.t ‑> Sidekick_smt.Term.t ‑> Sidekick_smt.Lit.t ‑> unit
val assume_distinct : t ‑> Sidekick_smt.Term.t list ‑> neq:Sidekick_smt.Term.t ‑> Sidekick_smt.Lit.t ‑> unit
val solve : ?⁠on_exit:(unit ‑> unit) list ‑> ?⁠check:bool ‑> assumptions:Sidekick_smt.Lit.t list ‑> t ‑> res

solve s checks the satisfiability of the statement added so far to s

  • Parameter check: if true, the model is checked before returning
  • Parameter on_exit: functions to be run before this returns
val pp_term_graph : t CCFormat.printer
val pp_stats : t CCFormat.printer
val pp_unknown : unknown CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Solver_types/.jbuilder-keep b/sidekick/Sidekick_smt__Solver_types/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Solver_types/index.html b/sidekick/Sidekick_smt__Solver_types/index.html deleted file mode 100644 index 929694c1..00000000 --- a/sidekick/Sidekick_smt__Solver_types/index.html +++ /dev/null @@ -1,16 +0,0 @@ - -Sidekick_smt__Solver_types (sidekick.Sidekick_smt__Solver_types)

Module Sidekick_smt__Solver_types

module Fmt = CCFormat
module Node_bits : CCBitField.S
type 'a lazily_expanded =
| Lazy_some of 'a
| Lazy_none
type term = {
mutable term_id : int;
mutable term_ty : ty;
term_cell : term term_cell;
}
type 'a term_cell =
| Bool of bool
| App_cst of cst * 'a Sidekick_util.IArray.t
| If of 'a * 'a * 'a
| Case of 'a * 'a Sidekick_util.ID.Map.t
| Custom of {
view : 'a term_view_custom;
tc : term_view_tc;
}
type term_view_tc = {
tc_t_pp : a. 'a Fmt.printer ‑> 'a term_view_custom Fmt.printer;
tc_t_equal : a. 'a CCEqual.t ‑> 'a term_view_custom CCEqual.t;
tc_t_hash : a. 'a Sidekick_smt.Hash.t ‑> 'a term_view_custom Sidekick_smt.Hash.t;
tc_t_ty : a. ('a ‑> ty) ‑> 'a term_view_custom ‑> ty;
tc_t_is_semantic : a. 'a term_view_custom ‑> bool;
tc_t_solve : cc_node term_view_custom ‑> cc_node term_view_custom ‑> solve_result;
tc_t_sub : a. 'a term_view_custom ‑> 'a Sequence.t;
tc_t_abs : self:term ‑> term term_view_custom ‑> term * bool;
tc_t_relevant : a. 'a term_view_custom ‑> 'a Sequence.t;
tc_t_subst : a b. ('a ‑> 'b) ‑> 'a term_view_custom ‑> 'b term_view_custom option;
tc_t_explain : a. 'a CCEqual.t ‑> 'a term_view_custom ‑> 'a term_view_custom ‑> ('a * 'a) list;
}

Methods on the custom term view whose leaves are 'a. -Terms must be comparable, hashable, printable, and provide -some additional theory handles.

  • tc_t_sub must return all immediate subterms (all 'a contained in the term)
  • tc_t_subst must use the function to replace all subterms (all the 'a -returned by tc_t_sub) by 'b
  • tc_t_relevant must return a subset of tc_t_sub (possibly the same set). -The terms it returns will be activated and evaluated whenever possible. -Terms in tc_t_sub t \ tc_t_relevant t are considered for -congruence but not for evaluation.
  • If t1 and t2 satisfy tc_t_is_semantic and have the same type, -then tc_t_solve t1 t2 must succeed by returning some solve_result.
  • if tc_t_equal eq a b = true, then tc_t_explain eq a b must -return all the pairs of equal subterms that are sufficient -for a and b to be equal.
type 'a term_view_custom = ..

Custom term view for theories

type solve_result =
| Solve_ok of {
subst : (cc_node * term) list;

(** binding leaves to other terms *)

}

(** Success, the two terms being equal is equivalent -to the given substitution *)

| Solve_fail of {
expl : explanation;
}

(** Failure, because of the given explanation. -The two terms cannot be equal *)

The result of a call to solve.

type cc_node = {
n_term : term;
mutable n_bits : Node_bits.t;
mutable n_parents : cc_node Sidekick_smt.Bag.t;
mutable n_root : cc_node;
mutable n_expl : explanation_forest_link;
mutable n_payload : cc_node_payload list;
mutable n_tags : (cc_node * explanation) Sidekick_util.Util.Int_map.t;
}

A node of the congruence closure. -An equivalence class is represented by its "root" element, -the representative.

If there is a normal form in the congruence class, then the -representative is a normal form

type cc_node_payload = ..

Theory-extensible payloads

type explanation =
| E_reduction
| E_lit of lit
| E_congruence of cc_node * cc_node
| E_injectivity of cc_node * cc_node
| E_reduce_eq of cc_node * cc_node
| E_custom of {
name : Sidekick_util.ID.t;
args : explanation list;
pp : (Sidekick_util.ID.t * explanation list) Fmt.printer;
}

(** Custom explanation, typically for theories *)

type lit = {
lit_view : lit_view;
lit_sign : bool;
}
type lit_view =
| Lit_fresh of Sidekick_util.ID.t
| Lit_atom of term
| Lit_expanded of term
type cst = {
cst_id : Sidekick_util.ID.t;
cst_kind : cst_kind;
}
type cst_kind =
| Cst_undef of ty
| Cst_cstor of data_cstor lazy_t
| Cst_proj of ty * data_cstor lazy_t * int
| Cst_test of ty * data_cstor lazy_t
| Cst_defined of ty * term lazy_t * cst_defined_info
type cst_defined_info =
| Cst_recursive
| Cst_non_recursive
type cst_exist_conds = lit lazy_t list Pervasives.ref
type 'a db_env = {
db_st : 'a option list;
db_size : int;
}
type ty = {
mutable ty_id : int;
ty_cell : ty_cell;
ty_card : ty_card lazy_t;
}
type ty_card =
| Finite
| Infinite
type ty_def =
| Uninterpreted
| Data of datatype
type datatype = {
data_cstors : data_cstor Sidekick_util.ID.Map.t lazy_t;
}
type data_cstor = {
cstor_ty : ty;
cstor_args : ty Sidekick_util.IArray.t;
cstor_proj : cst Sidekick_util.IArray.t lazy_t;
cstor_test : cst lazy_t;
cstor_cst : cst;
cstor_card : ty_card;
}
type ty_cell =
| Prop
| Atomic of Sidekick_util.ID.t * ty_def
| Arrow of ty * ty
val term_equal_ : term ‑> term ‑> bool
val term_hash_ : term ‑> int
val term_cmp_ : term ‑> term ‑> int
val cmp_lit : lit ‑> lit ‑> int
val cst_compare : cst ‑> cst ‑> int
val hash_lit : lit ‑> int
val cmp_cc_node : cc_node ‑> cc_node ‑> int
val cmp_exp : explanation CCOrd.t
val pp_cst : CCFormat.t ‑> cst ‑> unit
val id_of_cst : cst ‑> Sidekick_util.ID.t
val pp_db : Format.formatter ‑> (int * 'a) ‑> unit
val ty_unfold : ty ‑> ty list * ty
val pp_term_top : ids:bool ‑> CCFormat.t ‑> term ‑> unit
val pp_term : CCFormat.t ‑> term ‑> unit
val pp_lit : CCFormat.t ‑> lit ‑> unit
val pp_cc_node : CCFormat.t ‑> cc_node ‑> unit
val pp_explanation : Fmt.t ‑> explanation ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Stat/.jbuilder-keep b/sidekick/Sidekick_smt__Stat/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Stat/index.html b/sidekick/Sidekick_smt__Stat/index.html deleted file mode 100644 index 4d0f64c1..00000000 --- a/sidekick/Sidekick_smt__Stat/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smt__Stat (sidekick.Sidekick_smt__Stat)

Module Sidekick_smt__Stat

type t = {
mutable num_cst_expanded : int;
mutable num_uty_expanded : int;
mutable num_clause_push : int;
mutable num_clause_tautology : int;
mutable num_propagations : int;
mutable num_unif : int;
}
val create : unit ‑> t
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Term/.jbuilder-keep b/sidekick/Sidekick_smt__Term/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Term/index.html b/sidekick/Sidekick_smt__Term/index.html deleted file mode 100644 index 64e3967b..00000000 --- a/sidekick/Sidekick_smt__Term/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smt__Term (sidekick.Sidekick_smt__Term)

Module Sidekick_smt__Term

type t = Sidekick_smt.Solver_types.term = {
mutable term_id : int;
mutable term_ty : Sidekick_smt.Solver_types.ty;
term_cell : t Sidekick_smt.Solver_types.term_cell;
}
type 'a cell = 'a Sidekick_smt.Solver_types.term_cell =
| Bool of bool
| App_cst of Sidekick_smt.Solver_types.cst * 'a Sidekick_util.IArray.t
| If of 'a * 'a * 'a
| Case of 'a * 'a Sidekick_util.ID.Map.t
| Custom of {
view : 'a Sidekick_smt.Solver_types.term_view_custom;
tc : Sidekick_smt.Solver_types.term_view_tc;
}
type tc = Sidekick_smt.Solver_types.term_view_tc = {
tc_t_pp : a. 'a Sidekick_smt.Solver_types.Fmt.printer ‑> 'a custom Sidekick_smt.Solver_types.Fmt.printer;
tc_t_equal : a. 'a CCEqual.t ‑> 'a custom CCEqual.t;
tc_t_hash : a. 'a Sidekick_smt.Hash.t ‑> 'a custom Sidekick_smt.Hash.t;
tc_t_ty : a. ('a ‑> Sidekick_smt.Solver_types.ty) ‑> 'a custom ‑> Sidekick_smt.Solver_types.ty;
tc_t_is_semantic : a. 'a custom ‑> bool;
tc_t_solve : Sidekick_smt.Solver_types.cc_node custom ‑> Sidekick_smt.Solver_types.cc_node custom ‑> Sidekick_smt.Solver_types.solve_result;
tc_t_sub : a. 'a custom ‑> 'a Sequence.t;
tc_t_abs : self:Sidekick_smt.Solver_types.term ‑> Sidekick_smt.Solver_types.term custom ‑> Sidekick_smt.Solver_types.term * bool;
tc_t_relevant : a. 'a custom ‑> 'a Sequence.t;
tc_t_subst : a b. ('a ‑> 'b) ‑> 'a custom ‑> 'b custom option;
tc_t_explain : a. 'a CCEqual.t ‑> 'a custom ‑> 'a custom ‑> ('a * 'a) list;
}
val id : t ‑> int
val ty : t ‑> Sidekick_smt.Ty.t
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val hash : t ‑> int
type state
val create : ?⁠size:int ‑> unit ‑> state
val true_ : state ‑> t
val false_ : state ‑> t
val const : state ‑> Sidekick_smt.Solver_types.cst ‑> t
val if_ : state ‑> t ‑> t ‑> t ‑> t
val case : state ‑> t ‑> t Sidekick_util.ID.Map.t ‑> t
val and_eager : state ‑> t ‑> t ‑> t
val custom : state ‑> tc:tc ‑> t custom ‑> t
val abs : t ‑> t * bool
val to_seq : t ‑> t Sequence.t
val all_terms : state ‑> t Sequence.t
Views
val is_true : t ‑> bool
val is_false : t ‑> bool
val is_const : t ‑> bool
val is_custom : t ‑> bool
val is_semantic : t ‑> bool

Custom term that is Shostak-ready (ie can be solved)

val as_cst_undef : t ‑> (Sidekick_smt.Solver_types.cst * Sidekick_smt.Ty.t) option
val as_unif : t ‑> unif_form
Containers
module Tbl : CCHashtbl.S with type Tbl.key = t
module Map : CCMap.S with type Map.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Term_cell/.jbuilder-keep b/sidekick/Sidekick_smt__Term_cell/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Term_cell/Make_eq/argument-1-X/index.html b/sidekick/Sidekick_smt__Term_cell/Make_eq/argument-1-X/index.html deleted file mode 100644 index d19ab375..00000000 --- a/sidekick/Sidekick_smt__Term_cell/Make_eq/argument-1-X/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-X (sidekick.Sidekick_smt__Term_cell.Make_eq.1-X)

Parameter Sidekick_smt__Term_cell.Make_eq.1-X

type t
val hash : t ‑> int
val equal : t ‑> t ‑> bool
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Term_cell/Make_eq/index.html b/sidekick/Sidekick_smt__Term_cell/Make_eq/index.html deleted file mode 100644 index c70bd553..00000000 --- a/sidekick/Sidekick_smt__Term_cell/Make_eq/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Make_eq (sidekick.Sidekick_smt__Term_cell.Make_eq)

Module Sidekick_smt__Term_cell.Make_eq

Parameters

X : ARG

Signature

\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Term_cell/index.html b/sidekick/Sidekick_smt__Term_cell/index.html deleted file mode 100644 index 9a53323d..00000000 --- a/sidekick/Sidekick_smt__Term_cell/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smt__Term_cell (sidekick.Sidekick_smt__Term_cell)

Module Sidekick_smt__Term_cell

type 'a cell = 'a Sidekick_smt.Solver_types.term_cell =
| Bool of bool
| App_cst of Sidekick_smt.Solver_types.cst * 'a Sidekick_util.IArray.t
| If of 'a * 'a * 'a
| Case of 'a * 'a Sidekick_util.ID.Map.t
| Custom of {
view : 'a Sidekick_smt.Solver_types.term_view_custom;
tc : Sidekick_smt.Solver_types.term_view_tc;
}
val equal : t ‑> t ‑> bool
val hash : t ‑> int
val true_ : t
val false_ : t
val ty : t ‑> Sidekick_smt.Ty.t

Compute the type of this term cell. Not totally free

module Tbl : CCHashtbl.S with type Tbl.key = t
module type ARG : sig ... end
module Make_eq : functor (X : ARG) -> sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Term_cell/module-type-ARG/index.html b/sidekick/Sidekick_smt__Term_cell/module-type-ARG/index.html deleted file mode 100644 index 005ad45d..00000000 --- a/sidekick/Sidekick_smt__Term_cell/module-type-ARG/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -ARG (sidekick.Sidekick_smt__Term_cell.ARG)

Module type Sidekick_smt__Term_cell.ARG

type t
val hash : t ‑> int
val equal : t ‑> t ‑> bool
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Theory/.jbuilder-keep b/sidekick/Sidekick_smt__Theory/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Theory/Clause/index.html b/sidekick/Sidekick_smt__Theory/Clause/index.html deleted file mode 100644 index 6bfbac34..00000000 --- a/sidekick/Sidekick_smt__Theory/Clause/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Clause (sidekick.Sidekick_smt__Theory.Clause)

Module Sidekick_smt__Theory.Clause

val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Theory/index.html b/sidekick/Sidekick_smt__Theory/index.html deleted file mode 100644 index 258f0a65..00000000 --- a/sidekick/Sidekick_smt__Theory/index.html +++ /dev/null @@ -1,9 +0,0 @@ - -Sidekick_smt__Theory (sidekick.Sidekick_smt__Theory)

Module Sidekick_smt__Theory

module Clause : sig ... end
type state =
| State : {
mutable st : 'a;
on_merge : 'a ‑> Sidekick_smt.Equiv_class.t ‑> Sidekick_smt.Equiv_class.t ‑> Sidekick_smt.Explanation.t ‑> unit;

(** Called when two classes are merged *)

on_assert : 'a ‑> Sidekick_smt.Lit.t ‑> unit;

(** Called when a literal becomes true *)

final_check : 'a ‑> Sidekick_smt.Lit.t Sequence.t ‑> unit;

(** Final check, must be complete (i.e. must raise a conflict -if the set of literals is not satisfiable) *)

} ‑> state

Runtime state of a theory, with all the operations it provides. -'a is the internal state

type conflict = Sidekick_smt.Lit.Set.t

Unsatisfiable conjunction. -Its negation will become a conflict clause

type actions = {
on_backtrack : (unit ‑> unit) ‑> unit;

(** Register an action to do when we backtrack *)

raise_conflict : a. conflict ‑> 'a;

(** Give a conflict clause to the solver *)

propagate_eq : Sidekick_smt.Term.t ‑> Sidekick_smt.Term.t ‑> Sidekick_smt.Explanation.t ‑> unit;

(** Propagate an equality t = u because e *)

propagate_distinct : Sidekick_smt.Term.t list ‑> neq:Sidekick_smt.Term.t ‑> Sidekick_smt.Explanation.t ‑> unit;

(** Propagate a distinct l because e (where e = atom neq *)

propagate : Sidekick_smt.Lit.t ‑> Sidekick_smt.Explanation.t Sidekick_smt.Bag.t ‑> unit;

(** Propagate a boolean using a unit clause. -expl => lit must be a theory lemma, that is, a T-tautology *)

add_local_axiom : Sidekick_smt.Lit.t Sidekick_util.IArray.t ‑> unit;

(** Add local clause to the SAT solver. This clause will be -removed when the solver backtracks. *)

add_persistent_axiom : Sidekick_smt.Lit.t Sidekick_util.IArray.t ‑> unit;

(** Add toplevel clause to the SAT solver. This clause will -not be backtracked. *)

find : Sidekick_smt.Term.t ‑> Sidekick_smt.Equiv_class.t;

(** Find representative of this term *)

all_classes : Sidekick_smt.Equiv_class.t Sequence.t;

(** All current equivalence classes -(caution: linear in the number of terms existing in the solver) *)

}

Actions available to a theory during its lifetime

type t = {
name : string;
make : Sidekick_smt.Term.state ‑> actions ‑> state;
}
val make : name:string ‑> make:(Sidekick_smt.Term.state ‑> actions ‑> state) ‑> unit ‑> t
val make_st : ?⁠on_merge:('a ‑> Sidekick_smt.Equiv_class.t ‑> Sidekick_smt.Equiv_class.t ‑> Sidekick_smt.Explanation.t ‑> unit) ‑> ?⁠on_assert:('a ‑> Sidekick_smt.Lit.t ‑> unit) ‑> final_check:('a ‑> Sidekick_smt.Lit.t Sequence.t ‑> unit) ‑> st:'a ‑> unit ‑> state
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Theory_combine/.jbuilder-keep b/sidekick/Sidekick_smt__Theory_combine/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Theory_combine/Form/index.html b/sidekick/Sidekick_smt__Theory_combine/Form/index.html deleted file mode 100644 index d780aadd..00000000 --- a/sidekick/Sidekick_smt__Theory_combine/Form/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Form (sidekick.Sidekick_smt__Theory_combine.Form)

Module Sidekick_smt__Theory_combine.Form

type t = formula

The type of atomic formulas.

val equal : t ‑> t ‑> bool

Equality over formulas.

val hash : t ‑> int

Hashing function for formulas. Should be such that two formulas equal according -to Expr_intf.S.equal have the same hash.

val print : Format.formatter ‑> t ‑> unit

Printing function used among other thing for debugging.

val dummy : t

Formula constant. A valid formula should never be physically equal to dummy

val neg : t ‑> t

Formula negation. Should be an involution, i.e. equal a (neg neg a) should -always hold.

Returns a 'normalized' form of the formula, possibly negated -(in which case return Negated). This function is used to recognize -the link between a formula a and its negation neg a, so the goal is -that a and neg a normalise to the same formula, -but one returns Same_sign and the other one returns Negated

\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Theory_combine/Proof/index.html b/sidekick/Sidekick_smt__Theory_combine/Proof/index.html deleted file mode 100644 index 8671c4cc..00000000 --- a/sidekick/Sidekick_smt__Theory_combine/Proof/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Proof (sidekick.Sidekick_smt__Theory_combine.Proof)

Module Sidekick_smt__Theory_combine.Proof

type t =
| Proof
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Theory_combine/index.html b/sidekick/Sidekick_smt__Theory_combine/index.html deleted file mode 100644 index ec5c0e22..00000000 --- a/sidekick/Sidekick_smt__Theory_combine/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Sidekick_smt__Theory_combine (sidekick.Sidekick_smt__Theory_combine)

Module Sidekick_smt__Theory_combine

Main theory

Combine the congruence closure with a number of plugins

module Proof : sig ... end
include Sidekick_sat.Theory_intf.S with type formula = Sidekick_smt.Lit.t and type proof = Proof.t
type t

State of the theory

type formula = Sidekick_smt.Lit.t

The type of formulas. Should be compatble with Formula_intf.S

type proof = Proof.t

A custom type for the proofs of lemmas produced by the theory.

module Form : sig ... end

Create a new instance of the theory

Assume the formulas in the slice, possibly pushing new formulas to be propagated, -and returns the result of the new assumptions.

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 tst : t ‑> Sidekick_smt.Term.state
val theories : t ‑> Sidekick_smt.Theory.state Sequence.t
val add_theory : t ‑> Sidekick_smt.Theory.t ‑> unit

How to add new theories

val add_theory_l : t ‑> Sidekick_smt.Theory.t list ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Ty/.jbuilder-keep b/sidekick/Sidekick_smt__Ty/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Ty/index.html b/sidekick/Sidekick_smt__Ty/index.html deleted file mode 100644 index 0a0456c4..00000000 --- a/sidekick/Sidekick_smt__Ty/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smt__Ty (sidekick.Sidekick_smt__Ty)

Module Sidekick_smt__Ty

Hashconsed Types

type def = Sidekick_smt.Solver_types.ty_def =
| Uninterpreted
| Data of datatype
type datatype = Sidekick_smt.Solver_types.datatype = {
data_cstors : data_cstor Sidekick_util.ID.Map.t lazy_t;
}
val view : t ‑> cell
val prop : t
val atomic : Sidekick_util.ID.t ‑> def ‑> card:Sidekick_smt.Ty_card.t lazy_t ‑> t
val arrow : t ‑> t ‑> t
val arrow_l : t list ‑> t ‑> t
val is_prop : t ‑> bool
val is_data : t ‑> bool
val is_uninterpreted : t ‑> bool
val is_arrow : t ‑> bool
val unfold : t ‑> t list * t
val unfold_n : t ‑> int * t
val mangle : t ‑> string
include Sidekick_util.Intf.EQ with type t := t
type t
val equal : t ‑> t ‑> bool
include Sidekick_util.Intf.ORD with type t := t
type t
val compare : t ‑> t ‑> int
include Sidekick_util.Intf.HASH with type t := t
type t
val hash : t ‑> int
include Sidekick_util.Intf.PRINT with type t := t
type t
val pp : t CCFormat.printer
module Tbl : CCHashtbl.S with type Tbl.key = t
\ No newline at end of file diff --git a/sidekick/Sidekick_smt__Ty_card/.jbuilder-keep b/sidekick/Sidekick_smt__Ty_card/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smt__Ty_card/index.html b/sidekick/Sidekick_smt__Ty_card/index.html deleted file mode 100644 index da1d8caa..00000000 --- a/sidekick/Sidekick_smt__Ty_card/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smt__Ty_card (sidekick.Sidekick_smt__Ty_card)

Module Sidekick_smt__Ty_card

Type Cardinality

val (+) : t ‑> t ‑> t
val (*) : t ‑> t ‑> t
val (^) : t ‑> t ‑> t
val finite : t
val infinite : t
val sum : t list ‑> t
val product : t list ‑> t
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib/.jbuilder-keep b/sidekick/Sidekick_smtlib/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smtlib/Process/index.html b/sidekick/Sidekick_smtlib/Process/index.html deleted file mode 100644 index c3a81698..00000000 --- a/sidekick/Sidekick_smtlib/Process/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Process (sidekick.Sidekick_smtlib.Process)

Module Sidekick_smtlib.Process

Process Statements

type 'a or_error = ('a, string) CCResult.t
val process_stmt : ?⁠gc:bool ‑> ?⁠restarts:bool ‑> ?⁠pp_cnf:bool ‑> ?⁠dot_proof:string ‑> ?⁠pp_model:bool ‑> ?⁠check:bool ‑> ?⁠time:float ‑> ?⁠memory:float ‑> ?⁠progress:bool ‑> Sidekick_smt.Solver.t ‑> Sidekick_smt.Ast.statement ‑> unit or_error
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib/index.html b/sidekick/Sidekick_smtlib/index.html deleted file mode 100644 index bd311468..00000000 --- a/sidekick/Sidekick_smtlib/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Sidekick_smtlib (sidekick.Sidekick_smtlib)

Module Sidekick_smtlib

SMTLib-2 Interface

This library provides a parser, a type-checker, and a solver interface -for processing SMTLib-2 problems.

type 'a or_error = ('a, string) CCResult.t
module Ast = Sidekick_smt.Ast
module Process : sig ... end

Process Statements

val parse : string ‑> Ast.statement list or_error
val parse_stdin : unit ‑> Ast.statement list or_error
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib__/.jbuilder-keep b/sidekick/Sidekick_smtlib__/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smtlib__/Lexer/index.html b/sidekick/Sidekick_smtlib__/Lexer/index.html deleted file mode 100644 index 15a12885..00000000 --- a/sidekick/Sidekick_smtlib__/Lexer/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Lexer (sidekick.Sidekick_smtlib__.Lexer)

Module Sidekick_smtlib__.Lexer

val __ocaml_lex_tables : Lexing.lex_tables
val token : Lexing.lexbuf ‑> Sidekick_smtlib__.Parser.token
val __ocaml_lex_token_rec : Lexing.lexbuf ‑> int ‑> Sidekick_smtlib__.Parser.token
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib__/Locations/index.html b/sidekick/Sidekick_smtlib__/Locations/index.html deleted file mode 100644 index 002b4b40..00000000 --- a/sidekick/Sidekick_smtlib__/Locations/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Locations (sidekick.Sidekick_smtlib__.Locations)

Module Sidekick_smtlib__.Locations

Locations

type t = {
file : string;
start_line : int;
start_column : int;
stop_line : int;
stop_column : int;
}
val mk : string ‑> int ‑> int ‑> int ‑> int ‑> t
val mk_pair : string ‑> (int * int) ‑> (int * int) ‑> t
val mk_pos : Lexing.position ‑> Lexing.position ‑> t
val equal : 'a ‑> 'a ‑> bool
val pp : Format.formatter ‑> t ‑> unit
val pp_opt : Format.formatter ‑> t option ‑> unit
val pp_to_string : (Format.formatter ‑> 'a ‑> 'b) ‑> 'a ‑> string
val to_string_opt : t option ‑> string

Lexbuf

val set_file : Lexing.lexbuf ‑> string ‑> unit
val get_file : Lexing.lexbuf ‑> string
val of_lexbuf : Lexing.lexbuf ‑> t
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib__/Parse_ast/index.html b/sidekick/Sidekick_smtlib__/Parse_ast/index.html deleted file mode 100644 index db655ff0..00000000 --- a/sidekick/Sidekick_smtlib__/Parse_ast/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Parse_ast (sidekick.Sidekick_smtlib__.Parse_ast)

Module Sidekick_smtlib__.Parse_ast

Simple AST for parsing

module Fmt = CCFormat
val pp_str : Format.formatter ‑> string ‑> unit
val pp_to_string : (Format.formatter ‑> 'a ‑> 'b) ‑> 'a ‑> string
type var = string
type ty_var = string
type ty =
| Ty_bool
| Ty_app of ty_var * ty list
| Ty_arrow of ty list * ty

Polymorphic types

type typed_var = var * ty
type arith_op =
| Leq
| Lt
| Geq
| Gt
| Add
| Minus
| Mult
| Div
type term =
| True
| False
| Const of string
| Arith of arith_op * term list
| App of string * term list
| HO_app of term * term
| Match of term * match_branch list
| If of term * term * term
| Let of (var * term) list * term
| Fun of typed_var * term
| Eq of term * term
| Imply of term * term
| And of term list
| Or of term list
| Not of term
| Xor of term * term
| Distinct of term list
| Cast of term * ty
| Forall of (var * ty) list * term
| Exists of (var * ty) list * term

AST: S-expressions with locations

type match_branch =
| Match_default of term
| Match_case of string * var list * term
type cstor = {
cstor_name : string;
cstor_args : (string * ty) list;
}
type 'arg fun_decl = {
fun_ty_vars : ty_var list;
fun_name : string;
fun_args : 'arg list;
fun_ret : ty;
}
type fun_def = {
fr_decl : typed_var fun_decl;
fr_body : term;
}
type funs_rec_def = {
fsr_decls : typed_var fun_decl list;
fsr_bodies : term list;
}
type statement = {
stmt : stmt;
loc : Loc.t option;
}
type stmt =
| Stmt_decl_sort of string * int
| Stmt_decl of ty fun_decl
| Stmt_fun_def of fun_def
| Stmt_fun_rec of fun_def
| Stmt_funs_rec of funs_rec_def
| Stmt_data of ty_var list * (string * cstor list) list
| Stmt_assert of term
| Stmt_lemma of term
| Stmt_assert_not of ty_var list * term
| Stmt_set_logic of string
| Stmt_set_option of string list
| Stmt_set_info of string list
| Stmt_check_sat
| Stmt_exit
val ty_bool : ty
val ty_app : ty_var ‑> ty list ‑> ty
val ty_const : ty_var ‑> ty
val ty_arrow_l : ty list ‑> ty ‑> ty
val ty_arrow : ty ‑> ty ‑> ty
val true_ : term
val false_ : term
val const : string ‑> term
val app : string ‑> term list ‑> term
val ho_app : term ‑> term ‑> term
val ho_app_l : term ‑> term list ‑> term
val match_ : term ‑> match_branch list ‑> term
val if_ : term ‑> term ‑> term ‑> term
val fun_ : typed_var ‑> term ‑> term
val fun_l : typed_var list ‑> term ‑> term
val let_ : (var * term) list ‑> term ‑> term
val eq : term ‑> term ‑> term
val imply : term ‑> term ‑> term
val xor : term ‑> term ‑> term
val and_ : term list ‑> term
val or_ : term list ‑> term
val distinct : term list ‑> term
val cast : term ‑> ty:ty ‑> term
val forall : (var * ty) list ‑> term ‑> term
val exists : (var * ty) list ‑> term ‑> term
val not_ : term ‑> term
val arith : arith_op ‑> term list ‑> term
val _mk : ?⁠loc:Loc.t ‑> stmt ‑> statement
val mk_cstor : string ‑> (string * ty) list ‑> cstor
val mk_fun_decl : ty_vars:ty_var list ‑> string ‑> 'a list ‑> ty ‑> 'a fun_decl
val mk_fun_rec : ty_vars:ty_var list ‑> string ‑> typed_var list ‑> ty ‑> term ‑> fun_def
val decl_sort : ?⁠loc:Loc.t ‑> string ‑> arity:int ‑> statement
val decl_fun : ?⁠loc:Loc.t ‑> tyvars:ty_var list ‑> string ‑> ty list ‑> ty ‑> statement
val fun_def : ?⁠loc:Loc.t ‑> fun_def ‑> statement
val fun_rec : ?⁠loc:Loc.t ‑> fun_def ‑> statement
val funs_rec : ?⁠loc:Loc.t ‑> typed_var fun_decl list ‑> term list ‑> statement
val data : ?⁠loc:Loc.t ‑> ty_var list ‑> (string * cstor list) list ‑> statement
val assert_ : ?⁠loc:Loc.t ‑> term ‑> statement
val lemma : ?⁠loc:Loc.t ‑> term ‑> statement
val assert_not : ?⁠loc:Loc.t ‑> ty_vars:ty_var list ‑> term ‑> statement
val set_logic : ?⁠loc:Loc.t ‑> string ‑> statement
val set_option : ?⁠loc:Loc.t ‑> string list ‑> statement
val set_info : ?⁠loc:Loc.t ‑> string list ‑> statement
val check_sat : ?⁠loc:Loc.t ‑> unit ‑> statement
val exit : ?⁠loc:Loc.t ‑> unit ‑> statement
val loc : statement ‑> Loc.t option
val view : statement ‑> stmt
val fpf : Format.formatter ‑> ('a, Format.formatter, unit) Pervasives.format ‑> 'a
val pp_tyvar : Format.formatter ‑> string ‑> unit
val pp_arith : Fmt.t ‑> arith_op ‑> unit
val pp_par : (CCFormat.t ‑> 'a ‑> unit) ‑> CCFormat.t ‑> (string list * 'a) ‑> unit
val pp_fun_decl : 'a Sidekick_util.Util.printer ‑> Format.formatter ‑> 'a fun_decl ‑> unit
val pp_fr : Format.formatter ‑> fun_def ‑> unit
val pp_stmt : Format.formatter ‑> statement ‑> unit

Errors

exception Parse_error of Loc.t option * string
val parse_error : ?⁠loc:Loc.t ‑> string ‑> 'a
val parse_errorf : ?⁠loc:Loc.t ‑> ('a, unit, string, 'b) Pervasives.format4 ‑> 'a
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib__/Parser/index.html b/sidekick/Sidekick_smtlib__/Parser/index.html deleted file mode 100644 index 88435fea..00000000 --- a/sidekick/Sidekick_smtlib__/Parser/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Parser (sidekick.Sidekick_smtlib__.Parser)

Module Sidekick_smtlib__.Parser

type token =
| XOR
| TRUE
| SET_OPTION
| SET_LOGIC
| SET_INFO
| RIGHT_PAREN
| QUOTED of string
| PROD
| PAR
| OR
| NOT
| MINUS
| MATCH
| LT
| LET
| LEQ
| LEMMA
| LEFT_PAREN
| IF
| IDENT of string
| GT
| GEQ
| FUN
| FORALL
| FALSE
| EXIT
| EXISTS
| ESCAPED of string
| EQ
| EOI
| DIV
| DISTINCT
| DEFINE_FUN_REC
| DEFINE_FUNS_REC
| DEFINE_FUN
| DEFAULT
| DECLARE_SORT
| DECLARE_FUN
| DECLARE_CONST
| DATA
| CHECK_SAT
| CASE
| AT
| ASSERT_NOT
| ASSERT
| AS
| ARROW
| AND
| ADD
exception Error
val parse_ty : (Lexing.lexbuf ‑> token) ‑> Lexing.lexbuf ‑> Sidekick_smtlib__.Parse_ast.ty
val parse_term : (Lexing.lexbuf ‑> token) ‑> Lexing.lexbuf ‑> Sidekick_smtlib__.Parse_ast.term
val parse_list : (Lexing.lexbuf ‑> token) ‑> Lexing.lexbuf ‑> Sidekick_smtlib__.Parse_ast.statement list
val parse : (Lexing.lexbuf ‑> token) ‑> Lexing.lexbuf ‑> Sidekick_smtlib__.Parse_ast.statement
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib__/Process/index.html b/sidekick/Sidekick_smtlib__/Process/index.html deleted file mode 100644 index 8fc1af0d..00000000 --- a/sidekick/Sidekick_smtlib__/Process/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Process (sidekick.Sidekick_smtlib__.Process)

Module Sidekick_smtlib__.Process

Process Statements

type 'a or_error = ('a, string) CCResult.t
val process_stmt : ?⁠gc:bool ‑> ?⁠restarts:bool ‑> ?⁠pp_cnf:bool ‑> ?⁠dot_proof:string ‑> ?⁠pp_model:bool ‑> ?⁠check:bool ‑> ?⁠time:float ‑> ?⁠memory:float ‑> ?⁠progress:bool ‑> Sidekick_smt.Solver.t ‑> Sidekick_smt.Ast.statement ‑> unit or_error
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib__/Typecheck/Ctx/index.html b/sidekick/Sidekick_smtlib__/Typecheck/Ctx/index.html deleted file mode 100644 index 5ec86c38..00000000 --- a/sidekick/Sidekick_smtlib__/Typecheck/Ctx/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Ctx (sidekick.Sidekick_smtlib__.Typecheck.Ctx)

Module Sidekick_smtlib__.Typecheck.Ctx

type t
val create : unit ‑> t
val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib__/Typecheck/index.html b/sidekick/Sidekick_smtlib__/Typecheck/index.html deleted file mode 100644 index a6480965..00000000 --- a/sidekick/Sidekick_smtlib__/Typecheck/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Typecheck (sidekick.Sidekick_smtlib__.Typecheck)

Module Sidekick_smtlib__.Typecheck

Preprocessing AST

type 'a or_error = ('a, string) CCResult.t

Parsing and Typing

module Ctx : sig ... end
module A = Sidekick_smt.Ast
val conv_term : Ctx.t ‑> PA.term ‑> A.term
val conv_statement : Ctx.t ‑> PA.statement ‑> A.statement list
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib__/index.html b/sidekick/Sidekick_smtlib__/index.html deleted file mode 100644 index f68cb981..00000000 --- a/sidekick/Sidekick_smtlib__/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smtlib__ (sidekick.Sidekick_smtlib__)

Module Sidekick_smtlib__

module Lexer : sig ... end
module Locations : sig ... end
module Parse_ast : sig ... end
module Parser : sig ... end
module Process : sig ... end
module Sidekick_smtlib = Sidekick_smtlib
module Typecheck : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib__Lexer/.jbuilder-keep b/sidekick/Sidekick_smtlib__Lexer/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smtlib__Lexer/index.html b/sidekick/Sidekick_smtlib__Lexer/index.html deleted file mode 100644 index 5ef26049..00000000 --- a/sidekick/Sidekick_smtlib__Lexer/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smtlib__Lexer (sidekick.Sidekick_smtlib__Lexer)

Module Sidekick_smtlib__Lexer

val __ocaml_lex_tables : Lexing.lex_tables
val token : Lexing.lexbuf ‑> Sidekick_smtlib__.Parser.token
val __ocaml_lex_token_rec : Lexing.lexbuf ‑> int ‑> Sidekick_smtlib__.Parser.token
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib__Locations/.jbuilder-keep b/sidekick/Sidekick_smtlib__Locations/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smtlib__Locations/index.html b/sidekick/Sidekick_smtlib__Locations/index.html deleted file mode 100644 index 0adf6340..00000000 --- a/sidekick/Sidekick_smtlib__Locations/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smtlib__Locations (sidekick.Sidekick_smtlib__Locations)

Module Sidekick_smtlib__Locations

Locations

type t = {
file : string;
start_line : int;
start_column : int;
stop_line : int;
stop_column : int;
}
val mk : string ‑> int ‑> int ‑> int ‑> int ‑> t
val mk_pair : string ‑> (int * int) ‑> (int * int) ‑> t
val mk_pos : Lexing.position ‑> Lexing.position ‑> t
val equal : 'a ‑> 'a ‑> bool
val pp : Format.formatter ‑> t ‑> unit
val pp_opt : Format.formatter ‑> t option ‑> unit
val pp_to_string : (Format.formatter ‑> 'a ‑> 'b) ‑> 'a ‑> string
val to_string_opt : t option ‑> string

Lexbuf

val set_file : Lexing.lexbuf ‑> string ‑> unit
val get_file : Lexing.lexbuf ‑> string
val of_lexbuf : Lexing.lexbuf ‑> t
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib__Parse_ast/.jbuilder-keep b/sidekick/Sidekick_smtlib__Parse_ast/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smtlib__Parse_ast/index.html b/sidekick/Sidekick_smtlib__Parse_ast/index.html deleted file mode 100644 index 6a89df63..00000000 --- a/sidekick/Sidekick_smtlib__Parse_ast/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smtlib__Parse_ast (sidekick.Sidekick_smtlib__Parse_ast)

Module Sidekick_smtlib__Parse_ast

Simple AST for parsing

module Fmt = CCFormat
val pp_str : Format.formatter ‑> string ‑> unit
val pp_to_string : (Format.formatter ‑> 'a ‑> 'b) ‑> 'a ‑> string
type var = string
type ty_var = string
type ty =
| Ty_bool
| Ty_app of ty_var * ty list
| Ty_arrow of ty list * ty

Polymorphic types

type typed_var = var * ty
type arith_op =
| Leq
| Lt
| Geq
| Gt
| Add
| Minus
| Mult
| Div
type term =
| True
| False
| Const of string
| Arith of arith_op * term list
| App of string * term list
| HO_app of term * term
| Match of term * match_branch list
| If of term * term * term
| Let of (var * term) list * term
| Fun of typed_var * term
| Eq of term * term
| Imply of term * term
| And of term list
| Or of term list
| Not of term
| Xor of term * term
| Distinct of term list
| Cast of term * ty
| Forall of (var * ty) list * term
| Exists of (var * ty) list * term

AST: S-expressions with locations

type match_branch =
| Match_default of term
| Match_case of string * var list * term
type cstor = {
cstor_name : string;
cstor_args : (string * ty) list;
}
type 'arg fun_decl = {
fun_ty_vars : ty_var list;
fun_name : string;
fun_args : 'arg list;
fun_ret : ty;
}
type fun_def = {
fr_decl : typed_var fun_decl;
fr_body : term;
}
type funs_rec_def = {
fsr_decls : typed_var fun_decl list;
fsr_bodies : term list;
}
type statement = {
stmt : stmt;
loc : Loc.t option;
}
type stmt =
| Stmt_decl_sort of string * int
| Stmt_decl of ty fun_decl
| Stmt_fun_def of fun_def
| Stmt_fun_rec of fun_def
| Stmt_funs_rec of funs_rec_def
| Stmt_data of ty_var list * (string * cstor list) list
| Stmt_assert of term
| Stmt_lemma of term
| Stmt_assert_not of ty_var list * term
| Stmt_set_logic of string
| Stmt_set_option of string list
| Stmt_set_info of string list
| Stmt_check_sat
| Stmt_exit
val ty_bool : ty
val ty_app : ty_var ‑> ty list ‑> ty
val ty_const : ty_var ‑> ty
val ty_arrow_l : ty list ‑> ty ‑> ty
val ty_arrow : ty ‑> ty ‑> ty
val true_ : term
val false_ : term
val const : string ‑> term
val app : string ‑> term list ‑> term
val ho_app : term ‑> term ‑> term
val ho_app_l : term ‑> term list ‑> term
val match_ : term ‑> match_branch list ‑> term
val if_ : term ‑> term ‑> term ‑> term
val fun_ : typed_var ‑> term ‑> term
val fun_l : typed_var list ‑> term ‑> term
val let_ : (var * term) list ‑> term ‑> term
val eq : term ‑> term ‑> term
val imply : term ‑> term ‑> term
val xor : term ‑> term ‑> term
val and_ : term list ‑> term
val or_ : term list ‑> term
val distinct : term list ‑> term
val cast : term ‑> ty:ty ‑> term
val forall : (var * ty) list ‑> term ‑> term
val exists : (var * ty) list ‑> term ‑> term
val not_ : term ‑> term
val arith : arith_op ‑> term list ‑> term
val _mk : ?⁠loc:Loc.t ‑> stmt ‑> statement
val mk_cstor : string ‑> (string * ty) list ‑> cstor
val mk_fun_decl : ty_vars:ty_var list ‑> string ‑> 'a list ‑> ty ‑> 'a fun_decl
val mk_fun_rec : ty_vars:ty_var list ‑> string ‑> typed_var list ‑> ty ‑> term ‑> fun_def
val decl_sort : ?⁠loc:Loc.t ‑> string ‑> arity:int ‑> statement
val decl_fun : ?⁠loc:Loc.t ‑> tyvars:ty_var list ‑> string ‑> ty list ‑> ty ‑> statement
val fun_def : ?⁠loc:Loc.t ‑> fun_def ‑> statement
val fun_rec : ?⁠loc:Loc.t ‑> fun_def ‑> statement
val funs_rec : ?⁠loc:Loc.t ‑> typed_var fun_decl list ‑> term list ‑> statement
val data : ?⁠loc:Loc.t ‑> ty_var list ‑> (string * cstor list) list ‑> statement
val assert_ : ?⁠loc:Loc.t ‑> term ‑> statement
val lemma : ?⁠loc:Loc.t ‑> term ‑> statement
val assert_not : ?⁠loc:Loc.t ‑> ty_vars:ty_var list ‑> term ‑> statement
val set_logic : ?⁠loc:Loc.t ‑> string ‑> statement
val set_option : ?⁠loc:Loc.t ‑> string list ‑> statement
val set_info : ?⁠loc:Loc.t ‑> string list ‑> statement
val check_sat : ?⁠loc:Loc.t ‑> unit ‑> statement
val exit : ?⁠loc:Loc.t ‑> unit ‑> statement
val loc : statement ‑> Loc.t option
val view : statement ‑> stmt
val fpf : Format.formatter ‑> ('a, Format.formatter, unit) Pervasives.format ‑> 'a
val pp_tyvar : Format.formatter ‑> string ‑> unit
val pp_arith : Fmt.t ‑> arith_op ‑> unit
val pp_par : (CCFormat.t ‑> 'a ‑> unit) ‑> CCFormat.t ‑> (string list * 'a) ‑> unit
val pp_fun_decl : 'a Sidekick_util.Util.printer ‑> Format.formatter ‑> 'a fun_decl ‑> unit
val pp_fr : Format.formatter ‑> fun_def ‑> unit
val pp_stmt : Format.formatter ‑> statement ‑> unit

Errors

exception Parse_error of Loc.t option * string
val parse_error : ?⁠loc:Loc.t ‑> string ‑> 'a
val parse_errorf : ?⁠loc:Loc.t ‑> ('a, unit, string, 'b) Pervasives.format4 ‑> 'a
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib__Parser/.jbuilder-keep b/sidekick/Sidekick_smtlib__Parser/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smtlib__Parser/index.html b/sidekick/Sidekick_smtlib__Parser/index.html deleted file mode 100644 index 27efa453..00000000 --- a/sidekick/Sidekick_smtlib__Parser/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smtlib__Parser (sidekick.Sidekick_smtlib__Parser)

Module Sidekick_smtlib__Parser

type token =
| XOR
| TRUE
| SET_OPTION
| SET_LOGIC
| SET_INFO
| RIGHT_PAREN
| QUOTED of string
| PROD
| PAR
| OR
| NOT
| MINUS
| MATCH
| LT
| LET
| LEQ
| LEMMA
| LEFT_PAREN
| IF
| IDENT of string
| GT
| GEQ
| FUN
| FORALL
| FALSE
| EXIT
| EXISTS
| ESCAPED of string
| EQ
| EOI
| DIV
| DISTINCT
| DEFINE_FUN_REC
| DEFINE_FUNS_REC
| DEFINE_FUN
| DEFAULT
| DECLARE_SORT
| DECLARE_FUN
| DECLARE_CONST
| DATA
| CHECK_SAT
| CASE
| AT
| ASSERT_NOT
| ASSERT
| AS
| ARROW
| AND
| ADD
exception Error
val parse_ty : (Lexing.lexbuf ‑> token) ‑> Lexing.lexbuf ‑> Sidekick_smtlib__.Parse_ast.ty
val parse_term : (Lexing.lexbuf ‑> token) ‑> Lexing.lexbuf ‑> Sidekick_smtlib__.Parse_ast.term
val parse_list : (Lexing.lexbuf ‑> token) ‑> Lexing.lexbuf ‑> Sidekick_smtlib__.Parse_ast.statement list
val parse : (Lexing.lexbuf ‑> token) ‑> Lexing.lexbuf ‑> Sidekick_smtlib__.Parse_ast.statement
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib__Process/.jbuilder-keep b/sidekick/Sidekick_smtlib__Process/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smtlib__Process/index.html b/sidekick/Sidekick_smtlib__Process/index.html deleted file mode 100644 index 82e29ac6..00000000 --- a/sidekick/Sidekick_smtlib__Process/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smtlib__Process (sidekick.Sidekick_smtlib__Process)

Module Sidekick_smtlib__Process

Process Statements

type 'a or_error = ('a, string) CCResult.t
val process_stmt : ?⁠gc:bool ‑> ?⁠restarts:bool ‑> ?⁠pp_cnf:bool ‑> ?⁠dot_proof:string ‑> ?⁠pp_model:bool ‑> ?⁠check:bool ‑> ?⁠time:float ‑> ?⁠memory:float ‑> ?⁠progress:bool ‑> Sidekick_smt.Solver.t ‑> Sidekick_smt.Ast.statement ‑> unit or_error
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib__Typecheck/.jbuilder-keep b/sidekick/Sidekick_smtlib__Typecheck/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_smtlib__Typecheck/Ctx/index.html b/sidekick/Sidekick_smtlib__Typecheck/Ctx/index.html deleted file mode 100644 index 156754df..00000000 --- a/sidekick/Sidekick_smtlib__Typecheck/Ctx/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Ctx (sidekick.Sidekick_smtlib__Typecheck.Ctx)

Module Sidekick_smtlib__Typecheck.Ctx

type t
val create : unit ‑> t
val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_smtlib__Typecheck/index.html b/sidekick/Sidekick_smtlib__Typecheck/index.html deleted file mode 100644 index 611ae48c..00000000 --- a/sidekick/Sidekick_smtlib__Typecheck/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_smtlib__Typecheck (sidekick.Sidekick_smtlib__Typecheck)

Module Sidekick_smtlib__Typecheck

Preprocessing AST

type 'a or_error = ('a, string) CCResult.t

Parsing and Typing

module Ctx : sig ... end
module A = Sidekick_smt.Ast
val conv_term : Ctx.t ‑> PA.term ‑> A.term
val conv_statement : Ctx.t ‑> PA.statement ‑> A.statement list
\ No newline at end of file diff --git a/sidekick/Sidekick_th_bool/.jbuilder-keep b/sidekick/Sidekick_th_bool/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_th_bool/Lit/index.html b/sidekick/Sidekick_th_bool/Lit/index.html deleted file mode 100644 index 9df79148..00000000 --- a/sidekick/Sidekick_th_bool/Lit/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Lit (sidekick.Sidekick_th_bool.Lit)

Module Sidekick_th_bool.Lit

val eq : Sidekick_smt.Term.state ‑> term ‑> term ‑> t
val neq : Sidekick_smt.Term.state ‑> term ‑> term ‑> t
\ No newline at end of file diff --git a/sidekick/Sidekick_th_bool/T_cell/index.html b/sidekick/Sidekick_th_bool/T_cell/index.html deleted file mode 100644 index 04e20c81..00000000 --- a/sidekick/Sidekick_th_bool/T_cell/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -T_cell (sidekick.Sidekick_th_bool.T_cell)

Module Sidekick_th_bool.T_cell

val builtin : term builtin ‑> t
val and_ : term list ‑> t
val or_ : term list ‑> t
val not_ : term ‑> t
val imply : term list ‑> term ‑> t
val eq : term ‑> term ‑> t
val neq : term ‑> term ‑> t
val distinct : term list ‑> t
\ No newline at end of file diff --git a/sidekick/Sidekick_th_bool/index.html b/sidekick/Sidekick_th_bool/index.html deleted file mode 100644 index 79cc50c2..00000000 --- a/sidekick/Sidekick_th_bool/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_th_bool (sidekick.Sidekick_th_bool)

Module Sidekick_th_bool

Theory of Booleans

type 'a builtin =
| B_not of 'a
| B_eq of 'a * 'a
| B_and of 'a list
| B_or of 'a list
| B_imply of 'a list * 'a
| B_distinct of 'a list
val map_builtin : ('a ‑> 'b) ‑> 'a builtin ‑> 'b builtin
val builtin_to_seq : 'a builtin ‑> 'a Sequence.t
module T_cell : sig ... end
val builtin : Sidekick_smt.Term.state ‑> term builtin ‑> term
val and_ : Sidekick_smt.Term.state ‑> term ‑> term ‑> term
val or_ : Sidekick_smt.Term.state ‑> term ‑> term ‑> term
val not_ : Sidekick_smt.Term.state ‑> term ‑> term
val imply : Sidekick_smt.Term.state ‑> term list ‑> term ‑> term
val eq : Sidekick_smt.Term.state ‑> term ‑> term ‑> term
val neq : Sidekick_smt.Term.state ‑> term ‑> term ‑> term
val distinct : Sidekick_smt.Term.state ‑> term list ‑> term
val and_l : Sidekick_smt.Term.state ‑> term list ‑> term
val or_l : Sidekick_smt.Term.state ‑> term list ‑> term
module Lit : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_util/.jbuilder-keep b/sidekick/Sidekick_util/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_util/BitField/Make/index.html b/sidekick/Sidekick_util/BitField/Make/index.html deleted file mode 100644 index b2a21090..00000000 --- a/sidekick/Sidekick_util/BitField/Make/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Make (sidekick.Sidekick_util.BitField.Make)

Module Sidekick_util.BitField.Make

Create a new bitfield type

Parameters

Signature

type t = private int

Generative type of bitfields. Each instantiation of the functor -should create a new, incompatible type

val empty : t

Empty bitfields (all bits 0)

type field
val get : field ‑> t ‑> bool

Get the value of this field

val set : field ‑> bool ‑> t ‑> t

Set the value of this field

val mk_field : unit ‑> field

Make a new field

val freeze : unit ‑> unit

Prevent new fields from being added. From now on, creating -a field will raise Frozen

val total_width : unit ‑> int

Current width of the bitfield

\ No newline at end of file diff --git a/sidekick/Sidekick_util/BitField/index.html b/sidekick/Sidekick_util/BitField/index.html deleted file mode 100644 index 8130050c..00000000 --- a/sidekick/Sidekick_util/BitField/index.html +++ /dev/null @@ -1,17 +0,0 @@ - -BitField (sidekick.Sidekick_util.BitField)

Module Sidekick_util.BitField

Bit Field

This module defines efficient bitfields -up to 30 or 62 bits (depending on the architecture) in -a relatively type-safe way.

      module B = CCBitField.Make(struct end);;
-
-      #install_printer B.pp;;
-
-      let x = B.mk_field ()
-      let y = B.mk_field ()
-      let z = B.mk_field ()
-
-      let f = B.empty |> B.set x true |> B.set y true;;
-
-      assert (not (B.get z f)) ;;
-
-      assert (f |> B.set z true |> B.get z);;
-
exception TooManyFields

Raised when too many fields are packed into one bitfield

exception Frozen

Raised when a frozen bitfield is modified

val max_width : int

System-dependent maximum width for a bitfield, typically 30 or 62

module type S : sig ... end

Bitfield Signature

module Make : functor () S

Create a new bitfield type

\ No newline at end of file diff --git a/sidekick/Sidekick_util/BitField/module-type-S/index.html b/sidekick/Sidekick_util/BitField/module-type-S/index.html deleted file mode 100644 index fd8ec84f..00000000 --- a/sidekick/Sidekick_util/BitField/module-type-S/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -S (sidekick.Sidekick_util.BitField.S)

Module type Sidekick_util.BitField.S

Bitfield Signature

type t = private int

Generative type of bitfields. Each instantiation of the functor -should create a new, incompatible type

val empty : t

Empty bitfields (all bits 0)

type field
val get : field ‑> t ‑> bool

Get the value of this field

val set : field ‑> bool ‑> t ‑> t

Set the value of this field

val mk_field : unit ‑> field

Make a new field

val freeze : unit ‑> unit

Prevent new fields from being added. From now on, creating -a field will raise Frozen

val total_width : unit ‑> int

Current width of the bitfield

\ No newline at end of file diff --git a/sidekick/Sidekick_util/Heap/Make/argument-1-X/index.html b/sidekick/Sidekick_util/Heap/Make/argument-1-X/index.html deleted file mode 100644 index 25f6745d..00000000 --- a/sidekick/Sidekick_util/Heap/Make/argument-1-X/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-X (sidekick.Sidekick_util.Heap.Make.1-X)

Parameter Sidekick_util.Heap.Make.1-X

type t
val idx : t ‑> int

Index in heap. return -1 if never set

val set_idx : t ‑> int ‑> unit

Index in heap. return -1 if never set

Update index in heap

val dummy : t

Update index in heap

val cmp : t ‑> t ‑> bool
\ No newline at end of file diff --git a/sidekick/Sidekick_util/Heap/Make/index.html b/sidekick/Sidekick_util/Heap/Make/index.html deleted file mode 100644 index 172c33c3..00000000 --- a/sidekick/Sidekick_util/Heap/Make/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -Make (sidekick.Sidekick_util.Heap.Make)

Module Sidekick_util.Heap.Make

Parameters

Signature

type elt = X.t

Type of elements

type t

Heap of elt, whose priority is increased or decreased -incrementally (see decrease for instance)

val create : unit ‑> t

Create a heap

val decrease : t ‑> elt ‑> unit

decrease h x decreases the value associated to x within h, -making it closer to the root (so, more prioritary)

val in_heap : elt ‑> bool
val size : t ‑> int

Number of integers within the heap

val is_empty : t ‑> bool
val clear : t ‑> unit

Clear the content of the heap

val insert : t ‑> elt ‑> unit

Insert a new element into the heap

val grow_to_at_least : t ‑> int ‑> unit

Hint: augment the internal capacity of the heap until it reaches at -least the given integer

val remove_min : t ‑> elt

Remove and return the integer that has the lowest value from the heap

  • Raises Not_found: if the heap is empty
val remove : t ‑> elt ‑> unit

Remove element from the heap. -precond: in_heap elt

val filter : t ‑> (elt ‑> bool) ‑> unit

Filter out values that don't satisfy the predicate

\ No newline at end of file diff --git a/sidekick/Sidekick_util/Heap/index.html b/sidekick/Sidekick_util/Heap/index.html deleted file mode 100644 index bc95eb0a..00000000 --- a/sidekick/Sidekick_util/Heap/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Heap (sidekick.Sidekick_util.Heap)

Module Sidekick_util.Heap

module type RANKED = Heap_intf.RANKED
module type S = Heap_intf.S
module Make : functor (X : RANKED) -> S with type elt = X.t
\ No newline at end of file diff --git a/sidekick/Sidekick_util/Heap/module-type-RANKED/index.html b/sidekick/Sidekick_util/Heap/module-type-RANKED/index.html deleted file mode 100644 index db92b159..00000000 --- a/sidekick/Sidekick_util/Heap/module-type-RANKED/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -RANKED (sidekick.Sidekick_util.Heap.RANKED)

Module type Sidekick_util.Heap.RANKED

type t
val idx : t ‑> int

Index in heap. return -1 if never set

val set_idx : t ‑> int ‑> unit

Index in heap. return -1 if never set

Update index in heap

val dummy : t

Update index in heap

val cmp : t ‑> t ‑> bool
\ No newline at end of file diff --git a/sidekick/Sidekick_util/Heap/module-type-S/index.html b/sidekick/Sidekick_util/Heap/module-type-S/index.html deleted file mode 100644 index 7973e8e1..00000000 --- a/sidekick/Sidekick_util/Heap/module-type-S/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -S (sidekick.Sidekick_util.Heap.S)

Module type Sidekick_util.Heap.S

type elt

Type of elements

type t

Heap of elt, whose priority is increased or decreased -incrementally (see decrease for instance)

val create : unit ‑> t

Create a heap

val decrease : t ‑> elt ‑> unit

decrease h x decreases the value associated to x within h, -making it closer to the root (so, more prioritary)

val in_heap : elt ‑> bool
val size : t ‑> int

Number of integers within the heap

val is_empty : t ‑> bool
val clear : t ‑> unit

Clear the content of the heap

val insert : t ‑> elt ‑> unit

Insert a new element into the heap

val grow_to_at_least : t ‑> int ‑> unit

Hint: augment the internal capacity of the heap until it reaches at -least the given integer

val remove_min : t ‑> elt

Remove and return the integer that has the lowest value from the heap

  • Raises Not_found: if the heap is empty
val remove : t ‑> elt ‑> unit

Remove element from the heap. -precond: in_heap elt

val filter : t ‑> (elt ‑> bool) ‑> unit

Filter out values that don't satisfy the predicate

\ No newline at end of file diff --git a/sidekick/Sidekick_util/Heap_intf/index.html b/sidekick/Sidekick_util/Heap_intf/index.html deleted file mode 100644 index e8f0ca2e..00000000 --- a/sidekick/Sidekick_util/Heap_intf/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Heap_intf (sidekick.Sidekick_util.Heap_intf)

Module Sidekick_util.Heap_intf

module type RANKED : sig ... end
module type S : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_util/Heap_intf/module-type-RANKED/index.html b/sidekick/Sidekick_util/Heap_intf/module-type-RANKED/index.html deleted file mode 100644 index fb3cc470..00000000 --- a/sidekick/Sidekick_util/Heap_intf/module-type-RANKED/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -RANKED (sidekick.Sidekick_util.Heap_intf.RANKED)

Module type Sidekick_util.Heap_intf.RANKED

type t
val idx : t ‑> int

Index in heap. return -1 if never set

val set_idx : t ‑> int ‑> unit

Index in heap. return -1 if never set

Update index in heap

val dummy : t

Update index in heap

val cmp : t ‑> t ‑> bool
\ No newline at end of file diff --git a/sidekick/Sidekick_util/Heap_intf/module-type-S/index.html b/sidekick/Sidekick_util/Heap_intf/module-type-S/index.html deleted file mode 100644 index 6d5ace1c..00000000 --- a/sidekick/Sidekick_util/Heap_intf/module-type-S/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -S (sidekick.Sidekick_util.Heap_intf.S)

Module type Sidekick_util.Heap_intf.S

type elt

Type of elements

type t

Heap of elt, whose priority is increased or decreased -incrementally (see decrease for instance)

val create : unit ‑> t

Create a heap

val decrease : t ‑> elt ‑> unit

decrease h x decreases the value associated to x within h, -making it closer to the root (so, more prioritary)

val in_heap : elt ‑> bool
val size : t ‑> int

Number of integers within the heap

val is_empty : t ‑> bool
val clear : t ‑> unit

Clear the content of the heap

val insert : t ‑> elt ‑> unit

Insert a new element into the heap

val grow_to_at_least : t ‑> int ‑> unit

Hint: augment the internal capacity of the heap until it reaches at -least the given integer

val remove_min : t ‑> elt

Remove and return the integer that has the lowest value from the heap

  • Raises Not_found: if the heap is empty
val remove : t ‑> elt ‑> unit

Remove element from the heap. -precond: in_heap elt

val filter : t ‑> (elt ‑> bool) ‑> unit

Filter out values that don't satisfy the predicate

\ No newline at end of file diff --git a/sidekick/Sidekick_util/IArray/index.html b/sidekick/Sidekick_util/IArray/index.html deleted file mode 100644 index 0e49ce7a..00000000 --- a/sidekick/Sidekick_util/IArray/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -IArray (sidekick.Sidekick_util.IArray)

Module Sidekick_util.IArray

type 'a t

Array of values of type 'a. The underlying type really is -an array, but it will never be modified.

It should be covariant but OCaml will not accept it.

val empty : 'a t
val is_empty : _ t ‑> bool
val length : _ t ‑> int
val singleton : 'a ‑> 'a t
val doubleton : 'a ‑> 'a ‑> 'a t
val make : int ‑> 'a ‑> 'a t

make n x makes an array of n times x

val init : int ‑> (int ‑> 'a) ‑> 'a t

init n f makes the array [| f 0; f 1; ... ; f (n-1) |].

  • Raises Invalid_argument: if n < 0
val get : 'a t ‑> int ‑> 'a

Access the element

val unsafe_get : 'a t ‑> int ‑> 'a

Unsafe access, not bound-checked. Use with caution

val set : 'a t ‑> int ‑> 'a ‑> 'a t

Copy the array and modify its copy

val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t
val mapi : (int ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t
val append : 'a t ‑> 'a t ‑> 'a t
val iter : ('a ‑> unit) ‑> 'a t ‑> unit
val iteri : (int ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val foldi : ('a ‑> int ‑> 'b ‑> 'a) ‑> 'a ‑> 'b t ‑> 'a
val fold : ('a ‑> 'b ‑> 'a) ‑> 'a ‑> 'b t ‑> 'a
val for_all : ('a ‑> bool) ‑> 'a t ‑> bool
val exists : ('a ‑> bool) ‑> 'a t ‑> bool

Conversions

type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option
val of_list : 'a list ‑> 'a t
val to_list : 'a t ‑> 'a list
val of_list_map : ('a ‑> 'b) ‑> 'a list ‑> 'b t
val to_list_map : ('a ‑> 'b) ‑> 'a t ‑> 'b list
val of_array_map : ('a ‑> 'b) ‑> 'a array ‑> 'b t
val to_array_map : ('a ‑> 'b) ‑> 'a t ‑> 'b array
val of_array_unsafe : 'a array ‑> 'a t

Take ownership of the given array. Careful, the array must NOT -be modified afterwards!

val to_seq : 'a t ‑> 'a sequence
val of_seq : 'a sequence ‑> 'a t
val of_gen : 'a gen ‑> 'a t
val to_gen : 'a t ‑> 'a gen

IO

type 'a printer = Format.formatter ‑> 'a ‑> unit
val print : ?⁠start:string ‑> ?⁠stop:string ‑> ?⁠sep:string ‑> 'a printer ‑> 'a t printer

Binary

val equal : ('a ‑> 'a ‑> bool) ‑> 'a t ‑> 'a t ‑> bool
val compare : ('a ‑> 'a ‑> int) ‑> 'a t ‑> 'a t ‑> int
val for_all2 : ('a ‑> 'a ‑> bool) ‑> 'a t ‑> 'a t ‑> bool
val exists2 : ('a ‑> 'a ‑> bool) ‑> 'a t ‑> 'a t ‑> bool
val map2 : ('a ‑> 'b ‑> 'c) ‑> 'a t ‑> 'b t ‑> 'c t
val fold2 : ('acc ‑> 'a ‑> 'b ‑> 'acc) ‑> 'acc ‑> 'a t ‑> 'b t ‑> 'acc
val iter2 : ('a ‑> 'b ‑> unit) ‑> 'a t ‑> 'b t ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_util/ID/B/index.html b/sidekick/Sidekick_util/ID/B/index.html deleted file mode 100644 index 4b6e5438..00000000 --- a/sidekick/Sidekick_util/ID/B/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -B (sidekick.Sidekick_util.ID.B)

Module Sidekick_util.ID.B

val rat : t
val int : t
\ No newline at end of file diff --git a/sidekick/Sidekick_util/ID/index.html b/sidekick/Sidekick_util/ID/index.html deleted file mode 100644 index 5d7d15d0..00000000 --- a/sidekick/Sidekick_util/ID/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -ID (sidekick.Sidekick_util.ID)

Module Sidekick_util.ID

Unique Identifiers

type t
val make : string ‑> t
val makef : ('a, Format.formatter, unit, t) Pervasives.format4 ‑> 'a
val copy : t ‑> t
val id : t ‑> int
val to_string : t ‑> string
val to_string_full : t ‑> string
include Intf.EQ with type t := t
type t
val equal : t ‑> t ‑> bool
include Intf.ORD with type t := t
type t
val compare : t ‑> t ‑> int
include Intf.HASH with type t := t
type t
val hash : t ‑> int
include Intf.PRINT with type t := t
type t
val pp : t CCFormat.printer
val pp_name : t CCFormat.printer
module Map : CCMap.S with type Map.key = t
module Set : CCSet.S with type Set.elt = t
module Tbl : CCHashtbl.S with type Tbl.key = t
module B : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_util/Intf/index.html b/sidekick/Sidekick_util/Intf/index.html deleted file mode 100644 index 9e659261..00000000 --- a/sidekick/Sidekick_util/Intf/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Intf (sidekick.Sidekick_util.Intf)

Module Sidekick_util.Intf

module type EQ : sig ... end
module type ORD : sig ... end
module type HASH : sig ... end
module type PRINT : sig ... end
type 'a printer = Format.formatter ‑> 'a ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_util/Intf/module-type-EQ/index.html b/sidekick/Sidekick_util/Intf/module-type-EQ/index.html deleted file mode 100644 index a06b0d9f..00000000 --- a/sidekick/Sidekick_util/Intf/module-type-EQ/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -EQ (sidekick.Sidekick_util.Intf.EQ)

Module type Sidekick_util.Intf.EQ

type t
val equal : t ‑> t ‑> bool
\ No newline at end of file diff --git a/sidekick/Sidekick_util/Intf/module-type-HASH/index.html b/sidekick/Sidekick_util/Intf/module-type-HASH/index.html deleted file mode 100644 index c783661a..00000000 --- a/sidekick/Sidekick_util/Intf/module-type-HASH/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -HASH (sidekick.Sidekick_util.Intf.HASH)

Module type Sidekick_util.Intf.HASH

type t
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_util/Intf/module-type-ORD/index.html b/sidekick/Sidekick_util/Intf/module-type-ORD/index.html deleted file mode 100644 index 14eb0dbf..00000000 --- a/sidekick/Sidekick_util/Intf/module-type-ORD/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -ORD (sidekick.Sidekick_util.Intf.ORD)

Module type Sidekick_util.Intf.ORD

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_util/Intf/module-type-PRINT/index.html b/sidekick/Sidekick_util/Intf/module-type-PRINT/index.html deleted file mode 100644 index 248ecb74..00000000 --- a/sidekick/Sidekick_util/Intf/module-type-PRINT/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -PRINT (sidekick.Sidekick_util.Intf.PRINT)

Module type Sidekick_util.Intf.PRINT

type t
val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_util/Log/index.html b/sidekick/Sidekick_util/Log/index.html deleted file mode 100644 index 8ab0c106..00000000 --- a/sidekick/Sidekick_util/Log/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Log (sidekick.Sidekick_util.Log)

Module Sidekick_util.Log

Logging function, for debugging

val enabled : bool
val set_debug : int ‑> unit

Set debug level

val get_debug : unit ‑> int

Set debug level

Current debug level

val debugf : int ‑> ((('a, Format.formatter, unit, unit) Pervasives.format4 ‑> 'a) ‑> unit) ‑> unit

Emit a debug message at the given level. If the level is lower -than get_debug (), the message will indeed be emitted

val debug : int ‑> string ‑> unit

Simpler version of debug, without formatting

val set_debug_out : Format.formatter ‑> unit

Change the output formatter.

\ No newline at end of file diff --git a/sidekick/Sidekick_util/Util/index.html b/sidekick/Sidekick_util/Util/index.html deleted file mode 100644 index 7fbbf69a..00000000 --- a/sidekick/Sidekick_util/Util/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Util (sidekick.Sidekick_util.Util)

Module Sidekick_util.Util

Utils

type 'a printer = 'a CCFormat.printer
val pp_list : ?⁠sep:string ‑> 'a printer ‑> 'a list printer
val pp_seq : ?⁠sep:string ‑> 'a printer ‑> 'a Sequence.t printer
val pp_array : ?⁠sep:string ‑> 'a printer ‑> 'a array printer
val pp_pair : ?⁠sep:string ‑> 'a printer ‑> 'b printer ‑> ('a * 'b) printer
val pp_iarray : ?⁠sep:string ‑> 'a CCFormat.printer ‑> 'a IArray.t CCFormat.printer
exception Error of string
val errorf : ('a, Format.formatter, unit, 'b) Pervasives.format4 ‑> 'a
  • Raises Error: when called
val setup_gc : unit ‑> unit

Change parameters of the GC

module Int_set : CCSet.S with type Int_set.elt = int
module Int_map : CCMap.S with type Int_map.key = int
\ No newline at end of file diff --git a/sidekick/Sidekick_util/Vec/index.html b/sidekick/Sidekick_util/Vec/index.html deleted file mode 100644 index c698d9bf..00000000 --- a/sidekick/Sidekick_util/Vec/index.html +++ /dev/null @@ -1,11 +0,0 @@ - -Vec (sidekick.Sidekick_util.Vec)

Module Sidekick_util.Vec

type 'a t

Abstract type of vectors of 'a

val make : int ‑> 'a ‑> 'a t

make cap dummy creates a new vector filled with dummy. The vector -is initially empty but its underlying array has capacity cap. -dummy will stay alive as long as the vector

val make_empty : 'a ‑> 'a t

Vector with an empty capacity. The only argument is the dummy.

val init : int ‑> (int ‑> 'a) ‑> 'a ‑> 'a t

Same as Array.init, but also with a dummy element

val from_array : 'a array ‑> int ‑> 'a ‑> 'a t

from_array arr size dummy takes ownership of data (no copy) -to create a vector. size is the length of the slice of data that is -used (size <= Array.length data must hold)

val from_list : 'a list ‑> 'a ‑> 'a t
val to_list : 'a t ‑> 'a list

Returns the list of elements of the vector

val clear : 'a t ‑> unit

Set size to 0, doesn't free elements

val shrink : 'a t ‑> int ‑> unit

shrink vec sz resets size of vec to sz. -Assumes sz >=0 && sz <= size vec

val pop : 'a t ‑> unit

Pop last element

  • Raises Invalid_argument: if the vector is empty
val size : 'a t ‑> int
val is_empty : 'a t ‑> bool
val grow_to_exact : 'a t ‑> int ‑> unit
val grow_to_double_size : 'a t ‑> unit
val grow_to_at_least : 'a t ‑> int ‑> unit

grow_to_at_least vec n ensures that capacity vec >= n in -the most efficient way

val is_full : 'a t ‑> bool

Is the capacity of the vector equal to the number of its elements?

val push : 'a t ‑> 'a ‑> unit
val append : 'a t ‑> 'a t ‑> unit

append v1 v2 pushes all elements of v2 into v1

val last : 'a t ‑> 'a

Last element, or

  • Raises Invalid_argument: if the vector is empty
val pop_last : 'a t ‑> 'a

Combine last and pop: remove last element and return it

  • Raises Invalid_argument: if empty
val get : 'a t ‑> int ‑> 'a

get the element at the given index, or

  • Raises Invalid_argument: if the index is not valid
val set : 'a t ‑> int ‑> 'a ‑> unit

set the element at the given index, either already set or the first -free slot if not (is_full vec), or

  • Raises Invalid_argument: if the index is not valid
val copy : 'a t ‑> 'a t

Fresh copy

val move_to : 'a t ‑> 'a t ‑> unit

move_to a b copies the content of a to b, discarding b's old content

val fast_remove : 'a t ‑> int ‑> unit

Remove element at index i without preserving order -(swap with last element)

val filter_in_place : ('a ‑> bool) ‑> 'a t ‑> unit

filter_in_place f v removes from v the elements that do -not satisfy f

val sort : 'a t ‑> ('a ‑> 'a ‑> int) ‑> unit

Sort in place the array

val iter : ('a ‑> unit) ‑> 'a t ‑> unit

Iterate on elements

val fold : ('b ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b

Fold over elements

val exists : ('a ‑> bool) ‑> 'a t ‑> bool

Does there exist an element that satisfies the predicate?

val for_all : ('a ‑> bool) ‑> 'a t ‑> bool

Do all elements satisfy the predicate?

val print : ?⁠sep:string ‑> (Format.formatter ‑> 'a ‑> unit) ‑> Format.formatter ‑> 'a t ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_util/index.html b/sidekick/Sidekick_util/index.html deleted file mode 100644 index 1e3d717e..00000000 --- a/sidekick/Sidekick_util/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_util (sidekick.Sidekick_util)

Module Sidekick_util

module BitField : sig ... end
module Heap : sig ... end
module Heap_intf : sig ... end
module IArray : sig ... end
module ID : sig ... end
module Intf : sig ... end
module Log : sig ... end
module Util : sig ... end
module Vec : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_util__BitField/.jbuilder-keep b/sidekick/Sidekick_util__BitField/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_util__BitField/Make/index.html b/sidekick/Sidekick_util__BitField/Make/index.html deleted file mode 100644 index 6221a417..00000000 --- a/sidekick/Sidekick_util__BitField/Make/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Make (sidekick.Sidekick_util__BitField.Make)

Module Sidekick_util__BitField.Make

Create a new bitfield type

Parameters

Signature

type t = private int

Generative type of bitfields. Each instantiation of the functor -should create a new, incompatible type

val empty : t

Empty bitfields (all bits 0)

type field
val get : field ‑> t ‑> bool

Get the value of this field

val set : field ‑> bool ‑> t ‑> t

Set the value of this field

val mk_field : unit ‑> field

Make a new field

val freeze : unit ‑> unit

Prevent new fields from being added. From now on, creating -a field will raise Frozen

val total_width : unit ‑> int

Current width of the bitfield

\ No newline at end of file diff --git a/sidekick/Sidekick_util__BitField/index.html b/sidekick/Sidekick_util__BitField/index.html deleted file mode 100644 index c6b6a305..00000000 --- a/sidekick/Sidekick_util__BitField/index.html +++ /dev/null @@ -1,17 +0,0 @@ - -Sidekick_util__BitField (sidekick.Sidekick_util__BitField)

Module Sidekick_util__BitField

Bit Field

This module defines efficient bitfields -up to 30 or 62 bits (depending on the architecture) in -a relatively type-safe way.

      module B = CCBitField.Make(struct end);;
-
-      #install_printer B.pp;;
-
-      let x = B.mk_field ()
-      let y = B.mk_field ()
-      let z = B.mk_field ()
-
-      let f = B.empty |> B.set x true |> B.set y true;;
-
-      assert (not (B.get z f)) ;;
-
-      assert (f |> B.set z true |> B.get z);;
-
exception TooManyFields

Raised when too many fields are packed into one bitfield

exception Frozen

Raised when a frozen bitfield is modified

val max_width : int

System-dependent maximum width for a bitfield, typically 30 or 62

module type S : sig ... end

Bitfield Signature

module Make : functor () S

Create a new bitfield type

\ No newline at end of file diff --git a/sidekick/Sidekick_util__BitField/module-type-S/index.html b/sidekick/Sidekick_util__BitField/module-type-S/index.html deleted file mode 100644 index 53892b66..00000000 --- a/sidekick/Sidekick_util__BitField/module-type-S/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -S (sidekick.Sidekick_util__BitField.S)

Module type Sidekick_util__BitField.S

Bitfield Signature

type t = private int

Generative type of bitfields. Each instantiation of the functor -should create a new, incompatible type

val empty : t

Empty bitfields (all bits 0)

type field
val get : field ‑> t ‑> bool

Get the value of this field

val set : field ‑> bool ‑> t ‑> t

Set the value of this field

val mk_field : unit ‑> field

Make a new field

val freeze : unit ‑> unit

Prevent new fields from being added. From now on, creating -a field will raise Frozen

val total_width : unit ‑> int

Current width of the bitfield

\ No newline at end of file diff --git a/sidekick/Sidekick_util__Heap/.jbuilder-keep b/sidekick/Sidekick_util__Heap/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_util__Heap/Make/argument-1-X/index.html b/sidekick/Sidekick_util__Heap/Make/argument-1-X/index.html deleted file mode 100644 index 47842274..00000000 --- a/sidekick/Sidekick_util__Heap/Make/argument-1-X/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-X (sidekick.Sidekick_util__Heap.Make.1-X)

Parameter Sidekick_util__Heap.Make.1-X

type t
val idx : t ‑> int

Index in heap. return -1 if never set

val set_idx : t ‑> int ‑> unit

Index in heap. return -1 if never set

Update index in heap

val dummy : t

Update index in heap

val cmp : t ‑> t ‑> bool
\ No newline at end of file diff --git a/sidekick/Sidekick_util__Heap/Make/index.html b/sidekick/Sidekick_util__Heap/Make/index.html deleted file mode 100644 index 57e06f06..00000000 --- a/sidekick/Sidekick_util__Heap/Make/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -Make (sidekick.Sidekick_util__Heap.Make)

Module Sidekick_util__Heap.Make

Parameters

Signature

type elt = X.t

Type of elements

type t

Heap of elt, whose priority is increased or decreased -incrementally (see decrease for instance)

val create : unit ‑> t

Create a heap

val decrease : t ‑> elt ‑> unit

decrease h x decreases the value associated to x within h, -making it closer to the root (so, more prioritary)

val in_heap : elt ‑> bool
val size : t ‑> int

Number of integers within the heap

val is_empty : t ‑> bool
val clear : t ‑> unit

Clear the content of the heap

val insert : t ‑> elt ‑> unit

Insert a new element into the heap

val grow_to_at_least : t ‑> int ‑> unit

Hint: augment the internal capacity of the heap until it reaches at -least the given integer

val remove_min : t ‑> elt

Remove and return the integer that has the lowest value from the heap

  • Raises Not_found: if the heap is empty
val remove : t ‑> elt ‑> unit

Remove element from the heap. -precond: in_heap elt

val filter : t ‑> (elt ‑> bool) ‑> unit

Filter out values that don't satisfy the predicate

\ No newline at end of file diff --git a/sidekick/Sidekick_util__Heap/index.html b/sidekick/Sidekick_util__Heap/index.html deleted file mode 100644 index 3d0ae8b8..00000000 --- a/sidekick/Sidekick_util__Heap/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_util__Heap (sidekick.Sidekick_util__Heap)

Module Sidekick_util__Heap

module Make : functor (X : RANKED) -> S with type elt = X.t
\ No newline at end of file diff --git a/sidekick/Sidekick_util__Heap/module-type-RANKED/index.html b/sidekick/Sidekick_util__Heap/module-type-RANKED/index.html deleted file mode 100644 index 6b0376f7..00000000 --- a/sidekick/Sidekick_util__Heap/module-type-RANKED/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -RANKED (sidekick.Sidekick_util__Heap.RANKED)

Module type Sidekick_util__Heap.RANKED

type t
val idx : t ‑> int

Index in heap. return -1 if never set

val set_idx : t ‑> int ‑> unit

Index in heap. return -1 if never set

Update index in heap

val dummy : t

Update index in heap

val cmp : t ‑> t ‑> bool
\ No newline at end of file diff --git a/sidekick/Sidekick_util__Heap/module-type-S/index.html b/sidekick/Sidekick_util__Heap/module-type-S/index.html deleted file mode 100644 index 53c0e04b..00000000 --- a/sidekick/Sidekick_util__Heap/module-type-S/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -S (sidekick.Sidekick_util__Heap.S)

Module type Sidekick_util__Heap.S

type elt

Type of elements

type t

Heap of elt, whose priority is increased or decreased -incrementally (see decrease for instance)

val create : unit ‑> t

Create a heap

val decrease : t ‑> elt ‑> unit

decrease h x decreases the value associated to x within h, -making it closer to the root (so, more prioritary)

val in_heap : elt ‑> bool
val size : t ‑> int

Number of integers within the heap

val is_empty : t ‑> bool
val clear : t ‑> unit

Clear the content of the heap

val insert : t ‑> elt ‑> unit

Insert a new element into the heap

val grow_to_at_least : t ‑> int ‑> unit

Hint: augment the internal capacity of the heap until it reaches at -least the given integer

val remove_min : t ‑> elt

Remove and return the integer that has the lowest value from the heap

  • Raises Not_found: if the heap is empty
val remove : t ‑> elt ‑> unit

Remove element from the heap. -precond: in_heap elt

val filter : t ‑> (elt ‑> bool) ‑> unit

Filter out values that don't satisfy the predicate

\ No newline at end of file diff --git a/sidekick/Sidekick_util__Heap_intf/.jbuilder-keep b/sidekick/Sidekick_util__Heap_intf/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_util__Heap_intf/index.html b/sidekick/Sidekick_util__Heap_intf/index.html deleted file mode 100644 index 09ea9b9e..00000000 --- a/sidekick/Sidekick_util__Heap_intf/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_util__Heap_intf (sidekick.Sidekick_util__Heap_intf)

Module Sidekick_util__Heap_intf

module type RANKED : sig ... end
module type S : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_util__Heap_intf/module-type-RANKED/index.html b/sidekick/Sidekick_util__Heap_intf/module-type-RANKED/index.html deleted file mode 100644 index 39c174d6..00000000 --- a/sidekick/Sidekick_util__Heap_intf/module-type-RANKED/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -RANKED (sidekick.Sidekick_util__Heap_intf.RANKED)

Module type Sidekick_util__Heap_intf.RANKED

type t
val idx : t ‑> int

Index in heap. return -1 if never set

val set_idx : t ‑> int ‑> unit

Index in heap. return -1 if never set

Update index in heap

val dummy : t

Update index in heap

val cmp : t ‑> t ‑> bool
\ No newline at end of file diff --git a/sidekick/Sidekick_util__Heap_intf/module-type-S/index.html b/sidekick/Sidekick_util__Heap_intf/module-type-S/index.html deleted file mode 100644 index 266fc061..00000000 --- a/sidekick/Sidekick_util__Heap_intf/module-type-S/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -S (sidekick.Sidekick_util__Heap_intf.S)

Module type Sidekick_util__Heap_intf.S

type elt

Type of elements

type t

Heap of elt, whose priority is increased or decreased -incrementally (see decrease for instance)

val create : unit ‑> t

Create a heap

val decrease : t ‑> elt ‑> unit

decrease h x decreases the value associated to x within h, -making it closer to the root (so, more prioritary)

val in_heap : elt ‑> bool
val size : t ‑> int

Number of integers within the heap

val is_empty : t ‑> bool
val clear : t ‑> unit

Clear the content of the heap

val insert : t ‑> elt ‑> unit

Insert a new element into the heap

val grow_to_at_least : t ‑> int ‑> unit

Hint: augment the internal capacity of the heap until it reaches at -least the given integer

val remove_min : t ‑> elt

Remove and return the integer that has the lowest value from the heap

  • Raises Not_found: if the heap is empty
val remove : t ‑> elt ‑> unit

Remove element from the heap. -precond: in_heap elt

val filter : t ‑> (elt ‑> bool) ‑> unit

Filter out values that don't satisfy the predicate

\ No newline at end of file diff --git a/sidekick/Sidekick_util__IArray/.jbuilder-keep b/sidekick/Sidekick_util__IArray/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_util__IArray/index.html b/sidekick/Sidekick_util__IArray/index.html deleted file mode 100644 index 5378a513..00000000 --- a/sidekick/Sidekick_util__IArray/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Sidekick_util__IArray (sidekick.Sidekick_util__IArray)

Module Sidekick_util__IArray

type 'a t

Array of values of type 'a. The underlying type really is -an array, but it will never be modified.

It should be covariant but OCaml will not accept it.

val empty : 'a t
val is_empty : _ t ‑> bool
val length : _ t ‑> int
val singleton : 'a ‑> 'a t
val doubleton : 'a ‑> 'a ‑> 'a t
val make : int ‑> 'a ‑> 'a t

make n x makes an array of n times x

val init : int ‑> (int ‑> 'a) ‑> 'a t

init n f makes the array [| f 0; f 1; ... ; f (n-1) |].

  • Raises Invalid_argument: if n < 0
val get : 'a t ‑> int ‑> 'a

Access the element

val unsafe_get : 'a t ‑> int ‑> 'a

Unsafe access, not bound-checked. Use with caution

val set : 'a t ‑> int ‑> 'a ‑> 'a t

Copy the array and modify its copy

val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t
val mapi : (int ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t
val append : 'a t ‑> 'a t ‑> 'a t
val iter : ('a ‑> unit) ‑> 'a t ‑> unit
val iteri : (int ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val foldi : ('a ‑> int ‑> 'b ‑> 'a) ‑> 'a ‑> 'b t ‑> 'a
val fold : ('a ‑> 'b ‑> 'a) ‑> 'a ‑> 'b t ‑> 'a
val for_all : ('a ‑> bool) ‑> 'a t ‑> bool
val exists : ('a ‑> bool) ‑> 'a t ‑> bool

Conversions

type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option
val of_list : 'a list ‑> 'a t
val to_list : 'a t ‑> 'a list
val of_list_map : ('a ‑> 'b) ‑> 'a list ‑> 'b t
val to_list_map : ('a ‑> 'b) ‑> 'a t ‑> 'b list
val of_array_map : ('a ‑> 'b) ‑> 'a array ‑> 'b t
val to_array_map : ('a ‑> 'b) ‑> 'a t ‑> 'b array
val of_array_unsafe : 'a array ‑> 'a t

Take ownership of the given array. Careful, the array must NOT -be modified afterwards!

val to_seq : 'a t ‑> 'a sequence
val of_seq : 'a sequence ‑> 'a t
val of_gen : 'a gen ‑> 'a t
val to_gen : 'a t ‑> 'a gen

IO

type 'a printer = Format.formatter ‑> 'a ‑> unit
val print : ?⁠start:string ‑> ?⁠stop:string ‑> ?⁠sep:string ‑> 'a printer ‑> 'a t printer

Binary

val equal : ('a ‑> 'a ‑> bool) ‑> 'a t ‑> 'a t ‑> bool
val compare : ('a ‑> 'a ‑> int) ‑> 'a t ‑> 'a t ‑> int
val for_all2 : ('a ‑> 'a ‑> bool) ‑> 'a t ‑> 'a t ‑> bool
val exists2 : ('a ‑> 'a ‑> bool) ‑> 'a t ‑> 'a t ‑> bool
val map2 : ('a ‑> 'b ‑> 'c) ‑> 'a t ‑> 'b t ‑> 'c t
val fold2 : ('acc ‑> 'a ‑> 'b ‑> 'acc) ‑> 'acc ‑> 'a t ‑> 'b t ‑> 'acc
val iter2 : ('a ‑> 'b ‑> unit) ‑> 'a t ‑> 'b t ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_util__ID/.jbuilder-keep b/sidekick/Sidekick_util__ID/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_util__ID/B/index.html b/sidekick/Sidekick_util__ID/B/index.html deleted file mode 100644 index adfd5f4b..00000000 --- a/sidekick/Sidekick_util__ID/B/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -B (sidekick.Sidekick_util__ID.B)

Module Sidekick_util__ID.B

val rat : t
val int : t
\ No newline at end of file diff --git a/sidekick/Sidekick_util__ID/index.html b/sidekick/Sidekick_util__ID/index.html deleted file mode 100644 index 96fb6f95..00000000 --- a/sidekick/Sidekick_util__ID/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_util__ID (sidekick.Sidekick_util__ID)

Module Sidekick_util__ID

Unique Identifiers

type t
val make : string ‑> t
val makef : ('a, Format.formatter, unit, t) Pervasives.format4 ‑> 'a
val copy : t ‑> t
val id : t ‑> int
val to_string : t ‑> string
val to_string_full : t ‑> string
include Sidekick_util.Intf.EQ with type t := t
type t
val equal : t ‑> t ‑> bool
include Sidekick_util.Intf.ORD with type t := t
type t
val compare : t ‑> t ‑> int
include Sidekick_util.Intf.HASH with type t := t
type t
val hash : t ‑> int
include Sidekick_util.Intf.PRINT with type t := t
type t
val pp : t CCFormat.printer
val pp_name : t CCFormat.printer
module Map : CCMap.S with type Map.key = t
module Set : CCSet.S with type Set.elt = t
module Tbl : CCHashtbl.S with type Tbl.key = t
module B : sig ... end
\ No newline at end of file diff --git a/sidekick/Sidekick_util__Intf/.jbuilder-keep b/sidekick/Sidekick_util__Intf/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_util__Intf/index.html b/sidekick/Sidekick_util__Intf/index.html deleted file mode 100644 index b737affb..00000000 --- a/sidekick/Sidekick_util__Intf/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_util__Intf (sidekick.Sidekick_util__Intf)

Module Sidekick_util__Intf

module type EQ : sig ... end
module type ORD : sig ... end
module type HASH : sig ... end
module type PRINT : sig ... end
type 'a printer = Format.formatter ‑> 'a ‑> unit
\ No newline at end of file diff --git a/sidekick/Sidekick_util__Intf/module-type-EQ/index.html b/sidekick/Sidekick_util__Intf/module-type-EQ/index.html deleted file mode 100644 index 0ca6d819..00000000 --- a/sidekick/Sidekick_util__Intf/module-type-EQ/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -EQ (sidekick.Sidekick_util__Intf.EQ)

Module type Sidekick_util__Intf.EQ

type t
val equal : t ‑> t ‑> bool
\ No newline at end of file diff --git a/sidekick/Sidekick_util__Intf/module-type-HASH/index.html b/sidekick/Sidekick_util__Intf/module-type-HASH/index.html deleted file mode 100644 index 0307c422..00000000 --- a/sidekick/Sidekick_util__Intf/module-type-HASH/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -HASH (sidekick.Sidekick_util__Intf.HASH)

Module type Sidekick_util__Intf.HASH

type t
val hash : t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_util__Intf/module-type-ORD/index.html b/sidekick/Sidekick_util__Intf/module-type-ORD/index.html deleted file mode 100644 index 6ac5f533..00000000 --- a/sidekick/Sidekick_util__Intf/module-type-ORD/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -ORD (sidekick.Sidekick_util__Intf.ORD)

Module type Sidekick_util__Intf.ORD

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/sidekick/Sidekick_util__Intf/module-type-PRINT/index.html b/sidekick/Sidekick_util__Intf/module-type-PRINT/index.html deleted file mode 100644 index aeeb0510..00000000 --- a/sidekick/Sidekick_util__Intf/module-type-PRINT/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -PRINT (sidekick.Sidekick_util__Intf.PRINT)

Module type Sidekick_util__Intf.PRINT

type t
val pp : t CCFormat.printer
\ No newline at end of file diff --git a/sidekick/Sidekick_util__Log/.jbuilder-keep b/sidekick/Sidekick_util__Log/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_util__Log/index.html b/sidekick/Sidekick_util__Log/index.html deleted file mode 100644 index dc22ea3f..00000000 --- a/sidekick/Sidekick_util__Log/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Sidekick_util__Log (sidekick.Sidekick_util__Log)

Module Sidekick_util__Log

Logging function, for debugging

val enabled : bool
val set_debug : int ‑> unit

Set debug level

val get_debug : unit ‑> int

Set debug level

Current debug level

val debugf : int ‑> ((('a, Format.formatter, unit, unit) Pervasives.format4 ‑> 'a) ‑> unit) ‑> unit

Emit a debug message at the given level. If the level is lower -than get_debug (), the message will indeed be emitted

val debug : int ‑> string ‑> unit

Simpler version of debug, without formatting

val set_debug_out : Format.formatter ‑> unit

Change the output formatter.

\ No newline at end of file diff --git a/sidekick/Sidekick_util__Util/.jbuilder-keep b/sidekick/Sidekick_util__Util/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_util__Util/index.html b/sidekick/Sidekick_util__Util/index.html deleted file mode 100644 index fa7fff32..00000000 --- a/sidekick/Sidekick_util__Util/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Sidekick_util__Util (sidekick.Sidekick_util__Util)

Module Sidekick_util__Util

Utils

type 'a printer = 'a CCFormat.printer
val pp_list : ?⁠sep:string ‑> 'a printer ‑> 'a list printer
val pp_seq : ?⁠sep:string ‑> 'a printer ‑> 'a Sequence.t printer
val pp_array : ?⁠sep:string ‑> 'a printer ‑> 'a array printer
val pp_pair : ?⁠sep:string ‑> 'a printer ‑> 'b printer ‑> ('a * 'b) printer
val pp_iarray : ?⁠sep:string ‑> 'a CCFormat.printer ‑> 'a Sidekick_util.IArray.t CCFormat.printer
exception Error of string
val errorf : ('a, Format.formatter, unit, 'b) Pervasives.format4 ‑> 'a
  • Raises Error: when called
val setup_gc : unit ‑> unit

Change parameters of the GC

module Int_set : CCSet.S with type Int_set.elt = int
module Int_map : CCMap.S with type Int_map.key = int
\ No newline at end of file diff --git a/sidekick/Sidekick_util__Vec/.jbuilder-keep b/sidekick/Sidekick_util__Vec/.jbuilder-keep deleted file mode 100644 index e69de29b..00000000 diff --git a/sidekick/Sidekick_util__Vec/index.html b/sidekick/Sidekick_util__Vec/index.html deleted file mode 100644 index a66bd1ac..00000000 --- a/sidekick/Sidekick_util__Vec/index.html +++ /dev/null @@ -1,11 +0,0 @@ - -Sidekick_util__Vec (sidekick.Sidekick_util__Vec)

Module Sidekick_util__Vec

type 'a t

Abstract type of vectors of 'a

val make : int ‑> 'a ‑> 'a t

make cap dummy creates a new vector filled with dummy. The vector -is initially empty but its underlying array has capacity cap. -dummy will stay alive as long as the vector

val make_empty : 'a ‑> 'a t

Vector with an empty capacity. The only argument is the dummy.

val init : int ‑> (int ‑> 'a) ‑> 'a ‑> 'a t

Same as Array.init, but also with a dummy element

val from_array : 'a array ‑> int ‑> 'a ‑> 'a t

from_array arr size dummy takes ownership of data (no copy) -to create a vector. size is the length of the slice of data that is -used (size <= Array.length data must hold)

val from_list : 'a list ‑> 'a ‑> 'a t
val to_list : 'a t ‑> 'a list

Returns the list of elements of the vector

val clear : 'a t ‑> unit

Set size to 0, doesn't free elements

val shrink : 'a t ‑> int ‑> unit

shrink vec sz resets size of vec to sz. -Assumes sz >=0 && sz <= size vec

val pop : 'a t ‑> unit

Pop last element

  • Raises Invalid_argument: if the vector is empty
val size : 'a t ‑> int
val is_empty : 'a t ‑> bool
val grow_to_exact : 'a t ‑> int ‑> unit
val grow_to_double_size : 'a t ‑> unit
val grow_to_at_least : 'a t ‑> int ‑> unit

grow_to_at_least vec n ensures that capacity vec >= n in -the most efficient way

val is_full : 'a t ‑> bool

Is the capacity of the vector equal to the number of its elements?

val push : 'a t ‑> 'a ‑> unit
val append : 'a t ‑> 'a t ‑> unit

append v1 v2 pushes all elements of v2 into v1

val last : 'a t ‑> 'a

Last element, or

  • Raises Invalid_argument: if the vector is empty
val pop_last : 'a t ‑> 'a

Combine last and pop: remove last element and return it

  • Raises Invalid_argument: if empty
val get : 'a t ‑> int ‑> 'a

get the element at the given index, or

  • Raises Invalid_argument: if the index is not valid
val set : 'a t ‑> int ‑> 'a ‑> unit

set the element at the given index, either already set or the first -free slot if not (is_full vec), or

  • Raises Invalid_argument: if the index is not valid
val copy : 'a t ‑> 'a t

Fresh copy

val move_to : 'a t ‑> 'a t ‑> unit

move_to a b copies the content of a to b, discarding b's old content

val fast_remove : 'a t ‑> int ‑> unit

Remove element at index i without preserving order -(swap with last element)

val filter_in_place : ('a ‑> bool) ‑> 'a t ‑> unit

filter_in_place f v removes from v the elements that do -not satisfy f

val sort : 'a t ‑> ('a ‑> 'a ‑> int) ‑> unit

Sort in place the array

val iter : ('a ‑> unit) ‑> 'a t ‑> unit

Iterate on elements

val fold : ('b ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b

Fold over elements

val exists : ('a ‑> bool) ‑> 'a t ‑> bool

Does there exist an element that satisfies the predicate?

val for_all : ('a ‑> bool) ‑> 'a t ‑> bool

Do all elements satisfy the predicate?

val print : ?⁠sep:string ‑> (Format.formatter ‑> 'a ‑> unit) ‑> Format.formatter ‑> 'a t ‑> unit
\ No newline at end of file diff --git a/sidekick/index.html b/sidekick/index.html deleted file mode 100644 index 5ce8bbf9..00000000 --- a/sidekick/index.html +++ /dev/null @@ -1,22 +0,0 @@ - -index (sidekick.index)

Library sidekick.backend

-The entry point of this library is the module: -Sidekick_backend. -

Library sidekick.dimacs

-The entry point of this library is the module: -Sidekick_dimacs. -

Library sidekick.sat

-The entry point of this library is the module: -Sidekick_sat. -

Library sidekick.smt

-The entry point of this library is the module: -Sidekick_smt. -

Library sidekick.smt.th_bool

-The entry point of this library is the module: -Sidekick_th_bool. -

Library sidekick.smtlib

-The entry point of this library is the module: -Sidekick_smtlib. -

Library sidekick.util

-The entry point of this library is the module: -Sidekick_util.

\ No newline at end of file