Topological space: fully verifying a chain of open sets on a three-point set, and recognising non-topologies

On this page
  1. Goal and scope
  2. Givens and symbols
  3. Rules and sources
  4. Main derivation
  5. Substeps and lemmas
  6. Reverse audits
  7. Error controls and negative controls
  8. Result and limitations
  9. Verification and source binding

← Guide index · Original MKO

derivation-mko-topological-space-01 · production-20261019-adopted-96

Goal and scope

Let X={a,b,c} with a, b, c distinct. (1) Prove that τ₁={∅,{a},{a,b},X} is a topology on X, covering all 16 subfamilies (including the empty one); (2) prove that τ₂={∅,{a},{b},X} is not a topology, and say which checks it does pass; (3) compare τ₁ with the indiscrete and discrete topologies; (4) on ℕ, prove that τ_fin={finite subsets of ℕ}∪{ℕ} is closed under pairwise unions and finite intersections but is not a topology.

Verifies each condition from the MKO's definition (with the empty-family convention a2). In the finite example a chain lemma handles all nonempty subfamilies at once, and a count confirms that all 16 subfamilies are covered, not sampled. The infinite example serves only to separate 'pairwise closure' from 'arbitrary closure'. Continuous maps, bases and metric topologies are not treated; the canonical MKO and its English edition are not changed.

Givens and symbols

  • subset_def
  • set_operations_def
  • set_extensionality
  • nat_induction
  • numeric_evaluation
  • G1 — X={a,b,c} with a, b, c pairwise distinct; τ₁={∅,{a},{a,b},X}; τ₂={∅,{a},{b},X}.
  • G2 — MKO assumption a2: arbitrary unions include the empty family and finite intersections include the empty family; the empty intersection is read as X.
  • G3 — ℕ includes 0; τ_fin={A⊆ℕ : A finite}∪{ℕ}.
  • X=\{a,b,c\} — the underlying set, with a, b, c distinct
  • \tau_1,\ \tau_2 — two candidate families of subsets of X
  • \mathcal{S}\subseteq\tau — a subfamily of τ
  • \bigcup\mathcal{S},\ \bigcap\mathcal{S} — union and intersection of a subfamily (intersection relative to X)
  • \mathcal{P}(X) — the power set, i.e. the discrete topology
  • \tau_{\mathrm{fin}} — the candidate family on ℕ
  • E — the set of even numbers in ℕ

Rules and sources

  • subset_def · prerequisite — Subset: A⊆B means every element of A is an element of B, i.e. ∀x (x∈A⇒x∈B).
  • set_operations_def · prerequisite — Set operations: x∈A∪B ⇔ x∈A or x∈B; x∈A∩B ⇔ x∈A and x∈B; x∈A∖B ⇔ x∈A and x∉B; in a universe U, Aᶜ=U∖A.
  • set_extensionality · prerequisite — Set equality: A=B if and only if A⊆B and B⊆A, i.e. they have the same elements.
  • nat_induction · prerequisite — Principle of induction: for a family P(n) starting at n₀, if P(n₀) holds and P(n)⇒P(n+1) for every n≥n₀, then P(n) holds for every n≥n₀.
  • numeric_evaluation · prerequisite — Exact evaluation of an explicit integer or rational expression; independently recomputable.
  • def_unfold · prerequisite — Unfolding a definition: replacing a defined term by its definition (or folding it back) does not change whether a statement is true.
  • logic_chain · prerequisite — Chaining: from P⇒Q and Q⇒R infer P⇒R; likewise for ⇔.
  • case_analysis · prerequisite — Proof by cases: if P∨Q holds and both P⇒R and Q⇒R are proved, then R holds. The cases must cover every possibility.
  • and_intro_elim · prerequisite — Conjunction: from P and Q infer P∧Q; from P∧Q infer P and infer Q.
  • contradiction · prerequisite — Proof by contradiction: if assuming ¬P leads to a contradiction (a statement and its negation both hold), then P holds.
  • order_basics · prerequisite — Order of the reals: exactly one of u<v, u=v, u>v holds; u<v and v<w give u<w; u<v gives u+w<v+w; u<v and w>0 give uw<vw; u<v and w<0 give uw>vw.
  • distributive · prerequisite — Distributivity: u(v+w)=uv+uw; with commutativity also (v+w)u=vu+wu.
  • mko_topology_def · cited — For a set X, a topology on X is a family τ⊆P(X) such that ∅∈τ, X∈τ, the union of any subfamily of τ belongs to τ, and the intersection of any finite subfamily of τ belongs to τ. The pair (X,τ) is a topological space. · mko-topological-space
  • family_ops · prerequisite — For a family 𝒮 of subsets of X: x∈⋃𝒮 ⇔ x∈A for some A∈𝒮; x∈⋂𝒮 ⇔ x∈X and x∈A for every A∈𝒮. Hence ⋃∅=∅ and ⋂∅=X.
  • finite_sets · prerequisite — The union of two finite sets is finite; a subset of a finite set is finite; every finite nonempty subset of ℕ has a largest element.
  • L_chain_extremes · lemma — If any two members of a finite nonempty family 𝒮 are comparable under ⊆, then 𝒮 has a largest member M (A⊆M for every A∈𝒮) and a smallest member m (m⊆A for every A∈𝒮).
  • L_chain_union · lemma — If M∈𝒮 is the largest member of 𝒮 then ⋃𝒮=M; if m∈𝒮 is the smallest member then ⋂𝒮=m (members of 𝒮 being subsets of X).

