src/Pure/Interface/proof_general.ML
author wenzelm
Thu, 21 Oct 1999 19:00:25 +0200
changeset 7911 b8dee46d778a
parent 7893 fef0738b62d7
child 7922 b284079cd902
permissions -rw-r--r--
tuned trace_action;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6699
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
     1
(*  Title:      Pure/Interface/proof_general.ML
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
     2
    ID:         $Id$
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
     3
    Author:     Markus Wenzel, TU Muenchen
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
     4
7266
28d95a7a265a isa_action: don't lock pretend_used files;
wenzelm
parents: 7235
diff changeset
     5
Configuration for Proof General of LFCS Edinburgh.
6699
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
     6
*)
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
     7
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
     8
signature PROOF_GENERAL =
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
     9
sig
6947
a233bc746c75 write_keywords: default file name;
wenzelm
parents: 6861
diff changeset
    10
  val write_keywords: unit -> unit
6699
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    11
  val setup: (theory -> theory) list
7579
20adf381fb0a added thms_containing;
wenzelm
parents: 7407
diff changeset
    12
  val thms_containing: xstring list -> unit
7193
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
    13
  val help: unit -> unit
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
    14
  val show_context: unit -> theory
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
    15
  val kill_goal: unit -> unit
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
    16
  val repeat_undo: int -> unit
7235
3c3defaad8ae Goals.reset_goals;
wenzelm
parents: 7210
diff changeset
    17
  val isa_restart: unit -> unit
6699
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    18
  val init: bool -> unit
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    19
end;
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    20
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    21
structure ProofGeneral: PROOF_GENERAL =
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    22
struct
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    23
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    24
6720
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    25
(** generate keyword classification file **)
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    26
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    27
local
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    28
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    29
val regexp_meta = explode ".*+?[]^$";
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    30
val regexp_quote = implode o map (fn c => if c mem regexp_meta then "\\\\" ^ c else c) o explode;
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    31
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    32
fun defconst name strs =
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    33
  "\n(defconst isar-keywords-" ^ name ^
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    34
  "\n  '(" ^ space_implode "\n    " (map (quote o regexp_quote) strs) ^ "))\n";
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    35
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    36
fun make_elisp_commands commands kind =
7027
ca0fbe679bbb adapted to dest_keywords, dest_parsers;
wenzelm
parents: 6947
diff changeset
    37
  defconst kind (mapfilter (fn (c, _, k, _) => if k = kind then Some c else None) commands);
6720
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    38
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    39
fun make_elisp_syntax (keywords, commands) =
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    40
  ";;\n\
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    41
  \;; Keyword classification tables for Isabelle/Isar.\n\
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    42
  \;; This file generated by Isabelle -- DO NOT EDIT!\n\
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    43
  \;;\n\
6724
b5007e5e8a1b fixed cvs Id;
wenzelm
parents: 6720
diff changeset
    44
  \;; $" ^ "Id$\n\
6720
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    45
  \;;\n" ^
7027
ca0fbe679bbb adapted to dest_keywords, dest_parsers;
wenzelm
parents: 6947
diff changeset
    46
  defconst "minor" (filter Syntax.is_identifier keywords) ^
6720
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    47
  implode (map (make_elisp_commands commands) OuterSyntax.Keyword.kinds) ^
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    48
  "\n(provide 'isar-keywords)\n";
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    49
6947
a233bc746c75 write_keywords: default file name;
wenzelm
parents: 6861
diff changeset
    50
val keywords_file = "isar-keywords.el";
a233bc746c75 write_keywords: default file name;
wenzelm
parents: 6861
diff changeset
    51
6720
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    52
in
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    53
6947
a233bc746c75 write_keywords: default file name;
wenzelm
parents: 6861
diff changeset
    54
fun write_keywords () =
7027
ca0fbe679bbb adapted to dest_keywords, dest_parsers;
wenzelm
parents: 6947
diff changeset
    55
  File.write (Path.unpack keywords_file)
ca0fbe679bbb adapted to dest_keywords, dest_parsers;
wenzelm
parents: 6947
diff changeset
    56
    (make_elisp_syntax (OuterSyntax.dest_keywords (), OuterSyntax.dest_parsers ()));
6720
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    57
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    58
end;
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    59
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    60
353bd9b74b1f write_keywords generates outer syntax keyword classification in elisp;
wenzelm
parents: 6699
diff changeset
    61
6699
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    62
(** compile-time theory setup **)
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    63
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    64
(* token translations *)
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    65
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    66
val proof_generalN = "ProofGeneral";
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    67
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    68
local
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    69
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    70
val end_tag = oct_char "350";
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    71
val tclass_tag = oct_char "351";
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    72
val tfree_tag = oct_char "352";
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    73
val tvar_tag = oct_char "353";
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    74
val free_tag = oct_char "354";
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    75
val bound_tag = oct_char "355";
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    76
val var_tag = oct_char "356";
7597
4fbdb8a0c378 skolem_tag;
wenzelm
parents: 7581
diff changeset
    77
