CookBook/Recipes/NamedThms.thy
author Christian Urban <urbanc@in.tum.de>
Thu, 02 Oct 2008 04:48:41 -0400
changeset 15 9da9ba2b095b
parent 14 1c17e99f6f66
child 20 5ae6a1bb91c9
permissions -rw-r--r--
added a solution section and some other minor additions


theory NamedThms
imports Main
uses "antiquote_setup.ML"
     "antiquote_setup_plus.ML"
begin

section {* Accumulate a List of Theorems under a Name *} 


text {*
  \paragraph{Problem:} Your tool @{text foo} works with special rules, called @{text foo}-rules.

  Users should be able to declare @{text foo}-rules in the theory,
  which are then used by some method.

  \paragraph{Solution:}

  *}
ML {*
  structure FooRules = NamedThmsFun(
    val name = "foo" 
    val description = "Rules for foo"
  );
*}

setup FooRules.setup

text {*
  This declares a context data slot where the theorems are stored,
  an attribute @{attribute foo} (with the usual @{text add} and @{text del} options
  to declare new rules) and the internal ML interface to retrieve and 
  modify the facts.

  Furthermore, the facts are made available under the dynamic fact name
  @{text foo}:
*}

lemma rule1[foo]: "A" sorry
lemma rule2[foo]: "B" sorry

declare rule1[foo del]

thm foo

ML {* 
  FooRules.get @{context};
*}


text {* 
  \begin{readmore}
  For more information see @{ML_file "Pure/Tools/named_thms.ML"}.
  \end{readmore}
 *}

text {*
  (FIXME: maybe add a comment about the case when the theorems 
  to be added need to satisfy certain properties)

*}


end