src/HOL/Mirabelle/lib/Tools/mirabelle
author boehmes
Tue, 08 Dec 2009 23:05:23 +0100
changeset 34035 08d34921b7dd
parent 33248 95478a5b4c05
child 40976 8df0a190df1e
permissions -rwxr-xr-x
also consider the fully-typed version of metis for Mirabelle measurements
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
     1
#!/usr/bin/env bash
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
     2
#
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
     3
# Author: Sascha Boehme
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
     4
#
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
     5
# DESCRIPTION: testing tool for automated proof tools
32381
11542bebe4d4 made Mirabelle a component
boehmes
parents:
diff changeset
     6
11542bebe4d4 made Mirabelle a component
boehmes
parents:
diff changeset
     7
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
     8
PRG="$(basename "$0")"
32381
11542bebe4d4 made Mirabelle a component
boehmes
parents:
diff changeset
     9
32397
1899b8c47961 more quoting for shell variables, canonical isabelle process
boehmes
parents: 32385
diff changeset
    10
function print_action_names() {
32385
594890623c46 split actions from Mirabelle core (Mirabelle may thus be applied to basic theories in HOL)
boehmes
parents: 32383
diff changeset
    11
  TOOLS="$MIRABELLE_HOME/Tools/mirabelle_*.ML"
32397
1899b8c47961 more quoting for shell variables, canonical isabelle process
boehmes
parents: 32385
diff changeset
    12
  for NAME in $TOOLS
1899b8c47961 more quoting for shell variables, canonical isabelle process
boehmes
parents: 32385
diff changeset
    13
  do
1899b8c47961 more quoting for shell variables, canonical isabelle process
boehmes
parents: 32385
diff changeset
    14
    echo $NAME | sed 's/.*mirabelle_\(.*\)\.ML/    \1/'
1899b8c47961 more quoting for shell variables, canonical isabelle process
boehmes
parents: 32385
diff changeset
    15
  done
32385
594890623c46 split actions from Mirabelle core (Mirabelle may thus be applied to basic theories in HOL)
boehmes
parents: 32383
diff changeset
    16
}
594890623c46 split actions from Mirabelle core (Mirabelle may thus be applied to basic theories in HOL)
boehmes
parents: 32383
diff changeset
    17
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    18
function usage() {
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    19
  out="$MIRABELLE_OUTPUT_PATH"
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    20
  timeout="$MIRABELLE_TIMEOUT"
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    21
  echo
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    22
  echo "Usage: isabelle $PRG [OPTIONS] ACTIONS FILES"
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    23
  echo
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    24
  echo "  Options are:"
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    25
  echo "    -L LOGIC     parent logic to use (default $ISABELLE_LOGIC)"
32385
594890623c46 split actions from Mirabelle core (Mirabelle may thus be applied to basic theories in HOL)
boehmes
parents: 32383
diff changeset
    26
  echo "    -T THEORY    parent theory to use (default $MIRABELLE_THEORY)"
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    27
  echo "    -O DIR       output directory for test data (default $out)"
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    28
  echo "    -t TIMEOUT   timeout for each action in seconds (default $timeout)"
32521
f20cc66b2c74 added initialization and cleanup of actions,
boehmes
parents: 32496
diff changeset
    29
  echo "    -q           be quiet (suppress output of Isabelle process)" 
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    30
  echo
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    31
  echo "  Apply the given actions (i.e., automated proof tools)"
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    32
  echo "  at all proof steps in the given theory files."
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    33
  echo
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    34
  echo "  ACTIONS is a colon-separated list of actions, where each action is"
32522
1b70db55c811 Mirabelle: command-line action options may either be key=value or just key
boehmes
parents: 32521
diff changeset
    35
  echo "  either NAME or NAME[OPTION,...,OPTION]. Available actions are:"
32397
1899b8c47961 more quoting for shell variables, canonical isabelle process
boehmes
parents: 32385
diff changeset
    36
  print_action_names
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    37
  echo
33248
95478a5b4c05 included description for sledgehammer options in Mirabelle script
boehmes
parents: 32522
diff changeset
    38
  echo "  Available OPTIONs for the ACTION sledgehammer:"
95478a5b4c05 included description for sledgehammer options in Mirabelle script
boehmes
parents: 32522
diff changeset
    39
  echo "    * prover=NAME: name of the external prover to call"
95478a5b4c05 included description for sledgehammer options in Mirabelle script
boehmes
parents: 32522
diff changeset
    40
  echo "    * prover_timeout=TIME: timeout for invoked ATP (seconds of process time)"
95478a5b4c05 included description for sledgehammer options in Mirabelle script
boehmes
parents: 32522
diff changeset
    41
  echo "    * prover_hard_timeout=TIME: timeout for invoked ATP (seconds of elapsed"
95478a5b4c05 included description for sledgehammer options in Mirabelle script
boehmes
parents: 32522
diff changeset
    42
  echo "      time)"
95478a5b4c05 included description for sledgehammer options in Mirabelle script
boehmes
parents: 32522
diff changeset
    43
  echo "    * keep=PATH: path where to keep temporary files created by sledgehammer"
95478a5b4c05 included description for sledgehammer options in Mirabelle script
boehmes
parents: 32522
diff changeset
    44
  echo "    * full_types: enable fully-typed encoding"
95478a5b4c05 included description for sledgehammer options in Mirabelle script
boehmes
parents: 32522
diff changeset
    45
  echo "    * minimize: enable minimization of theorem set found by sledgehammer"
95478a5b4c05 included description for sledgehammer options in Mirabelle script
boehmes
parents: 32522
diff changeset
    46
  echo "    * minimize_timeout=TIME: timeout for each minimization step (seconds of"
95478a5b4c05 included description for sledgehammer options in Mirabelle script
boehmes
parents: 32522
diff changeset
    47
  echo "      process time)"
95478a5b4c05 included description for sledgehammer options in Mirabelle script
boehmes
parents: 32522
diff changeset
    48
  echo "    * metis: apply metis to the theorems found by sledgehammer"
34035
08d34921b7dd also consider the fully-typed version of metis for Mirabelle measurements
boehmes
parents: 33248
diff changeset
    49
  echo "    * metis_ft: apply metis with fully-typed encoding to the theorems found"
08d34921b7dd also consider the fully-typed version of metis for Mirabelle measurements
boehmes
parents: 33248
diff changeset
    50
  echo "      by sledgehammer"
32522
1b70db55c811 Mirabelle: command-line action options may either be key=value or just key
boehmes
parents: 32521
diff changeset
    51
  echo
32397
1899b8c47961 more quoting for shell variables, canonical isabelle process
boehmes
parents: 32385
diff changeset
    52
  echo "  FILES is a list of theory files, where each file is either NAME.thy"
1899b8c47961 more quoting for shell variables, canonical isabelle process
boehmes
parents: 32385
diff changeset
    53
  echo "  or NAME.thy[START:END] and START and END are numbers indicating the"
1899b8c47961 more quoting for shell variables, canonical isabelle process
boehmes
parents: 32385
diff changeset
    54
  echo "  range the given actions are to be applied."
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    55
  echo
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    56
  exit 1
32381
11542bebe4d4 made Mirabelle a component
boehmes
parents:
diff changeset
    57
}
11542bebe4d4 made Mirabelle a component
boehmes
parents:
diff changeset
    58