Main derivation

S01 · definition

Before

\tau\ \text{is a topology on}\ X

After

\tau\subseteq\mathcal{P}(X),\ \varnothing,X\in\tau,\ \forall\mathcal{S}\subseteq\tau:\ \bigcup\mathcal{S}\in\tau,\ \forall\ \text{finite}\ \mathcal{S}\subseteq\tau:\ \bigcap\mathcal{S}\in\tau

Conditions: none

Rule: mko_topology_def · Uses: G1, G2, mko_topology_def

Leaf basis: mko_topology_def + def_unfold

Write out the conditions to verify from the MKO's definition: every member is a subset of X; ∅ and X are in τ; the union of every subfamily (including the empty one and infinite ones) is in τ; the intersection of every finite subfamily (including the empty one) is in τ, with the empty intersection read as X (G2).

S02 · implies

Before

\tau_1=\{\varnothing,\{a\},\{a,b\},X\}

After

\tau_1\subseteq\mathcal{P}(X)

Conditions: none

Rule: subset_def · Uses: G1, subset_def

Leaf basis: subset_def

The elements of all four members lie among a, b, c, so each member is a subset of X (MKO assumption a1).

S03 · implies

Before

\mathcal{S}=\varnothing\subseteq\tau_1

After

\bigcup\varnothing=\varnothing\in\tau_1,\quad \bigcap\varnothing=X\in\tau_1

Conditions: none

Rule: family_ops · Uses: G2, family_ops, S02

Leaf basis: family_ops + set_extensionality

The empty family has no members, so no x lies in a member and ⋃∅=∅; and 'x∈A for every A∈∅' is vacuously true for every x∈X, so ⋂∅=X. Both ∅ and X are listed in τ₁. So the axioms '∅∈τ and X∈τ' are exactly the empty-family cases of the union and intersection conditions.

S04 · implies

Before

\varnothing,\ \{a\},\ \{a,b\},\ X

After

\varnothing\subseteq\{a\}\subseteq\{a,b\}\subseteq X

Conditions: none

Rule: subset_def · Uses: G1, subset_def

Leaf basis: subset_def + logic_chain

Check each inclusion: ∅ has no elements; a∈{a,b}; a, b∈X. By transitivity of ⊆, any two members of τ₁ are comparable: τ₁ is a chain.

S05 · implies

Before

\varnothing\neq\mathcal{S}\subseteq\tau_1

After

\mathcal{S}\ \text{has a largest member}\ M\ \text{and a smallest member}\ m

Conditions: \mathcal{S}\neq\varnothing

Rule: L_chain_extremes · Uses: S04, L_chain_extremes

Leaf basis: nat_induction + subset_def + case_analysis

τ₁ has only 4 members, so every subfamily is finite; members of a subfamily are still pairwise comparable (S04). By Lemma L_chain_extremes (proved in S05.1 to S05.3), every nonempty subfamily has a largest and a smallest member.

S06 · implies

Before

M,\ m\ \text{largest and smallest in}\ \mathcal{S}

After

\bigcup\mathcal{S}=M,\quad \bigcap\mathcal{S}=m

