src/HOL/Tools/Sledgehammer/sledgehammer_translate.ML
changeset 38496 dafcd0d19b11
parent 38491 f7e51d981a9f
child 38518 54727b44e277
equal deleted inserted replaced
38495:bb30e2f6fb0e 38496:dafcd0d19b11
   265       let
   265       let
   266         val (head, args) = strip_combterm_comb u
   266         val (head, args) = strip_combterm_comb u
   267         val (x, ty_args) =
   267         val (x, ty_args) =
   268           case head of
   268           case head of
   269             CombConst (name as (s, s'), _, ty_args) =>
   269             CombConst (name as (s, s'), _, ty_args) =>
   270             if s = "equal" then
   270             let val ty_args = if full_types then [] else ty_args in
   271               (if top_level andalso length args = 2 then name
   271               if s = "equal" then
   272                else ("c_fequal", @{const_name fequal}), [])
   272                 if top_level andalso length args = 2 then (name, [])
   273             else if top_level then
   273                 else (("c_fequal", @{const_name fequal}), ty_args)
   274               case s of
   274               else if top_level then
   275                 "c_False" => (("$false", s'), [])
   275                 case s of
   276               | "c_True" => (("$true", s'), [])
   276                   "c_False" => (("$false", s'), [])
   277               | _ => (name, if full_types then [] else ty_args)
   277                 | "c_True" => (("$true", s'), [])
   278             else
   278                 | _ => (name, ty_args)
   279               (name, if full_types then [] else ty_args)
   279               else
       
   280                 (name, ty_args)
       
   281             end
   280           | CombVar (name, _) => (name, [])
   282           | CombVar (name, _) => (name, [])
   281           | CombApp _ => raise Fail "impossible \"CombApp\""
   283           | CombApp _ => raise Fail "impossible \"CombApp\""
   282         val t = ATerm (x, map fo_term_for_combtyp ty_args @
   284         val t = ATerm (x, map fo_term_for_combtyp ty_args @
   283                           map (aux false) args)
   285                           map (aux false) args)
   284     in
   286     in