src/HOL/Tools/Sledgehammer/sledgehammer_mash.ML
changeset 53150 5565d1b56f84
parent 53148 c898409d8630
child 53152 cbd3c7c48d2c
equal deleted inserted replaced
53149:c4e41658307a 53150:5565d1b56f84
   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 [])