src/Doc/Implementation/Proof.thy
changeset 56579 4c94f631c595
parent 56420 b266e7a86485
child 58555 7975676c08c0
equal deleted inserted replaced
56578:e73723b39c82 56579:4c94f631c595
    61 notepad
    61 notepad
    62 begin
    62 begin
    63   {
    63   {
    64     fix x  -- {* all potential occurrences of some @{text "x::\<tau>"} are fixed *}
    64     fix x  -- {* all potential occurrences of some @{text "x::\<tau>"} are fixed *}
    65     {
    65     {
    66       have "x::'a \<equiv> x"  -- {* implicit type assigment by concrete occurrence *}
    66       have "x::'a \<equiv> x"  -- {* implicit type assignment by concrete occurrence *}
    67         by (rule reflexive)
    67         by (rule reflexive)
    68     }
    68     }
    69     thm this  -- {* result still with fixed type @{text "'a"} *}
    69     thm this  -- {* result still with fixed type @{text "'a"} *}
    70   }
    70   }
    71   thm this  -- {* fully general result for arbitrary @{text "?x::?'a"} *}
    71   thm this  -- {* fully general result for arbitrary @{text "?x::?'a"} *}
    73 
    73 
    74 text {* The Isabelle/Isar proof context manages the details of term
    74 text {* The Isabelle/Isar proof context manages the details of term
    75   vs.\ type variables, with high-level principles for moving the
    75   vs.\ type variables, with high-level principles for moving the
    76   frontier between fixed and schematic variables.
    76   frontier between fixed and schematic variables.
    77 
    77 
    78   The @{text "add_fixes"} operation explictly declares fixed
    78   The @{text "add_fixes"} operation explicitly declares fixed
    79   variables; the @{text "declare_term"} operation absorbs a term into
    79   variables; the @{text "declare_term"} operation absorbs a term into
    80   a context by fixing new type variables and adding syntactic
    80   a context by fixing new type variables and adding syntactic
    81   constraints.
    81   constraints.
    82 
    82 
    83   The @{text "export"} operation is able to perform the main work of
    83   The @{text "export"} operation is able to perform the main work of
   196 
   196 
   197 text {* The following ML code can now work with the invented names of
   197 text {* The following ML code can now work with the invented names of
   198   @{text x1}, @{text x2}, @{text x3}, without depending on
   198   @{text x1}, @{text x2}, @{text x3}, without depending on
   199   the details on the system policy for introducing these variants.
   199   the details on the system policy for introducing these variants.
   200   Recall that within a proof body the system always invents fresh
   200   Recall that within a proof body the system always invents fresh
   201   ``skolem constants'', e.g.\ as follows: *}
   201   ``Skolem constants'', e.g.\ as follows: *}
   202 
   202 
   203 notepad
   203 notepad
   204 begin
   204 begin
   205   ML_prf %"ML" {*
   205   ML_prf %"ML" {*
   206     val ctxt0 = @{context};
   206     val ctxt0 = @{context};
   435   "C"} in the context augmented by fixed variables @{text "xs"} and
   435   "C"} in the context augmented by fixed variables @{text "xs"} and
   436   assumptions @{text "As"}, and applies tactic @{text "tac"} to solve
   436   assumptions @{text "As"}, and applies tactic @{text "tac"} to solve
   437   it.  The latter may depend on the local assumptions being presented
   437   it.  The latter may depend on the local assumptions being presented
   438   as facts.  The result is in HHF normal form.
   438   as facts.  The result is in HHF normal form.
   439 
   439 
   440   \item @{ML Goal.prove_multi} is simular to @{ML Goal.prove}, but
   440   \item @{ML Goal.prove_multi} is similar to @{ML Goal.prove}, but
   441   states several conclusions simultaneously.  The goal is encoded by
   441   states several conclusions simultaneously.  The goal is encoded by
   442   means of Pure conjunction; @{ML Goal.conjunction_tac} will turn this
   442   means of Pure conjunction; @{ML Goal.conjunction_tac} will turn this
   443   into a collection of individual subgoals.
   443   into a collection of individual subgoals.
   444 
   444 
   445   \item @{ML Obtain.result}~@{text "tac thms ctxt"} eliminates the
   445   \item @{ML Obtain.result}~@{text "tac thms ctxt"} eliminates the