src/HOL/Tools/Nitpick/nitpick_model.ML
changeset 34936 c4f04bee79f3
parent 34126 8a2c5d7aff51
child 34974 18b41bba42b5
equal deleted inserted replaced
34935:cb011ba38950 34936:c4f04bee79f3
   438                                                 num_T --> num_T --> num_T)
   438                                                 num_T --> num_T --> num_T)
   439                                          $ mk_num n1 $ mk_num n2)
   439                                          $ mk_num n1 $ mk_num n2)
   440                       | _ => raise TERM ("Nitpick_Model.reconstruct_term.term_\
   440                       | _ => raise TERM ("Nitpick_Model.reconstruct_term.term_\
   441                                          \for_atom (Abs_Frac)", ts)
   441                                          \for_atom (Abs_Frac)", ts)
   442                     end
   442                     end
   443                   else if not for_auto andalso is_abs_fun thy constr_x then
   443                   else if not for_auto andalso
       
   444                           (is_abs_fun thy constr_x orelse
       
   445                            constr_s = @{const_name Quot}) then
   444                     Const (abs_name, constr_T) $ the_single ts
   446                     Const (abs_name, constr_T) $ the_single ts
   445                   else
   447                   else
   446                     list_comb (Const constr_x, ts)
   448                     list_comb (Const constr_x, ts)
   447               in
   449               in
   448                 if co then
   450                 if co then
   558         let
   560         let
   559           val ((head1, args1), (head2, args2)) =
   561           val ((head1, args1), (head2, args2)) =
   560             pairself (strip_comb o unfold_outer_the_binders) (t1, t2)
   562             pairself (strip_comb o unfold_outer_the_binders) (t1, t2)
   561           val max_depth = max_depth - (if member (op =) coTs T then 1 else 0)
   563           val max_depth = max_depth - (if member (op =) coTs T then 1 else 0)
   562         in
   564         in
   563           head1 = head2
   565           head1 = head2 andalso
   564           andalso forall (bisimilar_values coTs max_depth) (args1 ~~ args2)
   566           forall (bisimilar_values coTs max_depth) (args1 ~~ args2)
   565         end
   567         end
   566       else
   568       else
   567         t1 = t2
   569         t1 = t2
   568     end
   570     end
   569 
   571 
   702                  block_of_names show_consts "Constant"
   704                  block_of_names show_consts "Constant"
   703                                 noneval_nonskolem_nonsel_names
   705                                 noneval_nonskolem_nonsel_names
   704   in
   706   in
   705     (Pretty.chunks (if null chunks then [Pretty.str "Empty assignment"]
   707     (Pretty.chunks (if null chunks then [Pretty.str "Empty assignment"]
   706                     else chunks),
   708                     else chunks),
   707      bisim_depth >= 0
   709      bisim_depth >= 0 orelse
   708      orelse forall (is_codatatype_wellformed codatatypes) codatatypes)
   710      forall (is_codatatype_wellformed codatatypes) codatatypes)
   709   end
   711   end
   710 
   712 
   711 (* scope -> Time.time option -> nut list -> nut list -> nut NameTable.table
   713 (* scope -> Time.time option -> nut list -> nut list -> nut NameTable.table
   712    -> KK.raw_bound list -> term -> bool option *)
   714    -> KK.raw_bound list -> term -> bool option *)
   713 fun prove_hol_model (scope as {ext_ctxt as {thy, ctxt, ...}, card_assigns, ...})
   715 fun prove_hol_model (scope as {ext_ctxt as {thy, ctxt, ...}, card_assigns, ...})