LPSINVELM(1)
π lpsinvelm β check invariants & simplify summands of an LPS β¨
okay so this is the lpsinvelm page from the User Commands corner of the mCRL2 toolset manual, section 1, and bestie it's literally about proving your LPS behaves itself π
π¦ NAME
lpsinvelm β check invariants and use these to simplify or eliminate summands of an LPS. that's the whole vibe, no cap π
πΈ SYNOPSIS
lpsinvelm [OPTION]... --invfile=INVFILE [INFILE [OUTFILE]]
like, options first, then the invariant file is basically mandatory, and then INFILE and OUTFILE are optional besties π«Ά
β¨ DESCRIPTION β¨
So what it does is: it checks whether the boolean formula (an mCRL2 data expression of sort Bool) that you handed over as your invariant is actually, truly an invariant of the linear process specification (LPS) sitting in INFILE. vibe check passed or failed, we'll find out π₯
If it is an invariant, the tool eliminates all summands of the LPS whose condition violates the invariant, and writes the result to OUTFILE. slay π
- if
INFILEis presentβ¦ wait, no, careful: ifINFILEis not present,stdinis used π - if
OUTFILEis not present,stdoutis used π
Also! the tool can be used to simplify the conditions of the summands of the given LPS. so it's not just a bouncer, it's also a glow-up artist β¨
π OPTIONS π
OPTION can be any of the following, and yes we're listing every single one because we don't skip π
-y,--all-violationsβ don't terminate as soon as a single violation of the invariant is found; instead, report all violations. the completionist option, we love her π-c,--counter-exampleβ display a valuation indicating why the invariant could possibly be violated, for when it's uncertain whether a summand violates the invariant. receipts, basically π§Ύ-o,--inductionβ apply induction on lists. lists get the induction treatment, periodt π-iINVFILE,--invariant=INVFILEβ use the boolean formula (an mCRL2 data expression of sort Bool) inINVFILEas the invariant. note the short form is glued right onto the value:-iINVFILEπ-n,--no-checkβ do not check if the invariant holds before applying the invariant. living dangerously, honestly π-e,--no-eliminationβ do not eliminate or simplify summands, but add the invariant to each condition. this implies setting the flag--simplify-all. iykyk β-pPREFIX,--print-dot=PREFIXβ save a.dotfile of the resulting BDD if it's impossible to determine whether a summand violates the invariant;PREFIXwill be used as prefix of the output files π¦-QNUM,--qlimit=NUMβ limit enumeration of universal and existential quantifiers in data expressions toNUMiterations (defaultNUM=10,NUM=0for unlimited). yes, zero means unlimited, not zero, iconic πΈ-rNAME,--rewriter=NAMEβ use rewrite strategyNAME:'jitty'jitty rewriting (default),'jittyc'compiled jitty rewriting. pick your fighter π-l,--simplify-allβ simplify the conditions of all summands, instead of just eliminating the summands whose conditions in conjunction with the invariant are contradictions β¨-zSOLVER,--smt-solver=SOLVERβ useSOLVERto remove inconsistent paths from the internally used BDDs (by default, no path elimination is applied):'cvc'the SMT solver CVC3,'z3'the SMT solver Z3 π₯-tLIMIT,--time-limit=LIMITβ spend at mostLIMITseconds on proving a single formula. time is a social construct butLIMITis real π--timings[=FILE]β append timing measurements toFILE. measurements are written to standard error if noFILEis provided π
π Standard options π
-q,--quietβ do not display warning messages π€«-v,--verboseβ display short log messages π£οΈ-d,--debugβ display detailed log messages π--log-level=LEVELβ display log messages up to and including level; eitherwarn,verbose,debugortraceπ-h,--helpβ display help information π«Ά--versionβ display version information β--help-allβ display help information, including hidden and experimental options. the secret menu π
π§ AUTHOR
Written by Luc Engelen. give her her flowers π
π REPORTING BUGS
Report bugs at <http://www.mcrl2.org/issuetracker>. please do, they're not gonna fix themselves, fr fr π
πΈ COPYRIGHT
Copyright Β© 2025 Technische Universiteit Eindhoven.
This is free software. You may redistribute copies of it under the terms of the Boost Software License <http://www.boost.org/LICENSE_1_0.txt>. There is NO WARRANTY, to the extent permitted by law. like, none. zero. don't come for them π
β SEE ALSO
See also the manual at <http://www.mcrl2.org/web/user_manual/tools/release/lpsinvelm.html>. go read it bestie, it's giving documentation π
ngl this one's from the mCRL2 toolset, version string202507..., dated October 2026, and it lives in section 1 of the manual underLPSINVELM(1). that's the whole page, mwah πβ¨
π¦ where this page comes from
- nixos 26.05: mcrl2 202507
- nixpkgs unstable: mcrl2 202507
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms