55/191
\begin{frame}[fragile,t]{Hoare Triples}
  \vspace*{-1.35ex}
  \begin{block}{}    
    A \emph{Hoare triple} is a program specification $\hoaretriple{\aform}{\aprog}{\bform}$ where:
    \begin{itemize} 
      \item $\aform$ is the \emph{precondition},
      \item $\aprog$ a core program,
      \item $\bform$ is the \emph{postcondition}.
    \end{itemize}
  \end{block}
  \pause
  
  Quantifiers in $\aform$ and $\bform$ \alert{only} bind variables \alert{not in} $\aprog\,  $!
  \pause 

  \begin{block}{}
    A \emph{state} (or \emph{store}) of core programs is a function $\saluf$ 
    that to each variable $x$ assigns an integer $\aluf{x}$.
  \end{block}
  \pause
  
  The formulas $\aform$, $\bform$ are predicate logic formulas over
  \begin{talign}
    \asetfuncs & = \setexp{\const{0}{\scriptstyle /0},\,
                           \const{1}{\scriptstyle /0},\,
                           \sbinfunc{-}{\scriptstyle /2},\, 
                           \sbinfunc{+}{\scriptstyle /2}, 
                           \sbinfunc{*}{\scriptstyle /2}} 
    & & &
    \asetpreds & = \setexp{ \sbinpred{<}{\scriptstyle /2},\, \sbinpred{=}{\scriptstyle /2} }
  \end{talign}
  \pause                    
  we define for all states $\saluf\,$:
  \begin{talign}
    \saluf \satisfies \aform 
      \;\;\Longleftrightarrow\;\;
    \standardZ \satisfieslookup{\saluf} \aform  
  \end{talign}
  where $\saluf$ is viewed as environment, 
  and $\standardZ$ has domain $\ints$,
  and interprets function and predicate symbols in standard manner.
  \vspace{10cm}
\end{frame}