Various improvements and fixes in the documentation (#8551)
authorGereon Kremer <gkremer@cs.stanford.edu>
Mon, 4 Apr 2022 19:09:47 +0000 (12:09 -0700)
committerGitHub <noreply@github.com>
Mon, 4 Apr 2022 19:09:47 +0000 (19:09 +0000)
This PR contains a variety of fixed and improvements to the documentation.

13 files changed:
INSTALL.rst
docs/binary/binary.rst
docs/proofs/output_alethe.rst
docs/proofs/output_dot.rst
docs/proofs/output_lean.rst [deleted file]
docs/proofs/output_lfsc.rst
docs/proofs/proofs.rst
docs/references.bib
docs/theories/datatypes.rst
docs/theories/theories.rst
src/api/cpp/cvc5.h
src/api/cpp/cvc5_kind.h
src/api/python/cvc5.pxi

index 5a8454d2c51262765b80d3104bed991ad4b24a8f..b70913274f1bffcd111bc0826916b389260b06ab 100644 (file)
@@ -223,8 +223,10 @@ Building the API documentation of cvc5 requires the following dependencies:
 
 - `Doxygen <https://www.doxygen.nl>`_
 - `Sphinx <https://www.sphinx-doc.org>`_,
+  `sphinx-rtd-theme <https://sphinx-rtd-theme.readthedocs.io/>`_,
   `sphinx-tabs <https://sphinx-tabs.readthedocs.io/>`_,
-  `sphinxcontrib-bibtex <https://sphinxcontrib-bibtex.readthedocs.io>`_
+  `sphinxcontrib-bibtex <https://sphinxcontrib-bibtex.readthedocs.io>`_,
+  `sphinxcontrib-programoutput <https://sphinxcontrib-programoutput.readthedocs.io>`_
 - `Breathe <https://breathe.readthedocs.io>`_
 
 To build the documentation, configure cvc5 with ``./configure.sh --docs`` and
index f51160bcb2549173028700746fa36448ee647360..7788daf2beeb5763531838c9286ebc0a8224e557 100644 (file)
@@ -16,6 +16,6 @@ Alternatively, cvc5 features :doc:`several APIs <../api/api>` for different prog
 
 
 .. toctree::
-    :maxdepth: 2
+    :hidden:
 
     quickstart
index 937d7d1d480e706136ac76d15616be1da21c8e6d..b5cf4bdf2837aafb05d6b1a5305b4dedcad30a2a 100644 (file)
@@ -20,3 +20,7 @@ available `here <https://github.com/ufmg-smite/alethe-proof-checker>`_.
 Currently, only the theory of equality with uninterpreted functions, parts of
 the theory of arithmetic and parts of the theory of quantifiers are supported in
 cvc5's Alethe proofs.
+
+A simple example of cvc5 producing a proof in the Alethe proof format:
+
+.. run-command:: bin/cvc5 --dump-proofs --proof-format-mode=alethe --simplification=none --dag-thresh=0 --proof-granularity=theory-rewrite ../test/regress/cli/regress0/proofs/qgu-fuzz-1-bool-sat.smt2
index 30665cd721bc362e9949289d076e8f4860dd1af7..9681024614909b37af6988021c22c917408b4f03 100644 (file)
@@ -3,6 +3,6 @@ Proof format: DOT
 
 Using the flag :ref:`proof-format-mode=dot <lbl-option-proof-format-mode>`, cvc5 outputs proofs in the DOT format.
 
-The DOT format is a graph description language (see e.g. a description `here <https://en.wikipedia.org/wiki/DOT_(graph_description_language)>`_.). It can be used, among other things, for visualization.
+The DOT format is a graph description language (see e.g. `this description <https://en.wikipedia.org/wiki/DOT_(graph_description_language)>`_). It can be used, among other things, for visualization.
 
-We leverage this format for visualizing cvc5 proofs, in the internal calculus, as a graph. One can use a default dot visualizer or the dedicated proof visualizer available `here <https://ufmg-smite.github.io/proof-visualizer>`_. It suffices to upload the DOT proof outputted by cvc5, saved into a file. The visualizer offers several custom features, such as fold/unfold subproofs, coloring nodes, and stepwise expansion of let terms.
+We leverage this format for visualizing cvc5 proofs, in the internal calculus, as a graph. One can use a default dot visualizer or the dedicated proof visualizer `available here <https://ufmg-smite.github.io/proof-visualizer>`_. It suffices to upload the DOT proof outputted by cvc5, saved into a file. The visualizer offers several custom features, such as fold/unfold subproofs, coloring nodes, and stepwise expansion of let terms.
diff --git a/docs/proofs/output_lean.rst b/docs/proofs/output_lean.rst
deleted file mode 100644 (file)
index 6eaea77..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Proof format: Lean
-==================
\ No newline at end of file
index 3b47e3962db286bc160aed9cdf0b6b9b6f48cd82..f763498e8af754d2acac08c2e57e40ba825d63ab 100644 (file)
@@ -12,3 +12,7 @@ LFSC is a meta-framework, meaning that the proof rules used by cvc5 are defined
 Note that several proof rules in the internal calculus are not yet supported in LFSC signatures, and are instead printed as `trust` steps in the LFSC proof. A trust step proves an arbitrary formula with no provided justification. The LFSC proof contains warnings for which proof rules from the internal calculus were recorded as trust steps in the LFSC proof.
 
 For more fine-grained proofs, the additional option :ref:`proof-granularity=theory-rewrite <lbl-option-proof-granularity>` should be passed to cvc5. This often will result in LFSC proofs with more detail, and whose trust steps correspond only to equalities corresponding to theory rewrites.
+
+A simple example of cvc5 producing a proof in LFSC proof format:
+
+.. run-command:: bin/cvc5 --dump-proofs --proof-format-mode=lfsc --proof-granularity=theory-rewrite ../test/regress/cli/regress0/proofs/qgu-fuzz-1-bool-sat.smt2
index face73c30f22011aa0235d5fdf144f57283052a9..6f1e09f66a062a1f8efcbb324625b0b38eeb4df6 100644 (file)
@@ -5,6 +5,11 @@ cvc5 produces proofs in an internal proof calculus that faithfully reflects its
 reasoning. Here is a comprehensive description of the :doc:`proof rules
 <proof_rules>`.
 
+.. toctree::
+   :hidden:
+
+   proof_rules
+
 Optionally cvc5 can convert and output its internal proofs into the following
 external formats:
 
index 35224aa5162b1a5dda8134e8ccd773de0b7f0e4d..86f36c3f3e0266448e2d88028aaf8ae58f242274 100644 (file)
   pages     = {450--467},
   publisher = {Springer},
   year      = {2021},
-  url       = {https://doi.org/10.1007/978-3-030-79876-5\_26},
-  doi       = {10.1007/978-3-030-79876-5\_26},
+  url       = {https://doi.org/10.1007/978-3-030-79876-5_26},
+  doi       = {10.1007/978-3-030-79876-5_26},
   timestamp = {Mon, 12 Jul 2021 14:18:46 +0200},
   biburl    = {https://dblp.org/rec/conf/cade/SchurrFD21.bib},
   bibsource = {dblp computer science bibliography, https://dblp.org}
index 4106e31fed92a0796ddf453aa200cec7eb251252..2072be7bdf29c66e2185881970f649880088275b 100644 (file)
@@ -118,6 +118,7 @@ Datatype updaters are a (non-standard) extension available in datatype logics.
 The term:
 
 .. code:: smtlib
+
    ((_ update Sij) t u)
 
 is equivalent to replacing the field of ``t`` denoted by the selector ``Sij``
@@ -125,6 +126,7 @@ with the value ``u``, or ``t`` itself if that selector does not apply to the
 constructor symbol of ``t``.  For example, for the list datatype, we have that:
 
 .. code:: smtlib
+
    ((_ update head) (cons 4 nil) 7) = (cons 7 nil)
    ((_ update tail) (cons 4 nil) (cons 5 nil)) = (cons 4 (cons 5 nil))
    ((_ update head) nil 5) = nil
index f1b980bc4b64c92d83ba4b88a7f7d4800364172a..fd00cc658ef58cbc9de7a65b49edcbacae4c8e61 100644 (file)
@@ -32,5 +32,6 @@ Non-standard or extended theories
    bags
    datatypes
    separation-logic
+   sequences
    sets-and-relations
    transcendentals
index 44a30bfed3bced7ff3c966cbaf9d0d22832b35c0..d9f816a6e766ba8e8ab825d8bfb95f07d6164dc7 100644 (file)
@@ -4568,10 +4568,7 @@ class CVC5_EXPORT Solver
    *     (block-model)
    *
    * Requires enabling option
-   * :ref:`produce-models <lbl-option-produce-models>`
-   * and setting option
-   * :ref:`block-models <lbl-option-block-models>`
-   * to a mode other than ``none``.
+   * :ref:`produce-models <lbl-option-produce-models>`.
    * \endverbatim
    *
    * @warning This method is experimental and may change in future versions.
index 7d405891a61f057e2cb226ab8d73eaed29bd7713..c350c377ad1cf7eebe1fdeddf9cdab9351b4402b 100644 (file)
@@ -238,7 +238,7 @@ enum Kind : int32_t
    *
    *   - ``1:`` Term of kind :cpp:enumerator:`VARIABLE_LIST`
    *   - ``2:`` Term of Sort Bool (the body of the witness)
-   *   - ``3:`` (optional) Term of kind :cpp:enumerator:`INST_PATTERN`_LIST
+   *   - ``3:`` (optional) Term of kind :cpp:enumerator:`INST_PATTERN_LIST`
    *
    * - Create Term of this Kind with:
    *
@@ -474,12 +474,14 @@ enum Kind : int32_t
    * .. code:: smtlib
    *
    *     ((_ iand k) i_1 i_2)
+   *
    * is equivalent to
    *
    * .. code:: smtlib
    *
    *     ((_ iand k) i_1 i_2)
    *     (bv2int (bvand ((_ int2bv k) i_1) ((_ int2bv k) i_2)))
+   *
    * for all integers ``i_1``, ``i_2``.
    *
    * - Arity: ``2``
@@ -2620,6 +2622,7 @@ enum Kind : int32_t
    * .. code:: smtlib
    *
    *      (match l (((cons h t) h) (nil 0)))
+   *
    * is represented by the AST
    *
    * .. code:: lisp
@@ -4771,6 +4774,7 @@ enum Kind : int32_t
    * .. code:: smtlib
    *
    *     (seq.++ (seq.unit c1) ... (seq.unit cn))
+   *
    * where :math:`n \leq 0` and :math:`c_1, ..., c_n` are constants of some
    * sort. The elements can be extracted with Term::getSequenceValue().
    * \endrst
@@ -4895,7 +4899,7 @@ enum Kind : int32_t
    *
    * \rst
    * .. note:: Should only be used as a child of
-   *           :cpp:enumerator`INST_PATTERN_LIST`.
+   *           :cpp:enumerator:`INST_PATTERN_LIST`.
    * \endrst
    *
    * - Arity: ``n > 0``
index a02adec3370a7957d3d4618b4ccf7b71f99e4474..880be79d0ba7e136ffaa78454663991ce55d4cea 100644 (file)
@@ -157,6 +157,7 @@ cdef class Datatype:
         """
             .. warning:: This method is experimental and may change in future
                          versions.
+
             :return: True if this datatype is parametric.
         """
         return self.cd.isParametric()
@@ -177,6 +178,7 @@ cdef class Datatype:
         """
             .. warning:: This method is experimental and may change in future
                          versions.
+
             :return: True if this datatype corresponds to a record.
         """
         return self.cd.isRecord()
@@ -2218,7 +2220,7 @@ cdef class Solver:
         """
             Get some information about the given option.
             Returns the information provided by the C++
-            :cpp:func:`OptionInfo <cvc5::OptionInfo>` as a dictionary.
+            :cpp:class:`OptionInfo <cvc5::OptionInfo>` as a dictionary.
 
             :return: Information about the given option.
         """
@@ -2711,6 +2713,7 @@ cdef class Solver:
 
             .. warning:: This method is experimental and may change in future
                         versions.
+
             :param conj: The conjecture term.
             :param grammar: A grammar for the inteprolant.
             :return: The interpolant. 
@@ -2751,6 +2754,8 @@ cdef class Solver:
         cdef Term result = Term(self)
         result.cterm = self.csolver.getInterpolantNext()
         return result
+
+
     def getAbduct(self, Term conj, Grammar grammar=None):
         """
             Get an abduct.
@@ -2767,6 +2772,7 @@ cdef class Solver:
 
             .. warning:: This method is experimental and may change in future
                          versions.
+
             :param conj: The conjecture term.
             :param grammar: A grammar for the abduct.
             :return: The abduct.
@@ -2819,8 +2825,6 @@ cdef class Solver:
 
             Requires enabling option
             :ref:`produce-models <lbl-option-produce-models>`
-            and setting option
-            :ref:`block-models <lbl-option-block-models>`
             to a mode other than ``none``.
 
             .. warning:: This method is experimental and may change in future
@@ -3068,7 +3072,7 @@ cdef class Sort:
             Is this a record sort?
 
             .. warning:: This method is experimental and may change in future
-                        versions.
+                         versions.
 
             :return: True if the sort is a record sort.
         """
@@ -3614,8 +3618,7 @@ cdef class Term:
 
             .. note::
 
-            This is safe to call when :py:meth:`hasOp()` returns True.
-
+                This is safe to call when :py:meth:`hasOp()` returns True.
         """
         cdef Op op = Op(self.solver)
         op.cop = self.cterm.getOp()
@@ -3927,6 +3930,7 @@ cdef class Term:
         """
             :return: The sort the cardinality constraint is for and its upper
                      bound.
+
             .. warning:: This method is experimental and may change in future
                          versions.
         """