# A0 > The programming language built for AI, not for people. Compact, exactly specified, validated before commit; one program compiles to native machine code, wasm, JavaScript, JVM, .NET, Metal, and SystemVerilog, verified against one oracle. ## Start here - [Primer](https://a0lang.com/primer.txt): the whole language in 388 tokens; this is what a model receives before writing A0. - [Docs](https://a0lang.com/docs.txt): the reference as plain text (also at /docs/). - [Full guide](https://a0lang.com/llms-full.txt): primer, docs, and the home page text in one file. - [Benchmarks](https://a0lang.com/results/exec-benchmark.json): measured numbers behind every chart; losses included. - [Source](https://github.com/Joe-Simo/a0): MIT; `a0` binaries under Releases, no package manager needed. ## Rules of the language, in one line each (In the Example line, `/` stands for a newline.) - A0: `fn NAME T... -> T`, lines `ID OP ARG...`, `ret ARG` (or `ret OP ARGS`), `end`. Types u32 bool io, arrays u32x4, records (u32,bool). Params p0 p1... Args: earlier ID, pN, u32 literal, true, false. `use "file.a0"` at top links a file. No forward refs or recursion; ops exact mod 2^32. - mov add sub mul | and or xor (u32 bitwise, or bool logical) | shl shr (count&31) | div (b=0: 4294967295) rem (b=0: a) | eq ne (u32 or bool) lt le gt ge (unsigned) -> bool | select c x y - call F a... (F earlier) | fold F n s a... state=s; i(u32,io) | write t v->io | puts t a->io - EDIT: reply bare edit lines (handle line optional when one e handle is shown). `id op ...` replaces or inserts before ret; `... @ other` inserts after other; `-id` deletes; `ret x`; `fn ...` block (end optional) adds/replaces a function; `-fn name` removes. - Example: fn affine u32 u32 u32 -> u32 / a mul p0 p1 / b add a p2 / ret b / end (one item per line).