Hyperfields/Fields/Hypertopology.lean
Explanation legend
L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.
- L4DEL
- Lean4 Domain Explanation Language
25 declarations, 0 contain sorry, 0 axioms
Hypertopology
[FRAME] Finite topological interpretation of recursive nearness.
This is the Lean port of the local hypertopology candidate. It carries the
finite topology frame and the properties that frame establishes, and nothing
more.
What is proved here is finite and mechanical. A topology over a carrier of known size is a list of open sets; the axioms that matter are that the empty set and the whole carrier are open, that the opens are closed under union and intersection, and that closure, interior, and boundary are the operations the frame defines. Those are decidable over a finite carrier, so the compiler checks them.
The carrier's size is a type parameter rather than a field. A Fin n
whose n is a structure field cannot be given a literal point, because the
elaborator cannot reduce the field to a numeral at that point. Making the
size a parameter means each topology is a type-level choice, and the
numerals are ordinary literals.
What is not proved here, and cannot be, is any claim that nearness has a
topological nature in general. The frame is a finite carrier with a chosen
collection of opens. It does not say that recursive nearness is continuous,
and it does not say that the finite models here are the intended ones. The
Python source carries the same [FRAME] classification, and this port keeps
it: a finite consistency result is not a foundation.
Imports (2)
Imported by 1 file
- structure
Hyperfields.Fields.Hypertopology.FiniteTopologyA finite topology over a fixed carrier line 52 sourceA finite topology over a carrier of
npoints.The carrier is
Fin n, so the number of points is fixed by the type rather than checked at runtime, and every point is a decidable value. The opens are a list of carrier subsets;wellShapedis where the axioms are checked.The carrier's size is part of its type, so a topology is a finite list of opens over a known number of points.
no axioms what this means
Statement uses:
Natstructure FiniteTopology (n : Nat) where …
- def
Hyperfields.Fields.Hypertopology.FiniteTopology.wellShapedThe axioms a finite topology must satisfy line 70 sourceWhether the opens satisfy the topology axioms.
The three axioms are checked here rather than assumed:
- The empty set is open.
- The whole carrier is open.
- The opens are closed under union and intersection.
The checks are decidable because the carrier is finite and its equality is decidable.
A topology is empty set, whole carrier, and closure under the two lattice operations; a frame that drops any of these is not a topology.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Hyperfields.Fields.Hypertopology.FiniteTopology,BoolProof uses:
List,Fin, Hyperfields.Finite.carrier, Hyperfields.Finite.finLe,Bool.and, Hyperfields.Finite.mem,List.nil,Hyperfields.Fields.Hypertopology.FiniteTopology.opens,List.all, Hyperfields.Finite.union, Hyperfields.Finite.inter5 instances, coercions and auxiliary constants left out.
def FiniteTopology.wellShaped {n : Nat} (topology : FiniteTopology n) : Bool := … - def
Hyperfields.Fields.Hypertopology.FiniteTopology.closureThe closure of a subset line 94 sourceThe closure of a subset: the intersection of every closed superset of it.
A closed superset of
subsetis the complement of an open set that containssubset. The closure is therefore the intersection of all such complements, which is exactly the definition on a finite carrier.Closure is the intersection of every closed superset of the subset, and on a finite carrier that intersection is computable.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Hyperfields.Fields.Hypertopology.FiniteTopology,List,FinProof uses: Hyperfields.Finite.carrier,
Bool, Hyperfields.Finite.finLe,List.foldl, Hyperfields.Finite.diff,ite,Eq, Hyperfields.Finite.subset,Bool.true, Hyperfields.Finite.inter,Hyperfields.Fields.Hypertopology.FiniteTopology.opens5 instances, coercions and auxiliary constants left out.
def FiniteTopology.closure {n : Nat} (topology : FiniteTopology n) (candidate : List (Fin n)) : List (Fin n) := … - def
Hyperfields.Fields.Hypertopology.FiniteTopology.interiorThe interior of a subset line 107 sourceThe interior of a subset: the union of every open set contained in it.
Interior is the union of every open set contained in the subset, which is the largest open set inside it.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Hyperfields.Fields.Hypertopology.FiniteTopology,List,FinProof uses:
Bool, Hyperfields.Finite.finLe,List.foldl,ite,Eq, Hyperfields.Finite.subset,Bool.true, Hyperfields.Finite.union,List.nil,Hyperfields.Fields.Hypertopology.FiniteTopology.opens5 instances, coercions and auxiliary constants left out.
def FiniteTopology.interior {n : Nat} (topology : FiniteTopology n) (candidate : List (Fin n)) : List (Fin n) := … - def
Hyperfields.Fields.Hypertopology.FiniteTopology.boundaryThe boundary of a subset line 119 sourceThe boundary of a subset: the intersection of its closure with the closure of its complement.
The boundary is where the closure and the closure of the complement meet, so it is the set of points that cannot be avoided on either side.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Hyperfields.Fields.Hypertopology.FiniteTopology,List,FinProof uses: Hyperfields.Finite.carrier,
Bool, Hyperfields.Finite.finLe, Hyperfields.Finite.inter, Hyperfields.Fields.Hypertopology.FiniteTopology.closure, Hyperfields.Finite.diff4 instances, coercions and auxiliary constants left out.
def FiniteTopology.boundary {n : Nat} (topology : FiniteTopology n) (candidate : List (Fin n)) : List (Fin n) := … - def
Hyperfields.Fields.Hypertopology.continuousBetweenContinuity of a map between finite topologies line 134 sourceWhether a map between two finite topologies is continuous.
The map is given as a list of pairs, one per source point, and must be total and single valued. Continuity is checked by pulling back every open set of the target and asking whether the result is open in the source.
A map is continuous when the inverse image of every open set is open, which is decidable over a finite carrier.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Hyperfields.Fields.Hypertopology.FiniteTopology,List,Prod,Fin,BoolProof uses: Hyperfields.Finite.carrier,
Bool.and,BEq.beq,List.length,List.all, Hyperfields.Finite.mem,Prod.fst,Prod.snd,List.eraseDups,List.map,Hyperfields.Fields.Hypertopology.FiniteTopology.opens,List.filter7 instances, coercions and auxiliary constants left out.
def continuousBetween {m n : Nat} (source : FiniteTopology m) (target : FiniteTopology n) (mapping : List (Fin m × Fin n)) : Bool := … - def
Hyperfields.Fields.Hypertopology.discreteTwoThe discrete topology on two points line 155 sourceThe discrete topology on two points: every subset is open.
Every subset is open, which is the finest possible topology and the strictest test of continuity.
standard axioms: propext what this means
Statement uses: Hyperfields.Fields.Hypertopology.FiniteTopology,
OfNat.ofNat,NatProof uses:
Hyperfields.Fields.Hypertopology.FiniteTopology.mk,List.cons,List,Fin,List.nil4 instances, coercions and auxiliary constants left out.
def discreteTwo : FiniteTopology 2 where …
- def
Hyperfields.Fields.Hypertopology.indiscreteTwoThe indiscrete topology on two points line 161 sourceThe indiscrete topology on two points: only the empty set and the whole carrier are open.
Only the empty set and the whole carrier are open, which is the coarsest possible topology.
standard axioms: propext what this means
Statement uses: Hyperfields.Fields.Hypertopology.FiniteTopology,
OfNat.ofNat,NatProof uses:
Hyperfields.Fields.Hypertopology.FiniteTopology.mk,List.cons,List,Fin,List.nil4 instances, coercions and auxiliary constants left out.
def indiscreteTwo : FiniteTopology 2 where …
- def
Hyperfields.Fields.Hypertopology.chainTopologyA three-point topology line 173 sourceA concrete three-point topology used to check the axioms and the operations.
The carrier is
{0, 1, 2}and the opens are∅,{0},{0, 1}, and the whole carrier. This is the finite chain topology, and every property below is checked by the compiler rather than asserted.A concrete frame lets the compiler check the axioms and the operations against something a reader can see.
standard axioms: propext what this means
Statement uses: Hyperfields.Fields.Hypertopology.FiniteTopology,
OfNat.ofNat,NatProof uses:
Hyperfields.Fields.Hypertopology.FiniteTopology.mk,List.cons,List,Fin,List.nil4 instances, coercions and auxiliary constants left out.
def chainTopology : FiniteTopology 3 where …
- theorem
Hyperfields.Fields.Hypertopology.chain_topology_is_well_shapedThe chain topology satisfies the axioms line 184 sourceThe three-point chain topology satisfies the topology axioms.
The concrete example must actually clear the axioms the frame demands, or the example proves nothing.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Bool, Hyperfields.Fields.Hypertopology.FiniteTopology.wellShaped,OfNat.ofNat,Nat, Hyperfields.Fields.Hypertopology.chainTopology,Bool.trueProof uses:
of_decide_eq_true,id,Decidable.decide,Eq.refl3 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
decideline 185before⊢ chainTopology.wellShaped = true
afterno goals remain
theorem chain_topology_is_well_shaped : chainTopology.wellShaped = true := by …
- theorem
Hyperfields.Fields.Hypertopology.discrete_two_is_well_shapedThe discrete topology satisfies the axioms line 190 sourceThe discrete two-point topology satisfies the topology axioms.
The concrete example must clear the axioms it is used to test.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Bool, Hyperfields.Fields.Hypertopology.FiniteTopology.wellShaped,OfNat.ofNat,Nat, Hyperfields.Fields.Hypertopology.discreteTwo,Bool.trueProof uses:
of_decide_eq_true,id,Decidable.decide,Eq.refl3 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
decideline 191before⊢ discreteTwo.wellShaped = true
afterno goals remain
theorem discrete_two_is_well_shaped : discreteTwo.wellShaped = true := by …
- theorem
Hyperfields.Fields.Hypertopology.indiscrete_two_is_well_shapedThe indiscrete topology satisfies the axioms line 196 sourceThe indiscrete two-point topology satisfies the topology axioms.
The coarsest possible topology still satisfies the axioms, which is the check that the axioms are not too strong.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Bool, Hyperfields.Fields.Hypertopology.FiniteTopology.wellShaped,OfNat.ofNat,Nat, Hyperfields.Fields.Hypertopology.indiscreteTwo,Bool.trueProof uses:
of_decide_eq_true,id,Decidable.decide,Eq.refl3 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
decideline 197before⊢ indiscreteTwo.wellShaped = true
afterno goals remain
theorem indiscrete_two_is_well_shaped : indiscreteTwo.wellShaped = true := by …
- theorem
Hyperfields.Fields.Hypertopology.chain_closure_of_openThe closure of the open set {0, 1} line 210 sourceThe closure of
{0, 1}in the chain topology is the whole carrier.This is the case that a hand-written intuition gets wrong. The set
{0, 1}is open, but it is not closed: the only closed set that contains it is{0, 1, 2}itself. Closure is the intersection of the closed supersets, not the smallest closed set equal to the argument, so the closure is the whole carrier. The compiler checks this against the definition.Closure is the intersection of the closed supersets, and on a chain the only closed superset of `{0, 1}` is the whole carrier.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,List,Fin,OfNat.ofNat,Nat, Hyperfields.Fields.Hypertopology.FiniteTopology.closure, Hyperfields.Fields.Hypertopology.chainTopology,List.cons,List.nilProof uses:
of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl8 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
decideline 212before⊢ chainTopology.closure [0, 1] = [0, 1, 2]
afterno goals remain
theorem chain_closure_of_open : chainTopology.closure [0, 1] = [0, 1, 2] := by … - theorem
Hyperfields.Fields.Hypertopology.chain_closure_of_closedThe closure of the closed set {2} line 217 sourceThe closure of
{2}in the chain topology is{2}.A closed set's closure is itself, because it is one of its own closed supersets and the intersection cannot grow past it.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,List,Fin,OfNat.ofNat,Nat, Hyperfields.Fields.Hypertopology.FiniteTopology.closure, Hyperfields.Fields.Hypertopology.chainTopology,List.cons,List.nilProof uses:
of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl8 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
decideline 219before⊢ chainTopology.closure [2] = [2]
afterno goals remain
theorem chain_closure_of_closed : chainTopology.closure [2] = [2] := by … - theorem
Hyperfields.Fields.Hypertopology.chain_interior_of_carrierThe interior of the whole carrier line 224 sourceThe interior of the whole carrier in the chain topology is the whole carrier.
The interior of the whole carrier is the whole carrier, because the carrier is open.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,List,Fin,OfNat.ofNat,Nat, Hyperfields.Fields.Hypertopology.FiniteTopology.interior, Hyperfields.Fields.Hypertopology.chainTopology,List.cons,List.nilProof uses:
of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl8 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
decideline 226before⊢ chainTopology.interior [0, 1, 2] = [0, 1, 2]
afterno goals remain
theorem chain_interior_of_carrier : chainTopology.interior [0, 1, 2] = [0, 1, 2] := by … - theorem
Hyperfields.Fields.Hypertopology.chain_interior_of_tailThe interior of the set {1, 2} line 231 sourceThe interior of
{1, 2}in the chain topology is empty.The interior is the largest open set inside the subset, and on the chain no nonempty open set lies inside `{1, 2}`.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,List,Fin,OfNat.ofNat,Nat, Hyperfields.Fields.Hypertopology.FiniteTopology.interior, Hyperfields.Fields.Hypertopology.chainTopology,List.cons,List.nilProof uses:
of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl7 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
decideline 233before⊢ chainTopology.interior [1, 2] = []
afterno goals remain
theorem chain_interior_of_tail : chainTopology.interior [1, 2] = [] := by … - theorem
Hyperfields.Fields.Hypertopology.chain_interior_of_openThe interior of the set {0, 1} line 238 sourceThe interior of
{0, 1}in the chain topology is{0, 1}.`{0, 1}` is itself open on the chain, so it is the largest open set inside itself and the interior is the set.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,List,Fin,OfNat.ofNat,Nat, Hyperfields.Fields.Hypertopology.FiniteTopology.interior, Hyperfields.Fields.Hypertopology.chainTopology,List.cons,List.nilProof uses:
of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl8 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
decideline 240before⊢ chainTopology.interior [0, 1] = [0, 1]
afterno goals remain
theorem chain_interior_of_open : chainTopology.interior [0, 1] = [0, 1] := by … - theorem
Hyperfields.Fields.Hypertopology.chain_boundary_of_openThe boundary of the open set {0, 1} line 253 sourceThe boundary of
{0, 1}in the chain topology is{2}.The boundary is where the set and its complement meet.
{0, 1}does not contain2and its complement{2}does not contain any of{0, 1}, so2is not a boundary point of the set itself; the boundary of the set is the closure of{0, 1}intersected with the closure of{2}, which is{2}.A set that is open but not closed has a nonempty boundary, and on the chain the boundary of `{0, 1}` is the point that cannot be avoided.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,List,Fin,OfNat.ofNat,Nat, Hyperfields.Fields.Hypertopology.FiniteTopology.boundary, Hyperfields.Fields.Hypertopology.chainTopology,List.cons,List.nilProof uses:
of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl8 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
decideline 255before⊢ chainTopology.boundary [0, 1] = [2]
afterno goals remain
theorem chain_boundary_of_open : chainTopology.boundary [0, 1] = [2] := by … - theorem
Hyperfields.Fields.Hypertopology.chain_boundary_of_singletonThe boundary of the singleton {0} line 260 sourceThe boundary of
{0}in the chain topology is{1, 2}.An open singleton on a chain still has a boundary, because the chain continues past it.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,List,Fin,OfNat.ofNat,Nat, Hyperfields.Fields.Hypertopology.FiniteTopology.boundary, Hyperfields.Fields.Hypertopology.chainTopology,List.cons,List.nilProof uses:
of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl8 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
decideline 262before⊢ chainTopology.boundary [0] = [1, 2]
afterno goals remain
theorem chain_boundary_of_singleton : chainTopology.boundary [0] = [1, 2] := by … - theorem
Hyperfields.Fields.Hypertopology.chain_boundary_of_carrierThe boundary of the whole carrier line 267 sourceThe boundary of the whole carrier in the chain topology is empty.
The carrier is closed, so its boundary is empty and the chain is connected.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,List,Fin,OfNat.ofNat,Nat, Hyperfields.Fields.Hypertopology.FiniteTopology.boundary, Hyperfields.Fields.Hypertopology.chainTopology,List.cons,List.nilProof uses:
of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl7 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
decideline 269before⊢ chainTopology.boundary [0, 1, 2] = []
afterno goals remain
theorem chain_boundary_of_carrier : chainTopology.boundary [0, 1, 2] = [] := by … - theorem
Hyperfields.Fields.Hypertopology.chain_identity_is_continuousAn identity map on the chain is continuous line 274 sourceThe identity map from the chain topology to itself is continuous.
The identity map pulls every open set back to itself, and every open set is open, so it is continuous.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Bool, Hyperfields.Fields.Hypertopology.continuousBetween,OfNat.ofNat,Nat, Hyperfields.Fields.Hypertopology.chainTopology,List.cons,Prod,Fin,Prod.mk,List.nil,Bool.trueProof uses:
of_decide_eq_true,id,Decidable.decide,Eq.refl7 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
decideline 276before⊢ continuousBetween chainTopology chainTopology [(0, 0), (1, 1), (2, 2)] = true
afterno goals remain
theorem chain_identity_is_continuous : continuousBetween chainTopology chainTopology [(0, 0), (1, 1), (2, 2)] = true := by …Mentions: Hyperfields.Fields.Hypertopology.continuousBetween, Hyperfields.Fields.Hypertopology.chainTopology
- theorem
Hyperfields.Fields.Hypertopology.chain_to_discrete_is_continuousA map to a finer topology is continuous line 281 sourceA constant map from the chain topology to the discrete two-point topology is continuous.
A constant map is continuous into any topology, because the preimage of every open set is either everything or nothing, and both are open.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Bool, Hyperfields.Fields.Hypertopology.continuousBetween,OfNat.ofNat,Nat, Hyperfields.Fields.Hypertopology.chainTopology, Hyperfields.Fields.Hypertopology.discreteTwo,List.cons,Prod,Fin,Prod.mk,List.nil,Bool.trueProof uses:
of_decide_eq_true,id,Decidable.decide,Eq.refl7 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
decideline 283before⊢ continuousBetween chainTopology discreteTwo [(0, 0), (1, 0), (2, 0)] = true
afterno goals remain
theorem chain_to_discrete_is_continuous : continuousBetween chainTopology discreteTwo [(0, 0), (1, 0), (2, 0)] = true := by …Mentions: Hyperfields.Fields.Hypertopology.continuousBetween, Hyperfields.Fields.Hypertopology.chainTopology, Hyperfields.Fields.Hypertopology.discreteTwo
- theorem
Hyperfields.Fields.Hypertopology.chain_to_indiscrete_is_continuousA map to a coarser topology is continuous line 288 sourceA map from the chain topology to the indiscrete two-point topology is continuous.
A coarser target has fewer obligations, so a total map that meets them is continuous.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Bool, Hyperfields.Fields.Hypertopology.continuousBetween,OfNat.ofNat,Nat, Hyperfields.Fields.Hypertopology.chainTopology, Hyperfields.Fields.Hypertopology.indiscreteTwo,List.cons,Prod,Fin,Prod.mk,List.nil,Bool.trueProof uses:
of_decide_eq_true,id,Decidable.decide,Eq.refl7 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
decideline 290before⊢ continuousBetween chainTopology indiscreteTwo [(0, 0), (1, 0), (2, 0)] = true
afterno goals remain
theorem chain_to_indiscrete_is_continuous : continuousBetween chainTopology indiscreteTwo [(0, 0), (1, 0), (2, 0)] = true := by …Mentions: Hyperfields.Fields.Hypertopology.continuousBetween, Hyperfields.Fields.Hypertopology.chainTopology, Hyperfields.Fields.Hypertopology.indiscreteTwo
- theorem
Hyperfields.Fields.Hypertopology.a_noncontinuous_map_is_rejectedA discontinuous map is rejected line 304 sourceA map that pulls an open set back to a non-open set is not continuous.
This is the negative case. A checker that never rejects anything is not a check, and this theorem is what makes the positive cases meaningful.
The map sends
1and2to different points of the discrete target, so the preimage of the target's open set{0}is{0}, which is not open in the chain topology. The map is therefore not continuous.The continuity check must be able to fail, or it certifies nothing.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Bool, Hyperfields.Fields.Hypertopology.continuousBetween,OfNat.ofNat,Nat, Hyperfields.Fields.Hypertopology.chainTopology, Hyperfields.Fields.Hypertopology.discreteTwo,List.cons,Prod,Fin,Prod.mk,List.nil,Bool.falseProof uses:
of_decide_eq_true,id,Decidable.decide,Bool.true,Eq.refl7 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
decideline 306before⊢ continuousBetween chainTopology discreteTwo [(0, 0), (1, 1), (2, 0)] = false
afterno goals remain
theorem a_noncontinuous_map_is_rejected : continuousBetween chainTopology discreteTwo [(0, 0), (1, 1), (2, 0)] = false := by …Mentions: Hyperfields.Fields.Hypertopology.continuousBetween, Hyperfields.Fields.Hypertopology.chainTopology, Hyperfields.Fields.Hypertopology.discreteTwo
- def
Hyperfields.Fields.Hypertopology.entryHypertopology explainer entry line 316 sourceThe canonical Hypertopology record used by the unified portal.
This declaration exposes the checked ecosystem record for Hypertopology on its own stable explainer page.
See also: Hyperfields.hypertopology
no axioms what this means
Statement uses: Hyperfields.Entry
Proof uses: Hyperfields.hypertopology
def entry : Hyperfields.Entry := Hyperfields.hypertopology …
Mentions: Hyperfields.Entry, Hyperfields.hypertopology