#!/usr/bin/env bash # # DESCRIPTION: process files generated by Why3 ## diagnostics PRG="$(basename "$0")" function usage() { echo echo "Usage: isabelle $PRG [OPTIONS] WHY3_FILE" echo echo " Options are:" echo " -b batch mode" echo " -i NAME interactive mode using interface NAME" echo echo " Process files generated by Why3" exit 1 } ## utilities function make_theory() { BNAME=`basename "$1"` if [ ! -e "$1.thy" ]; then echo -e "theory $BNAME\nimports Why3\nbegin\n\nwhy3_open \"$BNAME.xml\"\n" > "$1.thy" sed \ -e 's/]*>/why3_vc \1\n\n/g' \ -e 's/<[^l][^>]*>//g' \ "$1.xml" >> "$1.thy" echo -e "why3_end\n\nend" >> "$1.thy" fi } ## process command line while getopts "bi:" OPT do case "$OPT" in b) BATCH=true ;; i) INTERACTIVE=true INTERFACE="$OPTARG" ;; \?) usage ;; esac done ## main shift $(($OPTIND - 1)) if [ "$1" = "" ]; then usage else NAME=`dirname "$1"`/`basename "$1" .xml` fi if [ "$BATCH" = true ]; then $ISABELLE_PROCESS -e "use_thy \"$NAME\";" -rq Why3 elif [ "$INTERACTIVE" = true ]; then if [ "$INTERFACE" = emacs ]; then LOGIC="-L" else LOGIC="-l" fi make_theory "$NAME" $ISABELLE_TOOL $INTERFACE $LOGIC Why3 "$NAME.thy" else usage fi