mirror of
https://github.com/c-cube/sidekick.git
synced 2025-12-10 21:24:06 -05:00
poster start
This commit is contained in:
parent
685f804c09
commit
09bd730ff5
6 changed files with 248 additions and 0 deletions
BIN
poster/logo.jpg
Normal file
BIN
poster/logo.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
BIN
poster/poster.pdf
Normal file
BIN
poster/poster.pdf
Normal file
Binary file not shown.
100
poster/poster.tex
Normal file
100
poster/poster.tex
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
\documentclass[portrait,a0,final]{a0poster}
|
||||
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[OT1]{fontenc}
|
||||
\usepackage[french]{babel}
|
||||
\usepackage{enumitem}
|
||||
\usepackage{verbatim}
|
||||
\usepackage{amsfonts, amsmath, amssymb, amsthm, dsfont}
|
||||
|
||||
\usepackage{listings}
|
||||
\lstset{language=[Objective]Caml}
|
||||
|
||||
\usepackage{bussproofs}
|
||||
\newcommand\typ[2]{\Gamma\vdash#1:#2}
|
||||
|
||||
\input{template_deducteam.tex}
|
||||
|
||||
\def\aez{\textsf{Alt-Ergo~Zero}}
|
||||
\def\altergo{\textsf{Alt-Ergo}}
|
||||
\def\ens{\textsf{ENS Paris-Saclay}}
|
||||
\def\inria{\textsf{Inria}}
|
||||
\def\lsv{\textsf{LSV}}
|
||||
\def\msat{\textsf{mSAT}}
|
||||
\def\opam{\textsf{opam}}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\sffamily % Font Family
|
||||
|
||||
\postertitle
|
||||
{\msat{}:~An~OCaml~SAT~Solver}
|
||||
{Guillaume \textsc{Bury}}
|
||||
{DEDUC$\vdash$EAM (INRIA) - LSV / CNRS\\
|
||||
\Large \textcolor{black}{\texttt{guillaume.bury@inria.fr}}}
|
||||
|
||||
|
||||
\begin{center}
|
||||
|
||||
\begin{multicols}{2}
|
||||
|
||||
\tblock{Introduction} % TODO
|
||||
{
|
||||
\vspace{0cm} % Pour pas se faire manger par le titre
|
||||
|
||||
\msat{} is a SAT solving library written in OCaml. It allows to solve the satisfiability
|
||||
of propositional problems in clausal normal form, and produce either a propositional model,
|
||||
or a resolution proof of the problem's unsatisfiability.
|
||||
}
|
||||
|
||||
\tblock{Conflict Driven Clause learning}
|
||||
{
|
||||
\begin{description}
|
||||
\item[Propagation] If there exists a clause $C = C' \lor a$, where
|
||||
$C'$ is false in the partial model, then add $a \mapsto \top$ to
|
||||
the partial model, and record $C$ as the reason for $a$.
|
||||
\item[Decision] Take an atom $a$ which is not yet in the partial model,
|
||||
and add $a \mapsto \top$ to the model.
|
||||
\item[Conflict] A conflict is a clause $C$ that is false in the current partial
|
||||
model.
|
||||
\item[Analyze] Perform resolution between the analyzed clause and the reason
|
||||
behind the propagation of its most recently assigned litteral, until
|
||||
the analyzed clause is suitable for backumping
|
||||
\item[Backjump] A clause is suitable for backjumping if its most recently
|
||||
assigned litteral $a$ is a decision. We can then backtrack to before the
|
||||
decision, and add the analyzed clause to the solver, which will then enable
|
||||
to propagate $a \mapsto \bot$.
|
||||
\item[SMT] Formulas using first-order theories can be handled using a theory.
|
||||
Each formula propagated or decided is sent to the theory, which then
|
||||
has the duty to check whether the conjunction of all formulas seen so
|
||||
far is satisfiable, if not, it should return a theory tautology (as a clause),
|
||||
that is not satisfied in the current partial model.
|
||||
\end{description}
|
||||
}
|
||||
|
||||
\columnbreak
|
||||
|
||||
\tblock{Problem example}
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
\cblock{Theory interface}
|
||||
{
|
||||
\lstinputlisting{theory_intf.ml}
|
||||
}
|
||||
|
||||
\cblock{Proof management}
|
||||
{
|
||||
\lstinputlisting{proof_intf.ml}
|
||||
}
|
||||
|
||||
|
||||
\end{multicols}
|
||||
|
||||
|
||||
\Large \msat{} is available on \opam{} and on github: \texttt{https://github.com/Gbury/mSAT}
|
||||
|
||||
\end{center}
|
||||
|
||||
\end{document}
|
||||
17
poster/proof_intf.ml
Normal file
17
poster/proof_intf.ml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
type clause_premise =
|
||||
| Hyp | Local | Lemma of lemma
|
||||
| History of clause list
|
||||
|
||||
type proof = clause
|
||||
and proof_node = {
|
||||
conclusion : clause;
|
||||
step : step;
|
||||
}
|
||||
and step =
|
||||
| Hypothesis
|
||||
| Assumption
|
||||
| Lemma of lemma
|
||||
| Duplicate of proof * atom list
|
||||
| Resolution of proof * proof * atom
|
||||
|
||||
val expand : proof -> proof_node
|
||||
111
poster/template_deducteam.tex
Normal file
111
poster/template_deducteam.tex
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
\usepackage{multicol}
|
||||
\usepackage[dvipsnames]{xcolor}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{wrapfig}
|
||||
\usepackage{tikz}
|
||||
|
||||
\usepackage[right=1cm,left=1cm,top=1cm,bottom=1cm]{geometry}
|
||||
\setlength{\parindent}{0.0cm}
|
||||
\renewcommand{\sfdefault}{lmss}
|
||||
|
||||
\definecolor{orangeinria}{RGB}{227,55,41} % Orange INRIA
|
||||
\definecolor{color1}{RGB}{227,55,41} % Orange INRIA
|
||||
\definecolor{color2}{RGB}{116,101,110} % Blue INRIA
|
||||
\definecolor{orange}{RGB}{243,154,38}
|
||||
\definecolor{red}{RGB}{226,0,38}
|
||||
\definecolor{orange2}{RGB}{236,117,40}
|
||||
\definecolor{grey}{RGB}{50, 50, 50}
|
||||
|
||||
% args: width, number, title, txt
|
||||
\newcommand{\tblock}[2]{
|
||||
% \addtocounter{nblock}{1}
|
||||
\begin{tikzpicture}
|
||||
\tikzstyle{txtblock}=[draw=grey,rounded corners=40pt]
|
||||
\draw node (zou) [txtblock, text width=0.9 \columnwidth, inner sep=25pt, line width=5pt, text justified] {
|
||||
\Large #2
|
||||
};
|
||||
\draw node () at (zou.north) [line width=10pt,inner sep=15pt,anchor=center,fill=white] {
|
||||
\begin{Huge}
|
||||
\textcolor{orangeinria}{\textbf{#1}}
|
||||
\end{Huge}
|
||||
};
|
||||
\end{tikzpicture}
|
||||
\vspace{10mm}
|
||||
}
|
||||
|
||||
\newcommand{\cblock}[2]{
|
||||
% \addtocounter{nblock}{1}
|
||||
\begin{tikzpicture}
|
||||
\tikzstyle{txtblock}=[draw=grey,rounded corners=40pt,fill=gray!10]
|
||||
\draw node (zou) [txtblock, text width=0.9 \columnwidth, inner sep=25pt, line width=5pt, text justified] {
|
||||
\Large #2
|
||||
};
|
||||
\draw node () at (zou.north) [line width=10pt,inner sep=15pt,anchor=center,fill=white] {
|
||||
\begin{Huge}
|
||||
\textcolor{orangeinria}{\textbf{#1}}
|
||||
\end{Huge}
|
||||
};
|
||||
\end{tikzpicture}
|
||||
\vspace{10mm}
|
||||
}
|
||||
|
||||
|
||||
\newcommand{\block}[1]{
|
||||
% \addtocounter{nblock}{1}
|
||||
\begin{tikzpicture}
|
||||
\tikzstyle{txtblock}=[draw=grey,fill=gray!10]
|
||||
\draw node (zou) [txtblock, text width=0.9 \columnwidth, inner sep=25pt, line width=4pt, text justified] {
|
||||
\Large #1
|
||||
};
|
||||
\end{tikzpicture}
|
||||
\vspace{10mm}
|
||||
}
|
||||
|
||||
% args: title, authors, affiliation
|
||||
\newcommand{\postertitle}[3]{
|
||||
\begin{tikzpicture}
|
||||
\draw node (titlebar) [inner sep=0cm,
|
||||
inner ysep=10mm,
|
||||
text width=\textwidth, fill=orangeinria] {
|
||||
\hspace{0.2 \textwidth}
|
||||
\begin{minipage}[c]{0.79 \textwidth}
|
||||
\begin{center}
|
||||
\begin{VeryHuge}
|
||||
{\color{white} \bfseries
|
||||
#1
|
||||
}
|
||||
\end{VeryHuge}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
};
|
||||
|
||||
\draw node (authors) at (titlebar.south) [anchor=north, yshift=-5mm,
|
||||
text width=\textwidth, inner xsep=0cm] {
|
||||
\hspace{0.2 \textwidth}
|
||||
\begin{minipage}[c]{0.79 \textwidth}
|
||||
\begin{center}
|
||||
\begin{huge}
|
||||
\color{orangeinria}
|
||||
\textbf{#2}
|
||||
|
||||
\vspace{5mm}
|
||||
|
||||
#3
|
||||
\end{huge}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
};
|
||||
|
||||
\node[xshift=0.1 \textwidth, yshift=-15mm] (logo) at (titlebar.west) {};
|
||||
|
||||
\foreach \s in {0, 0.25, ..., 2.5}
|
||||
{
|
||||
\node[xshift=\s mm, yshift=-\s mm,fill=grey,opacity=0.07,rounded corners=20pt,line width=2pt, minimum width=0.18 \textwidth, minimum height=0.18 \textwidth] () at (logo) {
|
||||
};
|
||||
}
|
||||
|
||||
\node[draw=grey,rounded corners=20pt,fill=white,line width=2pt, minimum width=0.18 \textwidth, minimum height=0.18 \textwidth] () at (logo) {
|
||||
\includegraphics[width=0.16 \textwidth]{logo.jpg}
|
||||
};
|
||||
\end{tikzpicture}
|
||||
}
|
||||
20
poster/theory_intf.ml
Normal file
20
poster/theory_intf.ml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
type ('formula, 'proof) res =
|
||||
| Sat | Unsat of 'formula list * 'proof
|
||||
|
||||
type ('form, 'proof) slice = {
|
||||
start : int;
|
||||
length : int;
|
||||
get : int -> 'form;
|
||||
push : 'form list -> 'proof -> unit;
|
||||
}
|
||||
|
||||
module type S = sig
|
||||
val dummy : level
|
||||
val backtrack : level -> unit
|
||||
val current_level : unit -> level
|
||||
val assume : (formula, proof) slice
|
||||
-> (formula, proof) res
|
||||
val if_sat : (formula, proof) slice
|
||||
-> (formula, proof) res
|
||||
end
|
||||
Loading…
Add table
Reference in a new issue