val skolem_tag = oct_char "357";
6699
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    78
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    79
fun tagit p x = (p ^ x ^ end_tag, real (size x));
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    80
7597
4fbdb8a0c378 skolem_tag;
wenzelm
parents: 7581
diff changeset
    81
fun free_or_skolem x =
4fbdb8a0c378 skolem_tag;
wenzelm
parents: 7581
diff changeset
    82
  (case try Syntax.dest_skolem x of
4fbdb8a0c378 skolem_tag;
wenzelm
parents: 7581
diff changeset
    83
    None => tagit free_tag x
4fbdb8a0c378 skolem_tag;
wenzelm
parents: 7581
diff changeset
    84
  | Some x' => tagit skolem_tag x');
4fbdb8a0c378 skolem_tag;
wenzelm
parents: 7581
diff changeset
    85
6699
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    86
in
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    87
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    88
val proof_general_trans =
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    89
 Syntax.tokentrans_mode proof_generalN
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    90
  [("class", tagit tclass_tag),
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    91
   ("tfree", tagit tfree_tag),
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    92
   ("tvar", tagit tvar_tag),
7597
4fbdb8a0c378 skolem_tag;
wenzelm
parents: 7581
diff changeset
    93
   ("free", free_or_skolem),
6699
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    94
   ("bound", tagit bound_tag),
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    95
   ("var", tagit var_tag)];
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    96
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    97
end;
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    98
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
    99
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   100
(* setup *)
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   101
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   102
val setup = [Theory.add_tokentrfuns proof_general_trans];
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   103
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   104
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   105
7193
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   106
(** run-time operations **)
6699
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   107
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   108
(* messages *)
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   109
7193
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   110
val plain_output = std_output o suffix "\n";
7195
a38dc0c6b244 made SML happy;
wenzelm
parents: 7193
diff changeset
   111
fun plain_writeln x = Library.setmp writeln_fn plain_output x;
7193
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   112
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   113
fun decorate_lines bg en "" = plain_output o enclose bg en
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   114
  | decorate_lines bg en prfx = plain_output o enclose bg en o prefix_lines prfx;
6699
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   115
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   116
fun setup_messages () =
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   117
 (writeln_fn := (decorate_lines (oct_char "360") (oct_char "361") "");
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   118
  warning_fn := (decorate_lines (oct_char "362") (oct_char "363") "### ");
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   119
  error_fn := (decorate_lines (oct_char "364") (oct_char "365") "*** "));
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   120
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   121
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   122
(* theory / proof state *)
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   123
7193
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   124
fun print_current_goals n max th = plain_writeln (Goals.print_current_goals_default n max) th;
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   125
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   126
fun setup_state isar =
6699
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   127
  (current_goals_markers :=
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   128
    let
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   129
      val begin_state = oct_char "366";
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   130
      val end_state= oct_char "367";
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   131
      val begin_goal = oct_char "370";
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   132
    in (begin_state, end_state, begin_goal) end;
7193
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   133
  if isar then
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   134
   (Toplevel.print_state_fn := plain_writeln Toplevel.print_state_default;
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   135
    Toplevel.prompt_state_fn := (suffix (oct_char "372") o Toplevel.prompt_state_default))
7407
fc8cad55af74 isar: avoid verbose goal responses;
wenzelm
parents: 7330
diff changeset
   136
  else ();
fc8cad55af74 isar: avoid verbose goal responses;
wenzelm
parents: 7330
diff changeset
   137
  Goals.print_current_goals_fn := print_current_goals);  (*isar: avoids verbose responses*)
6699
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   138
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   139
7100
4f777a0e1c8b setup_thy_loader;
wenzelm
parents: 7027
diff changeset
   140
(* theory loader actions *)
4f777a0e1c8b setup_thy_loader;
wenzelm
parents: 7027
diff changeset
   141
4f777a0e1c8b setup_thy_loader;
wenzelm
parents: 7027
diff changeset
   142
local
4f777a0e1c8b setup_thy_loader;
wenzelm
parents: 7027
diff changeset
   143
4f777a0e1c8b setup_thy_loader;
wenzelm
parents: 7027
diff changeset
   144
fun tell_pg msg name = writeln ("Proof General, " ^ msg ^ " " ^ quote name);
4f777a0e1c8b setup_thy_loader;
wenzelm
parents: 7027
diff changeset
   145
7893
fef0738b62d7 eliminated isar_action;
wenzelm
parents: 7610
diff changeset
   146
fun trace_action action name =
7266
28d95a7a265a isa_action: don't lock pretend_used files;
wenzelm
parents: 7235
diff changeset
   147
  let
