38 exit 1; \ |
38 exit 1; \ |
39 fi;\ |
39 fi;\ |
40 case "$(COMP)" in \ |
40 case "$(COMP)" in \ |
41 poly*) echo 'make_database"$(BIN)/HOL"; quit();' \ |
41 poly*) echo 'make_database"$(BIN)/HOL"; quit();' \ |
42 | $(COMP) $(BIN)/Pure;\ |
42 | $(COMP) $(BIN)/Pure;\ |
43 if [ "$${MAKE_HTML-undefined}" != "undefined" ]; \ |
43 if [ "$${MAKE_HTML}" = "true" ]; \ |
44 then echo 'open PolyML; make_html := true; exit_use_dir".";' \ |
44 then echo 'open PolyML; make_html := true; exit_use_dir".";' \ |
45 | $(COMP) $(BIN)/HOL;\ |
45 | $(COMP) $(BIN)/HOL;\ |
46 else echo 'open PolyML; exit_use_dir".";' \ |
46 elif [ "$${MAKE_HTML-undefined}" != "undefined" ]; \ |
|
47 then echo 'open PolyML; make_html := true; exit_use_dir"."; make_html := false;' | $(COMP) $(BIN)/HOL;\ |
|
48 else echo 'open PolyML; exit_use_dir".";' \ |
47 | $(COMP) $(BIN)/HOL;\ |
49 | $(COMP) $(BIN)/HOL;\ |
48 fi;;\ |
50 fi;;\ |
49 sml*) if [ "$${MAKE_HTML-undefined}" != "undefined" ];\ |
51 sml*) if [ "$${MAKE_HTML}" = "true" ]; \ |
50 then echo 'make_html := true; exit_use_dir"."; xML"$(BIN)/HOL" banner;' | $(BIN)/Pure;\ |
52 then echo 'make_html := true; exit_use_dir"."; xML"$(BIN)/HOL" banner;' | $(BIN)/Pure;\ |
|
53 elif [ "$${MAKE_HTML-undefined}" != "undefined" ];\ |
|
54 then echo 'make_html := true; exit_use_dir"."; make_html := false; xML"$(BIN)/HOL" banner;' \ |
|
55 | $(BIN)/Pure;\ |
51 else echo 'exit_use_dir"."; xML"$(BIN)/HOL" banner;' \ |
56 else echo 'exit_use_dir"."; xML"$(BIN)/HOL" banner;' \ |
52 | $(BIN)/Pure;\ |
57 | $(BIN)/Pure;\ |
53 fi;;\ |
58 fi;;\ |
54 *) echo Bad value for ISABELLECOMP: \ |
59 *) echo Bad value for ISABELLECOMP: \ |
55 $(COMP) is not poly or sml; exit 1;;\ |
60 $(COMP) is not poly or sml; exit 1;;\ |
71 ##IMP-semantics example |
76 ##IMP-semantics example |
72 IMP_NAMES = Com Denotation Equiv Properties |
77 IMP_NAMES = Com Denotation Equiv Properties |
73 IMP_FILES = IMP/ROOT.ML $(IMP_NAMES:%=IMP/%.thy) $(IMP_NAMES:%=IMP/%.ML) |
78 IMP_FILES = IMP/ROOT.ML $(IMP_NAMES:%=IMP/%.thy) $(IMP_NAMES:%=IMP/%.ML) |
74 |
79 |
75 IMP: $(BIN)/HOL $(IMP_FILES) |
80 IMP: $(BIN)/HOL $(IMP_FILES) |
76 echo 'exit_use_dir"IMP";quit();' | $(LOGIC) |
81 if [ "$${MAKE_HTML-undefined}" != "undefined" ]; \ |
|
82 then echo 'make_html := true; exit_use_dir"IMP";quit();' | $(LOGIC); \ |
|
83 else echo 'exit_use_dir"IMP";quit();' | $(LOGIC); \ |
|
84 fi |
77 |
85 |
78 ##Hoare logic |
86 ##Hoare logic |
79 Hoare_NAMES = Hoare Arith2 Examples |
87 Hoare_NAMES = Hoare Arith2 Examples |
80 Hoare_FILES = Hoare/ROOT.ML $(Hoare_NAMES:%=Hoare/%.thy) $(Hoare_NAMES:%=Hoare/%.ML) |
88 Hoare_FILES = Hoare/ROOT.ML $(Hoare_NAMES:%=Hoare/%.thy) \ |
|
89 $(Hoare_NAMES:%=Hoare/%.ML) |
81 |
90 |
82 Hoare: $(BIN)/HOL $(Hoare_FILES) |
91 Hoare: $(BIN)/HOL $(Hoare_FILES) |
83 echo 'exit_use_dir"Hoare";quit();' | $(LOGIC) |
92 if [ "$${MAKE_HTML-undefined}" != "undefined" ]; \ |
|
93 then echo 'make_html := true; exit_use_dir"Hoare";quit();' | $(LOGIC);\ |
|
94 else echo 'exit_use_dir"Hoare";quit();' | $(LOGIC); \ |
|
95 fi |
84 |
96 |
85 ##The integers in HOL |
97 ##The integers in HOL |
86 INTEG_NAMES = Equiv Integ |
98 INTEG_NAMES = Equiv Integ |
87 |
99 |
88 INTEG_FILES = Integ/ROOT.ML \ |
100 INTEG_FILES = Integ/ROOT.ML \ |
89 $(INTEG_NAMES:%=Integ/%.thy) $(INTEG_NAMES:%=Integ/%.ML) |
101 $(INTEG_NAMES:%=Integ/%.thy) $(INTEG_NAMES:%=Integ/%.ML) |
90 |
102 |
91 Integ: $(BIN)/HOL $(INTEG_FILES) |
103 Integ: $(BIN)/HOL $(INTEG_FILES) |
92 echo 'exit_use_dir"Integ";quit();' | $(LOGIC) |
104 if [ "$${MAKE_HTML-undefined}" != "undefined" ]; \ |
|
105 then echo 'make_html := true; exit_use_dir"Integ";quit();' | $(LOGIC);\ |
|
106 else echo 'exit_use_dir"Integ";quit();' | $(LOGIC); \ |
|
107 fi |
93 |
108 |
94 ##I/O Automata |
109 ##I/O Automata |
95 IOA_NTP_NAMES = Abschannel Action Correctness Impl Lemmas Multiset Packet\ |
110 IOA_NTP_NAMES = Abschannel Action Correctness Impl Lemmas Multiset Packet\ |
96 Receiver Sender |
111 Receiver Sender |
97 IOA_ABP_NAMES = Action Correctness Lemmas |
112 IOA_ABP_NAMES = Action Correctness Lemmas |
104 IOA/ABP/Receiver.thy IOA/ABP/Sender.thy IOA/ABP/Spec.thy\ |
119 IOA/ABP/Receiver.thy IOA/ABP/Sender.thy IOA/ABP/Spec.thy\ |
105 $(IOA_ABP_NAMES:%=IOA/ABP/%.thy) $(IOA_ABP_NAMES:%=IOA/ABP/%.ML)\ |
120 $(IOA_ABP_NAMES:%=IOA/ABP/%.thy) $(IOA_ABP_NAMES:%=IOA/ABP/%.ML)\ |
106 $(IOA_MT_NAMES:%=IOA/meta_theory/%.thy) $(IOA_MT_NAMES:%=IOA/meta_theory/%.ML) |
121 $(IOA_MT_NAMES:%=IOA/meta_theory/%.thy) $(IOA_MT_NAMES:%=IOA/meta_theory/%.ML) |
107 |
122 |
108 IOA: $(BIN)/HOL $(IOA_FILES) |
123 IOA: $(BIN)/HOL $(IOA_FILES) |
109 echo 'exit_use_dir"IOA/NTP";quit();' | $(LOGIC) |
124 if [ "$${MAKE_HTML-undefined}" != "undefined" ]; \ |
110 echo 'exit_use_dir"IOA/ABP";quit();' | $(LOGIC) |
125 then echo 'make_html := true; exit_use_dir"IOA/NTP";quit();' \ |
|
126 | $(LOGIC);\ |
|
127 echo 'make_html := true; exit_use_dir"IOA/ABP";quit();' \ |
|
128 | $(LOGIC);\ |
|
129 else echo 'exit_use_dir"IOA/NTP";quit();' | $(LOGIC); \ |
|
130 echo 'exit_use_dir"IOA/ABP";quit();' | $(LOGIC); \ |
|
131 fi |
111 |
132 |
112 ##Properties of substitutions |
133 ##Properties of substitutions |
113 SUBST_NAMES = AList Setplus Subst Unifier UTerm UTLemmas |
134 SUBST_NAMES = AList Setplus Subst Unifier UTerm UTLemmas |
114 |
135 |
115 SUBST_FILES = Subst/ROOT.ML \ |
136 SUBST_FILES = Subst/ROOT.ML \ |
116 $(SUBST_NAMES:%=Subst/%.thy) $(SUBST_NAMES:%=Subst/%.ML) |
137 $(SUBST_NAMES:%=Subst/%.thy) $(SUBST_NAMES:%=Subst/%.ML) |
117 |
138 |
118 Subst: $(BIN)/HOL $(SUBST_FILES) |
139 Subst: $(BIN)/HOL $(SUBST_FILES) |
119 echo 'exit_use_dir"Subst";quit();' | $(LOGIC) |
140 if [ "$${MAKE_HTML-undefined}" != "undefined" ]; \ |
|
141 then echo 'make_html := true; exit_use_dir"Subst";quit();' | $(LOGIC);\ |
|
142 else echo 'exit_use_dir"Subst";quit();' | $(LOGIC); \ |
|
143 fi |
120 |
144 |
121 ##Confluence of Lambda-calculus |
145 ##Confluence of Lambda-calculus |
122 LAMBDA_NAMES = Lambda ParRed Commutation Eta |
146 LAMBDA_NAMES = Lambda ParRed Commutation Eta |
123 |
147 |
124 LAMBDA_FILES = Lambda/ROOT.ML \ |
148 LAMBDA_FILES = Lambda/ROOT.ML \ |
125 $(LAMBDA_NAMES:%=Lambda/%.thy) $(LAMBDA_NAMES:%=Lambda/%.ML) |
149 $(LAMBDA_NAMES:%=Lambda/%.thy) $(LAMBDA_NAMES:%=Lambda/%.ML) |
126 |
150 |
127 Lambda: $(BIN)/HOL $(LAMBDA_FILES) |
151 Lambda: $(BIN)/HOL $(LAMBDA_FILES) |
128 echo 'exit_use_dir"Lambda";quit();' | $(LOGIC) |
152 if [ "$${MAKE_HTML-undefined}" != "undefined" ]; \ |
|
153 then echo 'make_html := true; exit_use_dir"Lambda";quit();' \ |
|
154 | $(LOGIC);\ |
|
155 else echo 'exit_use_dir"Lambda";quit();' | $(LOGIC); \ |
|
156 fi |
129 |
157 |
130 ##Type inference for MiniML |
158 ##Type inference for MiniML |
131 MINIML_NAMES = I Maybe MiniML Type W |
159 MINIML_NAMES = I Maybe MiniML Type W |
132 |
160 |
133 MINIML_FILES = MiniML/ROOT.ML \ |
161 MINIML_FILES = MiniML/ROOT.ML \ |
134 $(MINIML_NAMES:%=MiniML/%.thy) $(MINIML_NAMES:%=MiniML/%.ML) |
162 $(MINIML_NAMES:%=MiniML/%.thy) $(MINIML_NAMES:%=MiniML/%.ML) |
135 |
163 |
136 MiniML: $(BIN)/HOL $(MINIML_FILES) |
164 MiniML: $(BIN)/HOL $(MINIML_FILES) |
137 echo 'exit_use_dir"MiniML";quit();' | $(LOGIC) |
165 if [ "$${MAKE_HTML-undefined}" != "undefined" ]; \ |
|
166 then echo 'make_html := true; exit_use_dir"MiniML";quit();' \ |
|
167 | $(LOGIC);\ |
|
168 else echo 'exit_use_dir"MiniML";quit();' | $(LOGIC); \ |
|
169 fi |
138 |
170 |
139 ##Lexical analysis |
171 ##Lexical analysis |
140 LEX_FILES = Auto AutoChopper Chopper Prefix |
172 LEX_FILES = Auto AutoChopper Chopper Prefix |
141 |
173 |
142 LEX_FILES = Lex/ROOT.ML \ |
174 LEX_FILES = Lex/ROOT.ML \ |
143 $(LEX_NAMES:%=Lex/%.thy) $(LEX_NAMES:%=Lex/%.ML) |
175 $(LEX_NAMES:%=Lex/%.thy) $(LEX_NAMES:%=Lex/%.ML) |
144 |
176 |
145 Lex: $(BIN)/HOL $(LEX_FILES) |
177 Lex: $(BIN)/HOL $(LEX_FILES) |
146 echo 'exit_use_dir"Lex";quit();' | $(LOGIC) |
178 if [ "$${MAKE_HTML-undefined}" != "undefined" ]; \ |
|
179 then echo 'make_html := true; exit_use_dir"Lex";quit();' | $(LOGIC);\ |
|
180 else echo 'exit_use_dir"Lex";quit();' | $(LOGIC); \ |
|
181 fi |
147 |
182 |
148 ##Miscellaneous examples |
183 ##Miscellaneous examples |
149 EX_NAMES = LexProd MT Acc PropLog Puzzle Qsort LList Rec Simult Term String \ |
184 EX_NAMES = LexProd MT Acc PropLog Puzzle Qsort LList Rec Simult Term String \ |
150 BT Perm |
185 BT Perm |
151 |
186 |
152 EX_FILES = ex/ROOT.ML ex/cla.ML ex/meson.ML ex/mesontest.ML ex/rel.ML \ |
187 EX_FILES = ex/ROOT.ML ex/cla.ML ex/meson.ML ex/mesontest.ML ex/rel.ML \ |
153 ex/set.ML $(EX_NAMES:%=ex/%.thy) $(EX_NAMES:%=ex/%.ML) |
188 ex/set.ML $(EX_NAMES:%=ex/%.thy) $(EX_NAMES:%=ex/%.ML) |
154 |
189 |
155 ex: $(BIN)/HOL $(EX_FILES) |
190 ex: $(BIN)/HOL $(EX_FILES) |
156 echo 'exit_use_dir"ex";quit();' | $(LOGIC) |
191 if [ "$${MAKE_HTML-undefined}" != "undefined" ]; \ |
|
192 then echo 'make_html := true; exit_use_dir"ex";quit();' | $(LOGIC);\ |
|
193 else echo 'exit_use_dir"ex";quit();' | $(LOGIC); \ |
|
194 fi |
157 |
195 |
158 #Full test. |
196 #Full test. |
159 test: $(BIN)/HOL IMP Hoare Lex Integ Subst Lambda MiniML IOA ex |
197 test: $(BIN)/HOL IMP Hoare Lex Integ Subst Lambda MiniML IOA ex |
160 echo 'Test examples ran successfully' > test |
198 echo 'Test examples ran successfully' > test |
161 |
199 |