Conditions: \mathcal{S}\neq\varnothing

Rule: L_chain_union · Uses: S05, L_chain_union

Leaf basis: set_extensionality + family_ops + subset_def

By Lemma L_chain_union (proved in S06.1 and S06.2), the union of a nonempty subfamily is its largest member and the intersection is its smallest member.

S07 · case_split

Before

\mathcal{S}\subseteq\tau_1\ \text{arbitrary}

After

\bigcup\mathcal{S}\in\tau_1

Conditions: none

Rule: case_analysis · Uses: S03, S05, S06

Leaf basis: case_analysis + family_ops

Two cases: if 𝒮 is empty, ⋃𝒮=∅∈τ₁ (S03); if 𝒮 is nonempty, ⋃𝒮=M (S06) and M∈𝒮⊆τ₁. The two cases cover every subfamily of τ₁, so τ₁ is closed under arbitrary unions.

S08 · case_split

Before

\mathcal{S}\subseteq\tau_1\ \text{finite}

After

\bigcap\mathcal{S}\in\tau_1

Conditions: none

Rule: case_analysis · Uses: S03, S05, S06

Leaf basis: case_analysis + family_ops

If 𝒮 is empty, ⋂𝒮=X∈τ₁ (S03); if 𝒮 is nonempty, ⋂𝒮=m (S06) with m∈τ₁. So τ₁ is closed under finite intersections.

S09 · implies

Before

\tau_1\subseteq\mathcal{P}(X),\ \text{unions and finite intersections closed}

After

(X,\tau_1)\ \text{is a topological space}

Conditions: none

Rule: mko_topology_def · Uses: S02, S03, S07, S08, mko_topology_def

Leaf basis: mko_topology_def + and_intro_elim

S02, S03, S07 and S08 supply every condition of the definition. Count check: τ₁ has 4 members, hence 2⁴=16 subfamilies; S03 handles the 1 empty subfamily, and S07 and S08 handle the other 15 nonempty ones through S05 and S06. This is a proof covering the complete enumeration, not a sample.

S10 · implies

Before

\{a\},\ \{b\}\in\tau_2

After

\{a\}\cup\{b\}=\{a,b\}\notin\tau_2

Conditions: none

Rule: set_operations_def · Uses: G1, set_operations_def

Leaf basis: set_operations_def + set_extensionality + contradiction

{a}∪{b}={a,b}. Compare with the four members of τ₂: {a,b}≠∅ (it contains a); ≠{a} (it contains b, and b≠a); ≠{b} (it contains a, and a≠b); ≠X (c∉{a,b} since c≠a and c≠b). So the union of the subfamily {{a},{b}} is not in τ₂, and τ₂ is not a topology.

S11 · implies

Before

\tau_2=\{\varnothing,\{a\},\{b\},X\}

After

\varnothing,X\in\tau_2,\ \text{and}\ A\cap B\in\tau_2\ \text{for all}\ A,B\in\tau_2

Conditions: none

Rule: set_operations_def · Uses: G1, set_operations_def

Leaf basis: set_operations_def + numeric_evaluation

τ₂ contains ∅ and X; pairwise intersections: {a}∩{b}=∅, and A∩X=A, A∩∅=∅, A∩A=A for every A, all lie in τ₂ (C(4,2)=6 pairs of distinct members). So checking only intersections, or only ∅ and X, would wrongly accept τ₂; every kind of condition must be checked.

S12 · implies

Before

\{\varnothing,X\},\ \tau_1,\ \mathcal{P}(X)

After

\{\varnothing,X\}\subsetneq\tau_1\subsetneq\mathcal{P}(X)

Conditions: none

Rule: subset_def · Uses: S09, subset_def

Leaf basis: subset_def + set_operations_def + family_ops

Both members of the indiscrete topology {∅,X} are in τ₁, while {a}∈τ₁ is not in it; every member of τ₁ is a subset of X, while {b}∈P(X) is not in τ₁. P(X) has 2³=8 members and is a topology: unions and intersections of subsets of X are subsets of X. {∅,X} is a topology too: the union of any of its subfamilies is ∅ or X, and likewise the intersection. So the same X carries at least three different topologies, and τ₁ is finer than the indiscrete and coarser than the discrete topology.

S13 · implies

Before

A,B\in\tau_{\mathrm{fin}}

After

