src/Pure/Isar/isar_syn.ML
changeset 28820 95dd21624c6c
parent 28721 21170e10c745
child 28895 4e2914c2f8c5
equal deleted inserted replaced
28819:daca685d7bb7 28820:95dd21624c6c
   392 val _ =
   392 val _ =
   393   OuterSyntax.command "locale" "define named proof context" K.thy_decl
   393   OuterSyntax.command "locale" "define named proof context" K.thy_decl
   394     (P.name -- Scan.optional (P.$$$ "=" |-- P.!!! locale_val) (Locale.empty, []) -- P.opt_begin
   394     (P.name -- Scan.optional (P.$$$ "=" |-- P.!!! locale_val) (Locale.empty, []) -- P.opt_begin
   395       >> (fn ((name, (expr, elems)), begin) =>
   395       >> (fn ((name, (expr, elems)), begin) =>
   396           (begin ? Toplevel.print) o Toplevel.begin_local_theory begin
   396           (begin ? Toplevel.print) o Toplevel.begin_local_theory begin
   397             (Locale.add_locale "" name expr elems #-> TheoryTarget.begin)));
   397             (Locale.add_locale_cmd name expr elems #-> TheoryTarget.begin)));
   398 
   398 
   399 val opt_prefix = Scan.optional (P.binding --| P.$$$ ":") Name.no_binding;
   399 val opt_prefix = Scan.optional (P.binding --| P.$$$ ":") Name.no_binding;
   400 
   400 
   401 val _ =
   401 val _ =
   402   OuterSyntax.command "interpretation"
   402   OuterSyntax.command "interpretation"
   404     (P.xname --| (P.$$$ "\\<subseteq>" || P.$$$ "<") -- P.!!! SpecParse.locale_expr
   404     (P.xname --| (P.$$$ "\\<subseteq>" || P.$$$ "<") -- P.!!! SpecParse.locale_expr
   405       >> (Toplevel.print oo (Toplevel.theory_to_proof o Locale.interpretation_in_locale I)) ||
   405       >> (Toplevel.print oo (Toplevel.theory_to_proof o Locale.interpretation_in_locale I)) ||
   406       opt_prefix  -- SpecParse.locale_expr -- SpecParse.locale_insts
   406       opt_prefix  -- SpecParse.locale_expr -- SpecParse.locale_insts
   407         >> (fn ((name, expr), insts) => Toplevel.print o
   407         >> (fn ((name, expr), insts) => Toplevel.print o
   408             Toplevel.theory_to_proof
   408             Toplevel.theory_to_proof
   409               (Locale.interpretation I (true, Name.name_of name) expr insts #> snd)));
   409               (Locale.interpretation_cmd (Name.name_of name) expr insts)));
   410 
   410 
   411 val _ =
   411 val _ =
   412   OuterSyntax.command "interpret"
   412   OuterSyntax.command "interpret"
   413     "prove and register interpretation of locale expression in proof context"
   413     "prove and register interpretation of locale expression in proof context"
   414     (K.tag_proof K.prf_goal)
   414     (K.tag_proof K.prf_goal)
   415     (opt_prefix -- SpecParse.locale_expr -- SpecParse.locale_insts
   415     (opt_prefix -- SpecParse.locale_expr -- SpecParse.locale_insts
   416       >> (fn ((name, expr), insts) => Toplevel.print o
   416       >> (fn ((name, expr), insts) => Toplevel.print o
   417           Toplevel.proof'
   417           Toplevel.proof'
   418             (fn int => Locale.interpret Seq.single (true, Name.name_of name) expr insts int #> snd)));
   418             (fn int => Locale.interpret_cmd (Name.name_of name) expr insts int)));
   419 
   419 
   420 
   420 
   421 (* classes *)
   421 (* classes *)
   422 
   422 
   423 val class_val =
   423 val class_val =