def action_names(): List[String] = { val Pattern = """Mirabelle action: "(\w+)".*""".r
(for {
file <-
File.find_files(Path.explode("~~/src/HOL/Tools/Mirabelle").file,
pred = file => File.is_ML(file.getName))
line <- split_lines(File.read(file))
name <- line match { case Pattern(a) => Some(a) case _ => None }
} yield name).sorted
}
def sledgehammer_options(): List[String] = { val Pattern = """val .*K *= *"(.*)" *\(\*(.*)\*\)""".r
split_lines(File.read(Path.explode("~~/src/HOL/Tools/Mirabelle/mirabelle_sledgehammer.ML"))).
flatMap(line => line match { case Pattern(a, b) => Some (a + b) case _ => None })
}
val isabelle_tool = Isabelle_Tool("mirabelle", "testing tool for automated proof tools",
Scala_Project.here,
{ args => var options = Options.init(specs = Options.Spec.ISABELLE_BUILD_OPTIONS) val mirabelle_dry_run = options.check_name("mirabelle_dry_run") val mirabelle_max_calls = options.check_name("mirabelle_max_calls") val mirabelle_randomize = options.check_name("mirabelle_randomize") val mirabelle_stride = options.check_name("mirabelle_stride") val mirabelle_timeout = options.check_name("mirabelle_timeout") val mirabelle_output_dir = options.check_name("mirabelle_output_dir") val mirabelle_parallel_group_size = options.check_name("mirabelle_parallel_group_size") val mirabelle_subgoals = options.check_name("mirabelle_subgoals")
var actions: List[String] = Nil var base_sessions: List[String] = Nil var select_dirs: List[Path] = Nil var numa_shuffling = false var output_dir = Path.explode(mirabelle_output_dir.default_value) var theories: List[String] = Nil var exclude_session_groups: List[String] = Nil var all_sessions = false var dirs: List[Path] = Nil var session_groups: List[String] = Nil var max_jobs: Option[Int] = None var verbose = false var exclude_sessions: List[String] = Nil
val getopts = Getopts("""
Usage: isabelle mirabelle [OPTIONS] [SESSIONS ...]
Options are:
-A ACTION add to list of actions
-B NAME include session NAME and all descendants
-D DIR include session directory and select its sessions
-N cyclic shuffling of NUMA CPU nodes (performance tuning)
-O DIR """ + mirabelle_output_dir.description + " (default: " + mirabelle_output_dir.default_value + """)
-S SUBGOAL """ + mirabelle_subgoals.description + " (default: " + mirabelle_subgoals.default_value + """)
-T THEORY theory restriction: NAME or NAME[FIRST_LINE:LAST_LINE]
-X NAME exclude sessions from group NAME and all descendants
-a select all sessions
-d DIR include session directory
-g NAME select session group NAME
-j INT maximum number of parallel jobs (default 1)
-m INT """ + mirabelle_max_calls.description + " (default " + mirabelle_max_calls.default_value + """)
-o OPTION override Isabelle system OPTION (via NAME=VAL or NAME)
-p INT """ + mirabelle_parallel_group_size.description + " (default " + mirabelle_parallel_group_size.default_value + """)
-r INT """ + mirabelle_randomize.description + " (default " + mirabelle_randomize.default_value + """)
-s INT """ + mirabelle_stride.description + " (default " + mirabelle_stride.default_value + """)
-t SECONDS """ + mirabelle_timeout.description + " (default " + mirabelle_timeout.default_value + """)
-v verbose
-x NAME exclude session NAME and all descendants
-y """ + mirabelle_dry_run.description + " (default " + mirabelle_dry_run.default_value + """)
Apply the given ACTIONs at all theories and proof steps of the
specified sessions.
The absence of theory restrictions (option -T) means to check all
theories fully. Otherwise only the named theories are checked.
Each ACTION is either of the form NAME or NAME [OPTION, ...]
following Isabelle/Isar outer syntax.
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.