equal
deleted
inserted
replaced
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') => |