diff -r 9f1eaab75e8c -r 771b1f6422a8 src/HOL/Auth/Message.ML --- a/src/HOL/Auth/Message.ML Mon Nov 03 12:22:43 1997 +0100 +++ b/src/HOL/Auth/Message.ML Mon Nov 03 12:24:13 1997 +0100 @@ -177,8 +177,8 @@ (*TWO inserts to avoid looping. This rewrite is better than nothing. Not suitable for Addsimps: its behaviour can be strange.*) goal thy "parts (insert X (insert Y H)) = parts {X} Un parts {Y} Un parts H"; -by (simp_tac (!simpset addsimps [Un_assoc]) 1); -by (simp_tac (!simpset addsimps [parts_insert RS sym]) 1); +by (simp_tac (simpset() addsimps [Un_assoc]) 1); +by (simp_tac (simpset() addsimps [parts_insert RS sym]) 1); qed "parts_insert2"; goal thy "(UN x:A. parts(H x)) <= parts(UN x:A. H x)"; @@ -196,7 +196,7 @@ qed "parts_UN"; goal thy "parts(UN x. H x) = (UN x. parts(H x))"; -by (simp_tac (!simpset addsimps [UNION1_def, parts_UN]) 1); +by (simp_tac (simpset() addsimps [UNION1_def, parts_UN]) 1); qed "parts_UN1"; (*Added to simplify arguments to parts, analz and synth. @@ -207,7 +207,7 @@ parts_UN1 RS equalityD1 RS subsetD RS UN1_E]; goal thy "insert X (parts H) <= parts(insert X H)"; -by (blast_tac (!claset addIs [impOfSubs parts_mono]) 1); +by (blast_tac (claset() addIs [impOfSubs parts_mono]) 1); qed "parts_insert_subset"; (** Idempotence and transitivity **) @@ -236,9 +236,9 @@ qed "parts_cut"; goal thy "!!H. X: parts H ==> parts (insert X H) = parts H"; -by (fast_tac (!claset addSDs [parts_cut] +by (fast_tac (claset() addSDs [parts_cut] addIs [parts_insertI] - addss (!simpset)) 1); + addss (simpset())) 1); qed "parts_cut_eq"; Addsimps [parts_cut_eq]; @@ -278,7 +278,7 @@ by (etac parts.induct 1); by (Auto_tac()); by (etac parts.induct 1); -by (ALLGOALS (blast_tac (!claset addIs [parts.Body]))); +by (ALLGOALS (blast_tac (claset() addIs [parts.Body]))); qed "parts_insert_Crypt"; goal thy "parts (insert {|X,Y|} H) = \ @@ -288,7 +288,7 @@ by (etac parts.induct 1); by (Auto_tac()); by (etac parts.induct 1); -by (ALLGOALS (blast_tac (!claset addIs [parts.Fst, parts.Snd]))); +by (ALLGOALS (blast_tac (claset() addIs [parts.Fst, parts.Snd]))); qed "parts_insert_MPair"; Addsimps [parts_insert_Agent, parts_insert_Nonce, @@ -308,12 +308,12 @@ goal thy "EX N. ALL n. N<=n --> Nonce n ~: parts {msg}"; by (induct_tac "msg" 1); by (induct_tac "atomic" 1); -by (ALLGOALS (asm_simp_tac (!simpset addsimps [exI, parts_insert2]))); +by (ALLGOALS (asm_simp_tac (simpset() addsimps [exI, parts_insert2]))); (*MPair case: blast_tac works out the necessary sum itself!*) -by (blast_tac (!claset addSEs [add_leE]) 2); +by (blast_tac (claset() addSEs [add_leE]) 2); (*Nonce case*) by (res_inst_tac [("x","N + Suc nat")] exI 1); -by (fast_tac (!claset addSEs [add_leE] addaltern trans_tac) 1); +by (fast_tac (claset() addSEs [add_leE] addaltern trans_tac) 1); qed "msg_Nonce_supply"; @@ -351,7 +351,7 @@ by (rtac equalityI 1); by (rtac (analz_subset_parts RS parts_mono RS subset_trans) 1); by (Simp_tac 1); -by (blast_tac (!claset addIs [analz_increasing RS parts_mono RS subsetD]) 1); +by (blast_tac (claset() addIs [analz_increasing RS parts_mono RS subsetD]) 1); qed "parts_analz"; Addsimps [parts_analz]; @@ -386,7 +386,7 @@ qed "analz_Un"; goal thy "insert X (analz H) <= analz(insert X H)"; -by (blast_tac (!claset addIs [impOfSubs analz_mono]) 1); +by (blast_tac (claset() addIs [impOfSubs analz_mono]) 1); qed "analz_insert"; (** Rewrite rules for pulling out atomic messages **) @@ -426,7 +426,7 @@ by (etac analz.induct 1); by (Auto_tac()); by (etac analz.induct 1); -by (ALLGOALS (blast_tac (!claset addIs [analz.Fst, analz.Snd]))); +by (ALLGOALS (blast_tac (claset() addIs [analz.Fst, analz.Snd]))); qed "analz_insert_MPair"; (*Can pull out enCrypted message if the Key is not known*) @@ -450,7 +450,7 @@ by (Auto_tac()); by (eres_inst_tac [("za","x")] analz.induct 1); by (Auto_tac()); -by (blast_tac (!claset addIs [analz_insertI, analz.Decrypt]) 1); +by (blast_tac (claset() addIs [analz_insertI, analz.Decrypt]) 1); val lemma2 = result(); goal thy "!!H. Key (invKey K) : analz H ==> \ @@ -468,7 +468,7 @@ \ then insert (Crypt K X) (analz (insert X H)) \ \ else insert (Crypt K X) (analz H))"; by (case_tac "Key (invKey K) : analz H " 1); -by (ALLGOALS (asm_simp_tac (!simpset addsimps [analz_insert_Crypt, +by (ALLGOALS (asm_simp_tac (simpset() addsimps [analz_insert_Crypt, analz_insert_Decrypt]))); qed "analz_Crypt_if"; @@ -526,7 +526,7 @@ the forwarding of unknown components (X). Without it, removing occurrences of X can be very complicated. *) goal thy "!!H. X: analz H ==> analz (insert X H) = analz H"; -by (blast_tac (!claset addIs [analz_cut, analz_insertI]) 1); +by (blast_tac (claset() addIs [analz_cut, analz_insertI]) 1); qed "analz_insert_eq"; @@ -536,7 +536,7 @@ \ |] ==> analz (G Un H) <= analz (G' Un H')"; by (Clarify_tac 1); by (etac analz.induct 1); -by (ALLGOALS (best_tac (!claset addIs [analz_mono RS subsetD]))); +by (ALLGOALS (best_tac (claset() addIs [analz_mono RS subsetD]))); qed "analz_subset_cong"; goal thy "!!H. [| analz G = analz G'; analz H = analz H' \ @@ -547,7 +547,7 @@ goal thy "!!H. analz H = analz H' ==> analz(insert X H) = analz(insert X H')"; -by (asm_simp_tac (!simpset addsimps [insert_def] delsimps [singleton_conv] +by (asm_simp_tac (simpset() addsimps [insert_def] delsimps [singleton_conv] setloop (rtac analz_cong)) 1); qed "analz_insert_cong"; @@ -562,11 +562,11 @@ (*Helps to prove Fake cases*) goal thy "!!X. X: analz (UN i. analz (H i)) ==> X: analz (UN i. H i)"; by (etac analz.induct 1); -by (ALLGOALS (blast_tac (!claset addIs [impOfSubs analz_mono]))); +by (ALLGOALS (blast_tac (claset() addIs [impOfSubs analz_mono]))); val lemma = result(); goal thy "analz (UN i. analz (H i)) = analz (UN i. H i)"; -by (blast_tac (!claset addIs [lemma, impOfSubs analz_mono]) 1); +by (blast_tac (claset() addIs [lemma, impOfSubs analz_mono]) 1); qed "analz_UN_analz"; Addsimps [analz_UN_analz]; @@ -607,7 +607,7 @@ qed "synth_Un"; goal thy "insert X (synth H) <= synth(insert X H)"; -by (blast_tac (!claset addIs [impOfSubs synth_mono]) 1); +by (blast_tac (claset() addIs [impOfSubs synth_mono]) 1); qed "synth_insert"; (** Idempotence and transitivity **) @@ -671,7 +671,7 @@ by (rtac subsetI 1); by (etac parts.induct 1); by (ALLGOALS - (blast_tac (!claset addIs ((synth_increasing RS parts_mono RS subsetD) + (blast_tac (claset() addIs ((synth_increasing RS parts_mono RS subsetD) ::parts.intrs)))); qed "parts_synth"; Addsimps [parts_synth]; @@ -685,8 +685,8 @@ by (rtac equalityI 1); by (rtac subsetI 1); by (etac analz.induct 1); -by (blast_tac (!claset addIs [impOfSubs analz_mono]) 5); -by (ALLGOALS (blast_tac (!claset addIs analz.intrs))); +by (blast_tac (claset() addIs [impOfSubs analz_mono]) 5); +by (ALLGOALS (blast_tac (claset() addIs analz.intrs))); qed "analz_synth_Un"; goal thy "analz (synth H) = analz H Un synth H"; @@ -717,25 +717,25 @@ \ ==> Crypt K Y : parts G Un parts H"; by (dtac (impOfSubs Fake_parts_insert) 1); by (assume_tac 1); -by (blast_tac (!claset addDs [impOfSubs analz_subset_parts]) 1); +by (blast_tac (claset() addDs [impOfSubs analz_subset_parts]) 1); qed "Crypt_Fake_parts_insert"; goal thy "!!H. X: synth (analz G) ==> \ \ analz (insert X H) <= synth (analz G) Un analz (G Un H)"; by (rtac subsetI 1); by (subgoal_tac "x : analz (synth (analz G) Un H)" 1); -by (blast_tac (!claset addIs [impOfSubs analz_mono, +by (blast_tac (claset() addIs [impOfSubs analz_mono, impOfSubs (analz_mono RS synth_mono)]) 2); by (Full_simp_tac 1); by (Blast_tac 1); qed "Fake_analz_insert"; goal thy "(X: analz H & X: parts H) = (X: analz H)"; -by (blast_tac (!claset addIs [impOfSubs analz_subset_parts]) 1); +by (blast_tac (claset() addIs [impOfSubs analz_subset_parts]) 1); val analz_conj_parts = result(); goal thy "(X: analz H | X: parts H) = (X: parts H)"; -by (blast_tac (!claset addIs [impOfSubs analz_subset_parts]) 1); +by (blast_tac (claset() addIs [impOfSubs analz_subset_parts]) 1); val analz_disj_parts = result(); AddIffs [analz_conj_parts, analz_disj_parts]; @@ -868,11 +868,11 @@ concerns Crypt K X ~: Key``shrK``bad and cannot be proved by rewriting alone.*) fun prove_simple_subgoals_tac i = - fast_tac (!claset addss (!simpset)) i THEN + fast_tac (claset() addss (simpset())) i THEN ALLGOALS Asm_simp_tac; fun Fake_parts_insert_tac i = - blast_tac (!claset addDs [impOfSubs analz_subset_parts, + blast_tac (claset() addDs [impOfSubs analz_subset_parts, impOfSubs Fake_parts_insert]) i; (*Apply rules to break down assumptions of the form @@ -899,13 +899,13 @@ (REPEAT o CHANGED) (res_inst_tac [("x1","X")] (insert_commute RS ssubst) 1), (*...allowing further simplifications*) - simp_tac (!simpset addsplits [expand_if]) 1, + simp_tac (simpset() addsplits [expand_if]) 1, REPEAT (FIRSTGOAL (resolve_tac [allI,impI,notI,conjI,iffI])), DEPTH_SOLVE (Fake_insert_simp_tac 1 THEN IF_UNSOLVED (Blast.depth_tac - (!claset addIs [analz_insertI, + (claset() addIs [analz_insertI, impOfSubs analz_subset_parts]) 4 1)) ]) i); @@ -920,7 +920,7 @@ REPEAT o (mp_tac ORELSE' eresolve_tac [asm_rl,exE]), (*Duplicate the assumption*) forw_inst_tac [("psi", "ALL C.?P(C)")] asm_rl, - Blast.depth_tac (!claset addSDs [spec]) 0]; + Blast.depth_tac (claset() addSDs [spec]) 0]; (*Needed occasionally with spy_analz_tac, e.g. in analz_insert_Key_newK*)