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.