2448
|
1 |
#
|
|
2 |
# $Id$
|
|
3 |
#
|
|
4 |
# IsaMakefile for HOL
|
|
5 |
#
|
|
6 |
|
|
7 |
#### Base system
|
|
8 |
|
|
9 |
OUT = $(ISABELLE_OUTPUT_DIR)
|
|
10 |
|
|
11 |
NAMES = HOL Ord Set Fun subset equalities Prod Relation Trancl Sum WF \
|
|
12 |
mono Lfp Gfp Nat intr_elim indrule Inductive Finite Arith \
|
|
13 |
Sexp Univ List RelPow Option
|
|
14 |
|
|
15 |
FILES = ROOT.ML add_ind_def.ML datatype.ML hologic.ML \
|
|
16 |
ind_syntax.ML cladata.ML simpdata.ML \
|
|
17 |
typedef.ML thy_syntax.ML thy_data.ML ../Pure/section_utils.ML \
|
2889
|
18 |
../Provers/hypsubst.ML ../Provers/classical.ML ../Provers/blast.ML \
|
2448
|
19 |
../Provers/simplifier.ML ../Provers/splitter.ML \
|
2919
|
20 |
../Provers/nat_transitive.ML \
|
2448
|
21 |
$(NAMES:%=%.thy) $(NAMES:%=%.ML)
|
|
22 |
|
|
23 |
$(OUT)/HOL: $(OUT)/Pure $(FILES)
|
2826
|
24 |
@$(ISATOOL) usedir -b $(OUT)/Pure HOL
|
2448
|
25 |
@chmod -w $@
|
|
26 |
|
|
27 |
$(OUT)/Pure:
|
2473
|
28 |
@cd ../Pure; $(ISATOOL) make
|
2448
|
29 |
|
|
30 |
|
|
31 |
## TFL (requires integration into HOL proper)
|
|
32 |
|
|
33 |
TFL_NAMES = mask tfl thms thry usyntax utils
|
|
34 |
TFL_FILES = ../TFL/ROOT.ML ../TFL/sys.sml \
|
|
35 |
$(TFL_NAMES:%=../TFL/%.sig) $(TFL_NAMES:%=../TFL/%.sml)
|
|
36 |
|
|
37 |
TFL: $(OUT)/HOL $(TFL_FILES)
|
2607
|
38 |
@$(ISABELLE) -qe 'exit_use_dir"../TFL"; quit();' HOL
|
2473
|
39 |
|
2448
|
40 |
|
|
41 |
|
2473
|
42 |
#### Tests and examples
|
|
43 |
|
2448
|
44 |
## IMP-semantics example
|
|
45 |
|
|
46 |
IMP_NAMES = Expr Com Natural Transition Denotation Hoare VC
|
|
47 |
IMP_FILES = IMP/ROOT.ML $(IMP_NAMES:%=IMP/%.thy) $(IMP_NAMES:%=IMP/%.ML)
|
|
48 |
|
|
49 |
IMP: $(OUT)/HOL $(IMP_FILES)
|
2826
|
50 |
@$(ISATOOL) usedir $(OUT)/HOL IMP
|
2448
|
51 |
|
|
52 |
|
|
53 |
## Hoare logic
|
|
54 |
|
|
55 |
Hoare_NAMES = Hoare Arith2 Examples
|
|
56 |
Hoare_FILES = Hoare/ROOT.ML $(Hoare_NAMES:%=Hoare/%.thy) \
|
|
57 |
$(Hoare_NAMES:%=Hoare/%.ML)
|
|
58 |
|
|
59 |
Hoare: $(OUT)/HOL $(Hoare_FILES)
|
2826
|
60 |
@$(ISATOOL) usedir $(OUT)/HOL Hoare
|
2448
|
61 |
|
|
62 |
|
|
63 |
## The integers in HOL
|
|
64 |
|
|
65 |
INTEG_NAMES = Equiv Integ Group Ring Lagrange IntRingDefs IntRing
|
|
66 |
|
|
67 |
INTEG_FILES = Integ/ROOT.ML \
|
|
68 |
$(INTEG_NAMES:%=Integ/%.thy) $(INTEG_NAMES:%=Integ/%.ML)
|
|
69 |
|
|
70 |
Integ: $(OUT)/HOL $(INTEG_FILES)
|
2826
|
71 |
@$(ISATOOL) usedir $(OUT)/HOL Integ
|
2448
|
72 |
|
|
73 |
|
|
74 |
## I/O Automata
|
|
75 |
|
|
76 |
IOA_NTP_NAMES = Abschannel Action Correctness Impl Lemmas Multiset Packet \
|
|
77 |
Receiver Sender
|
|
78 |
IOA_ABP_NAMES = Action Correctness Lemmas
|
|
79 |
IOA_MT_NAMES = Asig IOA Solve
|
|
80 |
|
|
81 |
IOA_FILES = IOA/NTP/ROOT.ML IOA/ABP/ROOT.ML IOA/NTP/Spec.thy \
|
|
82 |
$(IOA_NTP_NAMES:%=IOA/NTP/%.thy) $(IOA_NTP_NAMES:%=IOA/NTP/%.ML) \
|
|
83 |
IOA/ABP/Abschannel.thy IOA/ABP/Abschannel_finite.thy IOA/ABP/Env.thy \
|
|
84 |
IOA/ABP/Impl.thy IOA/ABP/Impl_finite.thy IOA/ABP/Packet.thy \
|
|
85 |
IOA/ABP/Receiver.thy IOA/ABP/Sender.thy IOA/ABP/Spec.thy \
|
|
86 |
$(IOA_ABP_NAMES:%=IOA/ABP/%.thy) $(IOA_ABP_NAMES:%=IOA/ABP/%.ML) \
|
|
87 |
$(IOA_MT_NAMES:%=IOA/meta_theory/%.thy) $(IOA_MT_NAMES:%=IOA/meta_theory/%.ML)
|
|
88 |
|
|
89 |
IOA: $(OUT)/HOL $(IOA_FILES)
|
2827
|
90 |
@$(ISATOOL) usedir -s IOA-NTP $(OUT)/HOL IOA/NTP
|
|
91 |
@$(ISATOOL) usedir -s IOA-ABP $(OUT)/HOL IOA/ABP
|
2448
|
92 |
|
|
93 |
|
|
94 |
## Authentication & Security Protocols
|
|
95 |
|
|
96 |
Auth_NAMES = Message Shared NS_Shared OtwayRees OtwayRees_AN OtwayRees_Bad \
|
2473
|
97 |
Recur WooLam Yahalom Yahalom2 Public NS_Public_Bad NS_Public
|
2448
|
98 |
|
|
99 |
AUTH_FILES = Auth/ROOT.ML $(AUTH_NAMES:%=Auth/%.thy) $(AUTH_NAMES:%=Auth/%.ML)
|
|
100 |
|
|
101 |
Auth: $(OUT)/HOL $(AUTH_FILES)
|
2826
|
102 |
@$(ISATOOL) usedir $(OUT)/HOL Auth
|
2448
|
103 |
|
|
104 |
|
|
105 |
## Properties of substitutions
|
|
106 |
|
|
107 |
SUBST_NAMES = AList Setplus Subst Unifier UTerm UTLemmas
|
|
108 |
|
|
109 |
SUBST_FILES = Subst/ROOT.ML \
|
|
110 |
$(SUBST_NAMES:%=Subst/%.thy) $(SUBST_NAMES:%=Subst/%.ML)
|
|
111 |
|
|
112 |
Subst: $(OUT)/HOL $(SUBST_FILES)
|
2826
|
113 |
@$(ISATOOL) usedir $(OUT)/HOL Subst
|
2448
|
114 |
|
|
115 |
|
|
116 |
## Confluence of Lambda-calculus
|
|
117 |
|
|
118 |
LAMBDA_NAMES = Lambda ParRed Commutation Eta
|
|
119 |
|
|
120 |
LAMBDA_FILES = Lambda/ROOT.ML \
|
|
121 |
$(LAMBDA_NAMES:%=Lambda/%.thy) $(LAMBDA_NAMES:%=Lambda/%.ML)
|
|
122 |
|
|
123 |
Lambda: $(OUT)/HOL $(LAMBDA_FILES)
|
2826
|
124 |
@$(ISATOOL) usedir $(OUT)/HOL Lambda
|
2448
|
125 |
|
|
126 |
|
2527
|
127 |
## Type inference without let
|
|
128 |
|
|
129 |
W0_NAMES = I Maybe MiniML Type W
|
|
130 |
|
|
131 |
W0_FILES = W0/ROOT.ML \
|
|
132 |
$(W0_NAMES:%=W0/%.thy) $(W0_NAMES:%=W0/%.ML)
|
2448
|
133 |
|
2527
|
134 |
W0: $(OUT)/HOL $(W0_FILES)
|
2826
|
135 |
@$(ISATOOL) usedir $(OUT)/HOL W0
|
2527
|
136 |
|
|
137 |
|
|
138 |
## Type inference with let
|
|
139 |
|
|
140 |
MINIML_NAMES = Generalize Instance Maybe MiniML Type W
|
2448
|
141 |
|
|
142 |
MINIML_FILES = MiniML/ROOT.ML \
|
|
143 |
$(MINIML_NAMES:%=MiniML/%.thy) $(MINIML_NAMES:%=MiniML/%.ML)
|
|
144 |
|
|
145 |
MiniML: $(OUT)/HOL $(MINIML_FILES)
|
2826
|
146 |
@$(ISATOOL) usedir $(OUT)/HOL MiniML
|
2448
|
147 |
|
|
148 |
|
|
149 |
## Lexical analysis
|
|
150 |
|
|
151 |
LEX_FILES = Auto AutoChopper Chopper Prefix
|
|
152 |
|
|
153 |
LEX_FILES = Lex/ROOT.ML \
|
|
154 |
$(LEX_NAMES:%=Lex/%.thy) $(LEX_NAMES:%=Lex/%.ML)
|
|
155 |
|
|
156 |
Lex: $(OUT)/HOL $(LEX_FILES)
|
2826
|
157 |
@$(ISATOOL) usedir $(OUT)/HOL Lex
|
2448
|
158 |
|
|
159 |
|
2545
|
160 |
## Axiomatic type classes examples
|
|
161 |
|
|
162 |
AXC_GROUP_FILES = Group.ML Group.thy GroupDefs.ML GroupDefs.thy \
|
|
163 |
GroupInsts.thy Monoid.thy MonoidGroupInsts.thy ROOT.ML Sigs.thy
|
|
164 |
|
|
165 |
AXC_LATTICE_FILES = CLattice.ML CLattice.thy LatInsts.ML LatInsts.thy \
|
|
166 |
LatMorph.ML LatMorph.thy LatPreInsts.ML LatPreInsts.thy \
|
|
167 |
Lattice.ML Lattice.thy OrdDefs.ML OrdDefs.thy OrdInsts.thy \
|
|
168 |
Order.ML Order.thy ROOT.ML tools.ML
|
|
169 |
|
|
170 |
AXC_TUTORIAL_FILES = BoolGroupInsts.thy Group.ML Group.thy Monoid.thy \
|
|
171 |
MonoidGroupInsts.thy ProdGroupInsts.thy Product.thy \
|
|
172 |
ProductInsts.thy ROOT.ML Semigroup.thy Semigroups.thy Sigs.thy \
|
|
173 |
Xor.ML Xor.thy
|
|
174 |
|
|
175 |
AXCLASSES_FILES = AxClasses/ROOT.ML \
|
|
176 |
$(AXC_GROUP_FILES:%=AxClasses/Group/%) \
|
|
177 |
$(AXC_LATTICE_FILES:%=AxClasses/Lattice/%) \
|
|
178 |
$(AXC_TUTORIAL_FILES:%=AxClasses/Tutorial/%)
|
|
179 |
|
|
180 |
AxClasses: $(OUT)/HOL $(AXCLASSES_FILES)
|
2826
|
181 |
@$(ISATOOL) usedir $(OUT)/HOL AxClasses
|
2827
|
182 |
@$(ISATOOL) usedir -s AxClasses-Group $(OUT)/HOL AxClasses/Group
|
|
183 |
@$(ISATOOL) usedir -s AxClasses-Lattice $(OUT)/HOL AxClasses/Lattice
|
|
184 |
@$(ISATOOL) usedir -s AxClasses-Tutorial $(OUT)/HOL AxClasses/Tutorial
|
2545
|
185 |
|
|
186 |
|
2909
|
187 |
## Higher-order quotients and example fractionals
|
2900
|
188 |
|
2909
|
189 |
QUOT_FILES = Quot/ROOT.ML Quot/PER0.thy Quot/PER0.ML Quot/PER.thy Quot/PER.ML \
|
|
190 |
Quot/HQUOT.thy Quot/HQUOT.ML Quot/NPAIR.thy Quot/NPAIR.ML \
|
|
191 |
Quot/FRACT.thy Quot/FRACT.ML
|
2900
|
192 |
Quot: $(OUT)/HOL $(QUOT_FILES)
|
|
193 |
@$(ISATOOL) usedir $(OUT)/HOL Quot
|
|
194 |
|
|
195 |
|
2448
|
196 |
## Miscellaneous examples
|
|
197 |
|
2982
|
198 |
EX_NAMES = String BT Perm Comb InSort Qsort LexProd Puzzle Mutil \
|
|
199 |
Primes NatSum SList LList LFilter Acc PropLog Term Simult MT
|
2448
|
200 |
|
|
201 |
EX_FILES = ex/ROOT.ML ex/cla.ML ex/meson.ML ex/mesontest.ML ex/rel.ML \
|
|
202 |
ex/set.ML $(EX_NAMES:%=ex/%.thy) $(EX_NAMES:%=ex/%.ML)
|
|
203 |
|
|
204 |
ex: $(OUT)/HOL $(EX_FILES)
|
2826
|
205 |
@$(ISATOOL) usedir $(OUT)/HOL ex
|
2448
|
206 |
|
|
207 |
|
|
208 |
## Full test
|
|
209 |
|
2635
|
210 |
test: $(OUT)/HOL \
|
2900
|
211 |
TFL IMP Hoare Lex Integ Auth Subst Lambda W0 MiniML IOA AxClasses Quot ex
|
2448
|
212 |
echo 'Test examples ran successfully' > test
|
|
213 |
|
|
214 |
|
|
215 |
.PRECIOUS: $(OUT)/Pure $(OUT)/HOL
|