We hebben begrepen dat de werkelijkheid een "indien... dan..." constructie is die te testen is. Elke uitspraak over de werkelijkheid moet dus te operationaliseren zijn. Operationaliseren betekent dat men zowel de aanwezigheid van “a” als van “iets anders dan a” valoriseert, waarde geeft. Een potentiële structuur wordt uitgedrukt als een “indien... dan...” constructie. Zo ook moet een veronderstelde causale structuur in de werkelijkheid te operationaliseren zijn. We zeggen dat twee of meer variabelen met elkaar in causaal verband staan als hun waarden (door middel van een regel) zodanig aan elkaar gekoppeld zijn dat een doelbewuste verandering in de waarde van één variabele de waarde van de andere variabele op een met zekerheid gekende manier verandert. Er moet dus niet alleen een volledige correlatie tussen de betrokken elementen bestaan maar we moeten er ook op een voorspelbare en zekere manier greep op hebben, we moeten kunnen manipuleren, anticiperen en ervaren. Voor zo'n constructies kan men altijd spreken van een voorwaarde, waarbij twee soorten voorwaarden onderscheiden kunnen worden.
Klassiek zegt men: als een gebeurtenis a niet plaatsvindt, tenzij aan een bepaalde voorwaarde n is voldaan, dan is die voorwaarde noodzakelijk voor die gebeurtenis.
Is n noodzakelijk voor a dan zal n optreden telkens als a optreedt. Maar aangezien we geïnteresseerd zijn in de werkelijkheid zal dit telkens weer moeten blijken, we kunnen hierover geen zekerheid hebben. In de loop van ons ervaren met a kan ooit wel eens blijken dat n niet optreedt.
Formeel: n<a>↔<>
We merken dat wanneer a↔<>, dat dan moet dat n↔<>. Het punt n hoeft niet fijner gekend te zijn, en is misschien te ruim, wat ooit in de loop van ons ervaren met a kan blijken.
Maar wat kunnen we nu wel operationaliseren? Zonder te moeten wachten op iets dat ooit wel zou kunnen gebeuren kunnen we nu al iets anders dan n verwezenlijken en hopen we dan te vinden dat iets anders dan a bereikt wordt. Dat is dus operationaliseren dat n noodzakelijk is voor het optreden van a. Als we dus weten wat noodzakelijk is om een gebeurtenis te laten plaatsvinden, beschikken we over een manier om te voorkomen dat dit gebeurt. Als we over de vereiste techniek beschikken kunnen we <n>↔<> houden.
Formeel: <<n>><a>↔<>
We merken dat wanneer <n>↔<>, dat dan moet dat <a>↔<>. a ↔<> lukt niet, n is dus noodzakelijk.
Merk ook op dat dit dezelfde uitdrukking is als n<a>↔<>, wat de kracht van het haakformalisme nog eens illustreert.
Een test zou dus trachten de gebeurtenis te laten plaatsvinden (a↔<>) bij afwezigheid van de voorwaarde (<n>↔<>). Gewoonlijk zal dit vrij snel blijken, maar ook hier is er geen zekerheid. Het zou kunnen dat de testen uitwijzen dat n verder moet verfijnd worden.
We merken op: een voorwaarde n is noodzakelijk wil zeggen dat, als er niet aan voldaan is, het doel a ook niet wordt bereikt. Dit sluit niet uit dat n kan optreden in afwezigheid van a.
Dat ik iets ervaar is noodzakelijk voor elke gebeurtenis die ik ervaar. Dat geldt voor elke willekeurige agens.
Zo zullen we ook de term "produceren" operationeel definiëren: x produceert y dan en slechts dan wanneer (het optreden van) x noodzakelijk is voor (het optreden van) y. Noem x een producent en y een product dan is duidelijk dat een producent alleen geen voldoende voorwaarde is voor een product.
Als een gebeurtenis plaatsvindt als aan een bepaalde voorwaarde is voldaan, dan is die voorwaarde voldoende om de gebeurtenis te laten plaatsvinden. We zeggen: “als v dan a”.
Formeel: a<v>↔<>.
Maar aangezien we ook hier geïnteresseerd zijn in de werkelijkheid zal dit telkens weer moeten blijken, we kunnen hierover geen zekerheid hebben. In de loop van ons ervaren met v kan ooit wel eens blijken dat a niet optreedt.
En ook hier kunnen we een test uitvoeren. Een test zou de gebeurtenis trachten te voorkomen, dus iets anders verwerkelijken dan de gebeurtenis (<a>↔<>), terwijl de voldoende voorwaarde wel aanwezig is.
Formeel: <<a>><v>↔<>.
Stel dat v↔<>, dan volgt uit de uitdrukking dat a↔<>, <a> treedt niet op.
Ook hier merken we op dat <<a>><v>↔a<v>.
En ook hier hebben we geen absolute zekerheid, het zou ooit eens in de loop van de testen kunnen blijken dat toch iets anders dan a optreedt en dat a fijner moet gekend worden.
Als we weten welke voorwaarden voldoende zijn om een gebeurtenis te laten plaatsvinden (dus als we over de vereiste techniek beschikken) stelt dat ons in staat de gebeurtenis opzettelijk te veroorzaken.
Voorbeeld: zuurstof (z), ontvlambaar materiaal (m) en een temperatuur die hoog genoeg is (t) zijn voldoende voor branden a.
Formeel a<<<z><m><t>>>↔<>, of gereduceerd: a<z><m><t>↔<>
Een test zou de gebeurtenis trachten te voorkomen (<a>↔<>), terwijl de voldoende voorwaarden wel aanwezig zijn (zowel z ↔<>, als m↔<>, als t↔<>). Inderdaad enkel in dat geval is a↔<>. Stel dat enkel z↔<>, dan is dat niet zo, z alleen is niet voldoende.
Dat iets willekeurig gebeurt is voldoende voor elk punt dat mogelijkerwijze te ervaren is.
We merken op: een voorwaarde v is voldoende wil zeggen dat, als eraan voldaan is, het doel a ook inderdaad wordt bereikt. Dit sluit niet uit dat a ook kan optreden in afwezigheid van v.
Voorbeeld: een aangestoken lucifer en een ontbrandbaar gasmengsel veroorzaken een explosie. Een explosie is geen combinatie van de gevolgen van een aangestoken lucifer (bv licht en stank) en de gevolgen van een ontplofbaar gasmengsel. Een explosie is een nieuwe situatie, een nieuw supremum, locaal, specifiek. Maar ook: branden kan zich voordoen zonder de aanwezigheid van zowel zuurstof, brandbaar materiaal als een temperatuur die hoog genoeg is. Er kunnen bijvoorbeeld andere oxidatie/reductie processen doorgaan.
Een noodzakelijke voorwaarde n voor a is altijd fijner dan a. Indien ik a ervaar, ervaar ik met zekerheid ook de noodzakelijke voorwaarde, dus n<a>. Een voldoende voorwaarde v voor a is altijd ruimer dan a. Indien de voorwaarde v ervaren is, is met zekerheid a ervaren, dus a<v>. n<v> drukt uit dat n fijner is dan v, maar drukt eveneens uit dat v ruimer is dan n, n is een noodzakelijke voorwaarde voor v, v is een voldoende voorwaarde voor n.
Operationele causaliteit is dus niet anders dan de ordening van de simultaneïteitsrelatie.
We onderscheiden duidelijk toestanden die enkel kunnen gebeuren en toestanden die kunnen gekozen worden. Om dit aan te geven worden soms andere begrippen gebruikt zoals reactief en responsief. Indien in een systeem de toestand x met zekerheid gebeurt als y gebeurt noemen we x een reactie op y. In dit geval is x reactief op y. Indien in een systeem de toestand x niet met zekerheid gebeurt als y gebeurt noemen we x een antwoord op y, x is dan een van de mogelijke reacties op y. In dit geval is x ontvankelijk (responsief) voor y. Een antwoord op y kan soms gekozen worden, soms niet. Dit kunnen we contrasteren met het gekozen gedrag. Het gekozen gedrag van een entiteit in een systeem, de gekozen doorlopen baan in de toestandsruimte, zal voor sommige andere toestanden noodzakelijk zijn (en die dan "produceren") en zal voor andere voldoende zijn (en die dan "veroorzaken").
Operationele causaliteit wordt in het haakformalisme heel transparant gemodelleerd en wordt niet beïnvloed door a priori waarin bijvoorbeeld oorzaken altijd voor gevolgen moeten komen: immers ook de modellering van cyclische verbanden, die typisch in de cybernetica bestudeerd worden, moet mogelijk zijn. Dit neemt niet weg dat ook noodzakelijkheid in de tijd in het haakformalisme kan gemodelleerd worden als de voorwaarde om elkaar uitsluitende gebeurtenissen, en dus processen, te beschrijven. Hiertoe moeten we de modellering van tijd veronderstellen en de ontstane sporen (output van het proces) die we aangeven met een concrete invulling van ℵ, de laatst toegevoegde onderscheiding die niet ingebouwd wordt in de tralie. Die concrete invullingen zijn sporen die gestructureerd zijn in de tijd, dus output die op een bepaald niveau van beschrijving niet kan gekozen worden, maar output die daardoor input kan zijn voor een ander proces. De gegenereerde structuur die in het medium ontstaat reflecteert de tijdstructuur bij de generering zelf. De relatie s1<s2> die waarde <> heeft op een bepaald moment drukt de noodzakelijkheid uit van het spoor s1 voor het spoor s2 als een oorzaak die in de tijd voor een gevolg komt. Noteer dat de sporen geen deel uitmaken van de tralies die de sporen genereerden. Zij worden wel ingebouwd in de tralie die dan momentaan een nieuw spoor zal genereren (s2 kan dan gekozen worden (input) maar s3 niet (output)).
Een concreet voorbeeld hiervan wordt gegeven door taken die sequentieel (in serie) gekoppeld zijn: de taak die later uitgevoerd wordt veronderstelt dat de vroegere taak uitgevoerd werd omdat de sporen, die door die taak nagelaten zijn, noodzakelijk zijn om de volgende taak te kunnen aanvatten. Indien dat niet zo is kunnen taken in parallel uitgevoerd worden.