license: mit
tags:
- symbolic
- fewshot
- reasoning
extra_gated_prompt: >-
You agree to not use this model (or future versions) to conduct experiments
that cause harm to any person or group.
extra_gated_fields:
Company: text
Country: country
Specific date: date_picker
I want to use this model for:
type: select
options:
- Work
- Research
- Education
- Hobby
- label: Other
value: other
I agree to use this model in good faith ONLY: checkbox
Improving Reasoning by Generative Pre-Training

What is this?
Dβt is a small, general-purpose reasoning model that thinks using dots. With just 250m parameters, it solves symbolic reasoning tasks using a minimal 8-token vocabulary where numbers are represented as sequences of β (dots) and boolean values as β (true) or β (false). Dβt is also (to the author's knowledge) the first neuro-symbolic fewshot meta-learner model publicly available. You can read the blog for complementary information.
Operations
The foundational model was trained on 29 fundamental operations:
Scalar: add, subtract, min, max, equal, not-equal List: range, repeat, reverse, length, first, last, countdown Extended scalar: floor-div, mod-check, clamp, sign, increment, decrement Extended list: sum, product, contains, count, head/tail, zip-add
An internal kernel with hundreds of operations is already on the works.
Inference
The model expects few-shot prompts: 2β4 examples of a pattern, then the query. Each example is formatted as inputβΈoutput, newline-separated. The model completes after the final βΈ.
ββ ββΈβββ
ββββ ββΈβββββ
βββ βββΈ
β 2 examples of addition, then the query 3 + 2 β model outputs βββββ
Import the three standalone modules (vocab.py, model.py, inference.py):
from inference import few_shot, load_model
# Load once, reuse across calls β point to your .pt file
model, device = load_model("path/to/model.pt")
# Addition: 3 + 2 = 5
print(few_shot(
examples=[("ββ β", "βββ"), ("ββββ β", "βββββ")],
query="βββ ββ",
model=model, device=device,
))
# β βββββ
# Reverse a list
print(few_shot(
examples=[("β ββ βββ", "βββ ββ β"), ("ββββ ββ β", "β ββ ββββ")],
query="β βββ ββ",
model=model, device=device,
))
# β ββ βββ β
# Min of two
print(few_shot(
examples=[("βββ βββββ", "βββ"), ("ββ ββββ", "ββ")],
query="βββββ βββ",
model=model, device=device,
))
# β βββ
load_model() requires an explicit path to the .pt file. The device is auto-detected.
Training details
Training was running for ~4 hours using an A100-40G machine. Numbers are unary: βββ = 3, β = 0. Lists are space-separated. Matrices use newlines between rows. The data was produced using an internal, procedurally-generated kernel (the infinite "dot" kernel).
Index vocab reference
β β 0
β β 1
β β 2
(space) β 3
(new line) β 4
β β 5 (This is the one you usually would change for your preferred letter, number, etc...)
β β 6
βΈ β 7
Limitations
- Numbers are capped at 36 dots (unary representation grows linearly)
- No natural language β input must be encoded as dot sequences (though you can change the canonical dot "β" for any key on your keyboard like "." or "o" by manually changing the vocabulary).
- Small dataset only β complex compositions and higher-order ops require further training/optimizations
Support
For faster training iterations on these experimental models, you can make the engineer work faster by simply clicking and donating some bucks for additional compute on the button at the top. Donations will be used solely for the purpose of training and open sourcing new more powerful versions faster.
Cite
@misc{appvoid_dot_2026,
author = {appvoid},
title = {Dβt: A Neuro-Symbolic Few-shot Meta-Learner for Symbolic Reasoning},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/appvoid/dot}},
note = {Small model (250m) utilizing a minimal 8-token vocabulary for symbolic operations.}
}