equal
deleted
inserted
replaced
168 val set_mk_rews : meta_simpset * (thm -> thm list) -> meta_simpset |
168 val set_mk_rews : meta_simpset * (thm -> thm list) -> meta_simpset |
169 val set_mk_sym : meta_simpset * (thm -> thm option) -> meta_simpset |
169 val set_mk_sym : meta_simpset * (thm -> thm option) -> meta_simpset |
170 val set_mk_eq_True : meta_simpset * (thm -> thm option) -> meta_simpset |
170 val set_mk_eq_True : meta_simpset * (thm -> thm option) -> meta_simpset |
171 val set_termless : meta_simpset * (term * term -> bool) -> meta_simpset |
171 val set_termless : meta_simpset * (term * term -> bool) -> meta_simpset |
172 val trace_simp : bool ref |
172 val trace_simp : bool ref |
|
173 val debug_simp : bool ref |
173 val rewrite_cterm : bool * bool * bool -> meta_simpset -> |
174 val rewrite_cterm : bool * bool * bool -> meta_simpset -> |
174 (meta_simpset -> thm -> thm option) -> cterm -> thm |
175 (meta_simpset -> thm -> thm option) -> cterm -> thm |
175 |
176 |
176 val invoke_oracle : theory -> xstring -> Sign.sg * Object.T -> thm |
177 val invoke_oracle : theory -> xstring -> Sign.sg * Object.T -> thm |
177 end; |
178 end; |
1517 |
1518 |
1518 fun prthm warn a (thm as Thm{sign_ref, prop, ...}) = |
1519 fun prthm warn a (thm as Thm{sign_ref, prop, ...}) = |
1519 (prtm warn a (Sign.deref sign_ref) prop); |
1520 (prtm warn a (Sign.deref sign_ref) prop); |
1520 |
1521 |
1521 val trace_simp = ref false; |
1522 val trace_simp = ref false; |
|
1523 val debug_simp = ref false; |
1522 |
1524 |
1523 fun trace warn a = if !trace_simp then prnt warn a else (); |
1525 fun trace warn a = if !trace_simp then prnt warn a else (); |
1524 |
1526 fun debug warn a = if !debug_simp then prnt warn a else (); |
1525 fun trace_term warn a sign t = |
1527 |
1526 if !trace_simp then prtm warn a sign t else (); |
1528 fun trace_term warn a sign t = if !trace_simp then prtm warn a sign t else (); |
|
1529 fun debug_term warn a sign t = if !debug_simp then prtm warn a sign t else (); |
1527 |
1530 |
1528 fun trace_thm warn a (thm as Thm{sign_ref, prop, ...}) = |
1531 fun trace_thm warn a (thm as Thm{sign_ref, prop, ...}) = |
1529 (trace_term warn a (Sign.deref sign_ref) prop); |
1532 (trace_term warn a (Sign.deref sign_ref) prop); |
1530 |
1533 |
1531 |
1534 |
2083 in sort rrs ([],[]) end |
2086 in sort rrs ([],[]) end |
2084 |
2087 |
2085 fun proc_rews ([]:simproc list) = None |
2088 fun proc_rews ([]:simproc list) = None |
2086 | proc_rews ({name, proc, lhs = Cterm {t = plhs, ...}, ...} :: ps) = |
2089 | proc_rews ({name, proc, lhs = Cterm {t = plhs, ...}, ...} :: ps) = |
2087 if Pattern.matches tsigt (plhs, t) then |
2090 if Pattern.matches tsigt (plhs, t) then |
2088 (trace_term false ("Trying procedure " ^ quote name ^ " on:") signt eta_t; |
2091 (debug_term false ("Trying procedure " ^ quote name ^ " on:") signt eta_t; |
2089 case proc signt prems eta_t of |
2092 case proc signt prems eta_t of |
2090 None => (trace false "FAILED"; proc_rews ps) |
2093 None => (debug false "FAILED"; proc_rews ps) |
2091 | Some raw_thm => |
2094 | Some raw_thm => |
2092 (trace_thm false ("Procedure " ^ quote name ^ " produced rewrite rule:") raw_thm; |
2095 (trace_thm false ("Procedure " ^ quote name ^ " produced rewrite rule:") raw_thm; |
2093 (case rews (mk_procrule raw_thm) of |
2096 (case rews (mk_procrule raw_thm) of |
2094 None => (trace false "IGNORED"; proc_rews ps) |
2097 None => (trace false "IGNORED"; proc_rews ps) |
2095 | some => some))) |
2098 | some => some))) |