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
08734cb4
Commit
08734cb4
authored
3 years ago
by
Hans-Jörg
Browse files
Options
Downloads
Patches
Plain Diff
Remove ugly \formatname macro, Alethe is now established
parent
555edbc6
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
spec/doc.tex
+18
-20
18 additions, 20 deletions
spec/doc.tex
with
18 additions
and
20 deletions
spec/doc.tex
+
18
−
20
View file @
08734cb4
...
...
@@ -59,8 +59,6 @@
% ========================================
% Commands
% ========================================
\newcommand
{
\formatName
}{
Alethe
}
% Environment for discussion, conditional
\ifdef
{
\nocomments
}
...
...
@@ -271,7 +269,7 @@ break
% Document
% ========================================
\title
{
The
{
\formatName
}
Proof Format
}
\title
{
The
Alethe
Proof Format
}
\subtitle
{
A Speculative Specification and Reference
}
\author
{
Haniel Barbosa
\textsuperscript
{
1
}
\and
Mathias Fleury
\textsuperscript
{
2
}
...
...
@@ -335,7 +333,7 @@ authors of those tools and we are committed to improve the tools, the
format, and ultimately the specification together.
This document is also an invitation to other researchers to join
the efforts. To read the reference and provide feedback, or to even
implement support for
{
\formatName
}
into their own tools. Please
implement support for
Alethe
into their own tools. Please
get in touch!
\bigskip
...
...
@@ -344,7 +342,7 @@ get in touch!
\section
{
Introduction
}
This document is a reference of the
{
\formatName
}
format. The format
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. It is designed around a few core
concepts, such as a natural-deduction style structure and resolution.
...
...
@@ -358,16 +356,16 @@ format, which is widely used as input and output format of SMT
solvers. Hence, the base logic is the many-sorted first-order logic of
SMT-LIB. This document assumes the reader is familiar with the SMT-LIB
standard. As discussed in Section~
\ref
{
sec:syntax
}
the concrete syntax
of
{
\formatName
}
is based on the SMT-LIB syntax.
of
Alethe
is based on the SMT-LIB syntax.
The format is currently used by the CDCL(
$
T
$
)-based SMT solver
veriT~
\cite
{
verit
}
. If requested by the user, veriT outputs a proof if it can
deduce that the input problem is unsatisfiable. In proof production mode, veriT
supports the theory of uninterpreted functions, the theory of linear integer and
real arithmetic, and quantifiers. The
{
\formatName
}
proofs can be reconstructed
real arithmetic, and quantifiers. The
Alethe
proofs can be reconstructed
by the
\texttt
{
smt
}
tactic of the proof assistant
Isabelle/HOL~
\cite
{
fleury-2019,schurr-2021
}
. Furthermore, in the future the SMT
solver cvc5 (the successor of CVC4~
\cite
{
CVC4
}
) will support
{
\formatName
}
as
solver cvc5 (the successor of CVC4~
\cite
{
CVC4
}
) will support
Alethe
as
one of multiple proof output formats.
In addition to this reference, the proof format has been discussed in past
...
...
@@ -380,9 +378,9 @@ for processing, such as Skolemization, renaming of variables, and other
manipulations of bound variables~
\cite
{
barbosa-2019
}
.
At the end of the document Section~
\ref
{
sec:rules
}
contains a full list
of all proof rules used by SMT solvers supporting
{
\formatName
}
.
of all proof rules used by SMT solvers supporting
Alethe
.
\section
{
Core Concepts of
{
\formatNam
e
}
}
\section
{
Core Concepts of
Aleth
e
}
\label
{
sec:coreconcepts
}
This section provides an overview of the core concepts of the proof
...
...
@@ -394,13 +392,13 @@ practitioners.
\paragraph
{
Multi-Sorted First-Order Logic.
}
Many SMT solvers use the SMT-LIB language~
\cite
{
SMTLIB
}
as both its
input and output language and
{
\formatName
}
builds on this language.
input and output language and
Alethe
builds on this language.
This includes its multi-sorted first-order logic. The available sorts
depend on the selected SMT-LIB theory/logic and they can also be extended by the
user, but a distinguished
$
\mathbf
{
Bool
}$
sort is always available.
In addition to the multi-sorted first-order logic used by SMT-LIB,
{
\formatName
}
also uses Hilbert's choice operator
$
\varepsilon
$
. Choice acts
Alethe
also uses Hilbert's choice operator
$
\varepsilon
$
. Choice acts
like a binder. The term
$
\varepsilon
x.
\varphi
$
stands for a value
$
v
$
,
such that
$
\varphi
[
v
/
x
]
$
is true if such a value exists. Any value is
possible otherwise.
...
...
@@ -422,7 +420,7 @@ for $\varphi$ and odd for $\psi$, or vice versa. To simplify the
notation we will omit the sort of terms when possible.
\paragraph
{
Steps.
}
A proof in the
{
\formatName
}
format is an indexed list of steps.
A proof in the
Alethe
format is an indexed list of steps.
To mimic the concrete syntax we will write a step
\begin{plListEq}
c
_
1,
\,\dots
,
\,
c
_
k
&
\proofsep
i.
&
\varphi
_
1,
\dots
,
\varphi
_
l
&
...
...
@@ -463,7 +461,7 @@ too. In this case each assumption must be discharged with an appropriate
step. The only rule to do so is the
\proofRule
{
subproof
}
rule.
\paragraph
{
Subproofs and Lemmas.
}
{
\formatName
}
uses subproof to prove lemmas and to manipulate the context.
Alethe
uses subproof to prove lemmas and to manipulate the context.
To prove lemmas, a subproof can
introduce local assumptions. The subproof
\emph
{
rule
}
discharges the
local assumptions.
...
...
@@ -542,7 +540,7 @@ it deduces $\neg \varphi_1 \lor \varphi_2$.
\paragraph
{
Resolution.
}
CDCL(
$
T
$
)-based SMT solvers, and especially their SAT solvers,
are fundamentally based on clauses. Hence,
{
\formatName
}
also uses
are fundamentally based on clauses. Hence,
Alethe
also uses
clauses. Nevertheless, since SMT solvers do not enforce a strict
clausal normal-form, ordinary disjunction is also used.
Keeping clauses and disjunctions distinct, simplifies rule checking.
...
...
@@ -555,7 +553,7 @@ use the standard SMT-LIB \smtinline{or} operator. The \proofRule{or}
% PF TODO: I would fix that just now, using an attribute to distinguish, and a
% unique rule
The
{
\formatName
}
proofs use a generalized propositional
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
difference only serves to distinguish if the rule was introduced by
...
...
@@ -695,7 +693,7 @@ when the term below the equality changes during proof search. One such
case is the instantiation of universally quantified variables. If an
instantiated variable appears below an equality, then the equality might
have an arbitrary order after instantiation.
Nevertheless, consumers of
{
\formatName
}
must consider the possible
Nevertheless, consumers of
Alethe
must consider the possible
implicit reordering of equalities.
% PF TODO why concrete? Why not simply call it Semantics?
...
...
@@ -985,7 +983,7 @@ instantiation and resolution steps (line 10--15)}\label{fig:proof_ex}
\section
{
The Concrete Syntax
}
\label
{
sec:syntax
}
The concrete text representation of the
{
\formatName
}
proofs
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.
...
...
@@ -1186,7 +1184,7 @@ no $\grT{define-fun}$ commands are issued and the constants are expanded.
\label
{
sec:rules-overview
}
Section~
\ref
{
sec:rules
}
provides a list of all proof rules supported by
{
\formatName
}
. To make this long list more accessible, this section
Alethe
. To make this long list more accessible, this section
first lists multiple classes of proof rules. The classes are not
mutually exclusive: for example, the
\proofRule
{
la
\_
generic
}
rule is
both a linear arithmetic rule and introduces a tautology.
...
...
@@ -1433,7 +1431,7 @@ Rule & Description \\
\section
{
List of Proof Rules
}
\label
{
sec:rules
}
The following lists all rules of
{
\formatName
}
.
The following lists all rules of
Alethe
.
\input
{
rule
_
list
}
...
...
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