The pipeline of OmegaHyper runs through four folders of src/, one per phase; each box of the diagram is a folder and each box inside it a step of the pileline and a file of that folder.
The architecture of the tool follows closely the architecture and presentation of the paper, that we recommend to consult for more details.
flowchart TB
model[/NuSMV models/] --> systr
phi[/HyperLTL formula/] --> api
subgraph insys ["Input/Systems/"]
systr[Translation.fs] --> sysq[Quotient.fs]
end
subgraph infor ["Input/Formula/"]
api[ApInference.fs] --> dec[Decomposition.fs] --> ltl["Translation.fs"]
end
subgraph elim ["Elimination/"]
prod[Product.fs] --> pq[ProductQuotient.fs] --> apc[APCompaction.fs] --> red["Reduction.fs"]
red -- "quantifier alternation" --> comp["Complement.fs"]
comp --> prod
end
sysq --> prod
ltl --> apc
subgraph fin ["FinalCheck/"]
pre[Premises.fs] --> sym[Symmetry.fs] --> lo[SystemsTranslation.fs] --> chk["InclusionCheck.fs"] --> wit[Witness.fs]
end
red -- "last block" --> pre
wit --> out[/verdict + witness/]
Instance.fs reads the models and the formula, and interleaves the steps of the two phases below.
Translation.fstranslates each input system once into anOmegaSystem: explicit states for the dynamic variables, and symbolic edges for the frozen and free variables.Quotient.fsreplaces each trace's system by its bisimulation quotient under what the formula reads from it.
ApInference.fsinfers the atoms on the systems' domains.Decomposition.fssplits the formula's body into parts in normal form, following the innermost block. Before, it also exchanges the models' specifications and the formula's invariants.Translation.fstranslates a formula part into anNBA, when the elimination loop or the final check first needs its automaton.
Loop.fs runs the steps below once per innermost block.
APCompaction.fscompacts both APs syntactically and, before a complement, the alphabet semantically.Reduction.fsreduces the size of theNBAparts.Complement.fs, at a quantifier alternation, complements allNBAparts.Product.fsbuilds the product of theNBAparts with the innermost block.ProductQuotient.fsreplaces each product by its bisimulation quotient.
Premises.fsmoves parts of the right (the automaton) to the left (the outermost block'sOmegaSystems), as premises on the systems.Symmetry.fsprunes the left parts under identified symmetries.SystemsTranslation.fsconverts the left parts into severalNBAs.InclusionCheck.fsdecides inclusion of the left parts in the right parts.Witness.fsturns an inclusion counterexample into a witness over the input models.
App/: the command line, the configuration, the log and the entry point.Automata/: Büchi automata, their HOA format, runs and lassos.Backends/: one binding per external tool, behind the complementation and inclusion interfaces.Common/: general utilities.Logic/: formula utilities (atomic propositions and HyperLTL formulas).Systems/: system utilities (input formats, translations and common representatio).