author | Christian Urban <urbanc@in.tum.de> |
Thu, 30 Oct 2008 13:36:51 +0100 | |
changeset 47 | 4daf913fdbe1 |
parent 43 | 02f76f1b6e7b |
child 48 | 609f9ef73494 |
permissions | -rw-r--r-- |
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
1 |
theory NamedThms |
25
e2f9f94b26d4
Antiquotation setup is now contained in theory Base.
berghofe
parents:
20
diff
changeset
|
2 |
imports Base |
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
3 |
begin |
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
4 |
|
13
2b07da8b310d
polished and added a subdirectory for the recipes
Christian Urban <urbanc@in.tum.de>
parents:
12
diff
changeset
|
5 |
section {* Accumulate a List of Theorems under a Name *} |
2
978a3c2ed7ce
split the document into smaller pieces;
Christian Urban <urbanc@in.tum.de>
parents:
0
diff
changeset
|
6 |
|
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
7 |
|
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
8 |
text {* |
20 | 9 |
{\bf Problem:} |
10 |
Your tool @{text foo} works with special rules, called @{text foo}-rules. |
|
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
11 |
Users should be able to declare @{text foo}-rules in the theory, |
47
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
12 |
which are then used in a method.\smallskip |
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
13 |
|
47
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
14 |
{\bf Solution:} This can be achieved using named theorem lists.\smallskip |
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
15 |
|
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
16 |
Named theorem lists can be set up using the code |
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
17 |
|
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
18 |
*} |
47
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
19 |
|
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
20 |
ML {* |
47
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
21 |
structure FooRules = NamedThmsFun ( |
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
22 |
val name = "foo" |
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
23 |
val description = "Rules for foo"); |
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
24 |
*} |
47
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
25 |
(*<*)setup FooRules.setup(*>*) |
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
26 |
|
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
27 |
text {* |
47
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
28 |
and the command |
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
29 |
|
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
30 |
@{ML_text [display] "setup FooRules.setup"} |
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
31 |
|
20 | 32 |
This code declares a context data slot where the theorems are stored, |
43
02f76f1b6e7b
added positions to anti-quotations; removed old antiquotation_setup; tuned the text a bit
Christian Urban <urbanc@in.tum.de>
parents:
25
diff
changeset
|
33 |
an attribute @{ML_text foo} (with the usual @{ML_text add} and @{ML_text del} options |
20 | 34 |
to adding and deleting theorems) and an internal ML interface to retrieve and |
35 |
modify the theorems. |
|
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
36 |
|
20 | 37 |
Furthermore, the facts are made available on the user level under the dynamic |
47
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
38 |
fact name @{text foo}. For example we can declare two lemmas to be of the kind |
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
39 |
@{ML_text foo}: |
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
40 |
*} |
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
41 |
|
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
42 |
lemma rule1[foo]: "A" sorry |
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
43 |
lemma rule2[foo]: "B" sorry |
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
44 |
|
47
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
45 |
text {* undeclare them: *} |
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
46 |
|
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
47 |
declare rule1[foo del] |
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
48 |
|
47
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
49 |
text {* and query them: *} |
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
50 |
|
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
51 |
thm foo |
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
52 |
|
20 | 53 |
text {* |
43
02f76f1b6e7b
added positions to anti-quotations; removed old antiquotation_setup; tuned the text a bit
Christian Urban <urbanc@in.tum.de>
parents:
25
diff
changeset
|
54 |
In an ML-context the rules marked with @{ML_text "foo"} an be retrieved |
20 | 55 |
using |
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
56 |
|
47
4daf913fdbe1
hakked latex so that it does not display ML {* *}; general tuning
Christian Urban <urbanc@in.tum.de>
parents:
43
diff
changeset
|
57 |
@{ML_response_fake [display] "FooRules.get @{context}" "(FIXME)"} |
20 | 58 |
|
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
59 |
\begin{readmore} |
12
2f1736cb8f26
various changes by Alex and Christian
Christian Urban <urbanc@in.tum.de>
parents:
2
diff
changeset
|
60 |
For more information see @{ML_file "Pure/Tools/named_thms.ML"}. |
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
61 |
\end{readmore} |
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
62 |
*} |
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
63 |
|
15
9da9ba2b095b
added a solution section and some other minor additions
Christian Urban <urbanc@in.tum.de>
parents:
14
diff
changeset
|
64 |
text {* |
9da9ba2b095b
added a solution section and some other minor additions
Christian Urban <urbanc@in.tum.de>
parents:
14
diff
changeset
|
65 |
(FIXME: maybe add a comment about the case when the theorems |
9da9ba2b095b
added a solution section and some other minor additions
Christian Urban <urbanc@in.tum.de>
parents:
14
diff
changeset
|
66 |
to be added need to satisfy certain properties) |
9da9ba2b095b
added a solution section and some other minor additions
Christian Urban <urbanc@in.tum.de>
parents:
14
diff
changeset
|
67 |
|
9da9ba2b095b
added a solution section and some other minor additions
Christian Urban <urbanc@in.tum.de>
parents:
14
diff
changeset
|
68 |
*} |
9da9ba2b095b
added a solution section and some other minor additions
Christian Urban <urbanc@in.tum.de>
parents:
14
diff
changeset
|
69 |
|
0
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
70 |
|
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
71 |
end |
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
72 |
|
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
73 |
|
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
74 |
|
02503850a8cf
initial commit of Alexander's files
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
75 |