A\cup B\in\tau_{\mathrm{fin}},\ A\cap B\in\tau_{\mathrm{fin}};\ \varnothing,\mathbb{N}\in\tau_{\mathrm{fin}}

Conditions: none

Rule: finite_sets · Uses: G3, finite_sets

Leaf basis: finite_sets + case_analysis + set_operations_def

∅ is finite and ℕ is listed directly, so both are in τ_fin. Pairwise unions: if A and B are finite, A∪B is finite; if one is ℕ, the union is ℕ. Pairwise intersections: if one is finite, the intersection is a subset of a finite set and so finite; if both are ℕ, the intersection is ℕ. So τ_fin is closed under pairwise unions and pairwise intersections.

S14 · implies

Before

\mathcal{S}=\{\{2k\}:k\in\mathbb{N}\}\subseteq\tau_{\mathrm{fin}}

After

\bigcup\mathcal{S}=E\notin\tau_{\mathrm{fin}}

Conditions: none

Rule: family_ops · Uses: G3, family_ops

Leaf basis: family_ops + contradiction

Each singleton {2k} is finite and belongs to τ_fin. By the definition of union, ⋃𝒮=E is the set of all even numbers. E is not in τ_fin: S14.1 shows E≠ℕ and S14.2 shows E is not finite. So τ_fin is not closed under the union of this infinite subfamily and is not a topology, although every pairwise check of S13 passes.

S15 · implies

Before

\text{goals (1) to (4)}

After

\tau_1\ \text{topology};\ \tau_2,\ \tau_{\mathrm{fin}}\ \text{not topologies};\ \{\varnothing,X\}\subsetneq\tau_1\subsetneq\mathcal{P}(X)

Conditions: none

Rule: and_intro_elim · Uses: S09, S10, S12, S14

Leaf basis: and_intro_elim

Combine: S09 gives (1); S10 gives (2) (with S11 showing which checks it passes); S12 gives (3); S13 and S14 give (4).

Substeps and lemmas

S05.1 · induction_base

Before

|\mathcal{S}|=1,\ \mathcal{S}=\{A\}

After

M=m=A

Conditions: none

Rule: subset_def · Uses: subset_def

Leaf basis: subset_def

With a single member A, A⊆A, so A is both the largest and the smallest member.

S05.2 · induction_step

Before

|\mathcal{S}|=n+1,\ \mathcal{S}=\mathcal{S}'\cup\{A\},\ \mathcal{S}'\ \text{has}\ M',m'

After

\mathcal{S}\ \text{has a largest and a smallest member}

Conditions: n\ge 1

Rule: case_analysis · Uses: subset_def, case_analysis

Leaf basis: case_analysis + subset_def + logic_chain

Take A∈𝒮; 𝒮′=𝒮∖{A} has n members and is still a chain, so by the induction hypothesis it has a largest M′ and a smallest m′. A and M′ are comparable: if A⊆M′, then M′ is the largest member of 𝒮; if M′⊆A, then every B∈𝒮′ has B⊆M′⊆A, so A is the largest. The smallest member is found the same way by comparing A with m′.

S05.3 · implies

Before

P(1)\ \land\ \forall n\ge 1\,(P(n)\Rightarrow P(n+1))

After

\forall n\ge 1:\ P(n)

Conditions: none

Rule: nat_induction · Uses: S05.1, S05.2, nat_induction

Leaf basis: nat_induction

Let P(n) be 'every chain with n members has a largest and a smallest member'. By S05.1, S05.2 and the induction principle, P(n) holds for every n≥1. S05.1 to S05.3 prove Lemma L_chain_extremes.

S06.1 · implies

Before

M\in\mathcal{S},\ \forall A\in\mathcal{S}:\ A\subseteq M

After

\bigcup\mathcal{S}=M

Conditions: none

Rule: set_extensionality · Uses: family_ops, set_extensionality

Leaf basis: set_extensionality + family_ops

M∈𝒮, so M⊆⋃𝒮; if x∈⋃𝒮, then x∈A for some A∈𝒮, and A⊆M gives x∈M, so ⋃𝒮⊆M. Inclusion both ways gives equality.

S06.2 · implies

Before

m\in\mathcal{S},\ \forall A\in\mathcal{S}:\ m\subseteq A,\ m\subseteq X

After

\bigcap\mathcal{S}=m

