Commit 3eedbb01 authored by Guillaume Melquiond's avatar Guillaume Melquiond
Browse files

Clean documentation of transformations.

parent 659597a2
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
\newcommand{\bs}{\textbackslash} \newcommand{\bs}{\textbackslash}
\newcommand{\vfill}{} \newcommand{\vfill}{}
\newcommand{\hrulefill}{} \newcommand{\hrulefill}{}
\renewcommand{\framebox}[1]{#1}
\makeatletter \makeatletter
\RenewcommandHtml{\@boxed}[1]{{#1}} \RenewcommandHtml{\@boxed}[1]{{#1}}
......
...@@ -13,7 +13,7 @@ The XML file follows the DTD given in \texttt{share/why3session.dtd} and reprodu ...@@ -13,7 +13,7 @@ The XML file follows the DTD given in \texttt{share/why3session.dtd} and reprodu
\section{Provers detection data} \section{Provers detection data}
\label{sec:proverdetecttiondata} \label{sec:proverdetecttiondata}
All the necessary data configuration for the autoamtic detection of All the necessary data configuration for the automatic detection of
installed provers is stored in the file installed provers is stored in the file
\texttt{provers-detection-data.conf} typically located in directory \texttt{provers-detection-data.conf} typically located in directory
\verb|/usr/local/share/why3| after installation. The contents of this \verb|/usr/local/share/why3| after installation. The contents of this
...@@ -134,21 +134,21 @@ why3 --list-transforms ...@@ -134,21 +134,21 @@ why3 --list-transforms
\begin{description} \begin{description}
\item[eliminate\_algebraic] Replaces algebraic data types by first-order \item[eliminate\_algebraic] replaces algebraic data types by first-order
definitions~\cite{paskevich09rr} definitions~\cite{paskevich09rr}.
\item[eliminate\_builtin] Suppress definitions of symbols which are \item[eliminate\_builtin] removes definitions of symbols that are
declared as builtin in the driver, \ie with a ``syntax'' rule. declared as builtin in the driver, \ie with a ``syntax'' rule.
\item[eliminate\_definition\_func] \item[eliminate\_definition\_func]
Replaces all function definitions with axioms. replaces all function definitions with axioms.
\item[eliminate\_definition\_pred] \item[eliminate\_definition\_pred]
Replaces all predicate definitions with axioms. replaces all predicate definitions with axioms.
\item[eliminate\_definition] \item[eliminate\_definition]
Apply both transformations above. applies both transformations above.
\item[eliminate\_mutual\_recursion] \item[eliminate\_mutual\_recursion]
Replaces mutually recursive definitions with axioms. replaces mutually recursive definitions with axioms.
\item[eliminate\_recursion] \item[eliminate\_recursion]
Replaces all recursive definitions with axioms. replaces all recursive definitions with axioms.
\item[eliminate\_if\_term] replaces terms of the form \texttt{if \item[eliminate\_if\_term] replaces terms of the form \texttt{if
formula then t2 else t3} by lifting them at the level of formulas. formula then t2 else t3} by lifting them at the level of formulas.
...@@ -159,30 +159,30 @@ definitions~\cite{paskevich09rr} ...@@ -159,30 +159,30 @@ definitions~\cite{paskevich09rr}
connectives. connectives.
\item[eliminate\_if] \item[eliminate\_if]
Apply both transformations above. applies both transformations above.
\item[eliminate\_inductive] replaces inductive predicates by \item[eliminate\_inductive] replaces inductive predicates by
(incomplete) axiomatic definitions, \ie construction axioms and (incomplete) axiomatic definitions, \ie construction axioms and
an inversion axiom. an inversion axiom.
\item[eliminate\_let\_fmla] \item[eliminate\_let\_fmla]
Eliminates \texttt{let} by substitution, at the predicate level. eliminates \texttt{let} by substitution, at the predicate level.
\item[eliminate\_let\_term] \item[eliminate\_let\_term]
Eliminates \texttt{let} by substitution, at the term level. eliminates \texttt{let} by substitution, at the term level.
\item[eliminate\_let] \item[eliminate\_let]
Apply both transformations above. applies both transformations above.
% \item[encoding\_decorate\_mono] % \item[encoding\_decorate\_mono]
% \item[encoding\_enumeration] % \item[encoding\_enumeration]
\item[encoding\_smt] \item[encoding\_smt]
Encode polymorphic types into monomorphic type~\cite{conchon08smt}. encodes polymorphic types into monomorphic type~\cite{conchon08smt}.
\item[encoding\_tptp] \item[encoding\_tptp]
Encode theories into unsorted logic. %~\cite{cruanes10}. encodes theories into unsorted logic. %~\cite{cruanes10}.
% \item[filter\_trigger] *) % \item[filter\_trigger] *)
...@@ -196,18 +196,18 @@ definitions~\cite{paskevich09rr} ...@@ -196,18 +196,18 @@ definitions~\cite{paskevich09rr}
\item[inline\_all] \item[inline\_all]
expands all non-recursive definitions. expands all non-recursive definitions.
\item[inline\_goal] Expands all outermost symbols of the goal that \item[inline\_goal] expands all outermost symbols of the goal that
have a non-recursive definition. have a non-recursive definition.
\item[inline\_trivial] \item[inline\_trivial]
removes definitions of the form removes definitions of the form
\begin{verbatim} \begin{whycode}
function f x_1 .. x_n = (g e_1 .. e_k) function f x_1 ... x_n = (g e_1 ... e_k)
predicate p x_1 .. x_n = (q e_1 .. e_k) predicate p x_1 ... x_n = (q e_1 ... e_k)
\end{verbatim} \end{whycode}
when each $e_i$ is either a ground term or one of the $x_j$, and when each $e_i$ is either a ground term or one of the $x_j$, and
each $x_1$ .. $x_n$ occur at most once in the $e_i$ each $x_1 \dots x_n$ occurs at most once in all the $e_i$.
\item[introduce\_premises] moves antecedents of implications and \item[introduce\_premises] moves antecedents of implications and
universal quantifications of the goal into the premises of the task. universal quantifications of the goal into the premises of the task.
...@@ -215,46 +215,44 @@ each $x_1$ .. $x_n$ occur at most once in the $e_i$ ...@@ -215,46 +215,44 @@ each $x_1$ .. $x_n$ occur at most once in the $e_i$
% \item[remove\_triggers] *) % \item[remove\_triggers] *)
% removes the triggers in all quantifications. *) % removes the triggers in all quantifications. *)
\item[simplify\_array] Automatically rewrites the task using the lemma \item[simplify\_array] automatically rewrites the task using the lemma
\verb|Select_eq| of theory \verb|array.Array|. \verb|Select_eq| of theory \verb|array.Array|.
\item[simplify\_formula] reduces trivial equalities $t=t$ to true and \item[simplify\_formula] reduces trivial equalities $t=t$ to true and
then simplifies propositional structure: removes true, false, ``f then simplifies propositional structure: removes true, false, simplifies
and f'' to ``f'', etc. $f \land f$ to $f$, etc.
\item[simplify\_recursive\_definition] reduces mutually recursive \item[simplify\_recursive\_definition] reduces mutually recursive
definitions if they are not really mutually recursive, \eg definitions if they are not really mutually recursive, \eg
\begin{verbatim} \begin{whycode}
function f : ... = .... g ... function f : ... = .... g ...
with g : ... = e
with g : .. = e \end{whycode}
\end{verbatim}
becomes becomes
\begin{verbatim} \begin{whycode}
function g : .. = e function g : ... = e
function f : ... = .... g ... function f : ... = ... g ...
\end{verbatim} \end{whycode}
if f does not occur in e if $f$ does not occur in $e$.
\item[simplify\_trivial\_quantification] \item[simplify\_trivial\_quantification]
simplifies quantifications of the form simplifies quantifications of the form
\begin{verbatim} \begin{verbatim}
forall x, x=t -> P(x) forall x, x=t -> P(x)
\end{verbatim} \end{verbatim}
or or
\begin{verbatim} \begin{verbatim}
forall x, t=x -> P(x) forall x, t=x -> P(x)
\end{verbatim} \end{verbatim}
when x does not occur in t when $x$ does not occur in $t$ into
into
\begin{verbatim} \begin{verbatim}
P(t) P(t)
\end{verbatim} \end{verbatim}
More generally, it applies this simplification whenever x=t appear More generally, it applies this simplification whenever $x=t$ appears
in a negative position. in a negative position.
\item[simplify\_trivial\_quantification\_in\_goal] \item[simplify\_trivial\_quantification\_in\_goal]
same as above but applies only in the goal. is the same as above but it applies only in the goal.
\item[split\_premise] \item[split\_premise]
splits conjunctive premises. splits conjunctive premises.
...@@ -266,24 +264,24 @@ P(t) ...@@ -266,24 +264,24 @@ P(t)
\begin{description} \begin{description}
\item[full\_split\_all] \item[full\_split\_all]
composition of \texttt{split\_premise} and \texttt{full\_split\_goal}. performs both \texttt{split\_premise} and \texttt{full\_split\_goal}.
\item[full\_split\_goal] puts the goal in a conjunctive form, \item[full\_split\_goal] puts the goal in a conjunctive form,
returns the corresponding set of subgoals. The number of subgoals returns the corresponding set of subgoals. The number of subgoals
generated may be exponential in the size of the initial goal. generated may be exponential in the size of the initial goal.
\item[simplify\_formula\_and\_task] same as \texttt{simplify\_formula} \item[simplify\_formula\_and\_task] is the same as \texttt{simplify\_formula}
but also removes the goal if it is equivalent to true. but it also removes the goal if it is equivalent to true.
\item[split\_all] \item[split\_all]
composition of \texttt{split\_premise} and \texttt{split\_goal}. performs both \texttt{split\_premise} and \texttt{split\_goal}.
\item[split\_goal] if the goal is a conjunction of goals, returns the \item[split\_goal] if the goal is a conjunction of goals, returns the
corresponding set of subgoals. The number of subgoals generated is linear in corresponding set of subgoals. The number of subgoals generated is linear in
the size of the initial goal. the size of the initial goal.
\item[split\_intro] \item[split\_intro]
when a goal is an implication, moves the antecedents into the premises. moves the antecedents into the premises when a goal is an implication.
\end{description} \end{description}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment