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

First version of defense

parent dd110059
Loading
Loading
Loading
Loading
+268 −4
Original line number Original line Diff line number Diff line
\documentclass{beamer}
\documentclass[aspectratio=169]{beamer}
%\usepackage[czech]{babel}
%\usepackage[czech]{babel}
\usepackage[utf8]{inputenc}
\usepackage[utf8]{inputenc}
%balíček na A4
%balíček na A4
@@ -13,7 +13,7 @@


%\usepackage[mathlf]{MinionPro}
%\usepackage[mathlf]{MinionPro}
\usepackage{sansmathfonts}
\usepackage{sansmathfonts}
\usepackage[mathlf,textlf]{MyriadPro}
%\usepackage[mathlf,textlf]{MyriadPro}
%\usepackage{mathpazo}
%\usepackage{mathpazo}
\usepackage[small]{eulervm}
\usepackage[small]{eulervm}
%\usepackage{newtxmath}
%\usepackage{newtxmath}
@@ -28,6 +28,18 @@
\usepackage{tabularx}
\usepackage{tabularx}
\usepackage{pbox}
\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}
\captionsetup{compatibility=false}
%\renewcommand{\arraystretch}{1}
%\renewcommand{\arraystretch}{1}
%\hypersetup{pdfpagemode={FullScreen}}
%\hypersetup{pdfpagemode={FullScreen}}
@@ -111,9 +123,261 @@


\frame{\titlepage}
\frame{\titlepage}


\section{Preliminaries}
\section{Propositional Satisfiability}
\begin{frame}
\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{frame}


\end{document}
\end{document}