Conditions: none

Rule: set_extensionality · Uses: family_ops, set_extensionality

Leaf basis: set_extensionality + family_ops

m∈𝒮, so ⋂𝒮⊆m; if x∈m, then x∈X and x lies in every A∈𝒮 (since m⊆A), so x∈⋂𝒮. Inclusion both ways gives equality. S06.1 and S06.2 prove Lemma L_chain_union.

S14.1 · implies

Before

1\in E\ ?

After

1\notin E,\ \text{so}\ E\neq\mathbb{N}

Conditions: none

Rule: set_extensionality · Uses: G3

Leaf basis: set_extensionality + order_basics + case_analysis

If 1=2k, then k=0 gives 0 and k≥1 gives at least 2, neither of which is 1; so 1∉E, while 1∈ℕ, hence E≠ℕ.

S14.2 · implies

Before

E\ \text{finite}\ ?

After

E\ \text{is infinite}

Conditions: none

Rule: contradiction · Uses: G3, finite_sets

Leaf basis: contradiction + finite_sets + distributive

Suppose E were finite. 0∈E, so E is nonempty and by finite_sets has a largest element m=2j. But m+2=2(j+1)∈E and m+2>m, contradicting maximality. So E is infinite.

Reverse audits

  • S15 · sufficient_goal_reduction · S09, S10, S12, S14, and_intro_elim — Goal G: the four parts. Sufficient condition H: the conclusions of S09, S10, S12 and S14; H⇒G is conjunction, and H is proved forwards from the givens.
  • S14.2 · premise_audit · finite_sets, contradiction — The contradiction relies on 'a finite nonempty set of naturals has a largest element' and 2j+2=2(j+1) (N6).
  • S14.1 · premise_audit · set_extensionality, order_basics — One natural number outside E suffices to show the sets differ (N5).
  • S14 · premise_audit · G3, family_ops — The counterexample needs an infinite subfamily; unions of finite subfamilies cause no problem (S13). The conclusion depends on S14.1 and S14.2.
  • S13 · premise_audit · G3, finite_sets, case_analysis — The cases are exhaustive; only pairwise (hence finite) closure is claimed, not closure under arbitrary unions.
  • S12 · premise_audit · S09, subset_def, set_operations_def — Finer and coarser compare families of open sets by inclusion (MKO paragraph 2), not the size of the underlying set; each strict inclusion is confirmed by a witness member ({a} and {b}).
  • S11 · premise_audit · G1, set_operations_def — This step does not change the conclusion of S10; it only shows which checks τ₂ passes.
  • S10 · premise_audit · G1, set_operations_def, set_extensionality — One counterexample subfamily suffices to refute; it uses that a, b, c are pairwise distinct (G1).
  • S09 · sufficient_goal_reduction · S02, S03, S07, S08, mko_topology_def, and_intro_elim — Goal G: τ₁ is a topology. Sufficient condition H: S02, S03, S07 and S08 together; H⇒G by the definition. H is proved forwards from G1 and G2; G is never used as a premise.
  • S08 · premise_audit · S03, S05, S06, case_analysis — The two cases exhaust all finite subfamilies.
  • S07 · premise_audit · S03, S05, S06, case_analysis — 'Empty' and 'nonempty' exhaust all subfamilies; since τ₁ is finite, every subfamily is finite, so no infinite subfamily is missed.
  • S06.2 · premise_audit · family_ops, set_extensionality — It uses the fact that m is the smallest member and m⊆X; the lemma itself is not used.
  • S06.1 · premise_audit · family_ops, set_extensionality — The two inclusions use M∈𝒮 and the fact that M is the largest member, respectively; the lemma itself is not used.
  • S06 · premise_audit · S05, L_chain_union — M and m must belong to 𝒮; the empty family has no largest member, which is why it was handled separately in S03.
  • S05.3 · premise_audit · S05.1, S05.2, nat_induction — Base and step are both proved, without using the lemma itself.
  • S05.2 · premise_audit · subset_def, case_analysis — Comparability makes the two cases exhaustive; only transitivity of ⊆ and the induction hypothesis are used.
  • S05.1 · premise_audit · subset_def — Only reflexivity of ⊆ is used.
  • S05 · premise_audit · S04, L_chain_extremes — The lemma needs finiteness, nonemptiness and comparability, all confirmed.
  • S04 · premise_audit · G1, subset_def — Only these four sets are claimed to form a chain; a general family need not (in τ₂, {a} and {b} are incomparable).
  • S03 · premise_audit · G2, family_ops — Taking X for the intersection is a convention relative to the fixed underlying set (MKO assumption a2); without it ⋂∅ would be meaningless.
  • S02 · premise_audit · G1, subset_def — The four members are checked one by one; no other condition is claimed.
  • S01 · premise_audit · G1, G2, mko_topology_def — This step only unfolds the definition; failure of any one condition means 'not a topology'.

Error controls and negative controls

Not every family of subsets is a topology

The misconception the MKO names: treating any family of subsets as a topology. τ₂ contains ∅ and X and is closed under intersections, yet it is not a topology because {a}∪{b}={a,b}∉τ₂ (S10, S11). Every kind of condition must be checked.

Pairwise closure is not arbitrary closure

The other misconception the MKO names: taking closure under pairwise unions for closure under arbitrary unions. τ_fin is closed under pairwise unions (S13), but the union of the infinitely many singletons {0}, {2}, {4} and so on is the set of even numbers, which is not in τ_fin (S14). For a finite family containing ∅, every subfamily is finite and binary-union closure together with the empty-union condition suffices; without ∅ the empty subfamily can still fail; for τ₁ this guide uses the chain lemma to handle all subfamilies at once.

Do not forget the empty family

The axioms ∅∈τ and X∈τ are exactly the cases of the empty union and the empty intersection (S03). {{a},{a,b},X}, which lacks ∅, and {∅,{a},{a,b}}, which lacks X, are not topologies.

Finer and coarser compare families of open sets

τ₁⊆P(X) means P(X) is finer and τ₁ coarser; this is inclusion of families of open sets and has nothing to do with the size of X (MKO paragraph 2).

  • τ₂={∅,{a},{b},X} contains ∅ and X and is closed under intersections, so it is a topology → reject — {a}∪{b}={a,b}∉τ₂, so the union condition fails.
  • τ_fin is closed under pairwise unions, hence under arbitrary unions, so it is a topology on ℕ → reject — The union of the singletons {2k} is the set of even numbers, which is neither finite nor equal to ℕ.
  • {{a},{a,b},X} is a topology on X → reject — It lacks ∅, that is, the union of the empty family is not in it; this alone refutes it.
  • {∅,{a},{a,b}} is a topology on X → reject — It lacks X, that is, the intersection of the empty family (read as X) is not in it.
  • τ₁ is finer than P(X) → reject — τ₁⊊P(X), so P(X) is finer; for example {b}∈P(X) but {b}∉τ₁.

Result and limitations

τ₁={∅,{a},{a,b},X} is a topology on X={a,b,c}: it is a chain, the union and intersection of a nonempty subfamily are its largest and smallest members, the empty family gives ∅ and X, and all 16 subfamilies are covered. τ₂={∅,{a},{b},X} is not a topology, since {a}∪{b}={a,b}∉τ₂, although it contains ∅ and X and is closed under intersections. {∅,X}⊊τ₁⊊P(X). On ℕ, τ_fin is closed under pairwise unions and finite intersections, but the set of even numbers is a union of its singletons and is not in τ_fin, so τ_fin is not a topology.

  • finite_sets (a union of two finite sets is finite, a subset of a finite set is finite, a finite nonempty set of naturals has a largest element) is used as prerequisite knowledge and not proved here.
  • The general remark needs its empty-family qualification: a finite family of sets that contains ∅ and is closed under binary unions is closed under unions of arbitrary subfamilies. Membership of ∅ handles the empty subfamily. This guide does not separately prove or use that general result; the complete proof for τ₁ still uses the chain lemma and treats the empty family separately.

Verification and source binding

6 declared checks for this guide; only the listed expressions are covered.

  • source commit: b28a5edbd46279b1db2a3f3f48bb3f447e18899f
  • adopted source SHA-256: 4da430d185bcefe3f83821030d9b54994119c5304ce3b95397b135d2151f8de7
  • original source SHA-256: 9fc206f52faa8c93d175434ba7de7802035b74beb7ba12cd2a3c31cc736a538d
  • Lean: NOT_RUN · independent AI: NOT_MEASURED

Same-source full JSON (formulas, ASTs, controls and revision log)