src/Tools/Code/code_preproc.ML
changeset 34173 458ced35abb8
parent 33942 6a03c894fef8
child 34244 03f8dcab55f3
equal deleted inserted replaced
34172:4301e9ea1c54 34173:458ced35abb8
   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