# HG changeset patch # User wenzelm # Date 938727115 -7200 # Node ID fcd9c205083633fd670e5f1ed30db31a6111717e # Parent 80c310e76c46ca7188a35312e090f49499db63c3 export find_free; diff -r 80c310e76c46 -r fcd9c2050836 src/Pure/Isar/proof.ML --- a/src/Pure/Isar/proof.ML Thu Sep 30 23:31:13 1999 +0200 +++ b/src/Pure/Isar/proof.ML Thu Sep 30 23:31:55 1999 +0200 @@ -33,6 +33,7 @@ type method val method: (thm list -> tactic) -> method val refine: (context -> method) -> state -> state Seq.seq + val find_free: term -> string -> term option val export_thm: context -> thm -> thm val bind: (indexname * string) list -> state -> state val bind_i: (indexname * term) list -> state -> state @@ -356,15 +357,16 @@ (* export *) +fun get_free x (None, t as Free (y, _)) = if x = y then Some t else None + | get_free _ (opt, _) = opt; + +fun find_free t x = foldl_aterms (get_free x) (None, t); + + local fun varify_frees fixes thm = let - fun get_free x (None, t as Free (y, _)) = if x = y then Some t else None - | get_free _ (opt, _) = opt; - - fun find_free t x = foldl_aterms (get_free x) (None, t); - val {sign, prop, ...} = Thm.rep_thm thm; val frees = map (Thm.cterm_of sign) (mapfilter (find_free prop) fixes); in