blob: eda7dcbe68a8b09dd3472312eb52b6c50d84f0b8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
Congratulations, you now have a new theory of rewriterules !
Your next steps will likely be:
* to specify theory constants, types, and operators in your \`kinds' file
* to add typing rules to theory_${dir}_type_rules.h for your operators
and constants
* to write code in theory_${dir}_rewriter.h to implement a normal form
for your theory's terms
* to write parser rules in src/parser/cvc/Cvc.g to support the CVC input
language, src/parser/smt/Smt.g to support the (deprecated) SMT-LIBv1
language, and src/parser/smt2/Smt2.g to support SMT-LIBv2
* to write printer code in src/printer/*/*_printer* to support printing
your theory terms and types in various output languages
and finally:
* to implement a decision procedure for your theory by implementing
TheoryRewriterules::check() in theory_rewriterules.cpp. Before writing the actual
code, you will need :
* to determine which datastructures are context dependent and use for them
context dependent datastructures (context/cd*.h)
* to choose which work will be done at QUICK_CHECK, STANDARD or at
FULL_EFFORT.
Good luck, and please contact cvc4-devel@cs.nyu.edu for assistance
should you need it!
|