Skip to content

SMV: KNOWNBUG test for bare section headers#1995

Open
kroening wants to merge 1 commit into
mainfrom
knownbug-bare-smv-section-headers
Open

SMV: KNOWNBUG test for bare section headers#1995
kroening wants to merge 1 commit into
mainfrom
knownbug-bare-smv-section-headers

Conversation

@kroening

Copy link
Copy Markdown
Collaborator

Bare TRANS/INIT/INVAR/FAIRNESS/SPEC/CTLSPEC/LTLSPEC headers are accepted as empty sections (parser.y:447). Truncated or malformed SMV input can silently weaken the model instead of failing with a parse error.

This adds a KNOWNBUG regression test documenting the issue. The parser currently silently accepts these bare keywords, which means a truncated or accidentally incomplete SMV file will parse successfully but with missing constraints/properties — potentially making verification unsound.

Bare TRANS/INIT/INVAR/FAIRNESS/SPEC/CTLSPEC/LTLSPEC headers are accepted
as empty sections (parser.y:447). Truncated or malformed SMV input can
silently weaken the model instead of failing with a parse error.

NuSMV intentionally accepts bare section keywords as valid syntax: each
constraint kind is conjoined (T = T1 ∧ T2 ∧ ... ∧ Tn), and an empty
section contributes TRUE (the identity element) to the conjunction.
While this matches NuSMV's permissive grammar, it is a robustness defect
in practice — a truncated file or copy-paste error that leaves a dangling
keyword will silently produce a weaker model with missing constraints or
properties, with no diagnostic.
@kroening
kroening force-pushed the knownbug-bare-smv-section-headers branch from 24176e6 to 353e9ae Compare July 12, 2026 22:01
@kroening kroening added the SMV label Jul 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant