doc-src/IsarImplementation/Thy/document/Eq.tex
author blanchet
Mon, 21 May 2012 10:39:31 +0200
changeset 47944 e6b51fab96f7
parent 46486 4a607979290d
permissions -rw-r--r--
added helper -- cf. SET616^5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46295
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
     1
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
     2
\begin{isabellebody}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
     3
\def\isabellecontext{Eq}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
     4
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
     5
\isadelimtheory
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
     6
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
     7
\endisadelimtheory
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
     8
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
     9
\isatagtheory
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    10
\isacommand{theory}\isamarkupfalse%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    11
\ Eq\isanewline
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    12
\isakeyword{imports}\ Base\isanewline
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    13
\isakeyword{begin}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    14
\endisatagtheory
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    15
{\isafoldtheory}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    16
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    17
\isadelimtheory
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    18
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    19
\endisadelimtheory
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    20
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    21
\isamarkupchapter{Equational reasoning%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    22
}
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    23
\isamarkuptrue%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    24
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    25
\begin{isamarkuptext}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    26
Equality is one of the most fundamental concepts of
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    27
  mathematics.  The Isabelle/Pure logic (\chref{ch:logic}) provides a
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    28
  builtin relation \isa{{\isaliteral{5C3C65717569763E}{\isasymequiv}}\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C616C7068613E}{\isasymalpha}}\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ {\isaliteral{5C3C616C7068613E}{\isasymalpha}}\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ prop} that expresses equality
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    29
  of arbitrary terms (or propositions) at the framework level, as
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    30
  expressed by certain basic inference rules (\secref{sec:eq-rules}).
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    31
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    32
  Equational reasoning means to replace equals by equals, using
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    33
  reflexivity and transitivity to form chains of replacement steps,
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    34
  and congruence rules to access sub-structures.  Conversions
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    35
  (\secref{sec:conv}) provide a convenient framework to compose basic
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    36
  equational steps to build specific equational reasoning tools.
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    37
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    38
  Higher-order matching is able to provide suitable instantiations for
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    39
  giving equality rules, which leads to the versatile concept of
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    40
  \isa{{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}}-term rewriting (\secref{sec:rewriting}).  Internally
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    41
  this is based on the general-purpose Simplifier engine of Isabelle,
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    42
  which is more specific and more efficient than plain conversions.
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    43
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    44
  Object-logics usually introduce specific notions of equality or
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    45
  equivalence, and relate it with the Pure equality.  This enables to
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    46
  re-use the Pure tools for equational reasoning for particular
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    47
  object-logic connectives as well.%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    48
\end{isamarkuptext}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    49
\isamarkuptrue%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    50
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    51
\isamarkupsection{Basic equality rules \label{sec:eq-rules}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    52
}
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    53
\isamarkuptrue%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    54
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    55
\begin{isamarkuptext}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    56
FIXME%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    57
\end{isamarkuptext}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    58
\isamarkuptrue%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    59
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    60
\isamarkupsection{Conversions \label{sec:conv}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    61
}
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    62
\isamarkuptrue%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    63
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    64
\begin{isamarkuptext}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    65
FIXME%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    66
\end{isamarkuptext}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    67
\isamarkuptrue%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    68
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    69
\isamarkupsection{Rewriting \label{sec:rewriting}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    70
}
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    71
\isamarkuptrue%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    72
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    73
\begin{isamarkuptext}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    74
Rewriting normalizes a given term (theorem or goal) by
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    75
  replacing instances of given equalities \isa{t\ {\isaliteral{5C3C65717569763E}{\isasymequiv}}\ u} in subterms.
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    76
  Rewriting continues until no rewrites are applicable to any subterm.
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    77
  This may be used to unfold simple definitions of the form \isa{f\ x\isaliteral{5C3C5E7375623E}{}\isactrlsub {\isadigit{1}}\ {\isaliteral{5C3C646F74733E}{\isasymdots}}\ x\isaliteral{5C3C5E7375623E}{}\isactrlsub n\ {\isaliteral{5C3C65717569763E}{\isasymequiv}}\ u}, but is slightly more general than that.%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    78
