Data & operations
Coefficient values, metric data, storage layouts, and executable algebra operations form the computational layer.
Coeff · TA · KernelsGRASSMANN LAB · 3 SPACE DIMENSIONS + TIME
Drag to orbit · Pinch / scroll to zoom
THE FIELD
F(x,y,z,t) = (−a y, a x, b sin(t + x) cos z)
Time loops from 0 to 4π at 0.6 simulation seconds per real second. Scrubbing pauses animation.
LIVE GRADE-1 COORDINATES
X ≈ (0.50) e₁ + (0.50) e₂ + (0.00) e₃ [virtual m]
Rounded to 0.01 m · residual ‖X − Xrounded‖ = 0.00000 m
F = (−0.500) e₁ + (0.500) e₂ + (0.336) e₃ [m/s]
x = 0.500 m, y = 0.500 m, z = 0 m; a = 1.00 s⁻¹, b = 0.70 m/s, t = 0.000 s
Choose Move probe, then drag the white handle on the z = 0 slice, or focus the scene and use arrow keys. The line from the origin to the white handle is displacement X. The white arrow is velocity F at the unrounded probe position. These are coordinate readouts, not a fit or inference from arbitrary gestures.
These presets use the same field-core package as the native app: shared expression data, units, Viridis stops, and golden tests. They run in JavaScript here; they do not execute Lean or the Grassmann implementation.
Read the project's proof boundaryMouse dragging orbits the camera. On touch screens, the scene initially allows page scrolling; tap Rotate view for one-finger orbit and pinch zoom, then Scroll page to leave that mode. In Move probe mode, dragging moves the sample point in the fixed z = 0 plane; arrow keys move it in that plane too. Pinch, the mouse wheel, or +/− zooms. With the scene focused, arrow keys orbit and 0 restores the camera. Native sliders also support arrow keys. Reset environment restores this preset's parameters, time, arrow size, and camera, and pauses playback.
Units and model limits. In the analytic presets, coordinates and the draggable grade-1 displacement use configured virtual metres; time uses seconds; F is a velocity in m/s. The parameter labels show rates (s⁻¹) or speeds (m/s). Sine and cosine arguments normalize time by 1 second and position by 1 metre. The scene is not calibrated to real-world space, and no camera measurement is involved. This panel only shows grade-1 quantities; coefficients of other grades may have different units. X is displayed to 0.01 m, with its rounding residual; F is computed at the unrounded probe position and displayed to three decimals. Calculations use floating-point arithmetic, not exact symbolic algebra.
Recorded Grassmann mode. This separate dataset contains actual outputs of Grassmann.TA.sandwich from source commit 48f02068. It has 9 stepped rotor frames and 27 integer sample positions per frame. Its parameter t is dimensionless, not physical time; playback advances one recorded frame per second. No interpolation is used. The probe snaps to the recorded z = 0 grid. The fixture has no physical units: its vectors and norms are shown as unitless algebra values, separately from the analytic velocity models. The exact rational values are preserved in the dataset; rendered arrow coordinates are binary64 approximations.
The analytic arrows sample a 7 × 7 × 7 grid. Zero vectors are hidden. Positions and directions are genuinely three-dimensional; the extra slider is time, not a fourth spatial dimension. Colors use a fixed magnitude range [0, 3.8] across the analytic presets and parameter edits. Recorded rotor values use the same numerical color range but are unitless, so they are not speed comparisons. The Viridis ramp is interpolated from the nine shared color stops. Glyph length is independently capped at 0.38 scene units for readability.
Subtle motion cues. Faded marks travel along compressed instantaneous velocity arrows using the selected field time. They are direction cues, not particles, advection, streamlines, or 3D pathlines. Pause freezes them; scrubbing and reset deterministically reposition them. The XY guide is the exact vortex trajectory projection seeded at (0.72 m, 0), with displayed z = 0 omitting z motion. Its selected-time reset can jump for arbitrary rotation rates. The circle names the e₁₂ orientation only; no general bivector or measured area is inferred. Recorded rotor mode only shows the selected frame’s exported angle on that reference plane, using dimensionless τ.
Reduced-motion preferences start the scene paused and suppress added moving marks. Offscreen or hidden pages stop animating. If WebGL is unavailable, a software 3D projection keeps the same presets and controls usable.
Shared preset specification (JSON) · Shared JS + Swift core (ZIP) · Golden reference cases · Shared JS + Swift motion cues (ZIP) · Cue meaning & units · Recorded Grassmann package (ZIP) · Fixture scope & provenance · Exact rational Clifford example · Renderer: Three.js (MIT license)
ALOK'S RESEARCH SOFTWARE · LEAN 4
A Lean port of the Grassmann ecosystem, bringing typed geometric algebra, Julia-compatible behavior, and implementation-linked proofs into the same project.
Active construction · Independent derivative of Michael Reed's work
Public Lean baseline: September 25, 2026
01 / DESIGN
The public port models spaces as values and carries dimensions, grades, and parity in types. The public proof documentation separates the algebraic model, implementation blade rules, and tested execution paths.
Coefficient values, metric data, storage layouts, and executable algebra operations form the computational layer.
Coeff · TA · KernelsThe specification proves laws over a commutative ring. A computational coefficient interface does not itself establish those laws.
Cl g · CommRing · associativityBlade-rule theorems connect selected families of spaces to the model. The plan interpreter and typed-container execution remain tested, not proved.
blade rules · plans · interpreterTyped elements constrain shape at compile time. The dynamic TA layer tracks Julia-style result kinds at runtime. Generated numerical kernels and their general refinement proofs are separate pieces of work.
02 / EXACT ARITHMETIC
Take A = c e12 in a diagonal Clifford algebra, where e1² = g1 and e2² = g2. Change the metric or coefficient and see which assumptions matter.
A · A⁻¹ = A⁻¹ · A = 1
The coefficient and both diagonal metric entries are nonzero.
Illustration, not a Lean session. This browser demo uses a small, independent JavaScript model with BigInt rational arithmetic. It does not execute the project's implementation or check proofs in the Lean kernel. For this single-blade example, e12² = −g1g2 and A⁻¹ = −e12/(c g1g2) when the denominator is nonzero.
03 / PROOF BOUNDARY
This summary follows the public proof documentation at the September 25, 2026 baseline. It is not a claim that the entire port is verified.
clifford tactic uses proved coordinate reflection; grind [grassmann] uses the model's algebraic theorems.PROOFS.md distinguishes general theorems, finite Lean-kernel checks, and compiled tests. Its “Not covered” section records the remaining boundaries. This page reports that documentation; it does not certify a new build or test run.
The public source baseline is 6cedc44 (September 25, 2026). Local-only proof-work reports and unpushed test results are not included. The browser playground and exact-arithmetic example do not execute Lean or check proofs.
SOURCE & LINEAGE
Michael Reed (chakravala) created the original Julia Grassmann ecosystem. This Lean derivative is Alok's independent project; it is not an upstream release or endorsement. The public repository retains the name Grassmann.jl, but its current baseline contains the Lean port.