Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Alethe
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Model registry
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
veriT
Alethe
Commits
663bbfbe
Commit
663bbfbe
authored
2 years ago
by
Hans-Jörg
Browse files
Options
Downloads
Patches
Plain Diff
Clarifications, add motivation section
parent
671be4d7
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Pipeline
#7195
passed
2 years ago
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
spec/doc.tex
+35
-18
35 additions, 18 deletions
spec/doc.tex
with
35 additions
and
18 deletions
spec/doc.tex
+
35
−
18
View file @
663bbfbe
...
...
@@ -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
calc
ul
u
s.
concepts behind the Alethe proof
r
ul
e
s.
%
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
}
command
s. Each such
command
A
\proofRule
{
assume
}
step
introduces a term as an assumption. The
proof starts with a number of
\proofRule
{
assume
}
step
s. 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,
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment