System integrated information#

Given a substrate and a candidate system, IIT asks whether that system exists as one thing — irreducibly, from its own intrinsic perspective — and how much. The answer is the system integrated information \(\varphi_s\). This page covers the three postulates that produce it: information, integration, and exclusion.

import pyphi

pyphi.config.progress_bars = False

substrate = pyphi.examples.iit4_2023_fig1a_substrate()
analysis = pyphi.analyze(substrate, (0, 1, 1), subset=(0, 1))

Information: the maximal cause–effect state#

By the information postulate, a system must be specific: in its current state it selects a particular cause–effect state — the past it constrains and the future it points to. Among the candidates, IIT selects the one with maximal intrinsic information \(\mathit{ii}\), which is the product of two competing quantities (Albantakis et al., 2023, Fig 1C): informativeness, how much the state deviates from chance, and selectivity, how concentrated that cause–effect power is on a specific state. Their product is what the system’s cause–effect power is about.

Integration: irreducibility over the minimum partition#

By the integration postulate, having cause–effect power and selecting a state is not enough: the system must specify its cause–effect state irreducibly, as one set of units rather than as independent parts. Irreducibility is tested by partitioning the system and measuring how much the partition reduces the intrinsic information. The reduction is evaluated over the partition that makes the least difference — the minimum partition (MIP) — so that the result reflects the system’s weakest link (Albantakis et al., 2023).

Integrated information is computed separately on the cause side and the effect side, \(\varphi_c\) and \(\varphi_e\), and a system is only as integrated as its weaker direction. A system must also provide itself with alternatives and specify one of them, which its intrinsic information \(\mathit{ii}(s)\) measures. The system integrated information is the smallest of the three (Mayner, Marshall & Tononi, 2026, Eq. 23):

\[ \varphi_s = \min(\varphi_c, \varphi_e, \mathit{ii}(s)). \]
(analysis.sia.cause.phi, analysis.sia.effect.phi, analysis.phi)
(0.24457512081898192, 0.1718628889918045, 0.04049680811800574)

For the worked example, \(\varphi_c \approx 0.245\) and \(\varphi_e \approx 0.172\) reproduce the paper’s Fig 1D split (\(\varphi_c = 0.24\), \(\varphi_e = 0.17\)). The intrinsic information is smaller than both, so \(\varphi_s \approx 0.04\), the value printed above. The partition responsible — the MIP — is stored on the analysis:

analysis.sia.partition
DirectedSetPartition
2 parts: {A,B}
Severed connections
Connections cut1
AB
A·✕
B··

analysis.phi is \(\varphi_s\); analysis.sia is the full system irreducibility analysis that produced it, including the MIP, the cause and effect sides, and a size-normalized value (analysis.sia.normalized_phi) used when comparing systems of different sizes.

The intrinsic-information requirement — a system must both furnish itself alternatives and specify one state — and its consequences (deterministic systems have \(\varphi_s = 0\)) have their own page.

Selection margins#

The definitions above make two kinds of discrete choice. The specified cause and effect states are chosen by maximizing intrinsic information over candidate states — the principle of maximal existence (Albantakis et al., 2023, Eq. 12). The MIP is chosen by minimizing integrated information over partitions; the minimization compares partitions on a normalized value (each partition’s \(\varphi_s\) divided by the maximum number of connections it could sever), while the reported \(\varphi_s\) is the unnormalized value at the winning partition (Albantakis et al., 2023, Eqs. 22–23). Normalization ensures the comparison is fair across partitions of different sizes; the reported quantity, once the MIP is identified, is an absolute one.

Each such choice has a margin: the gap between the winner and the best competitor, in the units of the comparison. PyPhi reports these on the analysis — partition_margin (in normalized \(\varphi\)), the per-direction specified-state margins (in intrinsic information), and tied_selections listing any selection whose margin is within the configured numerical precision of zero.

(
    float(analysis.sia.partition_margin),
    {str(d): float(m) for d, m in analysis.sia.state_margins.items()},
    analysis.sia.tied_selections,
)
(0.21340128355945173,
 {'CAUSE': 0.7608118065390782, 'EFFECT': 1.097995033428008},
 ())

Margins are the theory’s own form of sensitivity analysis. Because the selections implement the principles of maximal and minimal existence, a substrate near a selection boundary is near a point where what exists — which state it specifies, which partition is minimal — changes discretely, even though the substrate’s own parameters vary continuously. A small margin means the substrate is close to such a boundary, which no derivative of \(\varphi_s\) reveals. Exact zeros are ties, resolved by explicit, configurable rules; see Control tie-breaking for reading and acting on margins, and Explore substrate parameter landscapes for converting them into distances in parameter space.

Exclusion: the complex#

Many overlapping subsets of a substrate may each have positive \(\varphi_s\). The exclusion postulate requires a definite subject: exactly one set of units counts. IIT resolves this by keeping the sets whose integrated information is maximal among everything they overlap — the complexes (Albantakis et al., 2023). complexes() runs this competition over the whole substrate:

for complex_ in substrate.complexes((0, 1, 1)):
    print(complex_.node_indices, round(float(complex_.phi), 4))
(2,) 0.2122
(0, 1) 0.0405

Two non-overlapping complexes remain: the single unit \(\{C\}\) and the pair \(\{A, B\}\) — the complex featured in the paper. With a complex fixed, the final postulate — composition — unfolds its internal structure: the distinctions and relations it specifies.