diff --git a/spec/changelog.tex b/spec/changelog.tex index 95a38bc5531697560d736f0b94d4dd6c854ad0d9..69bbc741f427a2a81abb5a8ecdbead12c4defd55 100644 --- a/spec/changelog.tex +++ b/spec/changelog.tex @@ -9,8 +9,9 @@ List of rules: Clarifications: \begin{itemize} \item Clarify functionality of choice in introduction. - \item Add illustratory example to introduction. - \item Normalize printing of (variable, term) arguments in the abstract notaton. + \item Add illustrating example to introduction. + \item Normalize printing of (variable, term) arguments in the abstract notation. + \item Fix linear arithmetic example in introduction. \end{itemize} \subsection*{0.1 --- \DTMdisplaydate{2021}{07}{10}{-1}} diff --git a/spec/doc.tex b/spec/doc.tex index 637f851172e862aeb2098cdca5d7ebe50fed1388..bc950bfdb8b13169b00d4b9d8352f7281f59659c 100644 --- a/spec/doc.tex +++ b/spec/doc.tex @@ -577,8 +577,6 @@ syntax for clauses uses the \smtinline{cl} operator, while disjunctions use the standard SMT-LIB \smtinline{or} operator. The \proofRule{or} \emph{rule} is responsible for converting disjunctions into clauses. -% PF TODO: I would fix that just now, using an attribute to distinguish, and a -% unique rule The Alethe proofs use a generalized propositional resolution rule with the rule name \proofRule{resolution} or \proofRule{th\_resolution}. Both names denote the same rule. The @@ -589,6 +587,13 @@ propositional; there is no notion of a unifier. The premises of a resolution step are clauses and the conclusion is a clause that has been derived from the premises by some binary resolution steps. +\begin{comment}{Hans-Jörg Schurr} +We have to clarify that resolution counts the number of leading negations +to determine polarity. This is important for double negation elimination. + +Furthermore, as Pascal noted, we should also fold the two rules into one +and use an attribute to distinguish the two cases. +\end{comment} \paragraph{Quantifier Instantiation.} To express quantifier instantiation, the rule \proofRule{forall\_inst} @@ -623,20 +628,16 @@ of $(x+y<1) \lor (3<x)$, $x\simeq 2$, and $0\simeq y$. \proofsep& 1.& (3 < x) \lor (x + y < 1) &(\proofRule{assume})\\ \proofsep& 2.& x\simeq 2 &(\proofRule{assume})\\ \proofsep& 3.& 0\simeq y &(\proofRule{assume})\\ -\proofsep& 4.& \neg (3<x) \lor \neg (x\simeq 2) &(\proofRule{la\_generic};\: ;1.0, 1.0)\\ -\proofsep& 5.& \neg (3<x) &(\proofRule{resolution}; 2, 4)\\ -\proofsep& 6.& x + y < 1 &(\proofRule{resolution}; 1, 5)\\ -\proofsep& 7.& \neg (x + y < 1) \lor \neg (x\simeq 2) \lor \neg (0 \simeq y) -&(\proofRule{la\_generic};\: ;1.0, 1.0, 1.0)\\ -\proofsep& 8.& \bot &(\proofRule{resolution};\:\; 7, 6, 2, 3) +\proofsep& 4.& (3 < x), (x + y < 1) &(\proofRule{or};1)\\ +\proofsep& 5.& \neg (3<x), \neg (x\simeq 2) &(\proofRule{la\_generic};\: ;1.0, 1.0)\\ +\proofsep& 6.& \neg (3<x) &(\proofRule{resolution}; 2, 5)\\ +\proofsep& 7.& x + y < 1 &(\proofRule{resolution}; 4, 6)\\ +\proofsep& 8.& \neg (x + y < 1), \neg (x\simeq 2) \lor \neg (0 \simeq y) +&(\proofRule{la\_generic};\: ;1.0, -1.0, 1.0)\\ +\proofsep& 9.& \bot &(\proofRule{resolution};\:\; 8, 7, 2, 3) \end{plListEq} \end{example} -% PF TODO 1 or -1 depends on the orientation of the equality... -% x < 0 , x = 1 --> 1 1 gives 2x < 1 -% x < 0 , 1 = x --> 1 1 gives 1 < 0 -% this should somehow be fixed - \paragraph{Subproofs and Lemmas.} The proof format uses subproof to prove lemmas and to manipulate the context. To prove lemmas, a subproof can @@ -645,8 +646,7 @@ local assumptions by concluding with an implication (written as a clause) which has the local assumptions as its antecedents. A step can only use steps from the same subproof as its premise. It is not possible to have premises from either a subproof at a deeper -level or from an outer level.%\todo{We could technically allow premises from -%outside. Do we allow this?} +level or from an outer level. As the example below shows, our notation for subproofs is a frame around the rules within the subproof. Subproofs are also used to diff --git a/spec/rule_list.tex b/spec/rule_list.tex index e0349c17bc10d1c82485721ee9ceba715d0bcefe..18c00adba992e35dad80893acdb5d306488ae935 100644 --- a/spec/rule_list.tex +++ b/spec/rule_list.tex @@ -163,7 +163,8 @@ each $i$, let $\varphi := \varphi_i$ and $a := a_i$. \item If $\varphi = s_1 > s_2$, then let $\varphi := s_1 \leq s_2$. If $\varphi = s_1 \geq s_2$, then let $\varphi := s_1 < s_2$. If $\varphi = s_1 < s_2$, then let $\varphi := s_1 \geq s_2$. - If $\varphi = s_1 \leq s_2$, then let $\varphi := s_1 > s_2$. + If $\varphi = s_1 \leq s_2$, then let $\varphi := s_1 > s_2$. This negates + the literal. \item If $\varphi = \neg (s_1 \bowtie s_2)$, then let $\varphi := s_1 \bowtie s_2$. \item Replace $\varphi$ by $\sum_{i=0}^{n}c_i\times{}t_i - \sum_{i=n+1}^{m} c_i\times{}t_i \bowtie d$ where $d := d_2 - d_1$.