LPSCONFCHECK(1)

πŸ“¦ version 202507, in nixos 26.05, nixpkgs unstable

πŸ’… LPSCONFCHECK(1) β€” the lpsconfcheck girlies' guide πŸ’…

okay so bestie, welcome to lpsconfcheck(1) ✨ this is the mCRL2 toolset page for it, and i'm gonna walk you through it like we're texting at 2am 🫢


🌸 NAME 🌸

lpsconfcheck β€” mark confluent tau-summands of an LPS πŸŽ€

like, it goes through your LPS and finds the tau-summands that are confluent, and it marks them. that's the whole job. iconic honestly πŸ’…


✨ SYNOPSIS ✨

lpsconfcheck [OPTION]... [INFILE [OUTFILE]]

πŸ¦‹ DESCRIPTION πŸ¦‹

so here's the vibe: lpsconfcheck checks which tau-summands of the mCRL2 LPS in INFILE are confluent, marks them by renaming them to ctau, and writes the result to OUTFILE. no cap, that's it 🌈

  • if INFILE is not present, stdin is used πŸ“
  • if OUTFILE is not present, stdout is used ⭐

like, it just picks up whatever you give it. lowkey flexible of it tbh 😌


πŸ’– OPTIONS πŸ’–

OPTION can be any of the following, and yes bestie we're listing every single one because i would never do you like that πŸ™ˆ

  • -a, --check-all β€” check the confluence of tau-summands regarding all other summands, instead of continuing with the next tau-summand as soon as a summand is encountered that is not confluent with the current tau-summand. so like, thorough mode. main character energy πŸ‘‘
  • -x[CONDITIONS], --conditions[=CONDITIONS] β€” use the confluence conditions specified by individual characters. here's the cheat sheet:
    • c / C: commutative confluence with / without disjointness check
    • d: commutative confluence with disjointness check only
    • T: triangular confluence
    • Z: trivial confluence
  • -c, --counter-example β€” display a valuation for which the confluence condition does not hold, in case the encountered condition is neither a contradiction nor a tautology. it's giving "here's exactly where it went wrong" πŸ”₯
  • -g, --generate-invariants β€” try to prove that the reduced confluence condition is an invariant of the LPS, in case the confluence condition is not a tautology 🧚
  • -o, --induction β€” apply induction on lists πŸ“‹
  • -iINVFILE, --invariant=INVFILE β€” use the boolean formula (an mCRL2 data expression of sort Bool) in INVFILE as invariant πŸ’œ
  • -n, --no-check β€” do not check if the invariant holds before checking for confluence. yep, it literally says "for for" in the original and i'm keeping the facts, not fixing the typo, that's not my job 😭
  • -m, --no-marking β€” do not mark the confluent tau-summands; since there are no changes made to the LPS, nothing is written to OUTFILE πŸ’€ like genuinely nothing, don't go looking for output that isn't there
  • -u, --no-sums β€” do not rewrite summands with a sum operator and prove their confluence formula πŸ™…β€β™€οΈ
  • -pPREFIX, --print-dot=PREFIX β€” save a .dot file of the resulting BDD in case two summands cannot be proven confluent; PREFIX will be used as prefix of the output files πŸŽ€
  • -QNUM, --qlimit=NUM β€” limit enumeration of universal and existential quantifiers in data expressions to NUM iterations (default NUM=10, NUM=0 for unlimited) ⭐
  • -rNAME, --rewriter=NAME β€” use rewrite strategy NAME:
    • 'jitty' β€” jitty rewriting (default)
    • 'jittyc' β€” compiled jitty rewriting
  • -zSOLVER, --smt-solver=SOLVER β€” use SOLVER to 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
  • -sNUM, --summand=NUM β€” eliminate or simplify the summand with number NUM only 🎯
  • -tLIMIT, --time-limit=LIMIT β€” spend at most LIMIT seconds on proving a single formula ⏳
  • --timings[=FILE] β€” append timing measurements to FILE. measurements are written to standard error if no FILE is provided πŸ“Š

🌟 Standard options 🌟

the classics, the essentials, the little black dress of CLI flags πŸ’…

  • -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; either warn, verbose, debug or trace πŸͺ΅
  • -h, --help β€” display help information 🫢
  • --version β€” display version information 🏷️
  • --help-all β€” display help information, including hidden and experimental options πŸ‘€ iykyk

πŸ‘‘ AUTHOR πŸ‘‘

Written by Luc Engelen. 🫑


πŸ› REPORTING BUGS πŸ›

Report bugs at <http://www.mcrl2.org/issuetracker> β€” bestie if it's broken, tell them, not me 😭


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. fr fr, no warranty, read the license 🌸


🌈 SEE ALSO 🌈

See also the manual at <http://www.mcrl2.org/web/user_manual/tools/release/lpsconfcheck.html> ✨


and that's the whole page babes πŸŽ€ this was lpsconfcheck from the mCRL2 toolset, version 202..., dated October 2026 β€” go check your confluence, slay, and remember: mark those tau-summands πŸ’…πŸ’–πŸ¦‹

πŸ“¦ where this page comes from