925 val max_proximity_facts = 100 |
925 val max_proximity_facts = 100 |
926 |
926 |
927 fun find_mash_suggestions _ _ [] _ _ raw_unknown = ([], raw_unknown) |
927 fun find_mash_suggestions _ _ [] _ _ raw_unknown = ([], raw_unknown) |
928 | find_mash_suggestions ctxt max_facts suggs facts chained raw_unknown = |
928 | find_mash_suggestions ctxt max_facts suggs facts chained raw_unknown = |
929 let |
929 let |
|
930 val inter_fact = inter (Thm.eq_thm_prop o pairself snd) |
930 val raw_mash = find_suggested_facts ctxt facts suggs |
931 val raw_mash = find_suggested_facts ctxt facts suggs |
931 val unknown_chained = |
932 val proximate = take max_proximity_facts facts |
932 inter (Thm.eq_thm_prop o pairself snd) chained raw_unknown |
933 val unknown_chained = inter_fact raw_unknown chained |
933 val proximity = facts |> take max_proximity_facts |
934 val unknown_proximate = inter_fact raw_unknown proximate |
934 val mess = |
935 val mess = |
935 [(0.90 (* FUDGE *), (map (rpair 1.0) unknown_chained, [])), |
936 [(0.9 (* FUDGE *), (map (rpair 1.0) unknown_chained, [])), |
936 (0.08 (* FUDGE *), (weight_facts_steeply raw_mash, raw_unknown)), |
937 (0.4 (* FUDGE *), (weight_facts_smoothly unknown_proximate, [])), |
937 (0.02 (* FUDGE *), (weight_facts_smoothly proximity, []))] |
938 (0.1 (* FUDGE *), (weight_facts_steeply raw_mash, raw_unknown))] |
938 val unknown = |
939 val unknown = |
939 raw_unknown |
940 raw_unknown |
940 |> fold (subtract (Thm.eq_thm_prop o pairself snd)) |
941 |> fold (subtract (Thm.eq_thm_prop o pairself snd)) |
941 [unknown_chained, proximity] |
942 [unknown_chained, unknown_proximate] |
942 in (mesh_facts (Thm.eq_thm_prop o pairself snd) max_facts mess, unknown) end |
943 in (mesh_facts (Thm.eq_thm_prop o pairself snd) max_facts mess, unknown) end |
943 |
944 |
944 fun add_const_counts t = |
945 fun add_const_counts t = |
945 fold (fn s => Symtab.map_default (s, 0) (Integer.add 1)) |
946 fold (fn s => Symtab.map_default (s, 0) (Integer.add 1)) |
946 (Term.add_const_names t []) |
947 (Term.add_const_names t []) |