Skip to content

Latest commit

 

History

History
118 lines (91 loc) · 6.62 KB

File metadata and controls

118 lines (91 loc) · 6.62 KB

Statistikles — Neurosymbolic Statistical Analysis — Show Me The Receipts

The README makes claims. This file backs them up with evidence.

Key Claims From README

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.

— README section "The Solution"

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).

— README section "Features" -> "Statistical Functions"

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 Choices

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.

Dogfooded Across The Account

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)

File Map: Key Modules

Path What’s There

src/

Julia source code (Statistikles.jl entry point + subdirectories)

src/tools/executor.jl

Neural-symbolic boundary enforcement (CRITICAL)

src/stats/

41 statistical domain modules (descriptive, inferential, correlation, non-parametric, etc.)

src/output/

Output formatters (ASCII tables/graphs, CSV, JSON, text reports)

src/pipeline/

Canonicalization, dimensional analysis, detection, validation, cleansing, normalization

src/tools/

LLM function-calling schemas (definitions.jl), LM Studio client (lmstudio.jl), chat loop (chat.jl)

src/bridge/, src/integrations/

Optional cross-verification bridges and inline integrations

test/

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)

examples/

Offline example run (run_examples.jl, no LLM needed)

Questions?

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.

License

This project is licensed under the Mozilla Public License, v. 2.0. See the LICENSE file for details.

SPDX-License-Identifier: CC-BY-SA-4.0