diff -r 4f169d2cf6f3 -r 782f0b662cae src/Doc/Implementation/Eq.thy --- a/src/Doc/Implementation/Eq.thy Tue Oct 07 21:28:24 2014 +0200 +++ b/src/Doc/Implementation/Eq.thy Tue Oct 07 21:29:59 2014 +0200 @@ -2,9 +2,9 @@ imports Base begin -chapter {* Equational reasoning *} +chapter \Equational reasoning\ -text {* Equality is one of the most fundamental concepts of +text \Equality is one of the most fundamental concepts of mathematics. The Isabelle/Pure logic (\chref{ch:logic}) provides a builtin relation @{text "\ :: \ \ \ \ prop"} that expresses equality of arbitrary terms (or propositions) at the framework level, as @@ -26,12 +26,12 @@ equivalence, and relate it with the Pure equality. This enables to re-use the Pure tools for equational reasoning for particular object-logic connectives as well. -*} +\ -section {* Basic equality rules \label{sec:eq-rules} *} +section \Basic equality rules \label{sec:eq-rules}\ -text {* Isabelle/Pure uses @{text "\"} for equality of arbitrary +text \Isabelle/Pure uses @{text "\"} for equality of arbitrary terms, which includes equivalence of propositions of the logical framework. The conceptual axiomatization of the constant @{text "\ :: \ \ \ \ prop"} is given in \figref{fig:pure-equality}. The @@ -50,9 +50,9 @@ inference function, although the rule attribute @{attribute THEN} or ML operator @{ML "op RS"} involve the full machinery of higher-order unification (modulo @{text "\\"}-conversion) and lifting of @{text - "\/\"} contexts. *} + "\/\"} contexts.\ -text %mlref {* +text %mlref \ \begin{mldecls} @{index_ML Thm.reflexive: "cterm -> thm"} \\ @{index_ML Thm.symmetric: "thm -> thm"} \\ @@ -67,29 +67,29 @@ these inference rules, and a few more for primitive @{text "\"} and @{text "\"} conversions. Note that @{text "\"} conversion is implicit due to the representation of terms with de-Bruijn indices - (\secref{sec:terms}). *} + (\secref{sec:terms}).\ -section {* Conversions \label{sec:conv} *} +section \Conversions \label{sec:conv}\ -text {* +text \ %FIXME The classic article that introduces the concept of conversion (for Cambridge LCF) is @{cite "paulson:1983"}. -*} +\ -section {* Rewriting \label{sec:rewriting} *} +section \Rewriting \label{sec:rewriting}\ -text {* Rewriting normalizes a given term (theorem or goal) by +text \Rewriting normalizes a given term (theorem or goal) by replacing instances of given equalities @{text "t \ u"} in subterms. Rewriting continues until no rewrites are applicable to any subterm. This may be used to unfold simple definitions of the form @{text "f x\<^sub>1 \ x\<^sub>n \ u"}, but is slightly more general than that. -*} +\ -text %mlref {* +text %mlref \ \begin{mldecls} @{index_ML rewrite_rule: "Proof.context -> thm list -> thm -> thm"} \\ @{index_ML rewrite_goals_rule: "Proof.context -> thm list -> thm -> thm"} \\ @@ -121,6 +121,6 @@ in the proof state. \end{description} -*} +\ end