lib/scripts/convert.pl
author oheimb
Wed, 24 Jan 2001 17:53:01 +0100
changeset 10972 af160f8d3bd7
parent 10939 fe14e54594a3
child 11000 498d0db8cd8a
permissions -rw-r--r--
debugging and extensions
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
     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
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    20
sub mult_assumption {
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    21
  my $n = shift;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    22
  my $r = "";
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    23
  for($i=0; $i<$n; $i++) { $r = $r.", assumption"; }
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    24
  $r;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    25
}
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    26
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
    27
sub process_tac {
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    28
  my $lead = shift;
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
    29
  my $t = shift;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
    30
  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
    31
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
    32
  $_ = $t;
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    33
  s/\s+/ /sg;             # remove multiple whitespace
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    34
  s/\s/ /sg;              # substitute all remaining tabs and newlines by space
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    35
  s/\( /\(/g; s/ \)/\)/g; # remove leading and trailing space inside parentheses
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    36
  s/\[ /\[/g; s/ \]/\]/g; # remove leading and trailing space inside sq brackets
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    37
  s/ ?\( ?\)/\(\)/g;      # remove space before and inside empty tuples
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    38
  s/\(\)([^ ])/\(\) $1/g; # possibly add space after empty tuples
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
    39
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    40
  s/Blast_tac 1/blast/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    41
  s/Fast_tac 1/fast/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    42
  s/Slow_tac 1/slow/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    43
  s/Best_tac 1/best/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    44
  s/Safe_tac/safe/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    45
  s/Clarify_tac 1/clarify/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    46
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    47
  s/blast_tac \(claset\(\) (.*?)\) 1/blast $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    48
  s/fast_tac \(claset\(\) (.*?)\) 1/fast $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    49
  s/slow_tac \(claset\(\) (.*?)\) 1/slow $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    50
  s/best_tac \(claset\(\) (.*?)\) 1/best $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    51
  s/safe_tac \(claset\(\) (.*?)\)/safe $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    52
  s/clarify_tac \(claset\(\) (.*?)\) 1/clarify $1/g;
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
    53
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
    54
  s/Auto_tac/auto/g;
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    55
  s/Force_tac 1/force/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    56
  s/Clarsimp_tac 1/clarsimp/g;
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
    57
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    58
  s/auto_tac \(claset\(\) (.*?), *simpset\(\) (.*?)\)/auto $1 $2/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    59
  s/force_tac \(claset\(\) (.*?), *simpset\(\) (.*?)\) 1/force $1 $2/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    60
  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
    61
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    62
  s/Asm_full_simp_tac 1/simp/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    63
  s/Full_simp_tac 1/simp (no_asm_use)/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    64
  s/Asm_simp_tac 1/simp (no_asm_simp)/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    65
  s/Simp_tac 1/simp (no_asm)/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    66
  s/ALLGOALS Asm_full_simp_tac/simp_all/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    67
  s/ALLGOALS Full_simp_tac 1/simp_all (no_asm_use)/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    68
  s/ALLGOALS Asm_simp_tac 1/simp_all (no_asm_simp)/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    69
  s/ALLGOALS Simp_tac/simp_all (no_asm)/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    70
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    71
  s/asm_full_simp_tac \(simpset\(\) (.*?)\) 1/simp $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    72
  s/full_simp_tac \(simpset\(\) (.*?)\) 1/simp (no_asm_use) $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    73
  s/asm_simp_tac \(simpset\(\) (.*?)\) 1/simp (no_asm_simp) $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    74
  s/simp_tac \(simpset\(\) (.*?)\) 1/simp (no_asm) $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    75
  s/ALLGOALS \(asm_full_simp_tac \(simpset\(\) (.*?)\)\)/simp_all $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    76
  s/ALLGOALS \(full_simp_tac \(simpset\(\) (.*?)\)\)/simp_all (no_asm_use) $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    77
  s/ALLGOALS \(asm_simp_tac \(simpset\(\) (.*?)\)\)/simp_all (no_asm_simp) $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    78
  s/ALLGOALS \(simp_tac \(simpset\(\) (.*?)\)\)/simp_all (no_asm) $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    79
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    80
  s/atac 1/assumption/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    81
  s/hypsubst_tac 1/hypsubst/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    82
  s/arith_tac 1/arith/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    83
  s/strip_tac 1/intro strip/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    84
  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
    85
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    86
  s/rotate_tac ([~\d]+) 1/rotate_tac $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    87
  s/rotate_tac ([~\d]+) (\d+)/rotate_tac [$2] $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    88
  s/rename_tac *(\".*?\") *1/rename_tac $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    89
  s/rename_tac *(\".*?\") *(\d+)/rename_tac [$2] $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    90
  s/case_tac *(\".*?\") *1/case_tac $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    91
  s/case_tac *(\".*?\") *(\d+)/case_tac [$2] $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    92
  s/induct_tac *(\".*?\") *1/induct_tac $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    93
  s/induct_tac *(\".*?\") *(\d+)/induct_tac [$2] $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    94
  s/subgoal_tac *(\".*?\") *1/subgoal_tac $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    95
  s/subgoal_tac *(\".*?\") *(\d+)/subgoal_tac [$2] $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    96
  s/thin_tac *(\".*?\") *1/erule_tac P = $1 thin_rl/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    97
  s/thin_tac *(\".*?\") *(\d+)/erule_tac [$2] P = $1/g;
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
    98
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
    99
  s/stac ([\w\.]+) 1/subst $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   100
  s/rtac ([\w\.]+) 1/rule $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   101
  s/rtac ([\w\.]+) (\d+)/rule_tac [$2] $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   102
  s/res_inst_tac \[\((\".*?\"),(\".*?\")\)\] ([\w\.]+) 1/rule_tac $1 = $2 $3/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   103
  s/ratac ([\w\.]+) (\d+) 1/"rule $1".mult_assumption($2)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   104
  s/dtac ([\w\.]+) 1/drule $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   105
  s/dtac ([\w\.]+) (\d+)/drule_tac [$2] $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   106
  s/dres_inst_tac \[\((\".*?\"),(\".*?\")\)\] ([\w\.]+) 1/drule_tac $1 = $2 $3/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   107
  s/datac ([\w\.]+) (\d+) 1/"drule $1".mult_assumption($2)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   108
  s/etac ([\w\.]+) 1/erule $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   109
  s/etac ([\w\.]+) (\d+)/erule_tac [$2] $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   110
  s/eres_inst_tac \[\((\".*?\"),(\".*?\")\)\] ([\w\.]+) 1/erule_tac $1 = $2 $3/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   111
  s/eatac ([\w\.]+) (\d+) 1/"erule $1".mult_assumption($2)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   112
  s/forward_tac \[([\w\.]+)\] 1/frule $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   113
  s/ftac ([\w\.]+) 1/frule $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   114
  s/ftac ([\w\.]+) (\d+)/frule_tac [$2] $1/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   115
  s/forw_inst_tac \[\((\".*?\"),(\".*?\")\)\] ([\w\.]+) 1/frule_tac $1 = $2 $3/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   116
  s/fatac ([\w\.]+) (\d+) 1/"frule $1".mult_assumption($2)/eg;
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   117
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   118
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   119
  s/THEN /, /g;
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   120
  s/ORELSE/|/g;
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   121
  s/fold_goals_tac *(\[[\w\. ,]*\]|[\w\.]+)/"fold ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   122
  s/rewrite_goals_tac *(\[[\w\. ,]*\]|[\w\.]+)/"unfold ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   123
  s/cut_facts_tac *(\[[\w\. ,]*\]|[\w\.]+) 1/"cut_tac ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   124
  s/resolve_tac *(\[[\w\. ,]*\]|[\w\.]+) 1/"rule ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   125
  s/EVERY *(\[[\w\. ,]*\]|[\w\.]+)/thmlist($1)/eg;
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   126
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   127
  s/addIs *(\[[\w\. ,]*\]|[\w\.]+)/"intro: ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   128
  s/addSIs *(\[[\w\. ,]*\]|[\w\.]+)/"intro!: ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   129
  s/addEs *(\[[\w\. ,]*\]|[\w\.]+)/"elim: ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   130
  s/addSEs *(\[[\w\. ,]*\]|[\w\.]+)/"elim!: ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   131
  s/addDs *(\[[\w\. ,]*\]|[\w\.]+)/"dest: ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   132
  s/addSDs *(\[[\w\. ,]*\]|[\w\.]+)/"dest!: ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   133
  s/delrules *(\[[\w\. ,]*\]|[\w\.]+)/"del: ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   134
  s/addsimps *(\[[\w\. ,]*\]|[\w\.]+)/"$simpmodmod"."add: ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   135
  s/delsimps *(\[[\w\. ,]*\]|[\w\.]+)/"$simpmodmod"."del: ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   136
  s/addcongs *(\[[\w\. ,]*\]|[\w\.]+)/"cong add: ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   137
  s/delcongs *(\[[\w\. ,]*\]|[\w\.]+)/"cong del: ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   138
  s/addsplits *(\[[\w\. ,]*\]|[\w\.]+)/"split add: ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   139
  s/delsplits *(\[[\w\. ,]*\]|[\w\.]+)/"split del: ".thmlist($1)/eg;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   140
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   141
  s/([\w\.]+) RS ([\w\.]+)/$1 \[THEN $2\]/g;
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   142
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   143
  s/ +/ /g;                  # remove multiple whitespace
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   144
  s/\( /\(/; s/ \)/\)/g;  # remove leading and trailing space inside parentheses
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   145
  s/^ *(.*?) *$/$1/s;        # remove enclosing whitespace
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   146
  s/^\( *([\w\.]+) *\)$/$1/; # remove outermost parentheses if around atoms
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   147
  s/^([a-zA-Z])/ $1/ if (!($lead =~ m/[\s\(]$/)); # add space if required
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   148
  $_;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   149
}
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   150
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   151
sub thmname { "@@" . ++$thmcount . "@@"; }
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   152
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   153
sub backpatch_thmnames {
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   154
  if($currfile ne "") {
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   155
    select(STDOUT);
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   156
    close(ARGVOUT);
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   157
    open(TMPW, '>'.$finalfile);
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   158
    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
   159
    while(<TMPR>) {
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   160
      s/@@(\d+)@@/$thmnames[$1]/eg;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   161
      print TMPW $_;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   162
    }
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   163
    system("mv $currfile $currfile.~0~");
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   164
    system("rm $tmpfile");
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   165
  }
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   166
}
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   167
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   168
sub done {
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   169
  my $name = shift;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   170
  my $attr = shift;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   171
  $thmnames[$thmcount] = $name.$attr;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   172
  "done";
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   173
}
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   174
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   175
$next = "nonempty";
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   176
while (<>) { # main loop
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   177
  if ($ARGV ne $currfile) {
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   178
    $x=$_; backpatch_thmnames; $_=$x;
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   179
    $currfile = $ARGV;
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   180
    $thmcount=0;
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   181
    $finalfile = "$currfile.thy";
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   182
    $tmpfile   = "$finalfile.~0~";
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   183
    open(ARGVOUT, '>'.$tmpfile);
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   184
    select(ARGVOUT);
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   185
  }
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   186
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   187
 nl:
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   188
  if(!(s/;\s*?(\n?)$/$1/s)) {# no end_of_ML_command marker
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   189
    $next = <>; $_ = $_ . $next;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   190
    if($next) { goto nl; }
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   191
  }
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   192
  s/\\(\s*\n\s*)\\/ $1 /g; # remove backslashes escaping newlines
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   193
 nlc:
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   194
  m/^(\s*)(.*?)(\s*)$/s;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   195
  $head=$1; $line=$2; $tail=$3;
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   196
  $tail =~ s/\s+\n/\n/sg;  # remove trailing whitespace at end of lines
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   197
  print $head; $_=$2.$tail;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   198
  if ($line =~ m/^\(\*/) { # start comment
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   199
    while (($i = index $_,"*)") == -1) { # no end comment
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   200
      print $_;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   201
      $_ = <>;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   202
    }
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   203
    print substr $_,0,$i+2;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   204
    $_ = substr $_,$i+2;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   205
    goto nlc;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   206
  }
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   207
  $_=$line;
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   208
  s/^Goalw *(\[[\w\.\s,]*\]|[\w\.]+) *(.+)/
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   209
    "lemma ".thmname().": $2$head"."apply (unfold ".thmlist($1).")"/se;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   210
  s/^Goal *(.+)/"lemma ".thmname().": $1"/se;
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   211
  s/ goal/"(*".thmname()."*) goal"/se; # ugly old-style goals
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   212
  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
   213
  s/^qed *\"(.*?)\"/done($1,"")/se;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   214
  s/^bind_thm *\( *\"(.*?)\" *, *(.*?result *\( *\).*?) *\) *$/done($1,"[?? $2 ??] ")/se;
10972
af160f8d3bd7 debugging and extensions
oheimb
parents: 10939
diff changeset
   215
  s/^by(\s*\(?\s*)(.*?)$/"apply$1".process_tac($1,$2)/se;
10939
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   216
  print "$_$tail";
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   217
  if(!$next) { last; } # prevents reading finally from stdin (thru <>)!
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
backpatch_thmnames;
fe14e54594a3 convert legacy tactic scripts to Isabelle/Isar tactic emulation;
wenzelm
parents:
diff changeset
   220
select(STDOUT);