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

Clarifications, add motivation section

parent 671be4d7
No related branches found
No related tags found
No related merge requests found
Pipeline #7195 passed
......@@ -349,21 +349,32 @@ get in touch!
\section{Introduction}
This document is a reference of the Alethe format. The format is designed to be
a flexible format to represent unsatisfiability proofs generated by SMT solvers.
The overall design follows a few core concepts, such as a natural-deduction
style structure and rules generating and operating on ground first-order
clauses.
This document is a reference of the Alethe proof format. Alethe is
designed to be a flexible format to represent unsatisfiability proofs
generated by SMT solvers. Alethe proofs can be consumed by other systems,
such as interactive theorem provers or proof checkers. The overall design
follows a few core concepts, such as a natural-deduction style structure
and rules generating and operating on ground first-order clauses.
%
There are two parts in this document: the proof language and a proof calculus.
Section~\ref{sec:language} introduces the language. First informally,
then formally.
The Alethe calculus consists of two parts: the proof language based on
SMT-LIB and a collection of proof rules.
Section~\ref{sec:language} introduces the language. First as an abstract language,
then as a concrete syntax.
%
Section~\ref{sec:rules-generic} discusses the core
concepts behind the Alethe proof calculus.
concepts behind the Alethe proof rules.
%
At the end of the document Section~\ref{sec:rules} presents a list of all proof
rules used by SMT solvers supporting Alethe.
At the end of the document Section~\ref{sec:rules} presents a list of
all proof rules used by SMT solvers supporting Alethe.
Alethe follows a few core design principles. First, proofs should
be easy to understand by humans to ensure working with Alethe proofs
is effortless. Second, the logic of the format should directly
correspond to the logic used by the solver. Since many solvers use the
SMT-LIB logic, Alethe also uses this logic. Third, the language should
be uniform for all theories used by SMT solvers. With the expectation
of clauses for propositional reasoning, there is dedicated syntax for
any logic
The semantics (Section~\ref{sec:semantic}) and concrete syntax
(Section~\ref{sec:syntax}) are based on the SMT-LIB~\cite{SMTLIB}
......@@ -445,7 +456,8 @@ equality predicate.
To simplify the
notation we will omit the sort of terms when possible.
\begin{example} The following example shows a simple Alethe proof.
\begin{example} The following example shows a simple Alethe proof
expressed in the abstract claculus used in this document.
It uses quantifier instantiation and resolution to show a contradiction.
The sections below step-by-step describe the concepts necessary to
understand the proof intuitively.
......@@ -500,11 +512,14 @@ the quantifier. Step 4 translates the disjunction into a clause.
In the example above, the contexts are all empty.
\paragraph{Assumptions.}
The \proofRule{assume} command introduces a term as an assumption. The
proof starts with a number of \proofRule{assume} commands. Each such command
A \proofRule{assume} step introduces a term as an assumption. The
proof starts with a number of \proofRule{assume} steps. Each such step
corresponds to an input assertion. Additional assumptions can be introduced
too. In this case each assumption must be discharged with an appropriate
step. The rule \proofRule{subproof} can be used to do so.
step. The rule \proofRule{subproof} can be used to do so. In the concrete
syntax \proofRule{assume} steps have a dedicated command $\grT{assume}$ to
clearly distinguish them from normal steps that use the $\grT{step}$ command
(see Section~\ref{sec:syntax}).
The example above uses two assumptions which are introduced in the first
two steps.
......@@ -917,7 +932,9 @@ instantiation and resolution steps (line 10--15)}\label{fig:proof_ex}
The concrete text representation of the Alethe proofs
is based on the SMT-LIB standard. Figure~\ref{fig:proof_ex} shows an
exemplary proof as printed by veriT with light edits for readability.
The format follows the SMT-LIB standard when possible.
The format follows the SMT-LIB standard when possible. Hence, beside
the SMT-LIB logic and term language, it also uses commands to structure
the proof. An Alethe proof is a list of commands.
Figure~\ref{fig:grammar} shows the grammar of the proof text. It
is based on the SMT-LIB grammar, as defined in the SMT-LIB
......@@ -1173,8 +1190,8 @@ resolution steps.
To express quantifier instantiation, the rule \proofRule{forall\_inst}
is used. It produces a formula of the form $(\neg \forall \bar
x_n.\,\varphi)\lor \varphi[\bar t_n]$, where $\varphi$ is
a term containing the free variables $\bar x_n$, and each $t_i$
is a new ground term with the same sort as $x_i$ for each $i$.
a term containing the free variables $\bar x_n$, and for each $i$ the
ground term $t_i$ is a new term with the same sort as $x_i$.
The arguments of a \proofRule{forall\_inst} step is the list \((x_1 , t_1),
\dots, (x_n, t_n)\). While this information can be recovered from the term,
......
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