src/HOL/Decision_Procs/Approximation.thy
changeset 36960 01594f816e3a
parent 36778 739a9379e29b
child 36985 41c5d4002f60
equal deleted inserted replaced
36959:f5417836dbea 36960:01594f816e3a
  3308 
  3308 
  3309 lemma meta_eqE: "x \<equiv> a \<Longrightarrow> \<lbrakk> x = a \<Longrightarrow> P\<rbrakk> \<Longrightarrow> P"
  3309 lemma meta_eqE: "x \<equiv> a \<Longrightarrow> \<lbrakk> x = a \<Longrightarrow> P\<rbrakk> \<Longrightarrow> P"
  3310   by auto
  3310   by auto
  3311 
  3311 
  3312 method_setup approximation = {*
  3312 method_setup approximation = {*
  3313   Scan.lift (OuterParse.nat)
  3313   Scan.lift Parse.nat
  3314   --
  3314   --
  3315   Scan.optional (Scan.lift (Args.$$$ "splitting" |-- Args.colon)
  3315   Scan.optional (Scan.lift (Args.$$$ "splitting" |-- Args.colon)
  3316     |-- OuterParse.and_list' (free --| Scan.lift (Args.$$$ "=") -- Scan.lift OuterParse.nat)) []
  3316     |-- Parse.and_list' (free --| Scan.lift (Args.$$$ "=") -- Scan.lift Parse.nat)) []
  3317   --
  3317   --
  3318   Scan.option (Scan.lift (Args.$$$ "taylor" |-- Args.colon)
  3318   Scan.option (Scan.lift (Args.$$$ "taylor" |-- Args.colon)
  3319     |-- (free |-- Scan.lift (Args.$$$ "=") |-- Scan.lift OuterParse.nat))
  3319     |-- (free |-- Scan.lift (Args.$$$ "=") |-- Scan.lift Parse.nat))
  3320   >>
  3320   >>
  3321   (fn ((prec, splitting), taylor) => fn ctxt =>
  3321   (fn ((prec, splitting), taylor) => fn ctxt =>
  3322     SIMPLE_METHOD' (fn i =>
  3322     SIMPLE_METHOD' (fn i =>
  3323       REPEAT (FIRST' [etac @{thm intervalE},
  3323       REPEAT (FIRST' [etac @{thm intervalE},
  3324                       etac @{thm meta_eqE},
  3324                       etac @{thm meta_eqE},