본문으로 건너뛰기
cccskills
무료GitHub에 공개

formal-spec-z3-verifier

Master guide for mathematical formal verification, SMT solver constraints (Z3 WebAssembly, Python Z3, TLA+, Dafny), invariant theorem proving for FinTech billing, RBAC authorization, and zero-violation architectures / Panduan utama verifikasi formal matematis, batasan SMT solver (Z3 WASM, Python Z3, TLA+, Dafny), pembuktian teorema invarian billing FinTech, otorisasi RBAC, dan arsitektur zero-violation.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구PostgreSQL
설치 방법 보기

포함된 파일(1)

  • SKILL.md19.9 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Formal Spec & Z3 Verifier (2026 Sovereign Edition)

English | Bahasa Indonesia


<a name="english"></a>

English

Executive Directive & The Formal Verification Imperative

Unit tests sample points along an execution curve: $N$ tests cover $N$ scenarios. However, in financial ledgers, subscription state machines, multi-tenant boundaries, and cryptographic custody, edge-case race conditions exist in the infinitely large space of untested inputs ($O(\infty)$).

Formal Specification & SMT Verification shifts quality assurance from empirical sampling to mathematical theorem proving. By encoding software constraints into formal first-order logic and Satisfiability Modulo Theories (SMT), we use automated theorem provers (Microsoft Z3, TLA+, Dafny) to exhaustively prove that:

  1. Double-entry financial ledgers can never create or destroy fractional currency.
  2. Subscription billing state machines contain zero illegal transition paths.
  3. Multi-tenant RBAC trees permit mathematically zero privilege escalations across tenant boundaries.

Orchestration & Integration

  • FinTech & SaaS Subscriptions: saas-billing, doku-payment-gateway, payment-gateway-expert, agentic-m2m-settlement.
  • Identity & Boundary Verification: authentication-identity-expert, saas-multi-tenant, zero-trust-secret-vault.
  • Database & Constraint Enforcement: database-orm-expert, spec-driven-development-expert.
  • Autonomous Testing & Red Teaming: property-mutation-testing-expert, autonomous-tdd-debugger, autonomous-red-teamer, anti-slop.
  • Lifecycle & Governance: brainstorming, zero-to-prod-orchestrator, session-memory-manager.

Core Verification Methodologies (The 4 Pillars)

┌────────────────────────────────────────────────────────────────────────┐
│               FORMAL VERIFICATION & THEOREM PROVING FLOW               │
├────────────────────────────────────────────────────────────────────────┤
│ 1. Define Mathematical Invariants (Conservation, Monotonicity, Leak)   │
│                                   │                                    │
│                                   ▼                                    │
│ 2. Encode into SMT / Formal Logic (Z3 First-Order Logic, TLA+, Dafny)  │
│                                   │                                    │
│                                   ▼                                    │
│ 3. Automated SMT Solver Check (solver.check() -> SAT or UNSAT)         │
│                 ┌─────────────────┴─────────────────┐                  │
│                 ▼                                   ▼                  │
│        [UNSAT: Theorem Proven]            [SAT: Bug Found!]            │
│                 │                                   │                  │
│                 │                         Extract Counter-Example      │
│                 │                         (Exact attack/failure state) │
│                 ▼                                   │                  │
│ 4. Emit Verified PostgreSQL Constraints             ▼                  │
│    (CHECK, Row-Level Locks, Types)        Patch Business Logic & Rerun │
└────────────────────────────────────────────────────────────────────────┘

1. Real Z3 SMT Solver (WebAssembly & Python)

Instead of manual assertion loops, use the real Microsoft Z3 theorem prover. Define symbolic integer/boolean variables, assert preconditions and transition rules, and invert the invariant:

  • Asking the solver to find a solution where the invariant is violated (solver.add(Not(Invariant))).
  • If the solver returns unsat (unsatisfiable), the property is mathematically proven for all possible inputs.
  • If the solver returns sat, Z3 generates the exact counter-example model exposing the bug.

2. TLA+ Specification for Distributed Concurrency

Models concurrent states, temporal properties, and step transitions without implementation noise. Proves absence of deadlocks and state corruption across distributed payment microservices.

3. Dafny Contract-First Verification

Compiles mathematically proven algorithms directly to C#, Java, or JavaScript with built-in preconditions (requires), postconditions (ensures), and loop invariants.

4. PostgreSQL DDL Constraint Compilation

