64 \isarcmd{print_trans_rules}^* & : & \isarkeep{theory~|~proof} \\ |
64 \isarcmd{print_trans_rules}^* & : & \isarkeep{theory~|~proof} \\ |
65 trans & : & \isaratt \\ |
65 trans & : & \isaratt \\ |
66 \end{matharray} |
66 \end{matharray} |
67 |
67 |
68 Calculational proof is forward reasoning with implicit application of |
68 Calculational proof is forward reasoning with implicit application of |
69 transitivity rules (such those of $=$, $\le$, $<$). Isabelle/Isar maintains |
69 transitivity rules (such those of $=$, $\leq$, $<$). Isabelle/Isar maintains |
70 an auxiliary register $calculation$\indexisarthm{calculation} for accumulating |
70 an auxiliary register $calculation$\indexisarthm{calculation} for accumulating |
71 results obtained by transitivity composed with the current result. Command |
71 results obtained by transitivity composed with the current result. Command |
72 $\ALSO$ updates $calculation$ involving $this$, while $\FINALLY$ exhibits the |
72 $\ALSO$ updates $calculation$ involving $this$, while $\FINALLY$ exhibits the |
73 final $calculation$ by forward chaining towards the next goal statement. Both |
73 final $calculation$ by forward chaining towards the next goal statement. Both |
74 commands require valid current facts, i.e.\ may occur only after commands that |
74 commands require valid current facts, i.e.\ may occur only after commands that |
828 \begin{descr} |
828 \begin{descr} |
829 \item [$print_claset$] prints the collection of rules declared to the |
829 \item [$print_claset$] prints the collection of rules declared to the |
830 Classical Reasoner, which is also known as ``simpset'' internally |
830 Classical Reasoner, which is also known as ``simpset'' internally |
831 \cite{isabelle-ref}. This is a diagnostic command; $undo$ does not apply. |
831 \cite{isabelle-ref}. This is a diagnostic command; $undo$ does not apply. |
832 \item [$intro$, $elim$, and $dest$] declare introduction, elimination, and |
832 \item [$intro$, $elim$, and $dest$] declare introduction, elimination, and |
833 destruct rules, respectively. By default, rules are considered as |
833 destruction rules, respectively. By default, rules are considered as |
834 \emph{unsafe} (i.e.\ not applied blindly without backtracking), while a |
834 \emph{unsafe} (i.e.\ not applied blindly without backtracking), while a |
835 single ``!'' classifies as \emph{safe}, and ``?'' as \emph{extra} (i.e.\ not |
835 single ``!'' classifies as \emph{safe}, and ``?'' as \emph{extra} (i.e.\ not |
836 applied in the search-oriented automated methods, but only in single-step |
836 applied in the search-oriented automated methods, but only in single-step |
837 methods such as $rule$). |
837 methods such as $rule$). |
838 \item [$rule~del$] deletes introduction, elimination, or destruct rules from |
838 \item [$rule~del$] deletes introduction, elimination, or destruction rules from |
839 the context. |
839 the context. |
840 \item [$iff$] declares equivalence rules to the context. The default behavior |
840 \item [$iff$] declares a ``safe'' rule to the context in several ways. |
841 is to declare a rewrite rule to the Simplifier, and the two corresponding |
841 The rule is declared as a rewrite rule to the Simplifier. Furthermore, it is |
842 implications to the Classical Reasoner (as ``safe'' rules that are used |
842 declared in several ways (depending on its structure) to the Classical |
843 aggressively, which would normally be indicated by ``!''). |
843 Reasoner for aggressive use, which would normally be indicated by ``!''). |
|
844 If the rule is an equivalence, the two corresponding implications are |
|
845 declared as introduction and destruction rules. If it is an inequality, the |
|
846 corresponding elimination rule is declared. Otherwise, a warning is issued |
|
847 and the rule is delcared as an intruction. |
844 |
848 |
845 The ``?'' version of $iff$ declares ``extra'' Classical Reasoner rules only, |
849 The ``?'' version of $iff$ declares ``extra'' Classical Reasoner rules only, |
846 and omits the Simplifier declaration. Thus the declaration does not have |
850 and omits the Simplifier declaration. Thus the declaration does not have |
847 any effect on automated proof tools, but only on simple methods such as |
851 any effect on automated proof tools, but only on simple methods such as |
848 $rule$ (see \S\ref{sec:misc-methods}). |
852 $rule$ (see \S\ref{sec:misc-methods}). |