doc-src/IsarImplementation/Thy/proof.thy
author wenzelm
Fri, 01 Sep 2006 20:40:05 +0200
changeset 20459 73c1ad6eda9d
parent 20458 ab1d60e1ee31
child 20460 351c63bb2704
permissions -rw-r--r--
tuned;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18537
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
     1
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
     2
(* $Id$ *)
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
     3
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
     4
theory "proof" imports base begin
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
     5
20451
27ea2ba48fa3 misc cleanup;
wenzelm
parents: 20218
diff changeset
     6
chapter {* Structured proofs *}
18537
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
     7
20452
wenzelm
parents: 20451
diff changeset
     8
section {* Variables and schematic polymorphism *}
20026
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
     9
20064
wenzelm
parents: 20041
diff changeset
    10
text FIXME
wenzelm
parents: 20041
diff changeset
    11
20026
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    12
text %mlref {*
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    13
  \begin{mldecls}
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    14
  @{index_ML Variable.declare_term: "term -> Proof.context -> Proof.context"} \\
20064
wenzelm
parents: 20041
diff changeset
    15
  @{index_ML Variable.add_fixes: "string list -> Proof.context -> string list * Proof.context"} \\
20459
wenzelm
parents: 20458
diff changeset
    16
  @{index_ML Variable.import: "bool ->
wenzelm
parents: 20458
diff changeset
    17
  thm list -> Proof.context -> ((ctyp list * cterm list) * thm list) * Proof.context"} \\
20026
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    18
  @{index_ML Variable.export: "Proof.context -> Proof.context -> thm list -> thm list"} \\
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    19
  @{index_ML Variable.trade: "Proof.context -> (thm list -> thm list) -> thm list -> thm list"} \\
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    20
  @{index_ML Variable.polymorphic: "Proof.context -> term list -> term list"} \\
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    21
  \end{mldecls}
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    22
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    23
  \begin{description}
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    24
20064
wenzelm
parents: 20041
diff changeset
    25
  \item @{ML Variable.declare_term}~@{text "t ctxt"} declares term
wenzelm
parents: 20041
diff changeset
    26
  @{text "t"} to belong to the context.  This fixes free type
wenzelm
parents: 20041
diff changeset
    27
  variables, but not term variables.  Constraints for type and term
wenzelm
parents: 20041
diff changeset
    28
  variables are declared uniformly.
wenzelm
parents: 20041
diff changeset
    29
wenzelm
parents: 20041
diff changeset
    30
  \item @{ML Variable.add_fixes}~@{text "xs ctxt"} fixes term
wenzelm
parents: 20041
diff changeset
    31
  variables @{text "xs"} and returns the internal names of the
wenzelm
parents: 20041
diff changeset
    32
  resulting Skolem constants.  Note that term fixes refer to
wenzelm
parents: 20041
diff changeset
    33
  \emph{all} type instances that may occur in the future.
wenzelm
parents: 20041
diff changeset
    34
wenzelm
parents: 20041
diff changeset
    35
  \item @{ML Variable.invent_fixes} is similar to @{ML
wenzelm
parents: 20041
diff changeset
    36
  Variable.add_fixes}, but the given names merely act as hints for
wenzelm
parents: 20041
diff changeset
    37
  internal fixes produced here.
20026
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    38
20064
wenzelm
parents: 20041
diff changeset
    39
  \item @{ML Variable.import}~@{text "open ths ctxt"} augments the
wenzelm
parents: 20041
diff changeset
    40
  context by new fixes for the schematic type and term variables
wenzelm
parents: 20041
diff changeset
    41
  occurring in @{text "ths"}.  The @{text "open"} flag indicates
wenzelm
parents: 20041
diff changeset
    42
  whether the fixed names should be accessible to the user, otherwise
wenzelm
parents: 20041
diff changeset
    43
  internal names are chosen.
20026
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    44
20064
wenzelm
parents: 20041
diff changeset
    45
  \item @{ML Variable.export}~@{text "inner outer ths"} generalizes
wenzelm
parents: 20041
diff changeset
    46
  fixed type and term variables in @{text "ths"} according to the
wenzelm
parents: 20041
diff changeset
    47
  difference of the @{text "inner"} and @{text "outer"} context.  Note
wenzelm
parents: 20041
diff changeset
    48
  that type variables occurring in term variables are still fixed.
wenzelm
parents: 20041
diff changeset
    49
wenzelm
parents: 20041
diff changeset
    50
  @{ML Variable.export} essentially reverses the effect of @{ML
wenzelm
parents: 20041
diff changeset
    51
  Variable.import} (up to renaming of schematic variables.
20026
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    52
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    53
  \item @{ML Variable.trade} composes @{ML Variable.import} and @{ML
20041
ae7aba935986 added some bits on variables;
wenzelm
parents: 20026
diff changeset
    54
  Variable.export}, i.e.\ it provides a view on facts with all
ae7aba935986 added some bits on variables;
wenzelm
parents: 20026
diff changeset
    55
  variables being fixed in the current context.
20026
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    56
20064
wenzelm
parents: 20041
diff changeset
    57
  \item @{ML Variable.polymorphic}~@{text "ctxt ts"} generalizes type
wenzelm
parents: 20041
diff changeset
    58
  variables in @{text "ts"} as far as possible, even those occurring
wenzelm
parents: 20041
diff changeset
    59
  in fixed term variables.  This operation essentially reverses the
wenzelm
parents: 20041
diff changeset
    60
  default policy of type-inference to introduce local polymorphism as
wenzelm
parents: 20041
diff changeset
    61
  fixed types.
20026
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    62
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    63
  \end{description}
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    64
*}
3469df62fe21 Local variables;
wenzelm
parents: 18537
diff changeset
    65
18537
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
    66
text FIXME
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
    67
20451
27ea2ba48fa3 misc cleanup;
wenzelm
parents: 20218
diff changeset
    68
27ea2ba48fa3 misc cleanup;
wenzelm
parents: 20218
diff changeset
    69
section {* Assumptions *}
27ea2ba48fa3 misc cleanup;
wenzelm
parents: 20218
diff changeset
    70
20458
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    71
text {*
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    72
  An \emph{assumption} is a proposition that it is postulated in the
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    73
  current context.  Local conclusions may use assumptions as
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    74
  additional facts, but this imposes implicit hypotheses that weaken
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    75
  the overall statement.
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    76
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    77
  Assumptions are restricted to fixed non-schematic statements, all
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    78
  generality needs to be expressed by explicit quantifiers.
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    79
  Nevertheless, the result will be in HHF normal form with outermost
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    80
  quantifiers stripped.  For example, by assuming @{text "\<And>x :: \<alpha>. P
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    81
  x"} we get @{text "\<And>x :: \<alpha>. P x \<turnstile> P ?x"} for arbitrary @{text "?x"}
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    82
  of the fixed type @{text "\<alpha>"}.  Local derivations accumulate more
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    83
  and more explicit references to hypotheses: @{text "A\<^isub>1, \<dots>,
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    84
  A\<^isub>n \<turnstile> B"} where @{text "A\<^isub>1, \<dots>, A\<^isub>n"} needs to
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    85
  be covered by the assumptions of the current context.
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    86
20459
wenzelm
parents: 20458
diff changeset
    87
  \medskip The @{text "add_assms"} operation augments the context by
wenzelm
parents: 20458
diff changeset
    88
  local assumptions, which are parameterized by an arbitrary @{text
wenzelm
parents: 20458
diff changeset
    89
  "export"} rule (see below).
20458
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    90
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    91
  The @{text "export"} operation moves facts from a (larger) inner
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    92
  context into a (smaller) outer context, by discharging the
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    93
  difference of the assumptions as specified by the associated export
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    94
  rules.  Note that the discharged portion is determined by the
20459
wenzelm
parents: 20458
diff changeset
    95
  difference contexts, not the facts being exported!  There is a
wenzelm
parents: 20458
diff changeset
    96
  separate flag to indicate a goal context, where the result is meant
wenzelm
parents: 20458
diff changeset
    97
  to refine an enclosing sub-goal of a structured proof state (cf.\
wenzelm
parents: 20458
diff changeset
    98
  \secref{sec:isar-proof-state}).
20458
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
    99
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   100
  \medskip The most basic export rule discharges assumptions directly
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   101
  by means of the @{text "\<Longrightarrow>"} introduction rule:
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   102
  \[
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   103
  \infer[(@{text "\<Longrightarrow>_intro"})]{@{text "\<Gamma> \\ A \<turnstile> A \<Longrightarrow> B"}}{@{text "\<Gamma> \<turnstile> B"}}
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   104
  \]
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   105
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   106
  The variant for goal refinements marks the newly introduced
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   107
  premises, which causes the builtin goal refinement scheme of Isar to
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   108
  enforce unification with local premises within the goal:
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   109
  \[
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   110
  \infer[(@{text "#\<Longrightarrow>_intro"})]{@{text "\<Gamma> \\ A \<turnstile> #A \<Longrightarrow> B"}}{@{text "\<Gamma> \<turnstile> B"}}
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   111
  \]
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   112
20459
wenzelm
parents: 20458
diff changeset
   113
  \medskip Alternative assumptions may perform arbitrary
wenzelm
parents: 20458
diff changeset
   114
  transformations on export, as long as a particular portion of
wenzelm
parents: 20458
diff changeset
   115
  hypotheses is removed from the given facts.  For example, a local
wenzelm
parents: 20458
diff changeset
   116
  definition works by fixing @{text "x"} and assuming @{text "x \<equiv> t"},
wenzelm
parents: 20458
diff changeset
   117
  with the following export rule to reverse the effect:
20458
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   118
  \[
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   119
  \infer{@{text "\<Gamma> \\ x \<equiv> t \<turnstile> B t"}}{@{text "\<Gamma> \<turnstile> B x"}}
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   120
  \]
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   121
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   122
  \medskip The general concept supports block-structured reasoning
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   123
  nicely, with arbitrary mechanisms for introducing local assumptions.
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   124
  The common reasoning pattern is as follows:
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   125
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   126
  \medskip
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   127
  \begin{tabular}{l}
20459
wenzelm
parents: 20458
diff changeset
   128
  @{text "add_assms e\<^isub>1 A\<^isub>1"} \\
20458
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   129
  @{text "\<dots>"} \\
20459
wenzelm
parents: 20458
diff changeset
   130
  @{text "add_assms e\<^isub>n A\<^isub>n"} \\
20458
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   131
  @{text "export"} \\
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   132
  \end{tabular}
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   133
  \medskip
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   134
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   135
  \noindent The final @{text "export"} will turn any fact @{text
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   136
  "A\<^isub>1, \<dots>, A\<^isub>n \<turnstile> B"} into some @{text "\<turnstile> B'"}, by
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   137
  applying the export rules @{text "e\<^isub>1, \<dots>, e\<^isub>n"}
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   138
  inside-out.
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   139
*}
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   140
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   141
text %mlref {*
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   142
  \begin{mldecls}
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   143
  @{index_ML_type Assumption.export} \\
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   144
  @{index_ML Assumption.assume: "cterm -> thm"} \\
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   145
  @{index_ML Assumption.add_assms:
20459
wenzelm
parents: 20458
diff changeset
   146
    "Assumption.export ->
wenzelm
parents: 20458
diff changeset
   147
  cterm list -> Proof.context -> thm list * Proof.context"} \\
wenzelm
parents: 20458
diff changeset
   148
  @{index_ML Assumption.add_assumes: "
wenzelm
parents: 20458
diff changeset
   149
  cterm list -> Proof.context -> thm list * Proof.context"} \\
20458
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   150
  @{index_ML Assumption.export: "bool -> Proof.context -> Proof.context -> thm -> thm"} \\
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   151
  \end{mldecls}
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   152
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   153
  \begin{description}
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   154
20459
wenzelm
parents: 20458
diff changeset
   155
  \item @{ML_type Assumption.export} represents arbitrary export
wenzelm
parents: 20458
diff changeset
   156
  rules, which is any function of type @{ML_type "bool -> cterm list -> thm -> thm"},
wenzelm
parents: 20458
diff changeset
   157
  where the @{ML_type "bool"} indicates goal mode, and the @{ML_type
wenzelm
parents: 20458
diff changeset
   158
  "cterm list"} the collection of assumptions to be discharged
wenzelm
parents: 20458
diff changeset
   159
  simultaneously.
20458
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   160
20459
wenzelm
parents: 20458
diff changeset
   161
  \item @{ML Assumption.assume}~@{text "A"} turns proposition @{text
wenzelm
parents: 20458
diff changeset
   162
  "A"} into a raw assumption @{text "A \<turnstile> A'"}, where the conclusion
wenzelm
parents: 20458
diff changeset
   163
  @{text "A'"} is in HHF normal form.
20458
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   164
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   165
  \item @{ML Assumption.add_assms}~@{text "e As"} augments the context
20459
wenzelm
parents: 20458
diff changeset
   166
  by assumptions @{text "As"} with export rule @{text "e"}.  The
wenzelm
parents: 20458
diff changeset
   167
  resulting facts are hypothetical theorems as produced by @{ML
wenzelm
parents: 20458
diff changeset
   168
  Assumption.assume}.
wenzelm
parents: 20458
diff changeset
   169
wenzelm
parents: 20458
diff changeset
   170
  \item @{ML Assumption.add_assumes}~@{text "As"} is a special case of
wenzelm
parents: 20458
diff changeset
   171
  @{ML Assumption.add_assms} where the export rule performs @{text
wenzelm
parents: 20458
diff changeset
   172
  "\<Longrightarrow>_intro"} or @{text "#\<Longrightarrow>_intro"}, depending on goal mode.
20458
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   173
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   174
  \item @{ML Assumption.export}~@{text "is_goal inner outer th"}
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   175
  exports result @{text "th"} from the the @{text "inner"} context
20459
wenzelm
parents: 20458
diff changeset
   176
  back into the @{text "outer"} one; @{text "is_goal = true"} means
wenzelm
parents: 20458
diff changeset
   177
  this is a goal context.  The result is in HHF normal form.  Note
wenzelm
parents: 20458
diff changeset
   178
  that @{ML "ProofContext.export"} combines @{ML "Variable.export"}
wenzelm
parents: 20458
diff changeset
   179
  and @{ML "Assumption.export"} in the canonical way.
20458
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   180
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   181
  \end{description}
ab1d60e1ee31 explain assumptions;
wenzelm
parents: 20452
diff changeset
   182
*}
20451
27ea2ba48fa3 misc cleanup;
wenzelm
parents: 20218
diff changeset
   183
27ea2ba48fa3 misc cleanup;
wenzelm
parents: 20218
diff changeset
   184
27ea2ba48fa3 misc cleanup;
wenzelm
parents: 20218
diff changeset
   185
section {* Conclusions *}
27ea2ba48fa3 misc cleanup;
wenzelm
parents: 20218
diff changeset
   186
27ea2ba48fa3 misc cleanup;
wenzelm
parents: 20218
diff changeset
   187
text FIXME
27ea2ba48fa3 misc cleanup;
wenzelm
parents: 20218
diff changeset
   188
27ea2ba48fa3 misc cleanup;
wenzelm
parents: 20218
diff changeset
   189
20452
wenzelm
parents: 20451
diff changeset
   190
section {* Proof states \label{sec:isar-proof-state} *}
18537
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   191
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   192
text {*
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   193
  FIXME
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   194
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   195
\glossary{Proof state}{The whole configuration of a structured proof,
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   196
consisting of a \seeglossary{proof context} and an optional
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   197
\seeglossary{structured goal}.  Internally, an Isar proof state is
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   198
organized as a stack to accomodate block structure of proof texts.
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   199
For historical reasons, a low-level \seeglossary{tactical goal} is
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   200
occasionally called ``proof state'' as well.}
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   201
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   202
\glossary{Structured goal}{FIXME}
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   203
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   204
\glossary{Goal}{See \seeglossary{tactical goal} or \seeglossary{structured goal}. \norefpage}
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   205
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   206
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   207
*}
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   208
20451
27ea2ba48fa3 misc cleanup;
wenzelm
parents: 20218
diff changeset
   209
section {* Proof methods *}
18537
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   210
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   211
text FIXME
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   212
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   213
section {* Attributes *}
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   214
20451
27ea2ba48fa3 misc cleanup;
wenzelm
parents: 20218
diff changeset
   215
text "FIXME ?!"
18537
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   216
2681f9e34390 "The Isabelle/Isar Implementation" manual;
wenzelm
parents:
diff changeset
   217
end