# HG changeset patch # User wenzelm # Date 1144529490 -7200 # Node ID 3ff5f1777743815c4c0478758da798245f889cec # Parent 32fc9743803aa69f0b8186dde105f53e8eb8c787 abbreviation(_i): do not expand abbreviations, do not use derived_def; diff -r 32fc9743803a -r 3ff5f1777743 src/Pure/Isar/specification.ML --- a/src/Pure/Isar/specification.ML Sat Apr 08 22:51:28 2006 +0200 +++ b/src/Pure/Isar/specification.ML Sat Apr 08 22:51:30 2006 +0200 @@ -28,9 +28,9 @@ val definition_i: ((string * typ option * mixfix) option * ((string * Attrib.src list) * term)) list -> local_theory -> (term * (bstring * thm)) list * local_theory - val abbreviation: bool -> ((string * string option * mixfix) option * string) list -> + val abbreviation: string * bool -> ((string * string option * mixfix) option * string) list -> local_theory -> local_theory - val abbreviation_i: bool -> ((string * typ option * mixfix) option * term) list -> + val abbreviation_i: string * bool -> ((string * typ option * mixfix) option * term) list -> local_theory -> local_theory end; @@ -111,18 +111,20 @@ (* abbreviation *) -fun gen_abbrevs prep revert args ctxt = +fun gen_abbrevs prep prmode args ctxt = let fun abbrev (raw_var, raw_prop) ctxt' = let - val (vars, [(_, [prop])]) = fst (prep (the_list raw_var) [(("", []), [raw_prop])] ctxt'); - val ((x, T), rhs) = #1 (LocalDefs.derived_def ctxt' false prop); + val ((vars, [(_, [prop])]), _) = + prep (the_list raw_var) [(("", []), [raw_prop])] + (ctxt' |> ProofContext.expand_abbrevs false); + val ((x, T), rhs) = LocalDefs.abs_def (#2 (LocalDefs.cert_def ctxt' prop)); val mx = (case vars of [] => NoSyn | [((x', _), mx)] => if x = x' then mx else error ("Head of abbreviation " ^ quote x ^ " differs from declaration " ^ quote x')); in ctxt' - |> LocalTheory.abbrev revert ((x, mx), rhs) + |> LocalTheory.abbrev prmode ((x, mx), rhs) |> pair (x, T) end;