author | paulson |
Wed, 13 Aug 2003 17:44:01 +0200 | |
changeset 14148 | 6580d374a509 |
parent 13076 | 70704dd48bd5 |
child 14362 | b378b6faf4a7 |
permissions | -rw-r--r-- |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
1 |
# |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
2 |
# $Id$ |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
3 |
# Author: David von Oheimb, TU Muenchen |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
4 |
# License: GPL (GNU GENERAL PUBLIC LICENSE) |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
5 |
# |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
6 |
# convert.pl - convert legacy tactic scripts to Isabelle/Isar tactic |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
7 |
# emulation using heuristics - leaves unrecognized patterns unchanged |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
8 |
# produces from each input file (on the command line) a new file with |
10972 | 9 |
# ".thy" appended and renames the original input file by appending "~0~" |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
10 |
|
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
11 |
|
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
12 |
sub thmlist { |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
13 |
my $s = shift; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
14 |
$s =~ s/^\[(.*)\]$/$1/sg; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
15 |
$s =~ s/, +/ /g; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
16 |
$s =~ s/,/ /g; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
17 |
$s; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
18 |
} |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
19 |
|
11014 | 20 |
sub subst_RS { |
11131 | 21 |
s/ RS ([\w\'\.]+)/ [THEN $1]/g; |
22 |
s/ RS \((.+?)\)/ [THEN $1]/g; |
|
11271 | 23 |
s/\(([\w\'\.]+ \[THEN [\w\'\.]+\])\)/$1/g; |
11274 | 24 |
s/\] \[THEN /, THEN /g; |
11131 | 25 |
s/THEN sym\b/symmetric/g; |
11014 | 26 |
} |
27 |
||
11131 | 28 |
sub subst_RS_standard { |
11027 | 29 |
my $s = shift; |
30 |
$_ = $s; |
|
11131 | 31 |
s/\s+/ /sg; # remove multiple whitespace |
32 |
s/\s/ /sg; # substitute all remaining tabs and newlines by space |
|
11027 | 33 |
subst_RS(); |
11131 | 34 |
s/\]\s*$/, standard]/g; |
11027 | 35 |
$_; |
36 |
} |
|
37 |
||
11014 | 38 |
sub decl { |
39 |
my $s = shift; |
|
40 |
my $a = shift; |
|
41 |
$_ = $s; |
|
42 |
subst_RS(); |
|
43 |
s/, */ [$a] /g; |
|
44 |
s/$/ [$a]/; |
|
45 |
s/\] *\[/, /g; |
|
46 |
"declare $_"; |
|
47 |
} |
|
48 |
||
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
49 |
sub process_tac { |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
50 |
$prefer = ""; |
10972 | 51 |
my $lead = shift; |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
52 |
my $t = shift; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
53 |
my $simpmodmod = ($t =~ m/auto_tac|force_tac|clarsimp_tac/) ? "simp " : ""; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
54 |
|
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
55 |
$_ = $t; |
10972 | 56 |
s/\s+/ /sg; # remove multiple whitespace |
57 |
s/\s/ /sg; # substitute all remaining tabs and newlines by space |
|
58 |
s/\( /\(/g; s/ \)/\)/g; # remove leading and trailing space inside parentheses |
|
59 |
s/\[ /\[/g; s/ \]/\]/g; # remove leading and trailing space inside sq brackets |
|
60 |
s/ ?\( ?\)/\(\)/g; # remove space before and inside empty tuples |
|
11329
ad8061b2da6c
improved handling of space before/after parentheses
oheimb
parents:
11286
diff
changeset
|
61 |
s/([^ ])\(/$1 \(/g; # possibly add space before opening parentheses |
ad8061b2da6c
improved handling of space before/after parentheses
oheimb
parents:
11286
diff
changeset
|
62 |
s/\)([^ ])/\) $1/g; # possibly add space after closing parentheses |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
63 |
|
11273
673783831234
improve support for EVERY', added support for EVERY
oheimb
parents:
11272
diff
changeset
|
64 |
s/EVERY *\[(.*?)\]/$1/; |
11283 | 65 |
if(s/EVERY\' ?\[(.*?)\] *(\d+)/$1 $2/) { |
11271 | 66 |
$goal = $2; |
67 |
s/,/ $goal,/g; |
|
68 |
} |
|
10972 | 69 |
s/Blast_tac 1/blast/g; |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
70 |
s/^Blast_tac (\d+)/{$prefer="prefer $1 "; "blast"}/e; |
10972 | 71 |
s/Fast_tac 1/fast/g; |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
72 |
s/^Fast_tac (\d+)/{$prefer="prefer $1 "; "fast"}/e; |
10972 | 73 |
s/Slow_tac 1/slow/g; |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
74 |
s/^Slow_tac (\d+)/{$prefer="prefer $1 "; "slow"}/e; |
10972 | 75 |
s/Best_tac 1/best/g; |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
76 |
s/^Best_tac (\d+)/{$prefer="prefer $1 "; "best"}/e; |
10972 | 77 |
s/Safe_tac/safe/g; |
78 |
s/Clarify_tac 1/clarify/g; |
|
79 |
||
13076
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
80 |
s/ALLGOALS \(blast_tac \(claset \(\) (.*?)\) \)$/(blast $1)+/g; |
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
81 |
s/blast_tac \(claset \(\) (.*?)\) 1/blast $1/g; |
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
82 |
s/^blast_tac \(claset \(\) (.*?)\) (\d+)/{$prefer="prefer $2 "; "blast $1"}/e; |
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
83 |
s/ALLGOALS \(fast_tac \(claset \(\) (.*?)\) \)$/(fast $1)+/g; |
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
84 |
s/fast_tac \(claset \(\) (.*?)\) 1/fast $1/g; |
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
85 |
s/^fast_tac \(claset \(\) (.*?)\) (\d+)/{$prefer="prefer $2 "; "fast $1"}/e; |
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
86 |
s/slow_tac \(claset \(\) (.*?)\) 1/slow $1/g; |
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
87 |
s/^slow_tac \(claset \(\) (.*?)\) (\d+)/{$prefer="prefer $2 "; "slow $1"}/e; |
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
88 |
s/ALLGOALS \(best_tac \(claset \(\) (.*?)\) \)$/(best $1)+/g; |
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
89 |
s/best_tac \(claset \(\) (.*?)\) 1/best $1/g; |
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
90 |
s/^best_tac \(claset \(\) (.*?)\) (\d+)/{$prefer="prefer $2 "; "best $1"}/e; |
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
91 |
s/safe_tac \(claset \(\) (.*?)\)/safe $1/g; |
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
92 |
s/clarify_tac \(claset \(\) (.*?)\) 1/clarify $1/g; |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
93 |
|
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
94 |
s/Auto_tac/auto/g; |
13076
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
95 |
s/ALLGOALS Force_tac/force+/g; |
10972 | 96 |
s/Force_tac 1/force/g; |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
97 |
s/^Force_tac (\d+)/{$prefer="prefer $1 "; "force"}/e; |
10972 | 98 |
s/Clarsimp_tac 1/clarsimp/g; |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
99 |
|
11329
ad8061b2da6c
improved handling of space before/after parentheses
oheimb
parents:
11286
diff
changeset
|
100 |
s/auto_tac \(claset \(\) (.*?), *simpset \(\) (.*?)\)/auto $1 $2/g; |
13076
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
101 |
s/ALLGOALS \(force_tac \(claset \(\) (.*?), *simpset \(\) (.*?)\) \)$/(force $1 $2)+/g; |
11329
ad8061b2da6c
improved handling of space before/after parentheses
oheimb
parents:
11286
diff
changeset
|
102 |
s/force_tac \(claset \(\) (.*?), *simpset \(\) (.*?)\) 1/force $1 $2/g; |
ad8061b2da6c
improved handling of space before/after parentheses
oheimb
parents:
11286
diff
changeset
|
103 |
s/^force_tac \(claset \(\) (.*?), *simpset \(\) (.*?)\) (\d+)/{$prefer="prefer $3 "; "force $1 $2"}/e; |
ad8061b2da6c
improved handling of space before/after parentheses
oheimb
parents:
11286
diff
changeset
|
104 |
s/clarsimp_tac \(claset \(*\) (.*?), *simpset \(\) (.*?)\) 1/clarsimp $1 $2/g; |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
105 |
|
10972 | 106 |
s/Asm_full_simp_tac 1/simp/g; |
107 |
s/Full_simp_tac 1/simp (no_asm_use)/g; |
|
108 |
s/Asm_simp_tac 1/simp (no_asm_simp)/g; |
|
109 |
s/Simp_tac 1/simp (no_asm)/g; |
|
110 |
s/ALLGOALS Asm_full_simp_tac/simp_all/g; |
|
11029 | 111 |
s/ALLGOALS Full_simp_tac/simp_all (no_asm_use)/g; |
112 |
s/ALLGOALS Asm_simp_tac/simp_all (no_asm_simp)/g; |
|
10972 | 113 |
s/ALLGOALS Simp_tac/simp_all (no_asm)/g; |
114 |
||
11329
ad8061b2da6c
improved handling of space before/after parentheses
oheimb
parents:
11286
diff
changeset
|
115 |
s/asm_full_simp_tac \(simpset \(\) (.*?)\) 1/simp $1/g; |
ad8061b2da6c
improved handling of space before/after parentheses
oheimb
parents:
11286
diff
changeset
|
116 |
s/full_simp_tac \(simpset \(\) (.*?)\) 1/simp (no_asm_use) $1/g; |
ad8061b2da6c
improved handling of space before/after parentheses
oheimb
parents:
11286
diff
changeset
|
117 |
s/asm_simp_tac \(simpset \(\) (.*?)\) 1/simp (no_asm_simp) $1/g; |
ad8061b2da6c
improved handling of space before/after parentheses
oheimb
parents:
11286
diff
changeset
|
118 |
s/simp_tac \(simpset \(\) (.*?)\) 1/simp (no_asm) $1/g; |
ad8061b2da6c
improved handling of space before/after parentheses
oheimb
parents:
11286
diff
changeset
|
119 |
s/ALLGOALS \(asm_full_simp_tac \(simpset \(\) (.*?)\) \)/simp_all $1/g; |
ad8061b2da6c
improved handling of space before/after parentheses
oheimb
parents:
11286
diff
changeset
|
120 |
s/ALLGOALS \(full_simp_tac \(simpset \(\) (.*?)\) \)/simp_all (no_asm_use) $1/g; |
ad8061b2da6c
improved handling of space before/after parentheses
oheimb
parents:
11286
diff
changeset
|
121 |
s/ALLGOALS \(asm_simp_tac \(simpset \(\) (.*?)\) \)/simp_all (no_asm_simp) $1/g; |
ad8061b2da6c
improved handling of space before/after parentheses
oheimb
parents:
11286
diff
changeset
|
122 |
s/ALLGOALS \(simp_tac \(simpset \(\) (.*?)\) \)/simp_all (no_asm) $1/g; |
10972 | 123 |
|
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
124 |
s/a(ssume_)?tac 1/assumption/g; |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
125 |
s/^a(ssume_)?tac (\d+)/{$prefer="prefer $2 "; "assumption"}/e; |
11068 | 126 |
s/\bmp_tac 1/erule (1) notE impE/g; |
127 |
s/\bmp_tac (\d+)/erule_tac [$1] notE impE, tactic \"assume_tac $1\"/g; |
|
11013 | 128 |
|
10972 | 129 |
s/hypsubst_tac 1/hypsubst/g; |
130 |
s/arith_tac 1/arith/g; |
|
131 |
s/strip_tac 1/intro strip/g; |
|
132 |
s/split_all_tac 1/simp (no_asm_simp) only: split_tupled_all/g; |
|
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
133 |
|
11263
e502756bcb11
added parentheses for 'b y' syntax, added primitive smp_tac support
oheimb
parents:
11198
diff
changeset
|
134 |
s/smp_tac (\d+) (\d+)/tactic "smp_tac $1 $2"/g; |
11009 | 135 |
s/rotate_tac (\d+) (\d+)/rotate_tac [$2] $1/g; |
11068 | 136 |
s/rotate_tac ~ *(\d+) (\d+)/rotate_tac [$2] -$1/g; |
11013 | 137 |
s/rename_tac (\".*?\") (\d+)/rename_tac [$2] $1/g; |
138 |
s/case_tac (\".*?\") (\d+)/case_tac [$2] $1/g; |
|
139 |
s/induct_tac (\".*?\") (\d+)/induct_tac [$2] $1/g; |
|
11029 | 140 |
s/induct_thm_tac ([\w\'\. \[,\]]+?) (\".*?\") (\d+)/induct_tac [$3] $2 rule: $1/g; |
11013 | 141 |
s/subgoal_tac (\".*?\") (\d+)/subgoal_tac [$2] $1/g; |
142 |
s/thin_tac (\".*?\") *(\d+)/erule_tac [$2] V = $1 in thin_rl/g; |
|
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
143 |
|
10972 | 144 |
s/THEN /, /g; |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
145 |
s/ORELSE/|/g; |
11014 | 146 |
subst_RS(); |
10972 | 147 |
|
11329
ad8061b2da6c
improved handling of space before/after parentheses
oheimb
parents:
11286
diff
changeset
|
148 |
s/\(\"(.*?)\" *, *(\".*?\")\) , */$1 = $2 and /g; # instantiations |
11068 | 149 |
s/\(\"(.*?)\" *, *(\".*?\")\)/$1 = $2/g; # last instantiation |
150 |
||
11013 | 151 |
s/rewtac ([\w\'\. \[,\]]+)/unfold $1/g; |
152 |
s/stac ([\w\'\. \[,\]]+?) 1/subst $1/g; |
|
153 |
s/rtac ([\w\'\. \[,\]]+?) 1/rule $1/g; |
|
154 |
s/rtac ([\w\'\. \[,\]]+?) (\d+)/rule_tac [$2] $1/g; |
|
11068 | 155 |
s/res_inst_tac \[(.*?)\] ([\w\'\. \[,\]]+?) (\d+)/rule_tac [$3] $1 in $2/g; |
11013 | 156 |
s/dtac ([\w\'\. \[,\]]+?) 1/drule $1/g; |
157 |
s/dtac ([\w\'\. \[,\]]+?) (\d+)/drule_tac [$2] $1/g; |
|
11068 | 158 |
s/dres_inst_tac \[(.*?)\] ([\w\'\. \[,\]]+?) (\d+)/drule_tac [$3] $1 in $2/g; |
11013 | 159 |
s/datac ([\w\'\. \[,\]]+?) (\d+) 1/drule ($2) $1/g; |
160 |
s/etac ([\w\'\. \[,\]]+?) 1/erule $1/g; |
|
161 |
s/etac ([\w\'\. \[,\]]+?) (\d+)/erule_tac [$2] $1/g; |
|
11068 | 162 |
s/eres_inst_tac \[(.*?)\] ([\w\'\. \[,\]]+?) (\d+)/erule_tac [$3] $1 in $2/g; |
11013 | 163 |
s/eatac ([\w\'\. \[,\]]+?) (\d+) 1/erule ($2) $1/g; |
164 |
s/forward_tac \[([\w\'\. \[,\]]+)\] 1/frule $1/g; |
|
165 |
s/forward_tac \[([\w\'\. \[,\]]+)\] (\d+)/frule_tac [$2] $1/g; |
|
166 |
s/ftac ([\w\'\. \[,\]]+?) 1/frule $1/g; |
|
167 |
s/ftac ([\w\'\. \[,\]]+?) (\d+)/frule_tac [$2] $1/g; |
|
11068 | 168 |
s/forw_inst_tac \[(.*?)\] ([\w\'\. \[,\]]+?) (\d+)/frule_tac [$3] $1 in $2/g; |
11013 | 169 |
s/fatac ([\w\'\. \[,\]]+?) (\d+) 1/frule ($2) $1/g; |
170 |
||
171 |
||
172 |
s/fold_goals_tac *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+)/"fold ".thmlist($1)/eg; |
|
173 |
s/rewrite_goals_tac *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+)/"unfold ".thmlist($1)/eg; |
|
11068 | 174 |
s/cut_inst_tac \[(.*?)\] ([\w\'\. \[,\]]+?) (\d+)/cut_tac [$3] $1 in $2/g; |
175 |
s/cut_facts_tac *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+) (\d+)/"cut_tac [$2] ".thmlist($1)/eg; |
|
11013 | 176 |
s/resolve_tac *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+) 1/"rule ".thmlist($1)/eg; |
177 |
||
178 |
s/addIs *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+)/"intro: ".thmlist($1)/eg; |
|
179 |
s/addSIs *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+)/"intro!: ".thmlist($1)/eg; |
|
180 |
s/addEs *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+)/"elim: ".thmlist($1)/eg; |
|
181 |
s/addSEs *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+)/"elim!: ".thmlist($1)/eg; |
|
182 |
s/addDs *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+)/"dest: ".thmlist($1)/eg; |
|
183 |
s/addSDs *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+)/"dest!: ".thmlist($1)/eg; |
|
184 |
s/delrules *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+)/"del: ".thmlist($1)/eg; |
|
185 |
s/addsimps *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+)/"$simpmodmod"."add: ".thmlist($1)/eg; |
|
186 |
s/delsimps *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+)/"$simpmodmod"."del: ".thmlist($1)/eg; |
|
187 |
s/addcongs *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+)/"cong add: ".thmlist($1)/eg; |
|
188 |
s/delcongs *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+)/"cong del: ".thmlist($1)/eg; |
|
189 |
s/addsplits *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+)/"split add: ".thmlist($1)/eg; |
|
190 |
s/delsplits *(\[[\w\'\. ,]*\]|[\w\'\. \[,\]]+)/"split del: ".thmlist($1)/eg; |
|
191 |
||
11068 | 192 |
s/_tac \[1\]/_tac/g; |
11013 | 193 |
s/ +/ /g; # remove multiple whitespace |
10972 | 194 |
s/\( /\(/; s/ \)/\)/g; # remove leading and trailing space inside parentheses |
11013 | 195 |
s/^ *(.*?) *$/$1/s; # remove enclosing whitespace |
10972 | 196 |
s/^([a-zA-Z])/ $1/ if (!($lead =~ m/[\s\(]$/)); # add space if required |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
197 |
$prefer."apply".$lead.$_; |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
198 |
} |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
199 |
|
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
200 |
sub lemmaname { |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
201 |
$lemmanames[++$lemmacount] = "??unknown??"; |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
202 |
"@@" . $lemmacount . "@@"; |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
203 |
} |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
204 |
|
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
205 |
sub backpatch_lemmanames { |
10972 | 206 |
if($currfile ne "") { |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
207 |
select(STDOUT); |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
208 |
close(ARGVOUT); |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
209 |
open(TMPW, '>'.$finalfile); |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
210 |
open TMPR,$tmpfile or die "Can't find tmp file $tmp: $!\n"; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
211 |
while(<TMPR>) { |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
212 |
s/@@(\d+)@@/$lemmanames[$1]/eg; |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
213 |
print TMPW; |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
214 |
} |
11068 | 215 |
system("mv $currfile $currfile~0~") if($currfile ne $default); |
10972 | 216 |
system("rm $tmpfile"); |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
217 |
} |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
218 |
} |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
219 |
|
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
220 |
sub done { |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
221 |
my $name = shift; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
222 |
my $attr = shift; |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
223 |
$lemmanames[$lemmacount] = $name.$attr; |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
224 |
"done"; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
225 |
} |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
226 |
|
11013 | 227 |
$currfile = ""; |
11068 | 228 |
$default = "convert_default_stdout"; |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
229 |
while (<>) { # main loop |
10972 | 230 |
if ($ARGV ne $currfile) { |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
231 |
$x=$_; backpatch_lemmanames; $_=$x; |
11068 | 232 |
$currfile = ($ARGV eq "-" ? $default : $ARGV); |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
233 |
$lemmacount=0; |
10972 | 234 |
$finalfile = "$currfile.thy"; |
235 |
$tmpfile = "$finalfile.~0~"; |
|
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
236 |
open(ARGVOUT, '>'.$tmpfile); |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
237 |
select(ARGVOUT); |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
238 |
} |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
239 |
|
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
240 |
nl: |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
241 |
if(!s/;(\s*?(\n?$|\(\*))/$1/s && !eof()) {# no end_of_ML_command marker |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
242 |
$_ = $_ . <>; |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
243 |
goto nl; |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
244 |
} |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
245 |
s/\\(\s*\n\s*)\\/ $1 /g; # remove backslashes escaping newlines |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
246 |
nlc: |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
247 |
m/^(\s*)(.*?)(\s*)$/s; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
248 |
$head=$1; $line=$2; $tail=$3; |
10972 | 249 |
$tail =~ s/\s+\n/\n/sg; # remove trailing whitespace at end of lines |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
250 |
print $head; $_=$line.$tail; |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
251 |
if ($line =~ m/^\(\*/) { # start comment |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
252 |
while (($i = index $_,"*)") == -1 && !eof()) { # no end comment |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
253 |
print; |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
254 |
$_ = <>; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
255 |
} |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
256 |
if ($i == -1) { print; last; } |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
257 |
print substr $_,0,$i+2; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
258 |
$_ = substr $_,$i+2; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
259 |
goto nlc; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
260 |
} |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
261 |
$_=$line; |
11272 | 262 |
if(!($head =~ m/^\n/)) { $head = "\n$head"; } |
11013 | 263 |
s/^Goalw *(\[[\w\'\.\s,]*\]|[\w\'\. \[,\]]+) *(.+)/ |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
264 |
"lemma ".lemmaname().": $2$head"."apply (unfold ".thmlist($1).")"/se; |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
265 |
s/^Goal *(.+)/"lemma ".lemmaname().": $1"/se; |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
266 |
s/\bgoal/"(*".lemmaname()."*)goal"/se; # ugly old-style goals |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
267 |
s/^qed_spec_mp *\"(.*?)\"/done($1," [rule_format (no_asm)]")/se; |
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
268 |
s/^qed *\"(.*?)\"/done($1,"")/se; |
11068 | 269 |
s/^val *(\w+) *= *result *\( *\) *$/done($1,"")/se; |
270 |
s/^bind_thm *\( *\"(.*?)\" *, *(result *\( *\) *?) *\) *$/done($1,"")/se; |
|
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
271 |
s/^bind_thm *\( *\"(.*?)\" *, *(.*?result *\( *\).*?) *\) *$/done($1,"[?? $2 ??] ")/se; |
11131 | 272 |
s/^bind_thm *\( *\"(.*?)\" *, *(.*?) *\) *$/"lemmas $1 = ".subst_RS_standard($2)/se; |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
273 |
s/^by(\s*\(?\s*)(.*?)\s*(\)?)\s*$/process_tac($1,$2).$3/se; |
11263
e502756bcb11
added parentheses for 'b y' syntax, added primitive smp_tac support
oheimb
parents:
11198
diff
changeset
|
274 |
s/^b\s+y(\s*)(.*?)(\s*)$/process_tac($1,"(".$2.")").$3/se; |
11013 | 275 |
s/^(apply +)\( *([\w\'\.]+)\s*\)\s*$/$1$2/; |
13076
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
276 |
# remove outermost parentheses if around atoms |
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
277 |
s/^(apply +)\(\((.*?)\)([+*]?)\)\s*$/$1($2)$3/; |
70704dd48bd5
bugfix concerning claset(), added limited support for ALLGOALS + fast_tac etc.
oheimb
parents:
11329
diff
changeset
|
278 |
# remove outermost parentheses if around parentheses |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
279 |
s/^Addsimps\s*\[?\s*([\w\'\. ,]*)\s*\]?/decl($1,"simp")/seg; |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
280 |
s/^Delsimps\s*\[?\s*([\w\'\. ,]*)\s*\]?/decl($1,"simp del")/seg; |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
281 |
s/^Addsplits\s*\[?\s*([\w\'\. ,]*)\s*\]?/decl($1,"split")/seg; |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
282 |
s/^Delsplits\s*\[?\s*([\w\'\. ,]*)\s*\]?/decl($1,"split del")/seg; |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
283 |
s/^AddIs\s*\[?\s*([\w\'\. ,]*)\s*\]?/decl($1,"intro")/seg; |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
284 |
s/^AddSIs\s*\[?\s*([\w\'\. ,]*)\s*\]?/decl($1,"intro!")/seg; |
11114 | 285 |
s/^AddXIs\s*\[?\s*([\w\'\. ,]*)\s*\]?/decl($1,"intro?")/seg; |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
286 |
s/^AddEs\s*\[?\s*([\w\'\. ,]*)\s*\]?/decl($1,"elim")/seg; |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
287 |
s/^AddSEs\s*\[?\s*([\w\'\. ,]*)\s*\]?/decl($1,"elim!")/seg; |
11114 | 288 |
s/^AddXEs\s*\[?\s*([\w\'\. ,]*)\s*\]?/decl($1,"elim?")/seg; |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
289 |
s/^AddDs\s*\[?\s*([\w\'\. ,]*)\s*\]?/decl($1,"dest")/seg; |
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
290 |
s/^AddSDs\s*\[?\s*([\w\'\. ,]*)\s*\]?/decl($1,"dest!")/seg; |
11114 | 291 |
s/^AddXDs\s*\[?\s*([\w\'\. ,]*)\s*\]?/decl($1,"dest?")/seg; |
11286 | 292 |
s/^AddIffs\s*\[?\s*([\w\'\. ,]*)\s*\]?/decl($1,"iff")/seg; |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
293 |
print "$_$tail"; |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
294 |
if(eof()) { last; } # prevents reading finally from stdin (thru <>)! |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
295 |
} |
11081
ce9a6746cd1e
solved non-initialization problems; improvements using prefer
oheimb
parents:
11068
diff
changeset
|
296 |
backpatch_lemmanames; |
10939
fe14e54594a3
convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff
changeset
|
297 |
select(STDOUT); |