The README makes claims. This file backs them up with evidence.
Statistikles is a Kautz Type 3 neurosymbolic statistical analysis assistant:
Neural (LLM): Understands your question in natural language. Routes it to the correct statistical function. Explains the result in plain English.
Symbolic (Julia): Performs ALL mathematical computation. Every number comes from a verified, deterministic Julia function. Zero neural inference in the computation path.
Evidence: The architecture (line 114-122) places the boundary at src/tools/executor.jl:execute_tool(). Everything above (language understanding) is neural; everything below (Julia computation) is symbolic. The README example (lines 24-36) shows:
1. User asks: "Is there a significant difference between these two groups?"
2. LLM routes to: t_test_independent(group1, group2) — neural routing only
3. Julia computes: t=2.847, df=38, p=0.007, Cohen’s d=0.90 — symbolic only
4. LLM explains result — neural generation
The MOLLOCK WARNING (lines 40-47) enforces this invariant: no statistical value is ever produced by neural inference. If you see a number in a Statistikles response, it was computed by Julia. This is enforced in code, not merely by prompt: src/tools/guardrail.jl:validate_numeric_provenance() audits every numeric literal in the LLM’s prose against the recorded tool results, flags any orphan (a number matching no tool result), retries once, then surfaces a warning — the model’s text is never silently rewritten (see test/guardrail_test.jl).
Caveat: The neural component (LLM) does perform parsing of the user question and explanation generation, which are non-statistical tasks. The invariant applies specifically to numerical results, not linguistic processing.
41 statistical modules under
src/stats/, spanning classical (Descriptive, Inferential, Correlation & Regression, Non-parametric, Effect Sizes, Power Analysis, Bayesian, Causality, Estimation, Reliability, Validity, Measurement, Sampling) through to exotic methods (Dempster-Shafer, fuzzy logic, tropical algebra, p-adic, quantum/CHSH, rough sets, Choquet integral).
Evidence: src/stats/ contains 41 .jl modules; src/tools/executor.jl
dispatches 55 named tool names to them, of which 29 are exposed to the LLM as
function-calling schemas in src/tools/definitions.jl. Examples:
- Descriptive: Mean, median, mode, SD, skewness, kurtosis, quartiles, CI
- Inferential: Welch t-test, one-way ANOVA, chi-square
- Correlation & Regression: Pearson, Spearman, simple/multiple regression with VIF
- Non-parametric: Mann-Whitney U, Wilcoxon signed-rank, Kruskal-Wallis, PERMANOVA
- Effect Sizes: Cohen’s d, r, eta², Hedges' g, OR, NNT, CL effect size
Caveat: Coverage is broad but skewed toward classical frequentist methods.
Bayesian coverage is functional but simplified compared to Stan or PyMC, and
several advanced methods are explicitly labelled proxy/basic
(random_forest_proxy, gwr_basic). The trusted symbolic layer is now
checked against independently-derived ground-truth values in
test/reference_validation_test.jl.
| Technology | Learn More |
|---|---|
Julia 1.10+ |
https://julialang.org (statistical computation, 41 modules) |
Statistics.jl |
Distribution calculations, hypothesis testing |
StatsBase.jl |
Statistical utilities |
Distributions.jl |
Probability distributions |
DataFrames.jl |
Tabular data manipulation |
LM Studio |
Local LLM for neural routing (localhost:1234) |
Zig FFI |
https://ziglang.org (EXPERIMENTAL — compiles and is CI-tested, but entry points are placeholders not yet backed by the Julia core; see "Experimental surfaces" in README.adoc) |
|
Note
|
An earlier draft of this table listed an "Idris2 ABI" row. src/abi/ does
not exist in this repo — the Idris2 ABI layer is design-only. See
ABI-FFI-README.md for the target design and README.adoc’s "Experimental
surfaces" section for the canonical status.
|
Uses the hyperpolymath FFI standard (Zig) for the C-ABI boundary. FFI is EXPERIMENTAL: it compiles and is CI-tested, but its ops are placeholders, not Julia-backed. The Idris2 ABI half of the standard is design-only here.
Statistikles-specific:
- Neural-symbolic boundary enforcement via execute_tool() (src/tools/executor.jl)
- proofs/ has 10 Agda lemmas type-checked under agda --safe in CI, proven
over ℕ as discrete proxies (e.g. for "p-value ∈ [0,1]" and "variance ≥ 0");
the ℝ/Float64 statistical theorems themselves remain open targets — see
proofs/README.adoc and PROOF-NEEDS.md
- Deterministic execution: all numerical computation originates from Julia,
enforced by the neural-symbolic boundary above (this is a code-structure
guarantee, not an Agda-proven one)
| Path | What’s There |
|---|---|
|
Julia source code (Statistikles.jl entry point + subdirectories) |
|
Neural-symbolic boundary enforcement (CRITICAL) |
|
41 statistical domain modules (descriptive, inferential, correlation, non-parametric, etc.) |
|
Output formatters (ASCII tables/graphs, CSV, JSON, text reports) |
|
Canonicalization, dimensional analysis, detection, validation, cleansing, normalization |
|
LLM function-calling schemas (definitions.jl), LM Studio client (lmstudio.jl), chat loop (chat.jl) |
|
Optional cross-verification bridges and inline integrations |
|
Test suite (693 @test assertions across runtests.jl and the e2e, property, reference-validation (+advanced), degenerate-input, guardrail, and executor-router suites it includes; reference_validation_test.jl checks against ground truth) |
|
Offline example run ( |
Open an issue in the hyperpolymath/statistikles repository for questions about the neural-symbolic boundary, statistical module availability, or how to add new statistical functions while maintaining the mollock-free guarantee.