What problem does it solve? Testing only shows bugs on the inputs you try; it cannot prove a property holds for all inputs. For catastrophic-if-wrong code — cryptography, auth decisions, monetary arithmetic, consensus invariants, unsafe blocks — this Skill escalates a tested invariant into a machine-checked proof, and refuses to claim a proof the toolchain did not produce. ## Core Features & Use Cases - Eligibility gating: Runs only when the change is critical-core AND a real verifier exists for the language (Rust/Verus, Dafny, Ada/SPARK, C/Frama-C, Java/OpenJML, C++/CBMC/ESBMC); otherwise it cleanly falls back to property-based testing. - Live toolchain confirmation: Web-searches current verifier versions, solver backends, and syntax before writing contracts, since verifier syntax churns fast. - Contract writing and proof discharge: Writes requires/ensures/invariant contracts, runs the SMT-backed verifier, iterates on counterexamples, and blocks on undischarged obligations instead of shipping partial claims. - Machine-readable verdicts: Emits structured JSON proof results (tool, version, tier, bound, obligations discharged) and dispatches a reviewer that checks the specification is correct, not just that proofs closed. - Use Case: You are implementing a balance-transfer function in Rust where a rounding bug would mispay funds. The Skill writes Verus pre/postconditions proving conservation of funds for all inputs, discharges the obligations with Z3, and reports the proof verdict. ## Quick Start Use formal verification to prove the invariants of this cryptographic or monetary function with the appropriate verifier for its language.