#!/usr/bin/env bash
#
# Author: Makarius
#
# DESCRIPTION: Standard statistics.
THIS="$(cd "$(dirname "$0")"; pwd)"
PLATFORMS="at-poly at-poly-test afp at64-poly mac-poly-M2 mac-poly-M4 mac-poly64-M2 mac-poly64-M4 mac-poly-M8 mac-poly-M8-skip_proofs mac-poly64-M8"
ISABELLE_SESSIONS="
HOL
HOL-Algebra
HOL-Auth
HOL-Bali
HOL-Cardinals
HOL-Codegenerator_Test
HOL-Datatype_Examples
HOL-Decision_Procs
HOL-Eisbach
HOL-Hahn_Banach
HOL-Hoare
HOL-Hoare_Parallel
HOL-IMP
HOL-IMPP
HOL-IOA
HOL-Imperative_HOL
HOL-Import
HOL-Induct
HOL-Isar_Examples
HOL-Lattice
HOL-Library
HOL-Matrix_LP
HOL-Metis_Examples
HOL-MicroJava
HOL-Mirabelle
HOL-Mirabelle-ex
HOL-Multivariate_Analysis
HOL-Multivariate_Analysis-ex
HOL-Mutabelle
HOL-NSA
HOL-NSA-Examples
HOL-NanoJava
HOL-Nitpick_Examples
HOL-Nominal
HOL-Nominal-Examples
HOL-Number_Theory
HOL-Old_Number_Theory
HOL-Predicate_Compile_Examples
HOL-Probability
HOL-Prolog
HOL-Proofs
HOL-Proofs-Extraction
HOL-Proofs-Lambda
HOL-Proofs-ex
HOL-Quickcheck_Benchmark
HOL-Quickcheck_Examples
HOL-Quotient_Examples
HOL-Record_Benchmark
HOL-SET_Protocol
HOL-SPARK
HOL-SPARK-Examples
HOL-SPARK-Manual
HOL-Statespace
HOL-TLA
HOL-TLA-Buffer
HOL-TLA-Inc
HOL-TLA-Memory
HOL-TPTP
HOL-UNITY
HOL-Unix
HOL-Word
HOL-Word-Examples
HOL-Word-SMT_Examples
HOL-ZF
HOL-ex
HOLCF
HOLCF-FOCUS
HOLCF-IMP
HOLCF-Library
HOLCF-Tutorial
HOLCF-ex
IOA
IOA-ABP
IOA-NTP
IOA-Storage
IOA-ex
Pure
Spec_Check
ZF
ZF-AC
ZF-Coind
ZF-Constructible
ZF-IMP
ZF-Induct
ZF-Resid
ZF-UNITY
ZF-ex
"
AFP_SESSIONS="
AODV
AVL-Trees
AWN
Abortable_Linearizable_Modules
Abstract-Hoare-Logics
Abstract-Rewriting
Abstract_Completeness
Affine_Arithmetic
Akra_Bazzi
Amortized_Complexity
ArrowImpossibilityGS
AutoFocus-Stream
Automatic_Refinement
BDD
BinarySearchTree
Binomial-Heaps
Binomial-Queues
Bondy
Boolean_Expression_Checkers
Bounded_Deducibility_Security
BytecodeLogicJmlTypes
CAVA_Automata
CAVA_Base
CAVA_LTL_Modelchecker
CAVA_buildchain1
CAVA_buildchain3
CCS
CISC-Kernel
Call_Arity
Case_Labeling
Category
Category2
Cauchy
Cayley_Hamilton
Certification_Monads
Circus
ClockSynchInst
CofGroups
Coinductive
Coinductive_Languages
Collections
Collections_Examples
Compiling-Exceptions-Correctly
Completeness
ComponentDependencies
ConcurrentGC
ConcurrentIMP
Consensus_Refined
Containers
Containers-Benchmarks
CoreC++
CryptoBasedCompositionalProperties
DPT-SAT-Solver
DataRefinementIBP
Datatype_Order_Generator
Decreasing-Diagrams
Decreasing-Diagrams-II
Density_Compiler
Depth-First-Search
Derangements
Deriving
Dijkstra_Shortest_Path
Discrete_Summation
DiskPaxos
Dynamic_Tables
Echelon_Form
Efficient-Mergesort
Encodability_Process_Calculi
Example-Submission
FFT
FOL-Fitting
FeatherweightJava
Featherweight_OCL
Fermat3_4
FileRefinement
FinFun
Finger-Trees
Finite_Automata_HF
Flyspeck-Tame
FocusStreamsCaseStudies
Formula_Derivatives
Formula_Derivatives-Examples
Free-Boolean-Algebra
Free-Groups
FunWithFunctions
FunWithTilings
Functional-Automata
GPU_Kernel_PL
Gabow_SCC
Gauss-Jordan-Elim-Fun
Gauss_Jordan
GenClock
General-Triangle
Girth_Chromatic
GoedelGod
GraphMarkingIBP
Graph_Theory
Group-Ring-Module
HOLCF-HOL-Library
HOLCF-Nominal2
HRB-Slicing
Heard_Of
HereditarilyFinite
Hermite
HotelKeyCards
Huffman
HyperCTL
IEEE_Floating_Point
Imperative_Insertion_Sort
Impossible_Geometry
Incompleteness
Inductive_Confidentiality
InformationFlowSlicing
InformationFlowSlicing_Inter
InformationFlowSlicing_Intra
Integration
JNF-AFP-Lib
JNF-HOL-Lib
Jinja
JinjaThreads
JiveDataStoreModel
Jordan_Hoelder
Jordan_Normal_Form
KAT_and_DRA
KBPs
Kleene_Algebra
Koenigsberg_Friendship
Koenigsberg_Friendship_Base
LTL_to_GBA
Lam-ml-Normalization
Landau_Symbols
LatticeProperties
Launchbury
Lazy-Lists-II
Lehmer
Lifting_Definition_Option
LightweightJava
LinearQuantifierElim
List-Index
List-Infinite
List_Interleaving
Locally-Nameless-Sigma
Lower_Semicontinuous
MSO_Examples
MSO_Regex_Equivalence
Markov_Models
Marriage
Matrix
Max-Card-Matching
MiniML
MonoBoolTranAlgebra
MuchAdoAboutTwo
Multirelations
Myhill-Nerode
Nat-Interval-Logic
Native_Word
Network_Security_Policy_Verification
Nominal2
Noninterference_CSP
Noninterference_Generic_Unwinding
Noninterference_Inductive_Unwinding
Noninterference_Ipurge_Unwinding
NormByEval
Old_Datatype_Show
Open_Induction
Ordinal
Ordinals_and_Cardinals
Ordinary_Differential_Equations
PCF
POPLmark-deBruijn
Partial_Function_MR
Perfect-Number-Thm
Pi_Calculus
Polynomials
Pop_Refinement
Possibilistic_Noninterference
Pratt_Certificate
Presburger-Automata
Priority_Queue_Braun
Probabilistic_Noninterference
Probabilistic_System_Zoo
Probabilistic_System_Zoo-BNFs
Probabilistic_System_Zoo-Non_BNFs
Program-Conflict-Analysis
Promela
PseudoHoops
Psi_Calculi
QR_Decomposition
RIPEMD-160-SPARK
RSAPSS
Ramsey-Infinite
Random_Graph_Subgraph_Threshold
Rank_Nullity_Theorem
Real_Impl
Recursion-Theory-I
Refine_Monadic
RefinementReactive
Regex_Equivalence
Regex_Equivalence_Examples
Regular-Sets
Regular_Algebras
Relation_Algebra
Rep_Fin_Groups
Residuated_Lattices
Ribbon_Proofs
Robbins-Conjecture
Roy_Floyd_Warshall
SATSolverVerification
SIFPL
SIFUM_Type_Systems
Secondary_Sylow
Selection_Heap_Sort
SenSocialChoice
Separation_Algebra
Separation_Logic_Imperative_HOL
SequentInvertibility
Shivers-CFA
ShortestPath
Show
Simpl
Skew_Heap
Slicing
Sort_Encodings
Special_Function_Bounds
Splay_Tree
Sqrt_Babylonian
Statecharts
Stream-Fusion
Stream_Fusion_Code
Strong_Security
Sturm_Sequences
Sturm_Tarski
Stuttering_Equivalence
SumSquares
TLA
Tail_Recursive_Functions
Tarskis_Geometry
Topology
Transitive-Closure
Transitive-Closure-II
Tree-Automata
Trie
Tycon
UPF
UpDown_Scheme
Valuation
VectorSpace
Verified-Prover
Vickrey_Clarke_Groves
VolpanoSmith
WHATandWHERE_Security
Well_Quasi_Orders
WorkerWrapper
XML
pGCL
"
for PLATFORM in $PLATFORMS
do
if [ "$PLATFORM" = afp ]; then
SESSIONS="$AFP_SESSIONS"
else
SESSIONS="$ISABELLE_SESSIONS"
fi
"$THIS/isatest-statistics" "stats/$PLATFORM" "$PLATFORM" ${1:-100} $SESSIONS
cat > "stats/$PLATFORM.html" <<EOF
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head><title>Development Snapshot -- Performance Statistics</title></head>
<body>
<h1>$PLATFORM</h1>
EOF
for SESSION in $SESSIONS
do
echo "<br><img src="$PLATFORM/$SESSION.png"><br>" >> "stats/$PLATFORM.html"
done
echo "</body>" >> "stats/$PLATFORM.html"
echo "</html>" >> "stats/$PLATFORM.html"
done