







In cybernetics, the term variety denotes the total number of distinguishable elements of a set, most often the set of states, inputs, or outputs of a finite-state machine or transformation, or the binary logarithm of the same quantity.[1] Variety is used in cybernetics as an information theory that is easily related to deterministic finite automata, and less formally as a conceptual tool for thinking about organization, regulation, and stability. It is an early theory of complexity in automata, complex systems,[1]: 6 and operations research.[2]
A theory of type polymorphism in programming
The aim of this work is largely a practical one. A widely employed style of programming, particularly in structure-processing languages which impose n…
Requisite variety and its implications for the control of complex systems
Recent work on the fundamental processes of regulation in biology (Ashby, 1956) has shown the importance of a certain quantitative relation called the law of requisite variety. After this relation had been found, we appreciated that it was related to a theorem in a world far removed from the biological—that of Shannon on the quantity of noise or error that could be removed through a correction-channel (Shannon and Weaver, 1949; theorem 10). In this paper I propose to show the relationship between the two theorems, and to indicate something of their implications for regulation, in the cybernetic sense, when the system to be regulated is extremely complex. Since the law of requisite variety uses concepts more primitive than those used by entropy, I will start by giving an account of that law.
Towards Foundations of Categorical Cybernetics
We propose a categorical framework for processes which interact bidirectionally with both an environment and a 'controller'. Examples include open learners, in which the controller is an optimiser...

Knowledge Networks and the Politics of Protocols
Harmony without loss of Variety; Variety without loss of Harmony.

Automata Theory by Javier Esparza
A comprehensive introduction to automata theory that uses the novel approach of viewing automata as data structures.


The language of generalization.
Requisite Variety - gordonbrander.com
If a system is to be stable, the number of states of its control mechanism must be greater than or equal to the number of states in the system being controlled.
Design Cybernetics
This book offers practical guidance for cybernetic processes of design and innovation. It also develops theoretical principles. The authors use accessible, non-technical language, which will help a wide range of readers gain knowledge of this important field.

Yi Ma on Twitter / X
In system theory, it is called "linearization"... which has been studied and used for decades. Honestly, folks, there is no need to invent or introduce any new terminology. Remember, there is rarely anything new under the sun... https://t.co/yNLIv7Ptoh— Yi Ma (@YiMaTweets) March 14, 2026

Types and Programming Languages
A type system is a syntactic method for automatically checking the absence of certain erroneous behaviors by classifying program phrases according to the kinds of values they compute. The study of type systems--and of programming languages from a type-theoretic perspective -- -has important applications in software engineering, language design, high-performance compilers, and security. This text provides a comprehensive introduction both to type systems in computer science and to the basic theory of programming languages. The approach is pragmatic and operational; each new concept is motivated by programming examples and the more theoretical sections are driven by the needs of implementations. Each chapter is accompanied by numerous exercises and solutions, as well as a running implementation, available via the Web. Dependencies between chapters are explicitly identified, allowing readers to choose a variety of paths through the material. The core topics include the untyped lambda-calculus, simple type systems, type reconstruction, universal and existential polymorphism, subtyping, bounded quantification, recursive types, kinds, and type operators. Extended case studies develop a variety of approaches to modeling the features of object-oriented languages.

A modal analysis of staged computation | Journal of the ACM
We show that a type system based on the intuitionistic modal logic S4 provides an expressive framework for specifying and analyzing computation stages in the context of typed λ-calculi and functional languages. We directly demonstrate the sense in which ...

Finite-Choice Logic Programming | Proceedings of the ACM on Programming Languages
Logic programming, as exemplified by datalog, defines the meaning of a program as its unique smallest model: the deductive closure of its inference rules. However, many problems call for an enumeration of models that vary along some set of choices while ...

Self-organizing systems: what, how, and why?
I present a personal account of self-organizing systems, framing relevant questions to better understand self-organization, information, complexity, and emergence. With this aim, I start with a notion and examples of self-organizing systems (what?), continue with their properties and related concepts (how?), and close with applications (why?) in physics, chemistry, biology, collective behavior, ecology, communication networks, robotics, artificial intelligence, linguistics, social science, urbanism, philosophy, and engineering.

Polynomial Functors: A Mathematical Theory of Interaction
This monograph is a study of the category of polynomial endofunctors on the category of sets and its applications to modeling interaction protocols and dynamical systems. We assume basic categorical background and build the categorical theory from the ground up, highlighting pictorical techniques and concrete examples to build intuition and provide applications.
