src/HOL/BNF/Tools/bnf_fp_n2m_sugar.ML
changeset 54268 807532d15d16
parent 54267 78e8a178b690
child 54270 7405328f4c3c
equal deleted inserted replaced
54267:78e8a178b690 54268:807532d15d16
   337     fun generalize_type T (seen_lthy as (seen, _)) =
   337     fun generalize_type T (seen_lthy as (seen, _)) =
   338       (case AList.lookup (op =) seen T of
   338       (case AList.lookup (op =) seen T of
   339         SOME U => (U, seen_lthy)
   339         SOME U => (U, seen_lthy)
   340       | NONE =>
   340       | NONE =>
   341         (case T of
   341         (case T of
   342           Type (s, Ts) =>
   342           Type (s, Ts') =>
   343           if exists_subtype_in Ts T then fold_map generalize_type Ts seen_lthy |>> curry Type s
   343           if exists_subtype_in Ts T then fold_map generalize_type Ts' seen_lthy |>> curry Type s
   344           else generalize_simple_type T seen_lthy
   344           else generalize_simple_type T seen_lthy
   345         | _ => generalize_simple_type T seen_lthy));
   345         | _ => generalize_simple_type T seen_lthy));
   346 
   346 
   347     val (perm_Us, _) = fold_map generalize_type perm_Ts ([], lthy);
   347     val (perm_Us, _) = fold_map generalize_type perm_Ts ([], lthy);
   348 
   348