src/HOL/Library/refute.ML
changeset 59352 63c02d051661
parent 58893 9e0ecb66d6a7
child 59582 0fbed69ff081
equal deleted inserted replaced
59351:bb6eecfd7a55 59352:63c02d051661
  1023                       Library.exists Old_Datatype_Aux.is_rec_type ds) constrs
  1023                       Library.exists Old_Datatype_Aux.is_rec_type ds) constrs
  1024                   end
  1024                   end
  1025               | NONE => false)
  1025               | NONE => false)
  1026           | _ => false) types
  1026           | _ => false) types
  1027         val _ =
  1027         val _ =
  1028           if maybe_spurious then
  1028           if maybe_spurious andalso Context_Position.is_visible ctxt then
  1029             warning ("Term contains a recursive datatype; "
  1029             warning "Term contains a recursive datatype; countermodel(s) may be spurious!"
  1030               ^ "countermodel(s) may be spurious!")
  1030           else ()
  1031           else
       
  1032             ()
       
  1033         fun find_model_loop universe =
  1031         fun find_model_loop universe =
  1034           let
  1032           let
  1035             val msecs_spent = Time.toMilliseconds (Timer.checkRealTimer timer)
  1033             val msecs_spent = Time.toMilliseconds (Timer.checkRealTimer timer)
  1036             val _ = maxtime = 0 orelse msecs_spent < 1000 * maxtime
  1034             val _ = maxtime = 0 orelse msecs_spent < 1000 * maxtime
  1037                     orelse raise TimeLimit.TimeOut
  1035                     orelse raise TimeLimit.TimeOut
  1054             (* add the well-formedness side condition                       *)
  1052             (* add the well-formedness side condition                       *)
  1055             val fm_u = (if negate then toFalse else toTrue) (hd intrs)
  1053             val fm_u = (if negate then toFalse else toTrue) (hd intrs)
  1056             val fm_ax = Prop_Logic.all (map toTrue (tl intrs))
  1054             val fm_ax = Prop_Logic.all (map toTrue (tl intrs))
  1057             val fm = Prop_Logic.all [#wellformed args, fm_ax, fm_u]
  1055             val fm = Prop_Logic.all [#wellformed args, fm_ax, fm_u]
  1058             val _ =
  1056             val _ =
  1059               (if member (op =) ["cdclite"] satsolver then
  1057               (if member (op =) ["cdclite"] satsolver andalso Context_Position.is_visible ctxt then
  1060                 warning ("Using SAT solver " ^ quote satsolver ^
  1058                 warning ("Using SAT solver " ^ quote satsolver ^
  1061                          "; for better performance, consider installing an \
  1059                          "; for better performance, consider installing an \
  1062                          \external solver.")
  1060                          \external solver.")
  1063                else ());
  1061                else ());
  1064             val solver =
  1062             val solver =