Nelumbo

Logic,
in bloom.

Nelumbo is a declarative logic language that reasons the way you think: state the facts, define the rules, ask the questions. Then go further - reshape the language itself, until your code reads like your domain.

Why Nelumbo

A language that thinks out loud.

Most languages tell a computer what to do. Nelumbo describes what is true, and lets an inference engine work out the rest - live, in your editor, while you type.

Honest logic

Three-valued reasoning: every query is true, false, or unknown. Nelumbo never pretends to know what it cannot prove.

Your syntax, your rules

Nelumbo is a meta-language. Declare new notation in a line - Boolean ::= gc(<Person>,<Person>) - and it becomes first-class syntax, with IDE support included.

IDE smarts everywhere

One Language Server, many homes: live diagnostics, hover, completion and go-to-definition in the browser, VS Code, IntelliJ and Eclipse.

Speaks fluent AI

The bundled MCP server lets AI assistants author and verify Nelumbo decision models - with the inference engine checking every answer.

See it think

Rules in, answers out.

This is real Nelumbo: two rules define Fibonacci, one query asks a question, and the annotation states the expected answer - the editor verifies it live. Try it yourself in the feature tour; no install needed.

fibonacci.nl
import nelumbo.integers

Integer ::= fib(<Integer>)
Integer n, f

fib(n)=f <=> f=n                   if n<=1,
             f=fib(n-1)+fib(n-2)   if n>1

fib(10)=f ?  [(f=55)][..]          // verified while you type

Plant a fact. Watch it grow.

Take the tour Star on GitHub