Commit 21401a14 authored by Martin Jonáš's avatar Martin Jonáš
Browse files

First version of defense

parent dd110059
\documentclass{beamer}
\documentclass[aspectratio=169]{beamer}
%\usepackage[czech]{babel}
\usepackage[utf8]{inputenc}
%balíček na A4
......@@ -13,7 +13,7 @@
%\usepackage[mathlf]{MinionPro}
\usepackage{sansmathfonts}
\usepackage[mathlf,textlf]{MyriadPro}
%\usepackage[mathlf,textlf]{MyriadPro}
%\usepackage{mathpazo}
\usepackage[small]{eulervm}
%\usepackage{newtxmath}
......@@ -28,6 +28,18 @@
\usepackage{tabularx}
\usepackage{pbox}
\usepackage{tikz}
\tikzset{
invisible/.style={opacity=0},
visible on/.style={alt=#1{}{invisible}},
blank/.style={},
red on/.style={alt={#1{fill=red!10}{blank}}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
},
}
\captionsetup{compatibility=false}
%\renewcommand{\arraystretch}{1}
%\hypersetup{pdfpagemode={FullScreen}}
......@@ -111,9 +123,261 @@
\frame{\titlepage}
\section{Preliminaries}
\section{Propositional Satisfiability}
\begin{frame}
Test
\frametitle{Propositional Satisfiability}
Propositional satisfiability problem (SAT) -- decide whether a
propositional formula is satisfiable.
\bigskip
For example
$\varphi = (y \vee z)~\wedge~(\neg y \vee z)~\wedge~(y \vee x
\vee z)~\wedge~(y \vee \neg x \vee \neg z)$ is satisfiable.
\bigskip
Usually solved by a \alert{conflict driven clause learning} algorithm (CDCL), which relies on:
\begin{itemize}
\item preprocessing,
\item variable assignment (with heuristics),
\item unit propagation,
\item conflict analysis,
\item clause learning,
\item backtracking,
\item restarts.
\end{itemize}
% \begin{example}
% $\varphi = (\neg y \vee z)~\wedge~(\neg y \vee z)~\wedge~(y \vee x \vee z)~\wedge~(y \vee \neg x \vee \neg z)$.
% \bigskip
% \begin{tikzpicture}[every node/.style={draw}]
% \node (e) at (5,4) {decide};
% \node [visible on=<2->] (x) at (2,3) {decide};
% \node [visible on=<3->] (xy) at (0,2) {propagate};
% \node [visible on=<4->] (xyz) at (0,0.5) {conflict (learn $\neg y$)};
% \node [visible on=<5->] (-y) at (9,3) {decide};
% \node [visible on=<6->] (-yz) at (7,2) {propagate};
% \node [visible on=<7->] (-yz-x) at (7,0.5) {sat};
% \path[auto, every node/.style={}, above]
% (e) edge [visible on=<2->] node {$x$} (x)
% (x) edge [visible on=<3->] node {$y$} (xy)
% (xy) edge [visible on=<4->, left] node {$z$} (xyz)
% (e) edge [visible on=<5->] node {$\neg y$} (-y)
% (-y) edge [visible on=<6->] node {$z$} (-yz)
% (-yz) edge [visible on=<7->, left] node {$\neg x$} (-yz-x);
% \end{tikzpicture}
% \end{example}
\end{frame}
\section{Satisfiability Modulo Theories}
\begin{frame}
\frametitle{Satisfiability Modulo Theories}
Decide the satisfiability of a first-order formula in a given
theory.
\smallskip
Function symbols are given interpretations by the theory.
\bigskip
Traditionally solved by the \alert{CDCL modulo theories} -- combination of
CDCL and a specialized theory solver.
\begin{example}
Let $\varphi = (x + y = 3) \wedge (x > 1) \wedge (y = 2 \vee y = 1)$.
\begin{enumerate}[<+->]
\item Propositional model $\{ x + y = 3,~x > 1,~y = 2 \} $.
\item This model \textbf{is not} consistent with the theory of integers.
\item Conjoin $\neg (x + y = 3) \vee \neg (x > 1) \vee \neg (y = 2)$ to $\varphi$.
\item Propositional model $\{ x + y = 3,~x > 1,~y = 1 \} $.
\item This model \textbf{is} consistent with the theory of integers.
\item $\varphi$ is satisfiable.
\end{enumerate}
\end{example}
\end{frame}
\section{Theory of Bit-Vectors}
\begin{frame}
\frametitle{Theory of Bit-Vectors}
Theory of bit-vectors describes bounded integers (or vectors of
bits) with:
\begin{itemize}
\item arithmetic operations,
\item bitwise operations,
\item comparison.
\end{itemize}
Often used in modelling of software.
\bigskip
Different from mathematical integers -- for example the formula
\[
\varphi = (x^{[32]} >_s 0)~\wedge~(y^{[32]} >_s 0)~\wedge~(x^{[32]} + y^{[32]} = 0)
\]
is \alert{satisfiable}.
\end{frame}
\section{Quantifier-free Bit-Vector Logic}
\begin{frame}
\frametitle{Quantifier-free Bit-Vector Logic} Quantifier-free
bit-vector formulas usually solved by reduction to a propositional
formula (\emph{bit-blasting}) and using a SAT solver.
\smallskip
Approach taken by Z3, CVC4, Boolector, UCLID, Yices, \ldots.
\bigskip
Alternative approaches exist:
\begin{itemize}
\item model-constructing satisfiability calculus,
\item abstract CDCL,
\item stochastic local search.
\end{itemize}
\end{frame}
\section{Quantified Bit-Vector Logic}
\begin{frame}
\frametitle{Quantified Bit-Vector Logic}
In many software verification applications, quantifiers are
necessary.
\bigskip
Quantifier bit-vector formulas traditionally solved by
\alert{quantifier instantiation}.
\begin{example}
Let $\varphi = 3 < a ~\wedge~ \forall x\,(a \not = 2 \times x)$
\pause
\begin{itemize}[<+->]
\item $3 < a$ is satisfiable with model $a = 4$.
\item $a = 4$ not a model of $\forall x \,(a \not = 2 \times x)$ (corresponding counter-example is $x = 2$).
\item Add instance of the quantifier for $x = 2$.
\item $3 < a ~\wedge~ (a \not = 2 \times 2)$ is satisfiable with model $a = 5$.
\item $a = 5$ is a model of $\forall x \,(a \not = 2 \times x)$.
\item $\varphi$ is satisfiable
\end{itemize}
\end{example}
\end{frame}
\section{Symbolic Approach to Quantified Bit-Vectors}
\begin{frame}
\frametitle{Symbolic Approach to Quantified Bit-Vectors}
Bit-vector formulas can be represented by \alert{binary decision diagrams} (BDD).
\bigskip
Assuming that $x^{[4]} = x_3x_2x_1x_0$, formula
\[
x^{[4]} >_u 0
\]
is represented by
\begin{center}
\begin{tikzpicture}[every node/.style={draw, circle}]
\node (x0) at (2,4) {$x_0$};
\node (x1) at (3,3) {$x_1$};
\node (x2) at (4,2) {$x_2$};
\node (x3) at (5,1) {$x_3$};
\node [rectangle] (true) at (0,0) {true};
\node [rectangle] (false) at (6,0) {false};
\path[auto, every node/.style={}, above, dashed]
(x0) edge [above right] node {$0$} (x1)
(x1) edge [above right] node {$0$} (x2)
(x2) edge [above right] node {$0$} (x3)
(x3) edge [above right] node {$0$} (false);
\path[auto, every node/.style={}, above left]
(x0) edge [] node {$1$} (true)
(x1) edge [] node {$1$} (true)
(x2) edge [] node {$1$} (true)
(x3) edge [] node {$1$} (true);
\end{tikzpicture}
\end{center}
\end{frame}
\begin{frame}
\frametitle{Symbolic Approach to Quantified Bit-Vectors}
Efficient algorithm are known for operations with BDDs (conjunction,
disjunction, quantifiers).
\smallskip
Quantification usually reduces the size of the BDD -- useful for
quantified bit-vectors.
\bigskip
We have implemented the solver Q3B, which
\begin{itemize}
\item simplifies the formula,
\item converts the formula to the BDD,
\item tries to use approximations if the precise BDD computation is
too expensive.
\end{itemize}
Results show that Q3B is \alert{more efficient} than standard SMT solvers.
\end{frame}
\section{Aims of the Work}
\begin{frame}
\frametitle{Aims of the Work}
\textbf{Major aims}
\begin{itemize}
\item Further development of the symbolic solver for quantified-bit
vectors.
\item Hybrid approach to quantified bit-vectors.
\end{itemize}
\bigskip
\textbf{Minor aims}
\begin{itemize}
\item Determining a computational complexity of quantified bit-vector logic with
bit-widths represented in binary.
\item Extending simplifications using unconstrained variables
\end{itemize}
\end{frame}
\section{Publications}
\begin{frame}
\frametitle{Publications}
\begin{itemize}
\item \textsc{Jonáš}, M. and J. \textsc{Strejček}. \emph{``Solving
Quantified Bit-Vector Formulas Using Binary Decision Diagrams.''}
In: SAT 2016, Bordeaux, France, July 5-8, 2016, Proceedings. 2016,
pp. 267-283 \bigskip
Main author of the text of the paper, implemented the SMT solver and conducted all the experiments.
\item \textsc{Chalupa} M., M. \textsc{Jonáš}, J. \textsc{Slabý},
J. \textsc{Strejček}, and M. \textsc{Vitovská}. \emph{``Symbiotic 3:
New Slicer and Error-Witness Generation -- (Competition
Contribution).''} In: TACAS 2016, Eindhoven, The Netherlands, April
2-8, 2016, Proceedings, pp. 946-949
\bigskip
Wrote parts of the paper and prepared the environment that was used
to run experiments with the implemented tool Symbiotic.
\end{itemize}
\end{frame}
\end{document}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment