# skoro > Skoro is a Rust library for writing a probabilistic model once, generatively, and running different inference algorithms on it, built for models that grow, branch and are estimated over time. Every document below links to its Markdown source. The pages have two reading orders: the Guide is top-down (start from usage), and Concepts is bottom-up (from the foundations up). The pages say what skoro is now; the Archive keeps how each part came to be, and may describe what has since changed. Everything concatenated: https://skoro.dev/llms-full.txt Source: https://github.com/mvarble/skoro ## Start here What skoro is, who it is for, and how to read the rest of these docs. - [What is skoro?](https://skoro.dev/start/what-is-skoro.md): A library for writing a probabilistic model once and running any inference algorithm on it, built for models that live over time. - [Reading these docs](https://skoro.dev/start/reading-these-docs.md): Two tracks that say what skoro is, notes of the mathematics, and an archive of how it came to be. - [How skoro is developed](https://skoro.dev/start/how-skoro-is-developed.md): Mathematics first, then the design, a plan, the code, and last the pages that say what is. ## Guide (top-down) Start from what a user writes, such as a model, a distribution or a density, and dig into the machinery only when you need it. ## Concepts (bottom-up) Build skoro from its foundations, one idea at a time and in dependency order, so that each rests only on the ones before it. ## Reference Crate map, glossary, notation, and project status. ## Mathematics The mathematics skoro rests on, one idea to a note, linked by what each builds on. The archive’s writeups lean on these notes rather than repeating them. - [Automatic differentiation over frames](https://skoro.dev/math/automatic-differentiation.md): How a straight-line program is differentiated by composing each step's derivative maps over its computation graph, forward with frames of tangents, backwards over its backpropagation graph with frames of cotangents, and forward-over-reverse for Hessian products. - [Derivatives in tangent charts](https://skoro.dev/math/derivatives-in-charts.md): The derivative of a map between manifolds, its gradient and its Hessian product, all read in the tangent charts a retraction provides, and why automatic differentiation computes them unchanged. - [Models built forward, for the measure theorist](https://skoro.dev/math/generative-models.md): Why an abstract probability space serves modelling as an abstract vector space serves linear algebra, why the way back to coordinates is harder in probability, and how building a model forward from densities restores it, so that every random variable factors through the quantities and every expectation is an explicit integral. - [Product manifolds](https://skoro.dev/math/product-manifold.md): A product of manifolds is a manifold whose tangent space stacks its factors', and whose retraction acts factor by factor; derivatives in its charts are block matrices of the factors'. - [Retractions and tangent charts](https://skoro.dev/math/retraction.md): A retraction moves a point of a manifold along a tangent vector; it makes each tangent space a chart around its point, and gives the operations ⊕ and ⊖. ## Archive How each part of skoro came to be: the mathematics worked out for it, the implementation it was given, and the plan it was built by, kept as they were approved. - [The core](https://skoro.dev/archive/core.md): (active) The core of skoro, built to the charter: the API for building models, with quantity types (the Euclidean manifolds, products, and the discrete types), the primitive operations and their derivatives of first and second order, composition, the compilation graph and its compiler, the probabilistic graph, terms and bindings, the writer with its snapshots, branches and building scopes, addresses, explicit random keys, and the layer over burn. It ends where models can be built and differentiated but no distribution exists yet, except private ones in tests. Much of it is ported from the archive branch, reshaped to the charter. When it is done, REVISIT.md lists every feature of the archive not yet brought back, each to return as an entry of its own. - [The core: The problem](https://skoro.dev/archive/core/math.md): The mathematics the core rests on, from quantities, their charts and their products, through operations and their derivatives of first and second order composed over programs, to queries, terms, importance weights, random keys and retirement. - [What skoro is](https://skoro.dev/archive/charter.md): (done) The library's charter: what skoro is for, who it serves, and the positions on which everything else in it rests. It was written when the repository started over, from an interrogation of the design that came before (kept on the archive branch), so that each later entry has a stated purpose to build towards and to be measured against. It settled skoro's purpose and its users, and twelve positions on the shape of its core; the home page and What is skoro? were written from it. - [What skoro is: Context](https://skoro.dev/archive/charter/writeup.md): A model is written once, generatively, and any inference algorithm reads what it needs from the model's structure, refusing by structure when the model does not fit.