Commit eb7bb11c by Jean-Christophe Filliâtre

### doc: transformation induction_ty_lex

parent 6d7a446e
 ... ... @@ -184,22 +184,45 @@ each $x_1 \dots x_n$ occurs at most once in all the $e_i$. \subsection{Induction Transformations} \begin{itemize} \item Induction on an algebraic data type: \verb|induction_ty_lex| \index{induction-ty-lex@\verb+induction_ty_lex+} [TO BE COMPLETED] \begin{description} \item[induction\_ty\_lex]: \index{induction-ty-lex@\verb+induction_ty_lex+} This transformation performs structural, lexicographic induction on goals involving universally quantified variables of algebraic data types, such as lists, trees, etc. For instance, it transforms the following goal \begin{whycode} goal G: forall l: list 'a. length l >= 0 \end{whycode} into this one: \begin{whycode} goal G : forall l:list 'a. match l with | Nil -> length l >= 0 | Cons a l1 -> length l1 >= 0 -> length l >= 0 end \end{whycode} When induction can be applied to several variables, the transformation picks one heuristically. A label \verb|induction| can be used to force induction over one particular variable, \emph{e.g.}, \begin{whycode} goal G: forall l1 "induction" l2 l3: list 'a. l1 ++ (l2 ++ l3) = (l1 ++ l2) ++ l3 \end{whycode} If such a label is used on several variables, a lexicographic induction is performed on these variables, from left to right. \item Induction on a inductive predicate: \item[] Induction on inductive predicates. [TO BE COMPLETED] \end{itemize} \end{description} \subsection{Simplification by Computation} Those transformations simplifies the goal by applying several kind of simplifications. The transformations differ only by the kind of rules they These transformations simplify the goal by applying several kinds of simplification. The transformations differ only by the kind of rules they apply: \verb|compute_in_goal| aggressively apply all known ... ...
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!