src/HOL/Tools/Sledgehammer/sledgehammer_mash.ML
changeset 57014 b7999893ffcc
parent 57013 ed95456499e6
child 57017 afdf75c0de58
equal deleted inserted replaced
57013:ed95456499e6 57014:b7999893ffcc
   446 
   446 
   447     val visible_facts = Graph.all_preds access_G parents
   447     val visible_facts = Graph.all_preds access_G parents
   448     val visible_fact_set = Symtab.make_set visible_facts
   448     val visible_fact_set = Symtab.make_set visible_facts
   449 
   449 
   450     val all_nodes =
   450     val all_nodes =
   451       Graph.schedule (K I) access_G
   451       (Graph.schedule (fn _ => fn (fact, (_, feats, deps)) => (fact, feats, deps)) access_G
   452       |> List.partition (Symtab.defined visible_fact_set o fst)
   452        |> List.partition (Symtab.defined visible_fact_set o #1) |> op @) @
   453       |> op @
   453       (if null hints then [] else [(".goal", feats, hints)])
   454 
   454 
   455     val (rev_depss, featss, (_, _, rev_facts), (num_feats, feat_tab, _)) =
   455     val (rev_depss, featss, (_, _, rev_facts), (num_feats, feat_tab, _)) =
   456       fold (fn (fact, (_, feats, deps)) =>
   456       fold (fn (fact, feats, deps) =>
   457             fn (depss, featss, fact_xtab as (_, fact_tab, _), feat_xtab) =>
   457             fn (depss, featss, fact_xtab as (_, fact_tab, _), feat_xtab) =>
   458           let
   458           let
   459             fun add_feat (feat, weight) (xtab as (n, tab, _)) =
   459             fun add_feat (feat, weight) (xtab as (n, tab, _)) =
   460               (case Symtab.lookup tab feat of
   460               (case Symtab.lookup tab feat of
   461                 SOME i => ((i, weight), xtab)
   461                 SOME i => ((i, weight), xtab)