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.stanford.edu/wiki/ ...and the Developer's Guide: https://github.com/CVC4/CVC4/wiki/Developer-Guide which contains coding guidelines for the CVC4 project. Good luck, and please contact cvc4-devel@cs.stanford.edu for assistance should you need it!