Every proven invariant must be compiled directly into database-enforced schemas: PostgreSQL domain types, CHECK constraints, foreign keys, and exclusion constraints (EXCLUDE USING).


Production Implementation Blueprints

Blueprint 1: Real Z3 SMT Ledger Invariant Prover in TypeScript (engine/z3-ledger-prover.ts)

Uses the official WebAssembly build of Microsoft Z3 (z3-solver):

import { init } from 'z3-solver';

export interface LedgerVerificationResult {
  isSound: boolean;
  theoremProven: boolean;
  counterExample?: Record<string, string>;
  diagnosticMessage: string;
}

export class Z3LedgerProver {
  public static async verifyAtomicTransfer(
    maxAccounts: number = 4
  ): Promise<LedgerVerificationResult> {
    const { Context } = await init();
    const { Solver, Int, And, Or, Not } = new Context('main');

    const solver = new Solver();

    // 1. Symbolic Variables: Balances before and after transaction
    const initialSource = Int.const('initial_source');
    const initialDest = Int.const('initial_dest');
    const transferAmount = Int.const('transfer_amount');

    const finalSource = Int.const('final_source');
    const finalDest = Int.const('final_dest');

    // 2. Preconditions & Domain Rules
    // All currency must be represented in integer atomic units (cents/satoshis >= 0)
    solver.add(initialSource.ge(0));
    solver.add(initialDest.ge(0));
    solver.add(transferAmount.gt(0)); // Transfers must be strictly positive
    solver.add(initialSource.ge(transferAmount)); // Source must have sufficient funds

    // 3. State Transition Logic
    solver.add(finalSource.eq(initialSource.sub(transferAmount)));
    solver.add(finalDest.eq(initialDest.add(transferAmount)));

    // 4. Invariant: Conservation of Total Money (Sum Before == Sum After)
    const initialTotal = initialSource.add(initialDest);
    const finalTotal = finalSource.add(finalDest);
    const moneyConservation = initialTotal.eq(finalTotal);

    // 5. Invariant: Solvency (No balance drops below zero)
    const solvency = And(finalSource.ge(0), finalDest.ge(0));

    const totalSystemInvariant = And(moneyConservation, solvency);

    // 6. Negation Mode: Ask Z3 to prove that a violation is POSSIBLE
    solver.add(Not(totalSystemInvariant));

    const checkResult = await solver.check();

    if (checkResult === 'unsat') {
      return {
        isSound: true,
        theoremProven: true,
        diagnosticMessage:
          'THEOREM PROVEN: Double-entry money conservation and solvency hold for all infinite integer inputs.',
      };
    }

    // Violation found: Extract exact counter-example
    const model = solver.model();
    const counterExample: Record<string, string> = {
      initialSource: model.eval(initialSource).toString(),
      initialDest: model.eval(initialDest).toString(),
      transferAmount: model.eval(transferAmount).toString(),
      finalSource: model.eval(finalSource).toString(),
      finalDest: model.eval(finalDest).toString(),
    };

    return {
      isSound: false,
      theoremProven: false,
      counterExample,
      diagnosticMessage: 'COUNTEREXAMPLE DETECTED: Ledger invariant violated under model state.',
    };
  }
}

Blueprint 2: SaaS Subscription State Machine Prover in Python Z3 (verifier/billing_state_prover.py)

from z3 import (
    Datatype,
    Solver,
    EnumSort,
    Function,
    Int,
    Bool,
    And,
    Or,
    Not,
    Implies,
    ForAll,
    sat,
    unsat
)

def verify_subscription_lifecycle():
    """
    Formally verifies that a canceled subscription can NEVER reach
    the Active state without a verified payment confirmation token.
    """
    solver = Solver()

    # Define State Enum Sort
    State, (TRIAL, ACTIVE, PAST_DUE, CANCELED) = EnumSort(
        'State', ('TRIAL', 'ACTIVE', 'PAST_DUE', 'CANCELED')
    )

    # State variables across step N and N+1
    s_current = State('s_current')
    s_next = State('s_next')
    payment_verified = Bool('payment_verified')
    admin_override = Bool('admin_override')

    # Legal Transition Rules
    transition_legal = Or(
        # Trial can transition to Active with payment
        And(s_current == TRIAL, s_next == ACTIVE, payment_verified),
        # Active can become PastDue if recurring billing fails
        And(s_current == ACTIVE, s_next == PAST_DUE),
        # PastDue can recover to Active upon payment
        And(s_current == PAST_DUE, s_next == ACTIVE, payment_verified),
        # Any state can transition to Canceled
        s_next == CANCELED,
        # Re-activation from Canceled strictly requires explicit payment verification
        And(s_current == CANCELED, s_next == ACTIVE, payment_verified)
    )

    solver.add(transition_legal)

    # Invariant to test:
    # "A user in CANCELED state can NEVER become ACTIVE if payment_verified is False"
    # To prove: (s_current == CANCELED and s_next == ACTIVE) -> payment_verified
    desired_invariant = Implies(
        And(s_current == CANCELED, s_next == ACTIVE),
        payment_verified
    )

    # Negate the invariant to search for illegal exploits
    solver.add(Not(desired_invariant))

    result = solver.check()

    if result == unsat:
        return {
            "status": "PROVEN",
            "message": "Mathematical proof holds: Unauthorized re-activation is impossible."
        }
    else:
        model = solver.model()
        return {
            "status": "VIOLATION",
            "counter_example": {
                "s_current": str(model[s_current]),
                "s_next": str(model[s_next]),
                "payment_verified": str(model[payment_verified])
            }
        }

if __name__ == "__main__":
    result = verify_subscription_lifecycle()
    print(f"Formal Verification: {result}")

Blueprint 3: TLA+ Atomic Ledger Specification (spec/Ledger.tla)

---------------------------- MODULE Ledger ----------------------------
EXTENDS Naturals, FiniteSets

CONSTANTS Accounts, MaxBalance

VARIABLES balances, pendingTransfers

TypeOK ==
    /\ balances \in [Accounts -> 0..MaxBalance]
    /\ pendingTransfers \subseteq (Accounts \X Accounts \X 1..MaxBalance)

Init ==
    /\ balances = [a \in Accounts |-> 1000]
    /\ pendingTransfers = {}

InitiateTransfer(src, dst, amt) ==
    /\ amt > 0
    /\ balances[src] >= amt
    /\ balances' = [balances EXCEPT ![src] = balances[src] - amt]
    /\ pendingTransfers' = pendingTransfers \cup {<<src, dst, amt>>}

CompleteTransfer(src, dst, amt) ==
    /\ <<src, dst, amt>> \in pendingTransfers
    /\ balances' = [balances EXCEPT ![dst] = balances[dst] + amt]
    /\ pendingTransfers' = pendingTransfers \ {<<src, dst, amt>>}

Next ==
    \/ \E s, d \in Accounts, a \in 1..MaxBalance: InitiateTransfer(s, d, a)
    \/ \E s, d \in Accounts, a \in 1..MaxBalance: CompleteTransfer(s, d, a)

\* Crucial Invariant: Money Conservation (Sum of Balances + In-Flight Transfers)
TotalSystemWealth ==
    LET SumBalances == balances[Accounts]
    IN SumBalances

Spec == Init /\ [][Next]_<<balances, pendingTransfers>>
=============================================================================

Blueprint 4: Dafny Contract-Verified Balance Transfer (spec/Transfer.dfy)

class Account {
  var balance: nat

  constructor(initial: nat)
    ensures balance == initial
  {
    balance := initial;
  }
}

method AtomicTransfer(source: Account, dest: Account, amount: nat)
  requires source != dest
  requires source.balance >= amount
  modifies source, dest
  ensures source.balance == old(source.balance) - amount
  ensures dest.balance == old(dest.balance) + amount
  ensures source.balance + dest.balance == old(source.balance) + old(dest.balance)
{
  source.balance := source.balance - amount;
  dest.balance := dest.balance + amount;
}

Database Schema Constraint Translation

Once verified by SMT solvers, the invariants are translated directly into PostgreSQL schemas:

-- Production PostgreSQL DDL compiled from Z3 verified constraints
CREATE DOMAIN monetary_cents AS BIGINT
  CHECK (VALUE >= 0);

CREATE TABLE ledger_entries (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  transaction_id UUID NOT NULL,
  account_id UUID NOT NULL,
  debit_cents monetary_cents NOT NULL DEFAULT 0,
  credit_cents monetary_cents NOT NULL DEFAULT 0,
  created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  -- Invariant 1: Single direction per entry
  CONSTRAINT chk_single_direction CHECK (
    (debit_cents > 0 AND credit_cents = 0) OR
    (credit_cents > 0 AND debit_cents = 0)
  )
);

