src/HOL/Tools/Nitpick/nitpick.ML
changeset 41048 d5ebe94248ad
parent 41007 75275c796b46
child 41051 2ed1b971fc20
equal deleted inserted replaced
41047:9f1d3fcef1ca 41048:d5ebe94248ad
   176 
   176 
   177 fun passed_deadline NONE = false
   177 fun passed_deadline NONE = false
   178   | passed_deadline (SOME time) = Time.compare (Time.now (), time) <> LESS
   178   | passed_deadline (SOME time) = Time.compare (Time.now (), time) <> LESS
   179 
   179 
   180 fun none_true assigns = forall (not_equal (SOME true) o snd) assigns
   180 fun none_true assigns = forall (not_equal (SOME true) o snd) assigns
       
   181 
       
   182 fun has_lonely_bool_var (@{const Pure.conjunction}
       
   183                          $ (@{const Trueprop} $ Free _) $ _) = true
       
   184   | has_lonely_bool_var _ = false
   181 
   185 
   182 val syntactic_sorts =
   186 val syntactic_sorts =
   183   @{sort "{default,zero,one,plus,minus,uminus,times,inverse,abs,sgn,ord,equal}"} @
   187   @{sort "{default,zero,one,plus,minus,uminus,times,inverse,abs,sgn,ord,equal}"} @
   184   @{sort number}
   188   @{sort number}
   185 fun has_tfree_syntactic_sort (TFree (_, S as _ :: _)) =
   189 fun has_tfree_syntactic_sort (TFree (_, S as _ :: _)) =
   659                     \induction hypothesis is not general enough or may even be \
   663                     \induction hypothesis is not general enough or may even be \
   660                     \wrong. See the Nitpick manual's \"Inductive Properties\" \
   664                     \wrong. See the Nitpick manual's \"Inductive Properties\" \
   661                     \section for details (\"isabelle doc nitpick\")."
   665                     \section for details (\"isabelle doc nitpick\")."
   662             else
   666             else
   663               ();
   667               ();
   664             if has_syntactic_sorts orig_t then
   668             if has_lonely_bool_var orig_t then
       
   669               print "Hint: Maybe you forgot a colon after the lemma's name?"
       
   670             else if has_syntactic_sorts orig_t then
   665               print "Hint: Maybe you forgot a type constraint?"
   671               print "Hint: Maybe you forgot a type constraint?"
   666             else
   672             else
   667               ();
   673               ();
   668             if not genuine_means_genuine then
   674             if not genuine_means_genuine then
   669               if no_poly_user_axioms then
   675               if no_poly_user_axioms then