\end{isamarkuptext}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    79
\isamarkuptrue%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    80
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    81
\isadelimmlref
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    82
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    83
\endisadelimmlref
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    84
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    85
\isatagmlref
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    86
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    87
\begin{isamarkuptext}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    88
\begin{mldecls}
46486
4a607979290d updated rewrite_goals_rule, rewrite_rule;
wenzelm
parents: 46295
diff changeset
    89
  \indexdef{}{ML}{rewrite\_rule}\verb|rewrite_rule: thm list -> thm -> thm| \\
4a607979290d updated rewrite_goals_rule, rewrite_rule;
wenzelm
parents: 46295
diff changeset
    90
  \indexdef{}{ML}{rewrite\_goals\_rule}\verb|rewrite_goals_rule: thm list -> thm -> thm| \\
46295
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    91
  \indexdef{}{ML}{rewrite\_goal\_tac}\verb|rewrite_goal_tac: thm list -> int -> tactic| \\
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    92
  \indexdef{}{ML}{rewrite\_goals\_tac}\verb|rewrite_goals_tac: thm list -> tactic| \\
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    93
  \indexdef{}{ML}{fold\_goals\_tac}\verb|fold_goals_tac: thm list -> tactic| \\
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    94
  \end{mldecls}
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    95
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    96
  \begin{description}
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
    97
46486
4a607979290d updated rewrite_goals_rule, rewrite_rule;
wenzelm
parents: 46295
diff changeset
    98
  \item \verb|rewrite_rule|~\isa{rules\ thm} rewrites the whole
4a607979290d updated rewrite_goals_rule, rewrite_rule;
wenzelm
parents: 46295
diff changeset
    99
  theorem by the given rules.
4a607979290d updated rewrite_goals_rule, rewrite_rule;
wenzelm
parents: 46295
diff changeset
   100
4a607979290d updated rewrite_goals_rule, rewrite_rule;
wenzelm
parents: 46295
diff changeset
   101
  \item \verb|rewrite_goals_rule|~\isa{rules\ thm} rewrites the
4a607979290d updated rewrite_goals_rule, rewrite_rule;
wenzelm
parents: 46295
diff changeset
   102
  outer premises of the given theorem.  Interpreting the same as a
4a607979290d updated rewrite_goals_rule, rewrite_rule;
wenzelm
parents: 46295
diff changeset
   103
  goal state (\secref{sec:tactical-goals}) it means to rewrite all
4a607979290d updated rewrite_goals_rule, rewrite_rule;
wenzelm
parents: 46295
diff changeset
   104
  subgoals (in the same manner as \verb|rewrite_goals_tac|).
4a607979290d updated rewrite_goals_rule, rewrite_rule;
wenzelm
parents: 46295
diff changeset
   105
46295
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   106
  \item \verb|rewrite_goal_tac|~\isa{rules\ i} rewrites subgoal
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   107
  \isa{i} by the given rewrite rules.
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   108
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   109
  \item \verb|rewrite_goals_tac|~\isa{rules} rewrites all subgoals
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   110
  by the given rewrite rules.
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   111
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   112
  \item \verb|fold_goals_tac|~\isa{rules} essentially uses \verb|rewrite_goals_tac| with the symmetric form of each member of \isa{rules}, re-ordered to fold longer expression first.  This supports
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   113
  to idea to fold primitive definitions that appear in expended form
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   114
  in the proof state.
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   115
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   116
  \end{description}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   117
\end{isamarkuptext}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   118
\isamarkuptrue%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   119
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   120
\endisatagmlref
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   121
{\isafoldmlref}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   122
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   123
\isadelimmlref
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   124
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   125
\endisadelimmlref
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   126
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   127
\isadelimtheory
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   128
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   129
\endisadelimtheory
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   130
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   131
\isatagtheory
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   132
\isacommand{end}\isamarkupfalse%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   133
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   134
\endisatagtheory
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   135
{\isafoldtheory}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   136
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   137
\isadelimtheory
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   138
%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   139
\endisadelimtheory
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   140
\isanewline
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   141
\end{isabellebody}%
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   142
%%% Local Variables:
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   143
%%% mode: latex
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   144
%%% TeX-master: "root"
2548a85b0e02 basic setup for equational reasoning;
wenzelm
parents:
diff changeset
   145
%%% End: