Skip to content
Snippets Groups Projects
Commit de29f8f1 authored by Hans-Jörg's avatar Hans-Jörg
Browse files

Clarify that symbols that overlap with numbers are not allowed

parent 0e14e021
No related branches found
No related tags found
1 merge request!5Document cvc5-style numerals
Pipeline #44164 passed
...@@ -22,7 +22,7 @@ Breaking changes: ...@@ -22,7 +22,7 @@ Breaking changes:
be \texttt{(x S) (:= (y S) x)}. be \texttt{(x S) (:= (y S) x)}.
\item The arguments for \proofRule{forall_inst} have been changed to \item The arguments for \proofRule{forall_inst} have been changed to
no longer take the shape of bindings using \texttt{(:= x c)}. no longer take the shape of bindings using \texttt{(:= x c)}.
Instead, the list of instatiation terms must follow the variable Instead, the list of instantiation terms must follow the variable
order and cover all the respective bound variables. order and cover all the respective bound variables.
\item The rules \proofRule{and_pos}, \proofRule{or_neg}, \proofRule{and}, \item The rules \proofRule{and_pos}, \proofRule{or_neg}, \proofRule{and},
\proofRule{not_or} now have one argument that indicates which subterm \proofRule{not_or} now have one argument that indicates which subterm
...@@ -31,12 +31,10 @@ Breaking changes: ...@@ -31,12 +31,10 @@ Breaking changes:
for \proofRule{la_generic}. for \proofRule{la_generic}.
\item Restrict sorting of numbers such that the sort of a constant is \item Restrict sorting of numbers such that the sort of a constant is
only determined by its syntactic category. only determined by its syntactic category.
\item The arguments for \proofRule{forall_inst} have been changed to \item Add new syntax for decimal and negative numbers and clarify that
no longer take the shape of bindings using \texttt{(:= x c)}. the set of allowed symbols is restricted to not conflict with this
Instead, the list of instatiation terms must follow the variable new syntax.
order and cover all the respective bound variables. \item Always use decimals for the constants in \proofRule{la_generic}.
\item Add new syntax for decimal and negative numbers and use it
for \proofRule{la_generic}.
\item Restrict sorting of numbers such that the sort of a constant is \item Restrict sorting of numbers such that the sort of a constant is
only determined by its syntactic category. only determined by its syntactic category.
\end{itemize} \end{itemize}
......
...@@ -691,6 +691,12 @@ An Alethe proof is a list of commands. ...@@ -691,6 +691,12 @@ An Alethe proof is a list of commands.
\begin{figure}[t] \begin{figure}[t]
\[ \[
\begin{array}{r c l} \begin{array}{r c l}
\multicolumn{3}{c}{
\text{A }\grNT{symbol}\text{ is an SMT-LIB }\grNT{symbol}\text{ that is not a}}\\
& & -\grNT{numeral}/\grNT{positive\_numeral},\\
& & -\grNT{numeral},\text{ or} -\grNT{decimal}.\\
\grNT{proof} &\grRule & \grNT{proof\_command}^{*} \\ \grNT{proof} &\grRule & \grNT{proof\_command}^{*} \\
\grNT{proof\_command} &\grRule & \textAlethe{(assume}\; \grNT{symbol}\; \grNT{proof\_term}\;\grNT{attribute}^{*}\,\textAlethe{)} \\ \grNT{proof\_command} &\grRule & \textAlethe{(assume}\; \grNT{symbol}\; \grNT{proof\_term}\;\grNT{attribute}^{*}\,\textAlethe{)} \\
&\grOr & \textAlethe{(step}\; \grNT{symbol}\; \grNT{clause} &\grOr & \textAlethe{(step}\; \grNT{symbol}\; \grNT{clause}
...@@ -715,9 +721,9 @@ An Alethe proof is a list of commands. ...@@ -715,9 +721,9 @@ An Alethe proof is a list of commands.
\grNT{context\_assignment} &\grRule & \grNT{sorted\_var} \\ \grNT{context\_assignment} &\grRule & \grNT{sorted\_var} \\
& \grOr & \textAlethe{(:=}\, \grNT{sorted\_var}\;\grNT{proof\_term}\,\textAlethe{)} \\ & \grOr & \textAlethe{(:=}\, \grNT{sorted\_var}\;\grNT{proof\_term}\,\textAlethe{)} \\
\grNT{positive\_numeral} &\grRule & \text{any }\grNT{numeral}\text{ except } 0\\ \grNT{positive\_numeral} &\grRule & \text{any }\grNT{numeral}\text{ except } 0\\
\grNT{rational} &\grRule & -^{?}\grNT{numeral}/\grNT{positive\_numeral} \\ \grNT{rational} &\grRule & -^{?}\grNT{numeral}/\grNT{positive\_numeral} \\
\grNT{nonpositive\_numeral} &\grRule & -\grNT{numeral} \\ \grNT{nonpositive\_numeral} &\grRule & -\grNT{numeral} \\
\grNT{nonpositive\_decimal} &\grRule & -\grNT{decimal} \\ \grNT{nonpositive\_decimal} &\grRule & -\grNT{decimal} \\
\end{array} \end{array}
\] \]
\caption{The proof grammar.} \caption{The proof grammar.}
...@@ -747,10 +753,17 @@ is based on the {\smtlib} grammar, as defined in the {\smtlib} ...@@ -747,10 +753,17 @@ is based on the {\smtlib} grammar, as defined in the {\smtlib}
standard~\cite[Appendix~B]{SMTLIB}. The non-terminals standard~\cite[Appendix~B]{SMTLIB}. The non-terminals
$\grNT{attribute}$, $\grNT{attribute}$,
$\grNT{function\_def}$, $\grNT{function\_def}$,
$\grNT{sorted\_var}$, $\grNT{sorted\_var}$, and
$\grNT{symbol}$, and
$\grNT{term}$ $\grNT{term}$
are as defined in the standard. are as defined in the standard.
A special restriction applies to the $\grNT{symbol}$ non-terminal.
Alethe has an extended set of number literals. Since these can start
with a negation sign, they overlap SMT-LIB's $\grNT{symbol}$ non-terminal.
For example, \inlineAlethe{-1} is a valid $\grNT{symbol}$ in SMT-LIB.
These sequences cannot be used as symbols when using Alethe.
Note that symbols are also used to name user defined constants and functions
in the input problem. Hence, Alethe cannot express proofs about problems
that use such symbols.
Alethe proofs are a list of commands. Alethe proofs are a list of commands.
The \inlineAlethe{assume} command introduces a new assumption. While this The \inlineAlethe{assume} command introduces a new assumption. While this
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment