Skip to content

Intersection type

A type assigned to values satisfying multiple type descriptions simultaneously, written as an intersection such as sigma ∩ tau.

Version
v2 · 2026-09-19 · History
Domain-specific #
5089
Domain group
Formal Sciences
Origin domain
Mathematics
Subdomain
Type Theory → Mathematics

Core Idea

An intersection type denotes values inhabiting every constituent type and supports typing rules that introduce all conjuncts and eliminate any one of them. The type system combines independent capabilities or refinements in one judgment, enabling precise accounts of overloaded behavior, normalization, or flow-sensitive values. The abstraction is therefore identified by a declared carrier, a transformation or constraint over that carrier, and an invariant that tells an analyst whether the named structure is genuinely present.

The load-bearing residual is not the broad topic of type theory. It is the autonomous type theory identity defined by a term must satisfy each intersected type under the same environment and the system’s subtyping and equality rules.

How would you explain it like I'm…

The Car-Boat Toy

Imagine a toy that is a car and also a boat at the same time. You can drive it on the road or float it in the bath, whichever you want. An Intersection type is a label for things that are both kinds at once. To earn that label, the toy must really pass the car test and the boat test.

Many Types at Once

In programming, a type is a label that says what a value can do, like 'number' or 'text'. An Intersection type says a value has two or more types all at once. To give a value that combined label, you must show it fits every one of the types. Once it has the label, you are allowed to use it as any one of them. This helps describe, for example, a single function that works on numbers and also works on text.

Every-Type-At-Once Typing

In type theory, an Intersection type A ∧ B describes values that belong to both A and B. The typing rules say two things. To give a term the type A ∧ B, you must show it has type A and also type B, in the same context. From A ∧ B, you may conclude either A or B on its own. This differs from a union type, where a value only needs to fit one of the options. Intersection types let one judgment combine several capabilities, which is useful for describing overloaded functions or values with refined behavior.

 

An Intersection type A ∧ B is inhabited by exactly those terms that inhabit every constituent type. The introduction rule says: if Γ ⊢ M : A and Γ ⊢ M : B, then Γ ⊢ M : A ∧ B. Notice it is the same term under the same environment. The elimination rules project to either conjunct. This lets a type system state several independent capabilities or refinements of one term in a single judgment. Examples include an overloaded function typed (Int → Int) ∧ (String → String), and precise accounts of normalization or flow-sensitive values. How intersections interact with subtyping and equality depends on the particular system, so those rules must be specified. Claims that something 'has an intersection type' only make sense relative to them.

Scope of Application

Intersection type belongs to type theory and is useful where the analyst can specify the exact type theory carrier, its elements, relations, parameters, boundary conditions, evidence and comparison cases, then evaluate a term must satisfy each intersected type under the same environment and the system’s subtyping and equality rules. The scope is broad within that domain but bounded by the need for a term must satisfy each intersected type under the same environment and the system’s subtyping and equality rules. The entry records a descriptive analytical identity; practical use requires the governing domain's evidence, standards, and safety obligations.

Clarity

The abstraction clarifies a crowded vocabulary by making a term must satisfy each intersected type under the same environment and the system’s subtyping and equality rules the center of the account. A claim should name the carrier, the governing operation or relation, the applicable assumptions, and the recognition test. A bare label is insufficient because the name Intersection type can be used for a formal identity, an implementation, or a neighboring result unless carrier and convention are stated.

Manages Complexity

Without the abstraction, an analyst must reason directly over many local details: the carrier roles, admissibility assumptions, competing conventions, derived invariants, boundary cases, and proof or validation obligations specific to Intersection type. Intersection type compresses them into the roles in the structural signature. That compression permits comparison across instances without erasing the variables that determine validity. It also exposes which details may be varied safely and which are constitutive.

Abstract Reasoning

  1. Identify the carrier. State what the elements, states, objects, or observations are: the exact type theory carrier, its elements, relations, parameters, boundary conditions, evidence and comparison cases. Reject examples whose alleged carrier belongs to a different problem.
  2. Lock the constitutive rule. Express a term must satisfy each intersected type under the same environment and the system’s subtyping and equality rules independently of one notation or implementation.

Knowledge Transfer

Knowledge transfers strongly among subfields of type theory because they reuse the exact type theory carrier, its elements, relations, parameters, boundary conditions, evidence and comparison cases, The type system combines independent capabilities or refinements in one judgment, enabling precise accounts of overloaded behavior, normalization, or flow-sensitive values., and type the carrier, state every parameter and convention in the definition, test that a term must satisfy each intersected type under the same environment and the system’s subtyping and equality rules, compare the nearest accepted identity, and report counterexamples, uncertainty, and limiting cases.

Relationships to Other Abstractions

Local relationship map for Intersection typeParents appear above the current abstraction, mutual partners to the right, and children below. Node labels state whether each abstraction is prime or domain-specific; colors identify relation types.Intersection typeDOMAINPrime abstraction: Intersection — is a kind ofIntersectionPRIME

Current abstraction Intersection type Domain-specific

Parents (1) — outgoing typed relations

  • Intersection type is a kind of Intersection Prime

    What makes it its own entry: the autonomous type theory identity defined by a term must satisfy each intersected type under the same environment and the system’s subtyping and equality rules.

Hierarchy path (1) — routes to 1 parentless root

Neighborhood in Abstraction Space

Intersection type sits in a crowded region of the domain-specific corpus (9th percentile for distinctiveness): several abstractions share nearly its structure, so a description that fits it tends to fit its neighbors too.

Family — Order, Type & Classification Foundations (49 abstractions)

Nearest neighbors

Computed from structural-signature embeddings · 2026-10-25