735 |
735 |
736 fun pre_classify_failures [] alist = alist |
736 fun pre_classify_failures [] alist = alist |
737 | pre_classify_failures ((stock, _, _) :: xs) alist = |
737 | pre_classify_failures ((stock, _, _) :: xs) alist = |
738 let |
738 let |
739 val inf = annotation_or_id stock |
739 val inf = annotation_or_id stock |
740 val count = AList.lookup (op =) alist inf |
740 val count = AList.lookup (=) alist inf |
741 in |
741 in |
742 if is_none count |
742 if is_none count |
743 then pre_classify_failures xs ((inf, 1) :: alist) |
743 then pre_classify_failures xs ((inf, 1) :: alist) |
744 else |
744 else |
745 pre_classify_failures xs |
745 pre_classify_failures xs |
746 (AList.update (op =) (inf, the count + 1) alist) |
746 (AList.update (=) (inf, the count + 1) alist) |
747 end |
747 end |
748 |
748 |
749 fun classify_failures (Whole_proof (_, Nonempty (SOME (((_, _), inferences))))) = pre_classify_failures inferences [] |
749 fun classify_failures (Whole_proof (_, Nonempty (SOME (((_, _), inferences))))) = pre_classify_failures inferences [] |
750 | classify_failures (Specific_rule (_, rule, t)) = [(rule, length t)] |
750 | classify_failures (Specific_rule (_, rule, t)) = [(rule, length t)] |
751 | classify_failures _ = raise NONSENSE |
751 | classify_failures _ = raise NONSENSE |