Coding
PromptBeginner5 minmarkdown
Markdown Converter
Agent skill for markdown-converter
7
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Sign in to like and favorite skills
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
MIR Semantics provides a K Framework-based formal semantics for Rust's Stable MIR (Mid-level Intermediate Representation), enabling symbolic execution and formal verification of Rust programs.
# Initial setup - install stable-mir-json tool for SMIR generation make stable-mir-json # Build K semantics definitions (required after K file changes) make build # Full build and check make check build
# Run all tests make test # Run unit tests only make test-unit # Run integration tests (requires stable-mir-json and build) make test-integration # Run a single test uv --directory kmir run pytest kmir/src/tests/integration/test_prove.py::test_prove_rs -k "test_name" # Generate and parse SMIR for test files make smir-parse-tests
# Format code make format # Check code quality (linting, type checking, formatting) make check # Individual checks make check-flake8 make check-mypy make check-black
# Activate environment for interactive use source kmir/.venv/bin/activate # Or run commands directly uv --directory kmir run kmir <command> # Prove Rust code directly (recommended) uv --directory kmir run kmir prove-rs path/to/file.rs --verbose # Generate SMIR JSON from Rust ./scripts/generate-smir-json.sh file.rs output_dir # View proof results uv --directory kmir run kmir show proof_id --proof-dir ./proof_dir
kmir/ - Python frontend tool and K semantics
src/kmir/ - Python implementation
kmir.py - Main KMIR class handling K semantics interactionsmir.py - SMIR JSON parsing and info extractionkdist/mir-semantics/ - K semantics definitionssrc/tests/ - Test suites
integration/data/prove-rs/ - Rust test programs for prove-rsintegration/data/exec-smir/ - Rust programs for execution testskmir.md - Main execution semantics and control flowmono.md - Monomorphized item definitionsbody.md - Function body and basic block semanticsrt/configuration.md - Runtime configuration cellsrt/data.md - Runtime data structuresty.md - Type system definitionsThe Python layer (
kmir.py) bridges between SMIR JSON and K semantics:
SMIRInfo class_make_function_map, _make_type_and_adt_mapsKProve/KRun interfacesIntrinsic functions (like
black_box, raw_eq) don't have regular function bodies. They're handled by:
_make_function_map adds IntrinsicFunction entries to function mapkmir.md execute intrinsics via #execIntrinsicSee
for detailed implementation guide.docs/dev/adding-intrinsics.md
Tests in
kmir/src/tests/integration/data/prove-rs/ follow this pattern:
test-name.rs (passes), test-name-fail.rs (expected to fail)kmir prove-rs commandprove-rs/ directoryuv --directory kmir run kmir prove-rs your-test.rsdocs/ directory for guides on specific topicskmir/src/tests/.md files in kmir/src/kmir/kdist/mir-semantics/make build to compile changesmake test-integrationkmir/src/kmir/make format && make check to verify code quality and formattingmake test-unitSee
docs/dev/adding-intrinsics.md for complete guide with examples.
# Show specific nodes in proof uv --directory kmir run kmir show proof_id --nodes "1,2,3" --proof-dir ./proof_dir # Show transitions between nodes uv --directory kmir run kmir show proof_id --node-deltas "1:2,2:3" --proof-dir ./proof_dir # Show rules applied uv --directory kmir run kmir show proof_id --rules "1:2" --proof-dir ./proof_dir # Full details with static info uv --directory kmir run kmir show proof_id --full-printer --no-omit-static-info --proof-dir ./proof_dir
Function not found errors: Check if function is in FUNCTIONS_CELL (may be intrinsic)