Construct an empty store with one entry per bank in BANK_IDS. Pre-allocating avoids null-checks in the insertion path.
Insert a fact. Routes into fact.bank by membership in the
appropriate banks[bank] set. Re-inserting the same ID overwrites
the prior fact and leaves bank membership unchanged.
Insert a typed edge. Stores both the forward edge (from โ to)
and a paired reverse edge (to โ from) so spreading activation
traverses bidirectionally per Hindsight ยง2.4.1. Identical reverse-
edge insertion is what makes entity, semantic, and temporal links
bidirectional by construction.
Delete facts by ID, from every bank they are filed in (a fact added again under another bank stays filed in the bank it had, see addFact), with every edge that starts or ends at one of them. Unknown IDs are skipped.
How many facts were deleted.
In-memory 4-bank store. Holds facts indexed by ID + per-bank ID set