This PR does a number of minor improvements to the docs.
API Documentation
=================
+In addition to using cvc5 :doc:`as a binary <../binary/binary>`, cvc5 features APIs
+for several different programming languages.
+While the :doc:`C++ API <cpp/cpp>` is considered the primary interface to cvc5, both the :doc:`Java API <java/index>` and the :doc:`Python API <python/python>` implement a thin wrapper around it.
+Additionally, a more pythonic Python API is availble at https://github.com/cvc5/cvc5_z3py_compat.
+
.. toctree::
:maxdepth: 1
+++ /dev/null
-C++ API Class Hierarchy
-=======================
-
-``namespace cvc5::api {``
-
- * class :cpp:class:`CVC5ApiException <cvc5::api::CVC5ApiException>`
- * class :cpp:class:`CVC5ApiRecoverableException <cvc5::api::CVC5ApiRecoverableException>`
-
- * class :ref:`api/cpp/datatype:datatype`
-
- * class :cpp:class:`const_iterator <cvc5::api::Datatype::const_iterator>`
-
- * class :ref:`api/cpp/datatypeconstructor:datatypeconstructor`
-
- * class :cpp:class:`const_iterator <cvc5::api::DatatypeConstructor::const_iterator>`
-
- * class :ref:`api/cpp/datatypeconstructordecl:datatypeconstructordecl`
- * class :ref:`api/cpp/datatypedecl:datatypedecl`
- * class :ref:`api/cpp/datatypeselector:datatypeselector`
-
- * class :ref:`api/cpp/grammar:grammar`
-
- * class :ref:`api/cpp/kind:kind`
-
- * class :ref:`api/cpp/op:op`
-
- * class :ref:`api/cpp/optioninfo:optioninfo`
-
- * class :ref:`api/cpp/result:result`
-
- * enum :cpp:enum:`UnknownExplanation <cvc5::api::Result::UnknownExplanation>`
-
- * class :ref:`api/cpp/roundingmode:roundingmode`
-
- * class :ref:`api/cpp/solver:solver`
-
- * class :ref:`api/cpp/sort:sort`
-
- * class :cpp:class:`Stat <cvc5::api::Stat>`
-
- * class :cpp:class:`Statistics <cvc5::api::Statistics>`
-
- * class :ref:`api/cpp/term:term`
-
- * class :cpp:class:`const_iterator <cvc5::api::Term::const_iterator>`
-
-``}``
-.. _cpp-api:
-
C++ API Documentation
=====================
-.. toctree::
- :maxdepth: 1
+The C++ API is the primary interface for cvc5 and exposes the full functionality of cvc5.
+The :doc:`quickstart guide <quickstart>` gives a short introduction, while the following class hierarchy of the ``cvc5::api`` namespace provides more details on the individual classes.
+For most applications, the :cpp:class:`Solver <cvc5::api::Solver>` class is the main entry point to cvc5.
- quickstart
- class_hierarchy
.. container:: hide-toctree
.. toctree::
:maxdepth: 0
+ quickstart
+ exceptions
datatype
datatypeconstructor
datatypeconstructordecl
datatypedecl
datatypeselector
- exceptions
grammar
kind
op
sort
statistics
term
+
+
+Class hierarchy
+^^^^^^^^^^^^^^^
+
+``namespace cvc5::api {``
+
+ * class :cpp:class:`CVC5ApiException <cvc5::api::CVC5ApiException>`
+ * class :cpp:class:`CVC5ApiRecoverableException <cvc5::api::CVC5ApiRecoverableException>`
+ * class :ref:`api/cpp/datatype:datatype`
+
+ * class :cpp:class:`const_iterator <cvc5::api::Datatype::const_iterator>`
+
+ * class :ref:`api/cpp/datatypeconstructor:datatypeconstructor`
+
+ * class :cpp:class:`const_iterator <cvc5::api::DatatypeConstructor::const_iterator>`
+
+ * class :ref:`api/cpp/datatypeconstructordecl:datatypeconstructordecl`
+ * class :ref:`api/cpp/datatypedecl:datatypedecl`
+ * class :ref:`api/cpp/datatypeselector:datatypeselector`
+ * class :ref:`api/cpp/grammar:grammar`
+ * class :ref:`api/cpp/kind:kind`
+ * class :ref:`api/cpp/op:op`
+ * class :ref:`api/cpp/optioninfo:optioninfo`
+ * class :ref:`api/cpp/result:result`
+
+ * enum :cpp:enum:`UnknownExplanation <cvc5::api::Result::UnknownExplanation>`
+
+ * class :ref:`api/cpp/roundingmode:roundingmode`
+ * class :ref:`api/cpp/solver:solver`
+ * class :ref:`api/cpp/sort:sort`
+ * class :cpp:class:`Stat <cvc5::api::Stat>`
+ * class :cpp:class:`Statistics <cvc5::api::Statistics>`
+ * class :ref:`api/cpp/term:term`
+
+ * class :cpp:class:`const_iterator <cvc5::api::Term::const_iterator>`
+
+``}``
\ No newline at end of file
get_target_property(CVC5_JAR_FILE cvc5jar JAR_FILE)
add_custom_command(
- OUTPUT "${JAVADOC_INDEX_FILE}"
+ OUTPUT ${JAVADOC_INDEX_FILE}
COMMAND
${Java_JAVADOC_EXECUTABLE} io.github.cvc5.api
-sourcepath ${CMAKE_SOURCE_DIR}/src/api/java/:${CMAKE_BINARY_DIR}/src/api/java/
- -Xdoclint:none
-d ${JAVADOC_OUTPUT_DIR}
-cp ${CVC5_JAR_FILE}
-notimestamp
COMMAND find ${JAVADOC_OUTPUT_DIR} -type f -exec sed -i'orig' 's/<!-- Generated by javadoc [^>]* -->//' {} "\;"
COMMAND find ${SPHINX_GH_OUTPUT_DIR} -name '*orig' -delete
- DEPENDS cvc5jar
+ DEPENDS cvc5jar ${CVC5_JAR_FILE}
COMMENT "Generating javadocs"
)
-.. _python-api:
-
Python API Documentation
========================
Binary Documentation
====================
+The easiest way to use cvc5 is usually to invoke the cvc5 binary via the command line.
+The :doc:`quickstart guide <quickstart>` gives a short introduction on how to use cvc5 via the SMT-LIBv2
+interface, but cvc5 also supports other :doc:`input languages <languages>`.
+The behavior of cvc5 can be changed with a number of :doc:`options <options>`, and :doc:`output tags <output-tags>` allow to extract structured information about the solving process.
+
+Alternatively, cvc5 features :doc:`several APIs <../api/api>` for different programming languages.
.. toctree::
:maxdepth: 2
quickstart
+ languages
options
output-tags
--- /dev/null
+Input Languages
+===============
+
+cvc5 supports the following input languages:
+
+* `SMT-LIB v2 <http://smtlib.cs.uiowa.edu/language.shtml>`_
+* `SyGuS-IF <https://sygus.org/language/>`_
+* `TPTP <http://www.tptp.org/>`_
| The source code for this example can be found at `examples/api/smtlib/quickstart.smt2 <https://github.com/cvc5/cvc5/blob/master/examples/api/smtlib/quickstart.smt2>`_.
.. api-examples::
+ ../../examples/api/smtlib/quickstart.smt2
../../examples/api/cpp/quickstart.cpp
../../examples/api/java/QuickStart.java
../../examples/api/python/quickstart.py
- ../../examples/api/smtlib/quickstart.smt2
Examples
===========
-The following examples show how the APIs (:ref:`cpp-api`, :ref:`python-api`)
+The following examples show how the APIs (:doc:`../api/cpp/cpp`, :doc:`../api/java/index`, :doc:`../api/python/python`)
and input languages can be used.
For every example, the same problem is constructed and solved using different
input mechanisms.
binary/binary
api/api
examples/examples
- languages
theory
references
genindex
+++ /dev/null
-Input Languages
-===============
-
-cvc5 supports the following input languages:
-
-* `SMT-LIB v2 <http://smtlib.cs.uiowa.edu/language.shtml>`_
-* `SyGuS-IF <https://sygus.org/language/>`_
-* `TPTP <http://www.tptp.org/>`_
r"std::vector<Term>": "Term[]",
r"std::string": "String",
r"&": "",
- r"::": "."
+ r"::": ".",
+ r">": ">",
+ r"<": "<",
+ r"@f\[": "",
+ r"@f\]": "",
+ r"@note": "",
}