src/Pure/Isar/outer_keyword.ML
changeset 28431 f12c1c68ec8e
parent 28345 4562584d9d66
child 28542 86b39d27b199
equal deleted inserted replaced
28430:29b2886114fb 28431:f12c1c68ec8e
    48   val keyword: string -> unit
    48   val keyword: string -> unit
    49   val command: string -> T -> unit
    49   val command: string -> T -> unit
    50   val is_theory: string -> bool
    50   val is_theory: string -> bool
    51   val is_proof: string -> bool
    51   val is_proof: string -> bool
    52   val is_diag: string -> bool
    52   val is_diag: string -> bool
       
    53   val is_theory_goal: string -> bool
       
    54   val is_proof_goal: string -> bool
       
    55   val is_qed: string -> bool
       
    56   val is_qed_global: string -> bool
    53 end;
    57 end;
    54 
    58 
    55 structure OuterKeyword: OUTER_KEYWORD =
    59 structure OuterKeyword: OUTER_KEYWORD =
    56 struct
    60 struct
    57 
    61 
   161  (change_lexicons (apsnd (Scan.extend_lexicon (Symbol.explode name)));
   165  (change_lexicons (apsnd (Scan.extend_lexicon (Symbol.explode name)));
   162   change_commands (Symtab.update (name, kind));
   166   change_commands (Symtab.update (name, kind));
   163   Output.status (Pretty.string_of (report_command (name, kind))));
   167   Output.status (Pretty.string_of (report_command (name, kind))));
   164 
   168 
   165 
   169 
   166 (* overall category *)
   170 (* command categories *)
   167 
   171 
   168 fun command_category ks name =
   172 fun command_category ks name =
   169   (case command_keyword name of
   173   (case command_keyword name of
   170     NONE => false
   174     NONE => false
   171   | SOME k => member (op =) ks (kind_of k));
   175   | SOME k => member (op = o pairself kind_of) ks k);
   172 
   176 
   173 val is_theory = command_category
   177 val is_theory = command_category
   174   (map kind_of [thy_begin, thy_switch, thy_end, thy_heading, thy_decl, thy_script, thy_goal]);
   178   [thy_begin, thy_switch, thy_end, thy_heading, thy_decl, thy_script, thy_goal];
   175 
   179 
   176 val is_proof = command_category
   180 val is_proof = command_category
   177   (map kind_of [qed, qed_block, qed_global, prf_heading, prf_goal, prf_block, prf_open, prf_close,
   181   [qed, qed_block, qed_global, prf_heading, prf_goal, prf_block, prf_open, prf_close,
   178     prf_chain, prf_decl, prf_asm, prf_asm_goal, prf_script]);
   182     prf_chain, prf_decl, prf_asm, prf_asm_goal, prf_script];
   179 
   183 
   180 val is_diag = command_category [kind_of diag];
   184 val is_diag = command_category [diag];
       
   185 
       
   186 val is_theory_goal = command_category [thy_goal];
       
   187 val is_proof_goal = command_category [prf_goal, prf_asm_goal];
       
   188 val is_qed = command_category [qed, qed_block];
       
   189 val is_qed_global = command_category [qed_global];
   181 
   190 
   182 end;
   191 end;