summaryrefslogtreecommitdiff
path: root/contrib/theoryskel/README.WHATS-NEXT
blob: 17affade4a0c0c87ee3f641b450d27e38340fe38 (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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Congratulations, you now have a new theory of $dir !

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; in particular, you should ensure that you
  rewrite (= X X) to "true" for terms X of your theory's sorts, and
  evaluate any constant terms
* for any new types that you have introduced, add "mk*Type()" functions to
  the NodeManager and ExprManager in src/expr/node_manager.{h,cpp} and
  src/expr/expr_manager_template.{h,cpp}.  You may also want "is*()" testers
  in src/expr/type_node.h and a corresponding Type derived class in
  src/expr/type.h.
* 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
  Theory$camel::check() in theory_$dir.cpp. Before writing the actual
  code, you will need :

  * to determine which data structures are context dependent and use for
    them context-dependent data structures (context/cd*.h)
  * to choose which work will be done at QUICK_CHECK, STANDARD or at
    FULL_EFFORT.

You'll probably find the Developer's wiki useful:

  http://cvc4.cs.nyu.edu/wiki/

...and in particular the Developer's Guide:

  http://cvc4.cs.nyu.edu/wiki/Developer%27s_Guide

which contains coding guidelines for the CVC4 project.

Good luck, and please contact cvc4-devel@cs.nyu.edu for assistance
should you need it!
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback