%\documentclass[aspectratio=169]{beamer}
\documentclass{beamer}
%\usepackage[czech]{babel}
\usepackage[utf8]{inputenc}
%balíček na A4
\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{amsbsy}
\usepackage{amssymb}

\usepackage{graphicx}

%\usepackage{mathpazo}

%\usepackage[mathlf]{MinionPro}
\usepackage{sansmathfonts}
%\usepackage[mathlf,textlf]{MyriadPro}
%\usepackage{mathpazo}
\usepackage[small]{eulervm}
%\usepackage{newtxmath}

\usepackage{mathtools}
\usepackage{xcolor}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{setspace}
\usepackage{array}
\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}}

\makeatletter
    \newenvironment{withoutheadline}{
        \setbeamertemplate{headline}[default]
        \def\beamer@entrycode{\vspace*{-\headheight}}
    }{}
\makeatother

\title{SMT Solving for the Theory of Bit-Vectors}
\author{Martin Jonáš \vspace{-0.3cm}}
\institute{PhD Thesis Proposal \vspace{1cm}}
%\date
\date{\today}
%\subject{IA072 -- Seminar on Concurrency}

\usetheme{Antibes}
\setbeamertemplate{headline}{}
\setbeamertemplate{navigation symbols}{}%remove navigation symbols

\setbeamertemplate{footline}[frame number]

\definecolor{foreground}{RGB}{255,255,255}
\definecolor{background}{RGB}{24,24,24}
% \definecolor{title}{RGB}{107,174,214}
\definecolor{title}{RGB}{255,255,255}
\definecolor{main}{RGB}{39,66,96}
\definecolor{gray}{RGB}{155,155,155}
\definecolor{subtitle}{RGB}{102,255,204}
\definecolor{hilight}{RGB}{233,140,5}
\definecolor{vhilight}{RGB}{251,95,37}

\setbeamercolor{titlelike}{fg=title,bg=main}
\setbeamercolor{subtitle}{fg=subtitle}
\setbeamercolor{institute}{fg=gray}
%\setbeamercolor{normal text}{fg=foreground,bg=background}

\setbeamercolor*{block title}{fg=white, bg=main}
\setbeamercolor*{block body}{fg=black, bg=main!5}
\setbeamercolor*{block title example}{fg=white, bg=vhilight!65}
\setbeamercolor*{block body example}{fg=black, bg=vhilight!10}

\setbeamercolor{item}{fg=main} % color of bullets
%\setbeamercolor{subitem}{fg=gray}
\setbeamercolor{alerted text}{fg=hilight}
\setbeamercolor{description item}{fg=hilight}
%\setbeamercolor{itemize/enumerate subbody}{fg=gray}
\setbeamertemplate{itemize subitem}{{\textendash}}
\setbeamerfont{itemize/enumerate subbody}{size=\small}
\setbeamerfont{itemize/enumerate subitem}{size=\small}

\DeclareSymbolFont{operators}{\encodingdefault}{ppl}{m}{n}
\DeclareMathAlphabet{\mathbf}{\encodingdefault}{ppl}{bx}{n}
\DeclareMathAlphabet{\mathit}{\encodingdefault}{ppl}{m}{it}

\newcommand{\set}[1]{\{#1\}}
\newcommand{\bitvec}[1]{ \texttt{bitvec}_{#1} }
\newcommand{\so}[2]{\ensuremath{#1_{[#2]}}}
\newcommand{\concat}[2]{ \ensuremath{\texttt{concat}_{[#1,#2]}}}
\newcommand{\extract}[3]{ \texttt{extract}_{[#1, #2, #3] } }
\newcommand{\bvnot}{ \texttt{not} }
\newcommand{\bvand}{ \texttt{and} }
\newcommand{\bvor}{ \texttt{or} }
\newcommand{\bvshl}{ \texttt{shl} }
\newcommand{\bvshr}{ \texttt{shr} }
\newcommand{\computeBDD}{ \texttt{computeBDD} }
\newcommand{\sat}{\texttt{sat}}
\newcommand{\unsat}{\texttt{unsat}}
\newcommand{\Zplus}{\mathbb{N}^+}
\newcommand{\ite}{\texttt{ite}}
\newcommand{\levels}{\mathit{levels}}
\newcommand{\true}{\mathit{true}}
\newcommand{\false}{\mathit{false}}
\newcommand{\BV}{\ensuremath{\mathcal{BV}}}
\newcommand{\QFBV}{\ensuremath{\mathcal{QFBV}}}


\let\otp\titlepage
\renewcommand{\titlepage}{\otp\addtocounter{framenumber}{-1}}

\begin{document}

\begin{frame}[plain]
 \titlepage
\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 and relation symbols are given interpretations by the theory.

  \bigskip

  For example
  \begin{itemize}
  \item $x + y = 3~\wedge~x > 1~\wedge~y > x$ is satisfiable over the
    integers,
  \item $3 = x + x$ is unsatisfiable over the integers,
  \item $3 = x + x$ is satisfiable over the rationals.
  \end{itemize}

\end{frame}

\section{Theory of Bit-Vectors}
\begin{frame}
  \frametitle{Theory of Bit-Vectors}

  Hardware and programming languages do not work over integers.

  The formula
  \[
    (x > 0)~\wedge~(y > 0)~\wedge~(x + y < 0)
  \]
  should be satisfiable due to overflows.

  Theory of bit-vectors describes bounded integers (or vectors of
  bits) with:
  \begin{itemize}
  \item arithmetic operations,
  \item bitwise operations,
  \item comparison.
  \end{itemize}

  \smallskip

  Often used in modelling of software.
\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. For example in
  \begin{itemize}
  \item invariant generation,
  \item ranking function synthesis,
  \item cycle summarization,
  \item symbolic state equality test.
  \end{itemize}

  \bigskip

  Quantifier bit-vector formulas traditionally solved by
  \alert{quantifier instantiation}.
\end{frame}

\section{Symbolic Approach to Quantified Bit-Vectors}
\begin{frame}
  \frametitle{Symbolic Approach to Quantified Bit-Vectors} Boolean and
  Bit-Vector formulas can be represented by \alert{binary decision
    diagrams} (BDDs).

  \bigskip

  The set of satisfying assignments of a Boolean formula
  \[
    x \wedge (y \vee \neg z)
  \]
  can be represented by a BDD

  \begin{center}
  \begin{tikzpicture}[every node/.style={draw, circle}]
    \node (x) at (2,3) {$x$};
    \node (y) at (1.1,1.7) {$y$};
    \node (z) at (2.1,1) {$z$};

    \node [rectangle] (true) at (0,0) {1};
    \node [rectangle] (false) at (4,0) {0};

    \path[auto, every node/.style={}, above, dashed]
    (x) edge [above right] node {} (false)
    (y) edge [above right] node {} (z)
    (z) edge [above right] node {} (true);

    \path[auto, every node/.style={}, above left]
    (x) edge [] node {} (y)
    (y) edge [] node {} (true)
    (z) edge [] node {} (false);

  \end{tikzpicture}
\end{center}
\end{frame}

\begin{frame}
  \frametitle{Symbolic Approach to Quantified Bit-Vectors}

  Efficient algorithm are known for operations with BDDs (e.g. conjunction,
  disjunction, quantifiers).

  \bigskip

  Satisfiability of a BDD can be also easily checked.

  \bigskip

  Quantification usually reduces the size of the BDD -- useful for
  quantified bit-vectors.
\end{frame}

\begin{frame}
  \frametitle{Symbolic Approach to Quantified Bit-Vectors}

  I 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}

  \bigskip

  Q3B is the \alert{winner} of SMT Competition 2016 in the category of quantified bit-vectors.
\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 known syntactic simplifications of quantified
    bit-vector formulas.
  \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}

\begin{frame}
  \frametitle{Reader's questions}

  \emph{``Existuje zde předpoklad, že by výzkum v tomto směru (například
  zvolení konkrétní metody pro uspořádání na základě nějaké analýzy
  před samotným výpočtem) mohl vést k metodám generující ,,lepší``
  uspořádání?''}

\bigskip
\bigskip

  Ano, takový předpoklad existuje.
\end{frame}

\begin{frame}
  \frametitle{Reader's questions}

  \emph{``Má student nějaké konkrétnější představy o metodách zjemňování
  abstrakcí, které by chtěl implementovat? Budou tyto metody založené
  na informacích o tvaru/struktuře formule, nebo budou využívat
  informace z vyšší úrovně, například o verifikovaném programu?''}

\bigskip
\bigskip

Tyto metody by měly být založené na struktuře formule. Měly by
využívat informace o důvodu nepřesnosti abstrakce -- například z
nekorektní model nebo nekorektní nesplnitelné jádro formule.
\end{frame}

\begin{frame}
  \frametitle{Reader's questions}

  \emph{``Student má v plánu implementovat extrakci ,,UNSAT core`` pro dočasné
  BDD vytvořené během výpočtu. K čemu se takové formule dají použít?''}

  \bigskip
  \bigskip

  Takové formule se dají použít k přesnějšímu určení důvodu
  nesplnitelnosti formule -- vhodné například pro verifikační nástroje
  nebo zpřesňování abstrakcí.
\end{frame}

\begin{frame}
  \frametitle{Reader's questions}

  \emph{``Co se týká teoretické složitosti problému, z textu mi není jasné,
  jestli se student bude zaměřovat i na dokázání složitosti třídy
  AEXPTIME(poly) vzhledem k vlastní inkluzi mezi třídami NEXPTIME a
  EXPSPACE, nebo zda je cílem ukázat pouze příslušnost problému
  rozhodování formulí kvantifikovaných bitových vektorů k
  AEXPTIME(poly).''}

\bigskip
\bigskip

  V plánu je jen ukázat příslušnost daného problému do třídy AEXPTIME(poly).
\end{frame}

\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