-- Transaction balanced invariant enforcement via deferred trigger
CREATE OR REPLACE FUNCTION verify_transaction_balance()
RETURNS TRIGGER AS $$
DECLARE
  total_debit BIGINT;
  total_credit BIGINT;
BEGIN
  SELECT COALESCE(SUM(debit_cents), 0), COALESCE(SUM(credit_cents), 0)
  INTO total_debit, total_credit
  FROM ledger_entries
  WHERE transaction_id = NEW.transaction_id;

  IF total_debit <> total_credit THEN
    RAISE EXCEPTION 'Ledger balance invariant violated: Debits (%) != Credits (%)',
      total_debit, total_credit;
  END IF;

  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE CONSTRAINT TRIGGER trg_verify_transaction_balance
AFTER INSERT OR UPDATE ON ledger_entries
DEFERRABLE INITIALLY DEFERRED
FOR EACH ROW
EXECUTE FUNCTION verify_transaction_balance();

<a name="bahasa-indonesia"></a>

Bahasa Indonesia

Direktif Eksekutif & Kebutuhan Verifikasi Formal

Unit test konvensional hanya mengambil sampel titik acak: $N$ pengujian hanya mencakup $N$ skenario. Namun pada buku besar FinTech, state machine penagihan langganan, batas isolasi multi-tenant, dan pengelolaan kunci kriptografi, celah race condition tersembunyi di dalam ruang tak terhingga dari skenario yang belum diuji ($O(\infty)$).

Spesifikasi Formal & Verifikasi SMT mengubah paradigma penjaminan kualitas dari sampel empiris menjadi pembuktian teorema matematis. Dengan memformulasikan batasan logika tingkat pertama dan SMT (Satisfiability Modulo Theories), kita memanfaatkan mesin pembuktian teorema otomatis (Microsoft Z3, TLA+, Dafny) untuk membuktikan secara tuntas bahwa:

  1. Buku besar keuangan entri ganda mustahil menciptakan atau menghilangkan saldo secara ilegal.
  2. State machine langganan tidak memiliki jalur transisi terlarang (misal akun dibatalkan tiba-tiba aktif kembali tanpa pembayaran).
  3. Pohon otorisasi RBAC/ABAC secara matematis memiliki celah eskalasi hak akses sebesar nol.

Integrasi Orkestrasi

  • FinTech & Penagihan SaaS: saas-billing, doku-payment-gateway, payment-gateway-expert, agentic-m2m-settlement.
  • Verifikasi Identitas & Isolasi: authentication-identity-expert, saas-multi-tenant, zero-trust-secret-vault.
  • Database & Batasan Constraint: database-orm-expert, spec-driven-development-expert.
  • Pengujian Otonom & Red Teaming: property-mutation-testing-expert, autonomous-tdd-debugger, autonomous-red-teamer, anti-slop.
  • Siklus Hidup & Tata Kelola: brainstorming, zero-to-prod-orchestrator, session-memory-manager.

4 Pilar Metodologi Verifikasi Formal

┌────────────────────────────────────────────────────────────────────────┐
│               ALUR VERIFIKASI FORMAL & PEMBUKTIAN TEOREMA              │
├────────────────────────────────────────────────────────────────────────┤
│ 1. Definisikan Invarian Matematis (Konservasi Saldo, Monotonik)        │
│                                   │                                    │
│                                   ▼                                    │
│ 2. Enkode ke Logika SMT / Formal (Z3 Logika Orde-1, TLA+, Dafny)       │
│                                   │                                    │
│                                   ▼                                    │
│ 3. Pengecekan Mesin Solver SMT (solver.check() -> SAT atau UNSAT)      │
│                 ┌─────────────────┴─────────────────┐                  │
│                 ▼                                   ▼                  │
│        [UNSAT: Teorema Terbukti]           [SAT: Bug Ditemukan!]       │
│                 │                                   │                  │
│                 │                          Ekstrak Counter-Example     │
│                 │                          (State persis kegagalan)    │
│                 ▼                                   │                  │
│ 4. Terapkan Constraint Database PostgreSQL          ▼                  │
│    (CHECK, Row-Level Locks, Types)         Perbaiki Logika & Uji Ulang │
└────────────────────────────────────────────────────────────────────────┘

1. Mesin SMT Solver Z3 Nyata (WebAssembly & Python)

