>
categories
Asymptotic notation algorithms

Mathematical notation for describing the limiting behaviour of functions. Includes O(f(n))O(f(n)) (upper bound), Ω(f(n))\Omega(f(n)) (lower bound), and Θ(f(n))\Theta(f(n)) (tight bound). For example, if T(n)=3n2+2n+1T(n) = 3n^2 + 2n + 1, then T(n)=O(n2)T(n) = O(n^2).

Examples: Big O notation • Big Omega notation • Big Theta notation
Refs: Algorithm analysis • Complexity theory
Additive connectives logic

The linear connectives that encode choice: &\mathbin{\&} (with) and \oplus (plus). They split proof search into branches rather than combining resources in parallel, distinguishing between internal choice (with) and external choice (plus).

Examples: A&BA \mathbin{\&} B offers both proofs and the consumer selects one • ABA \oplus B forces the environment to choose a branch
Refs: Linear logic • Choice operators
Big O notation algorithms

A mathematical notation that describes the limiting behaviour of a function when the argument tends towards a particular value or infinity. In computer science, it’s used to classify algorithms according to how their running time or space requirements grow as the input size grows.

Examples: O(1) - constant time • O(n) - linear time • O(n²) - quadratic time
Refs: Asymptotic analysis • Algorithm complexity
Byzantine fault tolerance computer science

The ability of a distributed computing system to continue operating correctly even when some of the nodes fail or act maliciously. Named after the Byzantine General’s Problem, it addresses scenarios where components may provide conflicting information to different parts of the system.

Examples: PBFT algorithm • Blockchain consensus • Distributed databases
Refs: Lamport et al. (1982) • Practical Byzantine Fault Tolerance
Bloom filter data structures

A space-efficient probabilistic data structure used to test whether an element is a member of a set. It can have false positives but never false negatives, making it useful for applications where approximate membership queries are acceptable.

Examples: Web caches • Database query optimisation • Distributed systems
Refs: Burton Howard Bloom (1970) • Hash functions
Clique algorithms

A complete subgraph where every pair of vertices is connected by an edge. The Clique problem asks whether a graph contains a clique of size k or larger, which is NP-complete for k ≥ 3.

Examples: Maximum Clique • k-Clique • Clique Cover
Refs: Graph theory • NP-completeness
Contraction logic

A structural rule that allows you to duplicate an assumption: from Γ,A,AB\Gamma, A, A \vdash B infer Γ,AB\Gamma, A \vdash B. Linear logic removes contraction so resources cannot be copied freely; duplication is only permitted for formulae marked with !!.

Examples: Γ,A,AB\Gamma, A, A \vdash B implies Γ,AB\Gamma, A \vdash B • Copying a value in a proof assistant
Refs: Structural rules • Linearity
Curry-Howard correspondence mathematics

A direct relationship between computer programs and mathematical proofs, where types correspond to logical propositions and programs correspond to proofs. This fundamental connection shows that programming and logic are essentially the same activity.

Examples: Propositions as types • Proof assistants • Dependent type systems
Refs: Haskell Curry • William Howard • Type theory
Dual logic

In linear logic, duality is given by linear negation ()(\cdot)^{\perp}, which swaps inputs and outputs and exchanges connectives (e.g. (AB)=AB(A \otimes B)^{\perp} = A^{\perp} \mathbin{\parr} B^{\perp} and (A&B)=AB(A \mathbin{\&} B)^{\perp} = A^{\perp} \oplus B^{\perp}). Saying one connective is the dual of another means they correspond under this negation.

Examples: !A!A is dual to ?A?A^{\perp}\mathbin{\parr} is dual to \otimes
Refs: Linear negation • De Morgan dualities
Exponential modalities logic

The unary operators !A!A (“of course”) and ?A?A (“why not”) that reintroduce weakening and contraction in linear logic. They mark formulae as freely copyable or discardable, restoring classical behaviour locally while keeping the surrounding system resource-aware.

Examples: !A!A allows duplicating AA?A?A as the dual modality permitting arbitrary use
Refs: Linear logic • Modality
Hamiltonian Cycle algorithms

A cycle in a graph that visits every vertex exactly once and returns to the starting vertex. The Hamiltonian Cycle problem asks whether such a cycle exists, which is NP-complete.

Examples: Hamiltonian Path • Travelling Salesman Problem • Knight's Tour
Refs: Graph theory • NP-completeness • Eulerian circuits
Multiplicative connectives logic

The pair of linear connectives that combine resources simultaneously: tensor \otimes and par \mathbin{\parr}. Proofs using them consume all the supplied resources in lockstep rather than offering a choice between branches.

Examples: ABA \otimes B requires both AA and BBABA \mathbin{\parr} B as the dual multiplicative disjunction
Refs: Sequent calculus • Resource composition
Monomorphization programming languages

A compilation technique used in languages like Rust where generic functions and types are replaced with concrete implementations for each specific type they’re used with. This enables zero-cost abstractions by eliminating runtime type dispatch.

Examples: Rust generics • C++ template instantiation
Refs: Zero-cost abstractions • Static dispatch
Par (par) logic

The multiplicative disjunction of linear logic, written ABA \mathbin{\parr} B. It represents co-availability: a consumer must be ready to interact with either side, and under linear negation it is dual to tensor \otimes. Par often models demand-driven or concurrent use of resources.

Examples: (AB)=AB(A \otimes B)^{\perp} = A^{\perp} \mathbin{\parr} B^{\perp} • Choosing which process to synchronise with in a session protocol
Refs: Multiplicative connectives • Duality
Plus (⊕) logic

The additive disjunction of linear logic, written ABA \oplus B. It expresses external choice where the environment selects which branch is offered. Its dual under linear negation is with: (AB)=A&B(A \oplus B)^{\perp} = A^{\perp} \mathbin{\&} B^{\perp}.

Examples: Client must handle whichever of AA or BB the server provides • ABA \oplus B as the dual of A&BA^{\perp} \mathbin{\&} B^{\perp}
Refs: Additive connectives • Duality
NP-completeness complexity theory

A complexity class of decision problems for which no known polynomial-time algorithm exists, but any solution can be verified in polynomial time. A problem is NP-complete if it is both in NP and every problem in NP can be reduced to it in polynomial time.

Examples: SAT problem • Traveling Salesman Problem • 3-Coloring
Refs: Cook-Levin theorem • Karp's 21 NP-complete problems
Proof nets logic

Graphical representations of logical proofs introduced by Girard for linear logic. They eliminate the bureaucratic details of sequential proof trees, revealing the essential geometric structure of logical reasoning. Each proof net is a graph where nodes represent logical connectives and edges represent the flow of logical resources.

Examples: Linear logic proofs • Geometry of interaction • Graphical calculi
Refs: Jean-Yves Girard • Linear logic • Proof theory
SAT complexity theory

The Boolean Satisfiability Problem: determining whether there exists an assignment of Boolean values to variables that makes a propositional formula evaluate to true. This is the canonical NP-complete problem.

Examples: 3-SAT • Circuit SAT • Horn SAT
Refs: Cook-Levin theorem • Karp's 21 NP-complete problems
Set Cover algorithms

Given a universe of elements and a collection of subsets, find the smallest subcollection whose union covers all elements. The Set Cover problem is NP-complete and a fundamental problem in combinatorial optimisation.

Examples: Weighted Set Cover • k-Set Cover • Dominating Set
Refs: NP-completeness • Approximation algorithms • Greedy algorithms
Tensor (⊗) logic

The multiplicative conjunction of linear logic. A proof of ABA \otimes B delivers both resources together and a proof that uses it must consume both. Under linear negation it is dual to \mathbin{\parr}.

Examples: ABA \otimes B in a sequent ΓAB\Gamma \vdash A \otimes B • Sending two messages together on a channel
Refs: Multiplicative connectives • Monoidal structure
Vertex Cover algorithms

A set of vertices such that every edge in the graph has at least one endpoint in the set. The Vertex Cover problem asks for the smallest such set, which is NP-complete.

Examples: Minimum Vertex Cover • k-Vertex Cover • Weighted Vertex Cover
Refs: Graph theory • NP-completeness • Approximation algorithms
Turing machine computer science

A mathematical model of computation that defines an abstract machine which manipulates symbols on a strip of tape according to a table of rules. Despite its simplicity, a Turing machine can simulate the logic of any computer algorithm.

Examples: Universal Turing machine • Deterministic Turing machine • Non-deterministic Turing machine
Refs: Alan Turing (1936) • Church-Turing thesis
Weakening logic

A structural rule that allows you to introduce an unused assumption: from ΓA\Gamma \vdash A infer Γ,BA\Gamma, B \vdash A. Linear logic drops weakening so resources cannot be discarded unless wrapped in an exponential such as !A!A. This preserves resource-sensitive behaviour.

Examples: ΓA\Gamma \vdash A implies Γ,BA\Gamma, B \vdash A • Discarding an input channel in a session type
Refs: Structural rules • Resource sensitivity
With (&) logic

The additive conjunction of linear logic, written A&BA \mathbin{\&} B. It offers both branches internally and the consumer selects which proof to use. Under linear negation it is dual to plus: (A&B)=AB(A \mathbin{\&} B)^{\perp} = A^{\perp} \oplus B^{\perp}. This is often what is meant when someone says “dual with”.

Examples: A server exposing both AA and BB and letting the client pick • A&BA \mathbin{\&} B as the dual of ABA^{\perp} \oplus B^{\perp}
Refs: Additive connectives • Duality