Simon Cruanes
5eab4bbb0d
feat(gensym): nicer names for gensym symbols
2022-10-19 22:25:29 -04:00
Simon Cruanes
5ca966a827
depth-restricted printing for terms and pterms
2022-10-13 21:43:16 -04:00
Simon Cruanes
fb8614f304
feat: decode proofs from traces; print them in show_trace
2022-10-13 00:03:08 -04:00
Simon Cruanes
842a7de435
wip: refactor(core): remove proof representation from core
2022-10-12 12:18:52 -04:00
Simon Cruanes
82727cd7ad
wip: feat(core): term references
2022-10-12 12:18:40 -04:00
Simon Cruanes
656d93d5fb
smt tracer is now a clause tracer
2022-10-02 23:23:34 -04:00
Simon Cruanes
06a0089a8c
feat: add Clause_tracer, works both for SMT and SAT
2022-10-02 23:07:53 -04:00
Simon Cruanes
96dddb5383
feat: show_trace, and trace_reader, can now display a QF_UF trace
...
the trace can contain assertions.
2022-09-30 23:05:00 -04:00
Simon Cruanes
3aadc640c4
improve tracing, add show_trace
2022-09-30 22:11:41 -04:00
Simon Cruanes
342bf87759
refactor(core/term): tracer is now a class
...
this way we can inherit it in tracers that can trace many things,
including terms.
2022-09-26 22:43:49 -04:00
Simon Cruanes
c2e5f31645
change signature of Const.decoders; add bencode decoder
2022-09-25 23:05:15 -04:00
Simon Cruanes
9ea8ba9bd1
feat: implement some const decoders
2022-09-25 23:05:15 -04:00
Simon Cruanes
798993fee2
feat(trace): start basic trace reader for terms, using Source
2022-09-25 23:05:15 -04:00
Simon Cruanes
ca3262eac3
minor change in term tracer
2022-09-25 23:05:14 -04:00
Simon Cruanes
15bc5c4b60
feat(core): add LRU to support entry decoding in term reader
2022-09-25 23:05:13 -04:00
Simon Cruanes
7b4404fb78
feat(tracing): introduce term/const serialization
...
- use a record instead of 1st class module for `Const.ops`, so it
can be mutually recursive with the definition of `term`
- remove unused `Const.ops.opaque_to_cc`
- constants are serializable using `Ser_value`
2022-09-23 22:13:21 -04:00
Simon Cruanes
72990de373
wip: feat(core): tracing terms, make constants (de)serializable
2022-09-19 22:27:45 -04:00
Simon Cruanes
1c07b027ef
refactor(const): remove opaque_to_cc
2022-09-19 22:27:42 -04:00
Simon Cruanes
d58c81e83f
wip: tracing system
2022-09-18 15:54:34 -04:00
Simon Cruanes
0b951b92d3
fix some warnings
2022-09-14 18:20:10 -04:00
Simon Cruanes
67c9ffa2ac
fix(lit): add type checking assertion
2022-09-11 14:09:03 -04:00
Simon Cruanes
c9138144f3
refactor(preprocess): break infinite recursion
2022-09-08 21:55:09 -04:00
Simon Cruanes
6101e029b3
feat(core): add box, with a box constant
...
this is a good alternative to gensym for preprocessing, as it is
idempotent and functional.
2022-09-07 19:34:31 -04:00
Simon Cruanes
2092bbef3f
feat(gensym): add reset
2022-09-01 22:32:52 -04:00
Simon Cruanes
80b08e03cb
feat(const): add opaque_to_cc property, to control CC
2022-08-31 00:41:42 -04:00
Simon Cruanes
90f100d9b1
helpers to build terms and solvers
2022-08-27 20:24:28 -04:00
Simon Cruanes
28173c1852
feat(term): replace E_app_uncurried with E_app_fold
2022-08-25 20:50:56 -04:00
Simon Cruanes
9762968373
feat(bool): use lists for B_and/B_or, along with App_uncurried
2022-08-22 22:12:27 -04:00
Simon Cruanes
dd66efb772
feat(term): add App_uncurried constructor
...
sometimes currying is really costly. For example, in boolean formulas,
the formula `/\_i=1^100 a_i` has 100 atoms as subterms, but if
represented curried with binary `/\` it also has 98 intermediate
conjunctions as subterms. With how the rest of sidekick works, this
means each of these gets its own atom and CNF; instead we're going to
use App_uncurried.
2022-08-22 22:12:27 -04:00
Simon Cruanes
dff65c5d26
refactor: Term.abs takes store again, so abs false can be false,true
2022-08-22 22:12:26 -04:00
Simon Cruanes
310d2183c4
add Lit.Tbl,Lit.Set,Lit.Map
2022-08-16 21:29:45 -04:00
Simon Cruanes
d5b7c2b0ee
feat(printer): always put (), do not box applications
2022-08-16 21:27:09 -04:00
Simon Cruanes
23e70a192a
perf(cc): more inlining; remove dead code
2022-08-14 22:33:32 -04:00
Simon Cruanes
593b693caf
refactor lit a bit
2022-08-12 23:09:56 -04:00
Simon Cruanes
b73c1bf464
feat(bool): use binary symbols for boolean operators
...
this helps in simplifying only fully applied boolean operators, and
avoiding simplifying the binary function `(or)` to `(false)`
2022-08-10 22:41:53 -04:00
Simon Cruanes
b9c0265cb9
feat(core): add Gensym module, add Proof_trace.close
2022-08-10 22:07:30 -04:00
Simon Cruanes
95beb2bf27
core: add better printer
2022-08-08 21:49:47 -04:00
Simon Cruanes
7aa113f379
feat(core): make CC_view part of the core library; with default CC view
2022-08-08 21:17:37 -04:00
Simon Cruanes
c2af589282
add core.bool_view
2022-08-07 22:40:39 -04:00
Simon Cruanes
4aec4fe491
refactor(proofs): make proof terms a recursive term
2022-08-01 20:42:45 -04:00
Simon Cruanes
1edf054104
refactor(proof): use a suspension but keep uniform Proof_term.data type
...
this makes proof terms uniformly printable or (de)serializable.
2022-07-31 15:01:11 -04:00
Simon Cruanes
1ecb189fd5
refactor: core and CC
2022-07-30 21:17:20 -04:00
Simon Cruanes
7595f66e59
refactor(core): add Proof_step
2022-07-29 23:27:04 -04:00
Simon Cruanes
1905d2d628
feat(core): improve Lit
2022-07-29 00:02:06 -04:00
Simon Cruanes
9df981d650
feat(core): concrete lit, proof traces, proof terms
2022-07-28 23:30:56 -04:00
Simon Cruanes
f3f0628261
large refactor with signature splitting, events, etc.
2022-07-18 23:20:07 -04:00
Simon Cruanes
633a658e0c
wip: use new sigs
2022-07-15 23:51:53 -04:00
Simon Cruanes
00dec7ced8
remove iarray
2022-07-15 21:06:46 -04:00
Simon Cruanes
5a559bec92
remove veci32
2022-07-15 20:32:06 -04:00
Simon Cruanes
a1bc186d2e
use ocamlformat
2022-07-14 22:09:13 -04:00