(Généralement) Comment spécifier une action asynchrone avec des effets secondaires à l'aide d'équations logiques

cs.stackexchange https://cs.stackexchange.com/questions/104981

Question

Dites que vous avez cette séquence d'appels de fonction:

function all() {
  fn1()
  fn2()
  fn3()
}

Et dire que fn2 était asynchrone et provoqué toutes sortes d'effets secondaires:

var globalPacketCounter = 0

function fn2() {
  var httpRequest = ...
  httpRequest.on('data', function(){
    globalPacketCounter++
  })
  drawGraphicsToDisplay()
  ...
}

Quelque chose de compliqué et avec une implémentation inconnue, bien que vous puissiez le sonder pour déterminer les types de comportement qu'il dispose, et lire les documents, etc.

Je me demande, d'une manière générale, ce que vous pouvez faire pour intégrer cela dans un système de vérification de modèle ou d'évaluation symbolique, ou un autre système de vérification comme Hoare Logic ou quelque chose. Je voudrais faire ceci:

all() =
  /\ fn1() in state 1
  /\ fn2() in state 2
  /\ fn3() in state 3
  /\ complete = true in state 4

Une sorte de déclaration logique. La question est (partiellement) s'il s'agit d'une approche valide; c'est-à-dire, traiter le fn2() en une seule étape dans une équation logique. La partie principale de la question est de savoir comment le faire généralement. Je voudrais essentiellement tout traiter comme des fonctions logiques, mais je ne sais pas comment l'appliquer au cas "asynchrone avec des effets secondaires".

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top