frenzymath/Danus

Orchestrating Mathematical Reasoning Agents with Fact-Graph Memory

What it solves

Danus is designed to solve complex mathematical reasoning problems that are too large for a single LLM context window or too difficult for a single-pass attempt. It prevents the accumulation of "hallucinations" by ensuring that only mathematically verified facts enter the system's permanent memory, allowing a swarm of agents to collaborate on a long-form proof without losing track of truth.

How it works

Danus uses a strict separation of powers across three specialized agent roles:

  1. Main Agent (Orchestrator): Performs global planning, decomposes problems into smaller targets, and steers a swarm of workers. It cannot submit facts directly to the memory.
  2. Workers: Focus on proving individual claims (lemmas or counterexamples). They submit claims and proofs to a verifier and revise them based on feedback.
  3. Verifier: A stateless authority that acts as the sole gatekeeper. It accepts verified results into the fact graph or rejects them with repair hints.

Verified results are stored in a content-addressed fact graph, where each fact is linked to the facts it depends on. Once the goal is reached, the system can render the final result into a human-readable report or a LaTeX paper.

Who it’s for

It is built for researchers and mathematicians who need to automate the discovery and verification of research-level mathematical proofs.

Highlights

  • Fact-Graph Memory: A structured, dependency-aware memory system that serves as the single source of truth.
  • Role-Gated Tools: Security and correctness are enforced by tool permissions (e.g., the orchestrator cannot bypass the verifier).
  • Submit-Verify-Repair Cycle: An iterative loop where workers refine proofs until they are accepted by the stateless verifier.
  • Automated Paper Generation: Converts the verified fact graph into a compilable LaTeX paper, which is then re-verified as a whole.

Related

  • Project
  • Project
  • Project
  • Project
  • Project