src/HOL/Tools/SMT/smt_datatypes.ML
changeset 59142 705f8aea8d60
parent 59020 a86683d6c97e
child 59143 15c342a9a8e0
equal deleted inserted replaced
59141:9a5c2e9b001e 59142:705f8aea8d60
    34         val binder_Ts = binder_types (fastype_of ctr)
    34         val binder_Ts = binder_types (fastype_of ctr)
    35       in
    35       in
    36         mk_selectors T binder_Ts sels #>> pair ctr
    36         mk_selectors T binder_Ts sels #>> pair ctr
    37       end
    37       end
    38 
    38 
    39     val selss = if has_duplicates (op aconv) (flat selss0) then [] else selss0
    39     val selss =
       
    40       if has_duplicates (op aconv) (flat selss0) orelse
       
    41          exists (exists (can (dest_funT o range_type o fastype_of))) selss0 then
       
    42         []
       
    43       else
       
    44         selss0
    40   in
    45   in
    41     @{fold_map 2} mk_constr ctrs0 (Ctr_Sugar_Util.pad_list [] (length ctrs0) selss) ctxt
    46     @{fold_map 2} mk_constr ctrs0 (Ctr_Sugar_Util.pad_list [] (length ctrs0) selss) ctxt
    42     |>> (pair T #> single)
    47     |>> (pair T #> single)
    43   end
    48   end
    44 
    49