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