# HG changeset patch # User wenzelm # Date 1015358120 -3600 # Node ID e45ebbb2e18e10689e72671f3ae04ceead27a09a # Parent 433c57d09d53a05d5182a110e5012ae0f5239523 iff: conditional rules declared as ``unsafe''; diff -r 433c57d09d53 -r e45ebbb2e18e src/Provers/clasimp.ML --- a/src/Provers/clasimp.ML Tue Mar 05 20:54:55 2002 +0100 +++ b/src/Provers/clasimp.ML Tue Mar 05 20:55:20 2002 +0100 @@ -121,8 +121,12 @@ Failing other cases, A is added as a Safe Intr rule*) local -fun addIff dest elim intro simp ((cs, ss), th) = - let val zero_rotate = zero_var_indexes o rotate_prems (nprems_of th) in +fun addIff decls1 decls2 simp ((cs, ss), th) = + let + val n = nprems_of th; + val (dest, elim, intro) = if n = 0 then decls1 else decls2; + val zero_rotate = zero_var_indexes o rotate_prems n; + in (dest (intro (cs, [zero_rotate (th RS Data.iffD2)]), [zero_rotate (th RS Data.iffD1)]) handle THM _ => (elim (cs, [zero_rotate (th RS Data.notE)]) handle THM _ => intro (cs, [th])), @@ -144,19 +148,24 @@ in val op addIffs = - foldl (addIff Classical.addSDs Classical.addSEs Classical.addSIs Simplifier.addsimps); + foldl (addIff (Classical.addSDs, Classical.addSEs, Classical.addSIs) + (Classical.addDs, Classical.addEs, Classical.addIs) Simplifier.addsimps); val op delIffs = foldl (delIff Classical.delrules Simplifier.delsimps); fun AddIffs thms = store_clasimp (clasimpset () addIffs thms); fun DelIffs thms = store_clasimp (clasimpset () delIffs thms); fun addIffs_global (thy, ths) = - foldl (addIff ContextRules.addXDs_global ContextRules.addXEs_global - ContextRules.addXIs_global #1) ((thy, ()), ths) |> #1; + foldl (addIff + (ContextRules.addXDs_global, ContextRules.addXEs_global, ContextRules.addXIs_global) + (ContextRules.addXDs_global, ContextRules.addXEs_global, ContextRules.addXIs_global) #1) + ((thy, ()), ths) |> #1; fun addIffs_local (ctxt, ths) = - foldl (addIff ContextRules.addXDs_local ContextRules.addXEs_local - ContextRules.addXIs_local #1) ((ctxt, ()), ths) |> #1; + foldl (addIff + (ContextRules.addXDs_local, ContextRules.addXEs_local, ContextRules.addXIs_local) + (ContextRules.addXDs_local, ContextRules.addXEs_local, ContextRules.addXIs_local) #1) + ((ctxt, ()), ths) |> #1; fun delIffs_global (thy, ths) = foldl (delIff ContextRules.delrules_global #1) ((thy, ()), ths) |> #1;