rust-datalog

Enable in-memory Datalog reasoning in Rust with datafrog, crepe, and ascent.

1|Updated Mar 15, 2026
One-click install
npx skills add https://github.com/hafley66/claude-research --skill rust-datalog
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: rust-datalog
Source: https://github.com/hafley66/claude-research/tree/main/skills/rust-datalog
Command: npx skills add https://github.com/hafley66/claude-research --skill rust-datalog

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Datalog reasoning in Rust can be complex, expensive, and error-prone when built from scratch. This Skill documents in-memory implementations and patterns using the datafrog, crepe, and ascent ecosystems to enable fast, correct fixed-point computations within Rust programs.

Core Features & Use Cases

  • In-memory, bottom-up evaluation for Datalog queries leveraging datafrog (Polonius), crepe (proc-macro), and ascent (lattices).
  • Demonstrates common operations: fixpoint iteration, joins (including anti-join), stratification, and lattice-based reasoning for advanced analyses.
  • Use Case: build high-performance static analyses or dataflow engines inside Rust projects without external databases.

Quick Start

Load a small edge dataset and run the transitive-closure example to observe the fixpoint convergence.

Frequently Asked Questions about rust-datalog

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

FAQPage Schema
How do I implement in-memory Datalog fixpoint evaluation in Rust?▼

In-memory Datalog fixpoint evaluation in Rust is enabled using the datafrog, crepe, and ascent crates to perform bottom-up evaluation for iterative queries. These libraries provide fast convergence without external databases.

What is Datalog used for in compiler and static analysis?▼

Datalog in compiler and static analysis is used for iterative fixpoint computations, multi-way joins, and lattice-based reasoning. It enables high-performance dataflow engines to compute program analyses directly in memory.

Does Rust support Datalog anti-join and lattice-based semantics?▼

Rust supports Datalog anti-join and lattice-based semantics through the crepe and ascent crates. These libraries enable stratification and advanced relational operations for complex program analysis tasks.

How do I run a transitive closure query using Datalog in Rust?▼

To run a transitive closure query in Rust, load a small edge dataset and execute a bottom-up Datalog evaluation to observe fixpoint convergence. This demonstrates iterative multi-way joins using datafrog or crepe.

When should I not use in-memory Datalog for program analysis?▼

In-memory Datalog for program analysis is not ideal for datasets exceeding available RAM or requiring persistent storage. It is designed for fast, in-process fixpoint computations rather than external database scalability.