src/HOL/Tools/BNF/bnf_lfp_compat.ML
changeset 58229 cece11f6262a
parent 58220 a2afad27a0b1
child 58271 2e91e9bbc212
equal deleted inserted replaced
58228:7f5d72a681a2 58229:cece11f6262a
   215     fun lfp_sugar_of s =
   215     fun lfp_sugar_of s =
   216       (case fp_sugar_of lthy s of
   216       (case fp_sugar_of lthy s of
   217         SOME (fp_sugar as {fp = Least_FP, ...}) => fp_sugar
   217         SOME (fp_sugar as {fp = Least_FP, ...}) => fp_sugar
   218       | _ => not_datatype s);
   218       | _ => not_datatype s);
   219 
   219 
   220     val fpTs0 as Type (_, var_As) :: _ = #Ts (#fp_res (lfp_sugar_of (hd fpT_names0)));
   220     val fpTs0 as Type (_, var_As) :: _ =
       
   221       map (#T o lfp_sugar_of o fst o dest_Type) (#Ts (#fp_res (lfp_sugar_of (hd fpT_names0))));
   221     val fpT_names = map (fst o dest_Type) fpTs0;
   222     val fpT_names = map (fst o dest_Type) fpTs0;
   222 
   223 
   223     val _ = check_names (op =) (fpT_names0, fpT_names) orelse not_mutually_recursive fpT_names0;
   224     val _ = check_names (op =) (fpT_names0, fpT_names) orelse not_mutually_recursive fpT_names0;
   224 
   225 
   225     val (As_names, _) = Variable.variant_fixes (map (fn TVar ((s, _), _) => s) var_As) lthy;
   226     val (As_names, _) = Variable.variant_fixes (map (fn TVar ((s, _), _) => s) var_As) lthy;