equal
deleted
inserted
replaced
567 |
567 |
568 structure Program = CodeDataFun |
568 structure Program = CodeDataFun |
569 ( |
569 ( |
570 type T = program; |
570 type T = program; |
571 val empty = Graph.empty; |
571 val empty = Graph.empty; |
572 fun merge _ = Graph.merge (K true); |
572 fun purge thy cs program = |
573 fun purge _ NONE _ = Graph.empty |
573 let |
574 | purge NONE _ _ = Graph.empty |
574 val cs_exisiting = |
575 | purge (SOME thy) (SOME cs) program = |
575 map_filter (CodeName.const_rev thy) (Graph.keys program); |
576 let |
576 val dels = (Graph.all_preds program |
577 val cs_exisiting = |
577 o map (CodeName.const thy) |
578 map_filter (CodeName.const_rev thy) (Graph.keys program); |
578 o filter (member (op =) cs_exisiting) |
579 val dels = (Graph.all_preds program |
579 ) cs; |
580 o map (CodeName.const thy) |
580 in Graph.del_nodes dels program end; |
581 o filter (member (op =) cs_exisiting) |
|
582 ) cs; |
|
583 in Graph.del_nodes dels program end; |
|
584 ); |
581 ); |
585 |
582 |
586 val cached_program = Program.get; |
583 val cached_program = Program.get; |
587 |
584 |
588 fun transact f program = |
585 fun transact f program = |