28d95a7a265a isa_action: don't lock pretend_used files;
wenzelm
parents: 7235
diff changeset
   148
    val update = (action = ThyInfo.Update);
7911
b8dee46d778a tuned trace_action;
wenzelm
parents: 7893
diff changeset
   149
    fun loaded (path, really) =
7266
28d95a7a265a isa_action: don't lock pretend_used files;
wenzelm
parents: 7235
diff changeset
   150
      if update andalso not really then None
7911
b8dee46d778a tuned trace_action;
wenzelm
parents: 7893
diff changeset
   151
      else Some path;
b8dee46d778a tuned trace_action;
wenzelm
parents: 7893
diff changeset
   152
    val tell = tell_pg (if update then "this file is loaded:" else "you can unlock the file")
b8dee46d778a tuned trace_action;
wenzelm
parents: 7893
diff changeset
   153
      o File.sysify_path;
b8dee46d778a tuned trace_action;
wenzelm
parents: 7893
diff changeset
   154
b8dee46d778a tuned trace_action;
wenzelm
parents: 7893
diff changeset
   155
    val (master, files) = ThyInfo.loaded_files name;
7266
28d95a7a265a isa_action: don't lock pretend_used files;
wenzelm
parents: 7235
diff changeset
   156
  in
7911
b8dee46d778a tuned trace_action;
wenzelm
parents: 7893
diff changeset
   157
    (case master of
b8dee46d778a tuned trace_action;
wenzelm
parents: 7893
diff changeset
   158
      Some path => tell path
b8dee46d778a tuned trace_action;
wenzelm
parents: 7893
diff changeset
   159
    | None => tell (ThyLoad.thy_path name));     (*just to make sure ...*)
b8dee46d778a tuned trace_action;
wenzelm
parents: 7893
diff changeset
   160
    seq tell (mapfilter loaded files)
7193
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   161
  end;
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   162
7100
4f777a0e1c8b setup_thy_loader;
wenzelm
parents: 7027
diff changeset
   163
in
7893
fef0738b62d7 eliminated isar_action;
wenzelm
parents: 7610
diff changeset
   164
  fun setup_thy_loader () = ThyInfo.add_hook trace_action;
7100
4f777a0e1c8b setup_thy_loader;
wenzelm
parents: 7027
diff changeset
   165
end;
4f777a0e1c8b setup_thy_loader;
wenzelm
parents: 7027
diff changeset
   166
4f777a0e1c8b setup_thy_loader;
wenzelm
parents: 7027
diff changeset
   167
7193
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   168
(* some top-level commands for ProofGeneral/isa *)
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   169
7610
c803ba5347fd ThmDatabase.print_thms_containing;
wenzelm
parents: 7597
diff changeset
   170
fun thms_containing cs = ThmDatabase.print_thms_containing (the_context ()) cs;
7579
20adf381fb0a added thms_containing;
wenzelm
parents: 7407
diff changeset
   171
7193
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   172
val help = writeln o Session.welcome;
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   173
val show_context = Context.the_context;
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   174
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   175
fun kill_goal () =
7266
28d95a7a265a isa_action: don't lock pretend_used files;
wenzelm
parents: 7235
diff changeset
   176
  (Goals.reset_goals (); writeln "Proof General, please clear the goals buffer.");
7193
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   177
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   178
fun repeat_undo 0 = ()
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   179
  | repeat_undo n = (undo(); repeat_undo (n - 1));
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   180
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   181
fun isa_restart () =
7210
ae9a645e8728 tuned prompts;
wenzelm
parents: 7195
diff changeset
   182
 (ml_prompts ("> " ^ oct_char "372") ("- " ^ oct_char "373");
7193
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   183
  ThyInfo.touch_all_thys ();
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   184
  kill_goal ();
7266
28d95a7a265a isa_action: don't lock pretend_used files;
wenzelm
parents: 7235
diff changeset
   185
  writeln "Proof General, please clear the response buffer.";
7193
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   186
  writeln "Isabelle Proof General: Isabelle process ready!");
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   187
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   188
6699
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   189
(* init *)
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   190
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   191
fun init isar =
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   192
 (setup_messages ();
7193
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   193
  setup_state isar;
7893
fef0738b62d7 eliminated isar_action;
wenzelm
parents: 7610
diff changeset
   194
  setup_thy_loader ();
7330
109b1ef4686a print_mode activated again;
wenzelm
parents: 7289
diff changeset
   195
  print_mode := [proof_generalN];
6699
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   196
  set quick_and_dirty;
7193
cc7a89d233f7 proper ProofGeneral/isa setup;
wenzelm
parents: 7100
diff changeset
   197
  if isar then Isar.sync_main () else isa_restart ());
6699
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   198
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   199
1471f2bd74a0 Configuration for ProofGeneral of LFCS Edinburgh.
wenzelm
parents:
diff changeset
   200
end;