# HG changeset patch # User wenzelm # Date 930857158 -7200 # Node ID 3d5e5e6f9e20b53b1cd074071d2d0529c0fe9916 # Parent 4ae9c47f2b6bff5d0d0fd9c8c3d079f15713c383 also, finally: opt_rules; diff -r 4ae9c47f2b6b -r 3d5e5e6f9e20 src/Pure/Isar/calculation.ML --- a/src/Pure/Isar/calculation.ML Thu Jul 01 21:20:57 1999 +0200 +++ b/src/Pure/Isar/calculation.ML Thu Jul 01 21:25:58 1999 +0200 @@ -13,8 +13,8 @@ val trans_del_global: theory attribute val trans_add_local: Proof.context attribute val trans_del_local: Proof.context attribute - val also: (thm -> unit) -> Proof.state -> Proof.state Seq.seq - val finally: (thm -> unit) -> Proof.state -> Proof.state Seq.seq + val also: thm list option -> (thm -> unit) -> Proof.state -> Proof.state Seq.seq + val finally: thm list option -> (thm -> unit) -> Proof.state -> Proof.state Seq.seq val setup: (theory -> theory) list end; @@ -27,7 +27,6 @@ fun print_rules ths = Pretty.writeln (Pretty.big_list "calculation rules:" (map Display.pretty_thm ths)); - (* theory data kind 'Isar/calculation' *) structure GlobalCalculationArgs = @@ -117,14 +116,12 @@ (** proof commands **) -fun have_thms name thms = Proof.have_thmss name [] [(thms, [])]; - val calculationN = "calculation"; -fun calculate final print state = +fun calculate final opt_rules print state = let val fact = Proof.the_fact state; - val rules = Seq.of_list (get_local_rules state); + val rules = Seq.of_list (case opt_rules of None => get_local_rules state | Some thms => thms); val calculations = (case get_calculation state of None => Seq.single fact @@ -135,13 +132,13 @@ (if final then state |> reset_calculation - |> have_thms calculationN [] - |> have_thms "" [calc] + |> Proof.simple_have_thms calculationN [] + |> Proof.simple_have_thms "" [calc] |> Proof.chain else state |> put_calculation calc - |> have_thms calculationN [calc] + |> Proof.simple_have_thms calculationN [calc] |> Proof.reset_facts))) end;