Package main

Class Main


  • public class Main
    extends Object
    Command-line entry point of AuRUS.

    Orchestrates a complete repair run: parses the command-line flags, transfers them into Settings, loads the input specification (TLSF, or Spectra with -use-spectra), launches the genetic search (SpecificationGeneticAlgorithm.run(Tlsf, double, double, double), or the random baseline with -random), and finally writes the results:

    • one specN.tlsf file per realisable repair found, annotated with its fitness and its syntactic/semantic similarity to the original specification;
    • an out.txt summary with solution counts, fitness statistics, timing and the full configuration — the file consumed by read-results.sh (its line format is load-bearing for the experiment scripts and must not be changed);
    • optionally, when genuine reference repairs are supplied with -ref=..., a comparison of the found solutions against them (equivalent / weaker / stronger, via GenuineSolutionsAnalysis).

    Run ./unreal-repair.sh -help for the full flag reference; the same information, with defaults, is documented in the project README.

    Reference implementation of: Brizzio, Cordy, Papadakis, Sánchez, Aguirre, Degiovanni. "Automated Repair of Unrealisable LTL Specifications Guided by Model Counting", GECCO 2023 (doi:10.1145/3583131.3590454).

    Author:
    Matías Brizzio
    See Also:
    Settings, SpecificationGeneticAlgorithm
    • Constructor Detail

      • Main

        public Main()
    • Method Detail

      • main

        public static void main​(String[] args)
                         throws IOException,
                                InterruptedException
        Parses the arguments, configures Settings, runs the search and writes the repairs and the summary report.

        Exits with status 0 on success (including -help), and with status 1 on malformed arguments or unreadable input files, after printing a targeted error message.

        Parameters:
        args - the command-line arguments (see printUsage())
        Throws:
        IOException - if writing the output files fails
        InterruptedException - if an external solver call is interrupted