src/HOL/Codatatype/Tools/bnf_wrap.ML
changeset 50449 433dc7e028c8
parent 50379 838b5e8ede73
child 50452 c139da00fb4a
     1.1 --- a/src/HOL/Codatatype/Tools/bnf_wrap.ML	Tue Sep 18 03:33:53 2012 +0200
     1.2 +++ b/src/HOL/Codatatype/Tools/bnf_wrap.ML	Tue Sep 18 09:15:53 2012 +0200
     1.3 @@ -7,7 +7,6 @@
     1.4  
     1.5  signature BNF_WRAP =
     1.6  sig
     1.7 -  val no_binding: binding
     1.8    val mk_half_pairss: 'a list -> ('a * 'a) list list
     1.9    val mk_ctr: typ list -> term -> term
    1.10    val wrap_datatype: ({prems: thm list, context: Proof.context} -> tactic) list list ->
    1.11 @@ -45,7 +44,6 @@
    1.12  val split_asmN = "split_asm";
    1.13  val weak_case_cong_thmsN = "weak_case_cong";
    1.14  
    1.15 -val no_binding = @{binding ""};
    1.16  val std_binding = @{binding _};
    1.17  
    1.18  val induct_simp_attrs = @{attributes [induct_simp]};
    1.19 @@ -111,10 +109,11 @@
    1.20  
    1.21      val ms = map length ctr_Tss;
    1.22  
    1.23 -    val raw_disc_bindings' = pad_list no_binding n raw_disc_bindings;
    1.24 +    val raw_disc_bindings' = pad_list Binding.empty n raw_disc_bindings;
    1.25  
    1.26      fun can_really_rely_on_disc k =
    1.27 -      not (Binding.eq_name (nth raw_disc_bindings' (k - 1), no_binding)) orelse nth ms (k - 1) = 0;
    1.28 +      not (Binding.eq_name (nth raw_disc_bindings' (k - 1), Binding.empty)) orelse
    1.29 +      nth ms (k - 1) = 0;
    1.30      fun can_rely_on_disc k =
    1.31        can_really_rely_on_disc k orelse (k = 1 andalso not (can_really_rely_on_disc 2));
    1.32      fun can_omit_disc_binding k m =
    1.33 @@ -127,7 +126,7 @@
    1.34        raw_disc_bindings'
    1.35        |> map4 (fn k => fn m => fn ctr => fn disc =>
    1.36          Option.map (Binding.qualify false (Binding.name_of data_b))
    1.37 -          (if Binding.eq_name (disc, no_binding) then
    1.38 +          (if Binding.eq_name (disc, Binding.empty) then
    1.39               if can_omit_disc_binding k m then NONE else SOME (std_disc_binding ctr)
    1.40             else if Binding.eq_name (disc, std_binding) then
    1.41               SOME (std_disc_binding ctr)
    1.42 @@ -143,10 +142,10 @@
    1.43        pad_list [] n raw_sel_bindingss
    1.44        |> map3 (fn ctr => fn m => map2 (fn l => fn sel =>
    1.45          Binding.qualify false (Binding.name_of data_b)
    1.46 -          (if Binding.eq_name (sel, no_binding) orelse Binding.eq_name (sel, std_binding) then
    1.47 +          (if Binding.eq_name (sel, Binding.empty) orelse Binding.eq_name (sel, std_binding) then
    1.48              std_sel_binding m l ctr
    1.49            else
    1.50 -            sel)) (1 upto m) o pad_list no_binding m) ctrs0 ms;
    1.51 +            sel)) (1 upto m) o pad_list Binding.empty m) ctrs0 ms;
    1.52  
    1.53      fun mk_case Ts T =
    1.54        let