Gunakan mesin pembukti teorema Microsoft Z3 asli. Definisikan variabel simbolik, masukkan kondisi awal serta aturan transisi, lalu balikkan invarian (Not(Invariant)):

  • Jika solver menghasilkan unsat (tidak dapat dipenuhi), properti tersebut terbukti benar secara matematis untuk semua kemungkinan input.
  • Jika solver menghasilkan sat, Z3 secara otomatis memberikan model counter-example yang membongkar skenario kegagalan spesifik.

2. Spesifikasi TLA+ untuk Konkurensi Terdistribusi

Memodelkan state konkuren dan transisi langkah tanpa gangguan detail implementasi. Membuktikan ketiadaan deadlock dan desinkronisasi pada sistem pembayaran terdistribusi.

3. Kontrak Terverifikasi Dafny

Menghasilkan kode terverifikasi matematis dengan prasyarat (requires) dan pascasyarat (ensures) yang terbukti benar sebelum kompilasi.

4. Kompilasi ke Constraint Database PostgreSQL

Setiap invarian yang terbukti wajib dikompilasi langsung ke skema database: domain PostgreSQL, klausa CHECK, foreign key, dan trigger penundaan transaksi (deferred triggers).


Standar Penegakan Anti-Slop

  1. Dilarang Menggunakan Simulasi Kode Palsu: Modul verifikasi formal wajib memanfaatkan antarmuka SMT solver nyata (Z3 WASM atau Z3 Python), bukan sekadar perulangan if-else biasa.
  2. Keluaran Kode 100% Utuh: Tidak boleh ada placeholder // TODO atau fungsi yang belum diimplementasikan.
  3. Verifikasi Lulus Bersih: Kode wajib tervalidasi bebas dari segala bentuk slop menggunakan node scripts/check-anti-slop.js.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Expert guide for automated and manual Web Accessibility (a11y) testing — axe-core, Pa11y, Playwright a11y, screen reader testing, and WCAG 2.2 Level AA/AAA compliance / Panduan ahli pengujian aksesibilitas web.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

roedyrustam/vibes-plug1122026년 10월 22일 업데이트

Expert guide for intelligent model cascading and routing — complexity-scored task routing from Fast (Composer 2.5, Grok 4.7/4.6) to Medium (Gemini 4 Argon, GPT-5.6 Sol, Claude Opus 5.5) and High (Claude Sonnet 5.5, Claude Fable 5.1, Muse Wonder) / Panduan ahli untuk kaskade dan routing model cerdas.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

roedyrustam/vibes-plug1122026년 10월 22일 업데이트

Expert guide for intelligent model cascading and routing — complexity-scored task routing from Flash/Haiku to Sonnet/Opus/Astra, dynamic escalation with quality gates, 40-60% token cost reduction while maintaining output quality / Panduan ahli untuk kaskade dan routing model cerdas — routing tugas berbasis skor kompleksitas dari Flash/Haiku ke Sonnet/Opus/Astra, eskalasi dinamis dengan gerbang kualitas, pengurangan biaya token 40-60% dengan kualitas output terjaga.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

roedyrustam/vibes-plug1122026년 10월 22일 업데이트

Master guide for Affective Computing, emotional AI, and real-time sentiment analysis through native multimodal tokens (voice intonation and facial micro-expressions) / Panduan utama komputasi afektif, AI emosional, dan analisis sentimen real-time melalui token multimodal native.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

roedyrustam/vibes-plug1122026년 10월 22일 업데이트

Expert guide for Affective Computing, emotional AI, and real-time sentiment analysis through native multimodal tokens (voice intonation and facial micro-expressions) / Panduan ahli komputasi afektif, AI emosional, dan analisis sentimen real-time melalui token multimodal native.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

roedyrustam/vibes-plug1122026년 10월 22일 업데이트

Expert guide for AI-assisted coding workflows — agentic code generation, multi-agent code swarms, self-healing CI/CD, automated PR review, spec-to-code pipelines, codebase knowledge graphs, and human-in-the-loop approval gates / Panduan ahli untuk workflow pengkodean berbasis AI — generasi kode agentic, code swarm multi-agen, CI/CD self-healing, review PR otomatis, pipeline spec-to-code, knowledge graph codebase, dan gate persetujuan human-in-the-loop.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

roedyrustam/vibes-plug1122026년 10월 22일 업데이트

roedyrustam의 스킬 모두 보기

이 스킬의 문제 신고