Added IMP, which necessiated changes in intr_elim.tex (mk_cases).
Improved layout for set comprehension in Set.thy.
--- a/Makefile Wed Aug 31 16:25:19 1994 +0200
+++ b/Makefile Wed Aug 31 17:50:59 1994 +0200
@@ -31,6 +31,9 @@
../Provers/classical.ML ../Provers/simplifier.ML \
../Provers/splitter.ML ../Provers/ind.ML
+IMP_FILES = IMP/ROOT.ML IMP/Com.ML IMP/Com.thy IMP/Denotation.ML\
+ IMP/Denotation.thy IMP/Equiv.ML IMP/Equiv.thy
+
EX_FILES = ex/ROOT.ML ex/cla.ML \
ex/LexProd.ML ex/LexProd.thy ex/meson.ML ex/mesontest.ML\
ex/MT.ML ex/MT.thy ex/Acc.ML ex/Acc.thy \
@@ -64,13 +67,13 @@
$(BIN)/Pure:
cd ../Pure; $(MAKE)
-#Directory Subst also tests the system
+#Directories IMP and Subst also test the system
#Load ex/ROOT.ML last since it creates the file "test"
-test: $(BIN)/HOL $(SUBST_FILES) $(EX_FILES)
+test: $(BIN)/HOL $(IMP_FILES) $(SUBST_FILES) $(EX_FILES)
case "$(COMP)" in \
- poly*) echo 'use"Subst/ROOT.ML"; use"ex/ROOT.ML"; quit();' \
+ poly*) echo 'use"IMP/ROOT.ML"; use"Subst/ROOT.ML"; use"ex/ROOT.ML"; quit();' \
| $(COMP) $(BIN)/HOL ;;\
- sml*) echo 'use"Subst/ROOT.ML"; use"ex/ROOT.ML";' | $(BIN)/HOL;;\
+ sml*) echo 'use"IMP/ROOT.ML"; use"Subst/ROOT.ML"; use"ex/ROOT.ML";' | $(BIN)/HOL;;\
*) echo Bad value for ISABELLECOMP: \
$(COMP) is not poly or sml;;\
esac
--- a/Set.thy Wed Aug 31 16:25:19 1994 +0200
+++ b/Set.thy Wed Aug 31 17:50:59 1994 +0200
@@ -46,7 +46,7 @@
(** Binding Constants **)
"@Coll" :: "[idt, bool] => 'a set" ("(1{_./ _})")
- "@SetCompr" :: "['a, idts, bool] => 'a set" ("{_ |/_./ _}")
+ "@SetCompr" :: "['a, idts, bool] => 'a set" ("(1{_ |/_./ _})")
(* Big Intersection / Union *)
--- a/intr_elim.ML Wed Aug 31 16:25:19 1994 +0200
+++ b/intr_elim.ML Wed Aug 31 17:50:59 1994 +0200
@@ -113,9 +113,19 @@
(*Applies freeness of the given constructors, which *must* be unfolded by
the given defs. Cannot simply use the local con_defs because con_defs=[]
- for inference systems. *)
+ for inference systems.
fun con_elim_tac defs =
rewrite_goals_tac defs THEN basic_elim_tac THEN fold_tac defs;
+ *)
+fun con_elim_tac simps =
+ let val elim_tac = REPEAT o (eresolve_tac (elim_rls@sumprod_free_SEs))
+ in ALLGOALS(EVERY'[elim_tac,
+ asm_full_simp_tac (nat_ss addsimps simps),
+ elim_tac,
+ REPEAT o bound_hyp_subst_tac])
+ THEN prune_params_tac
+ end;
+
(*String s should have the form t:Si where Si is an inductive set*)
fun mk_cases defs s =