model-checker

Verify finite-state systems with SAT/SMT solvers and generate counterexamples.

17|2|Updated Feb 16, 2026
One-click install
npx skills add https://github.com/rainoftime/pl-skills --skill model-checker
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: model-checker
Source: https://github.com/rainoftime/pl-skills/tree/main/model-checker
Command: npx skills add https://github.com/rainoftime/pl-skills --skill model-checker

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires z3-solver, and includes scripts (resource) and references (resource) components.

What problem does it solve?

This Skill addresses the challenge of ensuring the correctness and reliability of concurrent programs, hardware designs, and communication protocols by systematically exploring their state spaces.

Core Features & Use Cases

  • Bounded Model Checking (BMC): Uses SAT/SMT solvers to find violations of properties within a specified execution bound.
  • Invariant and Reachability Checking: Verifies safety properties (invariants) and liveness properties (reachability).
  • Use Case: Debugging a complex multi-threaded application where race conditions or deadlocks are suspected. This skill can systematically explore interleavings to find a scenario that triggers a bug.

Quick Start

Use the model-checker skill to verify that the invariant 'x > 0' holds for the given concurrent program model within a bound of 10.

Frequently Asked Questions about model-checker

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How does bounded model checking verify concurrent programs and communication protocols?

Bounded model checking encodes state transitions and unwinds loops for bounded exploration, using SAT/SMT solvers to systematically explore state spaces and find property violations within a specified execution bound.

Can I use Z3 solver to check safety and liveness properties in hardware designs?

Yes, you can use Z3 solver to check safety and liveness properties in hardware designs. The Skill uses Z3 for symbolic state representation and constraint solving to verify invariants and reachability.

How do I find race conditions or deadlocks in multi-threaded applications?

To find race conditions or deadlocks in multi-threaded applications, the model checker systematically explores interleavings to identify scenarios that trigger bugs, generating counterexamples for property violations.

Do I need Python and Z3 solver installed to run protocol verification?

Yes, you need Python and the Z3 solver installed to run protocol verification. The Skill requires the z3-solver dependency for symbolic state representation and constraint solving during bounded model checking.

What is the difference between checking safety properties and liveness properties in concurrent programming?

Checking safety properties verifies invariants that must always hold, while checking liveness properties verifies reachability conditions that must eventually occur. The model checker evaluates both within bounded execution limits.

Why does model checking fail to find bugs beyond the specified execution bound?

Model checking fails to find bugs beyond the specified execution bound because bounded model checking only explores state spaces up to a set limit, meaning violations requiring deeper execution depths remain undetected.