src/Pure/Syntax/syntax_ext.ML
changeset 43329 84472e198515
parent 43323 28e71a685c84
child 44470 6c6c31ef6bb2
equal deleted inserted replaced
43328:10d731b06ed7 43329:84472e198515
   239             if const <> "" then const ^ "_indexed"
   239             if const <> "" then const ^ "_indexed"
   240             else err_in_mfix "Missing constant name for indexed syntax" mfix;
   240             else err_in_mfix "Missing constant name for indexed syntax" mfix;
   241           val rangeT = Term.range_type typ handle Match =>
   241           val rangeT = Term.range_type typ handle Match =>
   242             err_in_mfix "Missing structure argument for indexed syntax" mfix;
   242             err_in_mfix "Missing structure argument for indexed syntax" mfix;
   243 
   243 
   244           val xs = map Ast.Variable (Name.invents Name.context "xa" (length args - 1));
   244           val xs = map Ast.Variable (Name.invent Name.context "xa" (length args - 1));
   245           val (xs1, xs2) = chop (find_index is_index args) xs;
   245           val (xs1, xs2) = chop (find_index is_index args) xs;
   246           val i = Ast.Variable "i";
   246           val i = Ast.Variable "i";
   247           val lhs = Ast.mk_appl (Ast.Constant indexed_const)
   247           val lhs = Ast.mk_appl (Ast.Constant indexed_const)
   248             (xs1 @ [Ast.mk_appl (Ast.Constant "_index") [i]] @ xs2);
   248             (xs1 @ [Ast.mk_appl (Ast.Constant "_index") [i]] @ xs2);
   249           val rhs = Ast.mk_appl (Ast.Constant const) (i :: xs);
   249           val rhs = Ast.mk_appl (Ast.Constant const) (i :: xs);