src/Pure/Isar/proof_context.ML
changeset 29006 abe0f11cfa4e
parent 28965 1de908189869
child 29318 6337d1cb2ba0
equal deleted inserted replaced
29005:ce378dcfddab 29006:abe0f11cfa4e
  1010 local
  1010 local
  1011 
  1011 
  1012 fun prep_vars prep_typ internal =
  1012 fun prep_vars prep_typ internal =
  1013   fold_map (fn (raw_b, raw_T, raw_mx) => fn ctxt =>
  1013   fold_map (fn (raw_b, raw_T, raw_mx) => fn ctxt =>
  1014     let
  1014     let
  1015       val raw_x = Name.name_of raw_b;
  1015       val raw_x = Binding.base_name raw_b;
  1016       val (x, mx) = Syntax.const_mixfix raw_x raw_mx;
  1016       val (x, mx) = Syntax.const_mixfix raw_x raw_mx;
  1017       val _ = Syntax.is_identifier (no_skolem internal x) orelse
  1017       val _ = Syntax.is_identifier (no_skolem internal x) orelse
  1018         error ("Illegal variable name: " ^ quote x);
  1018         error ("Illegal variable name: " ^ quote x);
  1019 
  1019 
  1020       fun cond_tvars T =
  1020       fun cond_tvars T =
  1120   else (true, (x, T, mx));
  1120   else (true, (x, T, mx));
  1121 
  1121 
  1122 fun gen_fixes prep raw_vars ctxt =
  1122 fun gen_fixes prep raw_vars ctxt =
  1123   let
  1123   let
  1124     val (vars, _) = prep raw_vars ctxt;
  1124     val (vars, _) = prep raw_vars ctxt;
  1125     val (xs', ctxt') = Variable.add_fixes (map (Name.name_of o #1) vars) ctxt;
  1125     val (xs', ctxt') = Variable.add_fixes (map (Binding.base_name o #1) vars) ctxt;
  1126     val ctxt'' =
  1126     val ctxt'' =
  1127       ctxt'
  1127       ctxt'
  1128       |> fold_map declare_var (map2 (fn x' => fn (_, T, mx) => (x', T, mx)) xs' vars)
  1128       |> fold_map declare_var (map2 (fn x' => fn (_, T, mx) => (x', T, mx)) xs' vars)
  1129       |-> (map_syntax o LocalSyntax.add_syntax (theory_of ctxt) o map prep_mixfix);
  1129       |-> (map_syntax o LocalSyntax.add_syntax (theory_of ctxt) o map prep_mixfix);
  1130     val _ = (vars ~~ xs') |> List.app (fn ((b, _, _), x') =>
  1130     val _ = (vars ~~ xs') |> List.app (fn ((b, _, _), x') =>