You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
292 lines
7.9 KiB
292 lines
7.9 KiB
%\input{util/ltl_macros}
|
|
|
|
\newcommand{\dom}{\ensuremath\mathcal{A}}
|
|
\newcommand{\boolDom}{\ensuremath\mathbb{B}}
|
|
\newcommand{\N}{\ensuremath\mathbb{N}}
|
|
\newcommand{\Z}{\ensuremath\mathbb{Z}}
|
|
\newcommand{\Q}{\ensuremath\mathbb{Q}}
|
|
\newcommand{\R}{\ensuremath\mathbb{R}}
|
|
|
|
\renewcommand{\phi}{\varphi}
|
|
\renewcommand{\implies}{\rightarrow}
|
|
\newcommand{\imp}{\rightarrow}
|
|
\newcommand{\entails}{\enspace \vdash \enspace}
|
|
%\newcommand{\model}{\enspace \vDash \enspace}
|
|
\newcommand{\ent}{\enspace \vdash \enspace}
|
|
\newcommand{\nmodel}{\enspace \nvDash \enspace}
|
|
\newcommand{\nent}{\enspace \nvdash \enspace}
|
|
\newcommand{\eqv}{\leftrightarrow}
|
|
\newcommand{\biimp}{\leftrightarrow}
|
|
\newcommand{\lxor}{\oplus}
|
|
\newcommand{\nentails}{\nvdash}
|
|
\newcommand{\nmodels}{\nvDash}
|
|
|
|
|
|
\newcommand{\impi}{\ensuremath{\imp_i}}
|
|
\newcommand{\impe}{\ensuremath{\imp_e}}
|
|
\newcommand{\andi}{\ensuremath{\land_i}}
|
|
\newcommand{\ande}[1]{\ensuremath{\land_{e_#1}}\xspace}
|
|
\newcommand{\ori}[1]{\ensuremath{\lor_{i_#1}}\xspace}
|
|
\newcommand{\ore}{\ensuremath{\lor_e}}
|
|
\newcommand{\negi}{\ensuremath{\neg_i}}
|
|
\newcommand{\nege}{\ensuremath{\neg_e}}
|
|
\newcommand{\bote}{\ensuremath{\bot_e}\xspace}
|
|
\newcommand{\negnege}{\ensuremath{\neg\neg_e}\xspace}
|
|
\newcommand{\negnegi}{\ensuremath{\neg\neg_i}\xspace}
|
|
\newcommand{\foralli}{\ensuremath{\forall_i}\xspace}
|
|
\newcommand{\foralle}{\ensuremath{\forall_e}\xspace}
|
|
\newcommand{\existi}{\ensuremath{\exists_i}\xspace}
|
|
\newcommand{\existe}{\ensuremath{\exists_e}\xspace}
|
|
\newcommand{\prem}{\text{\scriptsize premise}} %% \prem = premise
|
|
\newcommand{\assum}{\text{\scriptsize assumption}} %% \assum = assumption
|
|
\newcommand{\freshVar}[1]{\text{\scriptsize fresh~{#1}}}
|
|
\newcommand{\MT}{\text{MT}~}
|
|
\newcommand{\PBC}{\text{PBC}~}
|
|
\newcommand{\LEM}{\text{LEM}}
|
|
\newcommand{\copying}{\text{\scriptsize copy}~}
|
|
|
|
\newcommand{\true}{\ensuremath{\top}}
|
|
\newcommand{\false}{\ensuremath{\bot}}
|
|
\newcommand{\F}{\textbf{F}}
|
|
\newcommand{\T}{\textbf{T}}
|
|
|
|
\newcommand{\variableOrder}[1]{
|
|
\foreach\variable in {#1}
|
|
{\ensuremath{~\variable<}}%% FIXME
|
|
}
|
|
|
|
\newcommand{\union}{\cup}
|
|
\newcommand{\intersect}{\cap}
|
|
% multiple choice itemize
|
|
\newcommand{\ticked}{\ensuremath{\boxtimes}}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% TSEITIN rules
|
|
\newcommand{\tseitinOr}[3]{
|
|
\def\CHI{#1}%
|
|
\def\PHI{#2}%
|
|
\def\PSI{#3}%
|
|
\ensuremath{(\lnot \PHI \lor \CHI) \land (\lnot \PSI \lor \CHI) \land (\lnot \CHI \lor \PHI \lor \PSI)}%
|
|
}
|
|
\newcommand{\tseitinAnd}[3]{
|
|
\def\CHI{#1}%
|
|
\def\PHI{#2}%
|
|
\def\PSI{#3}%
|
|
\ensuremath{(\lnot \CHI \lor \PHI) \land (\lnot \CHI \lor \PSI) \land (\lnot \PHI \lor \lnot \PSI \lor \CHI)}%
|
|
}
|
|
\newcommand{\tseitinNot}[2]{
|
|
\def\CHI{#1}%
|
|
\def\PHI{#2}%
|
|
\ensuremath{(\lnot \CHI \lor \lnot \PHI) \land (\CHI \lor \PHI)}%
|
|
}
|
|
\newcommand{\tseitinImp}[3]{
|
|
\def\CHI{#1}%
|
|
\def\PHI{#2}%
|
|
\def\PSI{#3}%
|
|
\ensuremath{(\lnot \CHI \lor \neg \PHI \lor \PSI) \land (\PHI \lor \CHI) \land (\neg \PSI \lor \CHI)}%
|
|
}
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% DPLL helper
|
|
\newenvironment{dpllCNFInput}%
|
|
{\begin{enumerate}[leftmargin=2.0em,itemindent=2.45em,label=Clause {\arabic*}:]}%
|
|
{\end{enumerate}}%
|
|
|
|
\newenvironment{dplltabular}[1]
|
|
{\begin{tabular}{ |l|*{#1}{c|} } \hline}
|
|
{\end{tabular}}
|
|
|
|
\ExplSyntaxOn
|
|
\NewDocumentCommand{\dpllrow}{m}
|
|
{
|
|
\seq_set_split:Nnn \l_row {|} { #1 }
|
|
\seq_use:Nn \l_row { & }
|
|
\\
|
|
\hline
|
|
}
|
|
\seq_new:N \l_row % allocate a sequence
|
|
\ExplSyntaxOff
|
|
|
|
\newcommand{\dpllStep}[1]{
|
|
Step & \dpllrow{#1}
|
|
}
|
|
|
|
\newcommand{\dpllDecL}[1]{
|
|
Decision Level & \dpllrow{#1}
|
|
}
|
|
|
|
\newcommand{\dpllAssi}[1]{
|
|
Assignment & \dpllrow{#1}
|
|
}
|
|
|
|
\newcommand{\dpllBCP}[1]{
|
|
BCP & \dpllrow{#1}
|
|
}
|
|
|
|
\newcommand{\dpllPL}[1]{
|
|
PL & \dpllrow{#1}
|
|
}
|
|
|
|
\newcommand{\dpllDeci}[1]{
|
|
Decision & \dpllrow{#1}
|
|
}
|
|
|
|
\newcommand{\dpllClause}[3]{
|
|
\def\ITEM{#1}%
|
|
\def\CLAUSE{#2}%
|
|
Cl. \ITEM: \CLAUSE & \dpllrow{#3}
|
|
}
|
|
\newcommand{\learnedClause}[3]{
|
|
\def\ITEM{#1}%
|
|
\def\CLAUSE{#2}%
|
|
Cl. \ITEM: \CLAUSE & \dpllrow{#3}
|
|
}
|
|
\newcommand{\blockingClause}[3]{
|
|
\def\ITEM{#1}%
|
|
\def\CLAUSE{#2}%
|
|
Blocking Cl. \ITEM: \CLAUSE & \dpllrow{#3}
|
|
}
|
|
|
|
\ExplSyntaxOn
|
|
\NewDocumentCommand{\clause}{m}
|
|
{
|
|
\seq_set_split:Nnn \l_clause {;} { #1 }
|
|
\seq_use:Nn \l_clause { \lor }
|
|
}
|
|
\seq_new:N \l_clause % allocate a sequence
|
|
\ExplSyntaxOff
|
|
|
|
\ExplSyntaxOn
|
|
\NewDocumentCommand{\cube}{m}
|
|
{
|
|
\seq_set_split:Nnn \l_cube {;} { #1 }
|
|
\seq_use:Nn \l_cube { \land }
|
|
}
|
|
\seq_new:N \l_cube % allocate a sequence
|
|
\ExplSyntaxOff
|
|
|
|
\newcommand{\cmark}{\ding{51}}
|
|
\newcommand{\xmark}{\ding{55}}
|
|
\newcommand{\done}{\cmark}
|
|
\newcommand{\conflict}{\{\} \xmark}
|
|
|
|
\NewEnviron{conflictgraph}[1][1.5cm]{%
|
|
\begin{tikzpicture}[->,
|
|
>=stealth',
|
|
shorten >=1pt,
|
|
auto,
|
|
node distance=#1,
|
|
thick,
|
|
base node/.style={circle,draw,minimum size=20pt},
|
|
real node/.style={double,circle,draw,minimum size=20pt}]
|
|
\BODY
|
|
\end{tikzpicture}
|
|
}
|
|
|
|
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
|
|
\node[shape=circle,draw,inner sep=1.5pt] (char) {#1};}}
|
|
|
|
\tikzset{
|
|
line/.style={-},
|
|
dot/.style={decoration={
|
|
markings,
|
|
mark=at position #1 with {\draw circle (2pt);}},postaction={decorate}},
|
|
fulldot/.style={decoration={
|
|
markings,
|
|
mark=at position #1 with {\fill circle (2pt);}},postaction={decorate}},
|
|
}
|
|
|
|
\newenvironment{scprooftree}[1]%
|
|
{\gdef\scalefactor{#1}\begin{center}\proofSkipAmount \leavevmode}%
|
|
{\scalebox{\scalefactor}{\DisplayProof}\proofSkipAmount \end{center} }
|
|
|
|
\tikzset{
|
|
line/.style={-},
|
|
dot/.style={decoration={
|
|
markings,
|
|
mark=at position #1 with {\draw circle (2pt);}},postaction={decorate}},
|
|
fulldot/.style={decoration={
|
|
markings,
|
|
mark=at position #1 with {\fill circle (2pt);}},postaction={decorate}},
|
|
}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% BDD helper
|
|
|
|
\newenvironment{cofactors}
|
|
{\begin{tabbing}}
|
|
{\end{tabbing}}
|
|
|
|
|
|
|
|
\NewEnviron{bdd}[1][3em]{%
|
|
\begin{tikzpicture}[node distance=#1,
|
|
base node/.style={circle,draw,minimum size=20pt},
|
|
func node/.style={rectangle,draw,minimum size=10pt},
|
|
cofactor/.style={circle,draw,minimum size=10pt},
|
|
phantom/.style={circle,draw,inner sep=0pt,minimum size=0pt}]
|
|
\BODY
|
|
\end{tikzpicture}
|
|
}
|
|
|
|
\newcommand{\funcEdge}[3][]{
|
|
\path[] (#2) edge [#1] (#3);
|
|
}
|
|
\newcommand{\thenEdge}[3][]{
|
|
\path[] (#2) edge [#1] (#3);
|
|
}
|
|
\newcommand{\elseEdge}[3][]{
|
|
\path[] (#2) edge [#1] node [midway,draw,circle,fill=white,transform shape,inner sep=0pt,minimum size=0.3em] (ref) {} (#3);
|
|
}
|
|
\newcommand{\negatedEdge}[3][]{
|
|
\path[] (#2) edge [#1] node [midway,draw,circle,fill=black,transform shape,inner sep=0pt,minimum size=0.3em] (ref) {} (#3);
|
|
}
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\NewEnviron{egraph}[1][1.5cm]{%
|
|
\begin{tikzpicture}[-,
|
|
>=stealth',
|
|
shorten >=1pt,
|
|
auto,
|
|
node distance=#1,
|
|
thick,
|
|
base node/.style={circle,draw,minimum size=20pt}]
|
|
\BODY
|
|
\end{tikzpicture}
|
|
}
|
|
|
|
\newcommand{\chord}[2]{
|
|
\draw[dashed,red] (#1) -- (#2);
|
|
}
|
|
|
|
\newcommand{\egraphFuncConstraint}[3]{%
|
|
&((e_{#1=#2}~\land~e_{#2=#3})~\imp~e_{#1=#3})~\land\\
|
|
&((e_{#1=#2}~\land~e_{#1=#3})~\imp~e_{#2=#3})~\land\\
|
|
&((e_{#1=#3}~\land~e_{#2=#3})~\imp~e_{#1=#2})
|
|
}
|
|
|
|
\newcommand{\eq}[2]{
|
|
e_{#1=#2}
|
|
}
|
|
|
|
\newcommand{\ackermannFuncConstraint}[3]{%
|
|
(#2=#3~\imp~#1_{#2}=#1_{#3})
|
|
}
|
|
\newcommand{\DNF}[1]{\ensuremath{\text{DNF}(#1})}
|
|
\newcommand{\CNF}[1]{\ensuremath{\text{CNF}(#1})}
|
|
|
|
|
|
\newcommand{\satUnsatAss}[2]{{\color{blue}\ensuremath{#1}}|{\color{red}\ensuremath{#2}}}
|
|
|
|
|
|
\newcommand{\Axioms}{\ensuremath{\mathcal{A}}}
|
|
\newcommand{\Theory}{\ensuremath{\mathcal{T}}}
|
|
\newcommand{\Model}{\ensuremath{\mathcal{M}}}
|
|
|
|
|
|
\newcommand{\LIA}{\ensuremath{\Theory_{LIA}}}
|
|
\newcommand{\EUF}{\ensuremath{\Theory_{EUF}}}
|
|
\newcommand{\skel}[1][\varphi]{\ensuremath{\text{skel}(#1)}}
|