src/Pure/thm.ML
changeset 3558 258eee1a056e
parent 3550 2c833cb21f8d
child 3565 c64410e701fb
equal deleted inserted replaced
3557:9546f8185c43 3558:258eee1a056e
  1430 fun prtm a sign t = (writeln a; writeln (Sign.string_of_term sign t));
  1430 fun prtm a sign t = (writeln a; writeln (Sign.string_of_term sign t));
  1431 fun prtm_warning a sign t = (warning a; warning (Sign.string_of_term sign t));
  1431 fun prtm_warning a sign t = (warning a; warning (Sign.string_of_term sign t));
  1432 
  1432 
  1433 val trace_simp = ref false;
  1433 val trace_simp = ref false;
  1434 
  1434 
       
  1435 fun trace a = if ! trace_simp then writeln a else ();
  1435 fun trace_warning a = if ! trace_simp then warning a else ();
  1436 fun trace_warning a = if ! trace_simp then warning a else ();
  1436 fun trace_term a sign t = if ! trace_simp then prtm a sign t else ();
  1437 fun trace_term a sign t = if ! trace_simp then prtm a sign t else ();
  1437 fun trace_term_warning a sign t = if ! trace_simp then prtm_warning a sign t else ();
  1438 fun trace_term_warning a sign t = if ! trace_simp then prtm_warning a sign t else ();
  1438 fun trace_thm a (Thm {sign, prop, ...}) = trace_term a sign prop;
  1439 fun trace_thm a (Thm {sign, prop, ...}) = trace_term a sign prop;
  1439 fun trace_thm_warning a (Thm {sign, prop, ...}) = trace_term_warning a sign prop;
  1440 fun trace_thm_warning a (Thm {sign, prop, ...}) = trace_term_warning a sign prop;
  1815       end
  1816       end
  1816 
  1817 
  1817       fun proc_rews _ ([]:simproc list) = None
  1818       fun proc_rews _ ([]:simproc list) = None
  1818         | proc_rews eta_t ({name, proc, lhs = Cterm {t = plhs, ...}, ...} :: ps) =
  1819         | proc_rews eta_t ({name, proc, lhs = Cterm {t = plhs, ...}, ...} :: ps) =
  1819             if Pattern.matches tsigt (plhs, t) then
  1820             if Pattern.matches tsigt (plhs, t) then
  1820               (case proc signt eta_t of
  1821              (trace_term ("Trying procedure " ^ name ^ " on:") signt eta_t;
  1821                 None => proc_rews eta_t ps
  1822               case proc signt eta_t of
       
  1823                 None => (trace "FAILED"; proc_rews eta_t ps)
  1822               | Some raw_thm =>
  1824               | Some raw_thm =>
  1823                  (trace_thm ("Procedure" ^ name ^ " proved rewrite rule:") raw_thm;
  1825                  (trace_thm ("Procedure " ^ name ^ " proved rewrite rule:") raw_thm;
  1824                    (case rews (mk_procrule raw_thm) of
  1826                    (case rews (mk_procrule raw_thm) of
  1825                      None => proc_rews eta_t ps
  1827                      None => (trace "IGNORED"; proc_rews eta_t ps)
  1826                    | some => some)))
  1828                    | some => some)))
  1827             else proc_rews eta_t ps;
  1829             else proc_rews eta_t ps;
  1828   in
  1830   in
  1829     (case t of
  1831     (case t of
  1830       Abs (_, _, body) $ u =>
  1832       Abs (_, _, body) $ u =>