443 in (algebra, (arities', eqngr'')) end; |
443 in (algebra, (arities', eqngr'')) end; |
444 |
444 |
445 |
445 |
446 (** store for preprocessed arities and code equations **) |
446 (** store for preprocessed arities and code equations **) |
447 |
447 |
448 structure Wellsorted = Code_Data_Fun |
448 structure Wellsorted = Code_Data |
449 ( |
449 ( |
450 type T = ((string * class) * sort list) list * code_graph; |
450 type T = ((string * class) * sort list) list * code_graph; |
451 val empty = ([], Graph.empty); |
451 val empty = ([], Graph.empty); |
452 fun purge thy cs (arities, eqngr) = |
|
453 let |
|
454 val del_cs = ((Graph.all_preds eqngr |
|
455 o filter (can (Graph.get_node eqngr))) cs); |
|
456 val del_arities = del_cs |
|
457 |> map_filter (AxClass.inst_of_param thy) |
|
458 |> maps (fn (c, tyco) => |
|
459 (map (rpair tyco) o Sign.complete_sort thy o the_list |
|
460 o AxClass.class_of_param thy) c); |
|
461 val arities' = fold (AList.delete (op =)) del_arities arities; |
|
462 val eqngr' = Graph.del_nodes del_cs eqngr; |
|
463 in (arities', eqngr') end; |
|
464 ); |
452 ); |
465 |
453 |
466 |
454 |
467 (** retrieval and evaluation interfaces **) |
455 (** retrieval and evaluation interfaces **) |
468 |
456 |