src/Pure/Isar/proof_context.ML
changeset 13426 e0e2351043d2
parent 13425 119ae829ad9b
child 13430 ab814c7685a9
equal deleted inserted replaced
13425:119ae829ad9b 13426:e0e2351043d2
  1206     fun replace (opt_x :: xs) ((y, T) :: ys) = (if_none opt_x y, T) :: replace xs ys
  1206     fun replace (opt_x :: xs) ((y, T) :: ys) = (if_none opt_x y, T) :: replace xs ys
  1207       | replace [] ys = ys
  1207       | replace [] ys = ys
  1208       | replace (_ :: _) [] = raise CONTEXT ("Too many parameters for case " ^ quote name, ctxt);
  1208       | replace (_ :: _) [] = raise CONTEXT ("Too many parameters for case " ^ quote name, ctxt);
  1209   in
  1209   in
  1210     if null (foldr Term.add_typ_tvars (map snd fixes, [])) andalso
  1210     if null (foldr Term.add_typ_tvars (map snd fixes, [])) andalso
  1211       null (foldr Term.add_term_vars (flat (map #2 assumes), [])) then
  1211       null (foldr Term.add_term_vars (flat (map snd assumes), [])) then
  1212         {fixes = replace xs fixes, assumes = assumes, binds = map drop_schematic binds}
  1212         {fixes = replace xs fixes, assumes = assumes, binds = map drop_schematic binds}
  1213     else raise CONTEXT ("Illegal schematic variable(s) in case " ^ quote name, ctxt)
  1213     else raise CONTEXT ("Illegal schematic variable(s) in case " ^ quote name, ctxt)
  1214   end;
  1214   end;
  1215 
  1215 
  1216 fun get_case (ctxt as Context {cases, ...}) name xs =
  1216 fun get_case (ctxt as Context {cases, ...}) name xs =