Simon Cruanes
46c44648e1
feat(core-logic): add builtin Proof type
...
not used yet
2022-10-12 12:22:04 -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
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
8811699410
feat(term): add open_eq
2022-09-10 14:09:55 -04:00
Simon Cruanes
efc01f507b
feat(term): add is_pi and weak containers
2022-09-01 22:33:15 -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
ccb3753668
wip(smt): theory combination
2022-08-27 21:38:20 -04:00
Simon Cruanes
137183f2fe
small fixes, warnings
2022-08-27 20:44:13 -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
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
0ff197d56c
perf(core): have eq and not_ be simplying
...
- `a=b` and `b=a` are now the same
- `not (not u)` and `u` are now the same
2022-08-22 22:01:02 -04:00
Simon Cruanes
0c658e3ee4
feat(term): add replace
2022-08-18 22:01:41 -04:00
Simon Cruanes
6a4947a25c
feat(term): printer
2022-08-16 23:21:07 -04:00
Simon Cruanes
632d5e3f40
fix(core-logic): ensure store IDs fit in 5 bits
2022-08-13 13:29:49 -04:00
Simon Cruanes
e99192869d
remove debug
2022-08-12 23:17:15 -04:00
Simon Cruanes
67d5f244c1
feat(Term): offer is_type and is_a_type
2022-08-10 22:41:26 -04:00
Simon Cruanes
8777682e07
detail in core_logic
2022-08-10 22:08:33 -04:00
Simon Cruanes
010451145c
fix(core-logic): bad constant for ite
2022-08-08 21:16:54 -04:00
Simon Cruanes
a7e7b38d1b
core: re-export Const.t properly
2022-08-05 21:56:23 -04:00
Simon Cruanes
36204c5e5e
refactor some more
2022-07-30 23:04:49 -04:00
Simon Cruanes
1ecb189fd5
refactor: core and CC
2022-07-30 21:17:20 -04:00
Simon Cruanes
c1af4374bd
core-logic: make Types_ private
2022-07-28 23:12:18 -04:00
Simon Cruanes
68c03a39b3
feat(core-logic): add a few builtins (=, bool, ite, not, true, false)
2022-07-28 20:50:12 -04:00
Simon Cruanes
a4db8b6e94
small improvement
2022-07-28 15:27:14 -04:00
Simon Cruanes
c6407bfec1
refactor a bit
2022-07-28 14:54:23 -04:00
Simon Cruanes
bfa434562e
fix(core-logic/term): make ty unfailing; fix DB bugs
2022-07-28 14:51:24 -04:00
Simon Cruanes
6f376cfaf2
refactor: rename core-ast to core-logic; split into modules
2022-07-28 13:54:38 -04:00