\documentclass[10pt,a4paper]{article}
\usepackage{amssymb}
\usepackage[left=2.25cm,right=2.25cm,top=2.25cm,bottom=2.75cm]{geometry}
\usepackage{graphicx}
\usepackage{isabelle}
\usepackage{isabellesym}
\usepackage[only,bigsqcap]{stmaryrd}
\usepackage{wasysym} % for \<hole>

\usepackage{pdfsetup}

\urlstyle{tt}
\isabellestyle{it}

% for uniform font size
%\renewcommand{\isastyle}{\isastyleminor}

\renewcommand{\isacharunderscore}{\_}

\begin{document}

\title{GRATchk: Verified (UN)SAT Certificate Checker}
\author{Peter Lammich}

\maketitle

\begin{abstract}
\noindent
GRATchk is a formally verified and efficient checker for satisfiability and 
unsatisfiability certificates for Boolean formulas.

The verification covers the actual efficient implementation, and 
the semantics of a formula down to the integer sequences that represents it.

The satisfiability certificates are non-contradictory lists of literals, 
as output by any standard SAT solver. The unsatisfiability certificates are 
GRAT certificates, which can be generated from standard DRAT certificates 
by the GRATgen tool.
\end{abstract}

\tableofcontents

% sane default for proof documents
\parindent 0pt
\parskip 0.5ex

\clearpage
\begin{figure}[h!]
\begin{center}
  \includegraphics[width=0.75\textwidth,keepaspectratio]{session_graph}
\end{center}
\caption{Theory dependency graph}
\label{fig:thys}
\end{figure}
\clearpage

\section{Introduction}
We present an efficient verified checker for satisfiability and unsatisfiability
certificates obtained from SAT solvers. 

Our sat certificates are lists of non-contradictory literals, 
as produced by virtually any SAT solver.

The de facto standard for unsat certificates is DRAT. 
Here, our checker uses a two step approach: 
The unverified GRATgen tool converts the DRAT certificates into GRAT certificates, 
which are then checked against the original formula by the verified GRATchk, 
presented in this formalization.

The GRAT certificates are engineered to admit a simple and efficient checker
algorithm, which is well suited for formal verification. 
We use the Isabelle Refinement Framework to verify an efficient imperative
implementation of the checker algorithm.

Our verification covers the semantics of a formula down to the integer sequence
that represents it. This way, only a simple untrusted parser is required to 
read the formula from a file to an integer array. 
In Section~\ref{sec:correctness_summary}, we give a complete and self-contained
summary of what we actually proved.

% generated text of all theories
\input{session}

% optional bibliography
%\bibliographystyle{abbrv}
%\bibliography{root}
 
% \bibliographystyle{abbrv}
% \bibliography{bib}

\end{document}
