equal
deleted
inserted
replaced
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 => |