11542bebe4d4 made Mirabelle a component
boehmes
parents:
diff changeset
    59
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    60
## process command line
32381
11542bebe4d4 made Mirabelle a component
boehmes
parents:
diff changeset
    61
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    62
# options
32381
11542bebe4d4 made Mirabelle a component
boehmes
parents:
diff changeset
    63
32521
f20cc66b2c74 added initialization and cleanup of actions,
boehmes
parents: 32496
diff changeset
    64
while getopts "L:T:O:t:q?" OPT
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    65
do
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    66
  case "$OPT" in
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    67
    L)
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    68
      MIRABELLE_LOGIC="$OPTARG"
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    69
      ;;
32385
594890623c46 split actions from Mirabelle core (Mirabelle may thus be applied to basic theories in HOL)
boehmes
parents: 32383
diff changeset
    70
    T)
594890623c46 split actions from Mirabelle core (Mirabelle may thus be applied to basic theories in HOL)
boehmes
parents: 32383
diff changeset
    71
      MIRABELLE_THEORY="$OPTARG"
594890623c46 split actions from Mirabelle core (Mirabelle may thus be applied to basic theories in HOL)
boehmes
parents: 32383
diff changeset
    72
      ;;
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    73
    O)
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    74
      MIRABELLE_OUTPUT_PATH="$OPTARG"
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    75
      ;;
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    76
    t)
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    77
      MIRABELLE_TIMEOUT="$OPTARG"
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    78
      ;;
32521
f20cc66b2c74 added initialization and cleanup of actions,
boehmes
parents: 32496
diff changeset
    79
    q)
f20cc66b2c74 added initialization and cleanup of actions,
boehmes
parents: 32496
diff changeset
    80
      MIRABELLE_QUIET="true"
f20cc66b2c74 added initialization and cleanup of actions,
boehmes
parents: 32496
diff changeset
    81
      ;;
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    82
    \?)
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    83
      usage
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    84
      ;;
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    85
  esac
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    86
done
32381
11542bebe4d4 made Mirabelle a component
boehmes
parents:
diff changeset
    87
32521
f20cc66b2c74 added initialization and cleanup of actions,
boehmes
parents: 32496
diff changeset
    88
export MIRABELLE_QUIET
f20cc66b2c74 added initialization and cleanup of actions,
boehmes
parents: 32496
diff changeset
    89
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    90
shift $(($OPTIND - 1))
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    91
32521
f20cc66b2c74 added initialization and cleanup of actions,
boehmes
parents: 32496
diff changeset
    92
export MIRABELLE_ACTIONS="$1"
32381
11542bebe4d4 made Mirabelle a component
boehmes
parents:
diff changeset
    93
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    94
shift
32381
11542bebe4d4 made Mirabelle a component
boehmes
parents:
diff changeset
    95
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    96
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
    97
# setup
32381
11542bebe4d4 made Mirabelle a component
boehmes
parents:
diff changeset
    98
32397
1899b8c47961 more quoting for shell variables, canonical isabelle process
boehmes
parents: 32385
diff changeset
    99
mkdir -p "$MIRABELLE_OUTPUT_PATH"
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
   100
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
   101
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
   102
## main
32381
11542bebe4d4 made Mirabelle a component
boehmes
parents:
diff changeset
   103
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
   104
for FILE in "$@"
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
   105
do
32521
f20cc66b2c74 added initialization and cleanup of actions,
boehmes
parents: 32496
diff changeset
   106
  perl -w "$MIRABELLE_HOME/lib/scripts/mirabelle.pl" "$FILE"
32382
98674ac811c4 Mirabelle tool script conforming to standard Isabelle tool interface,
boehmes
parents: 32381
diff changeset
   107
done
32381
11542bebe4d4 made Mirabelle a component
boehmes
parents:
diff changeset
   108