Lazi

Type états superposés

Contexte

Pour voir une entrée (comme une lecture d'une valeur d'un périphérique) comme une valeur mathématique (indépendante du temps) il ne faut pas la voir comme un nombre. L'idée est de la voir comme une superposition de toutes les valeurs qui peuvent être retournées.

Question

Comme définir le type des superpositions de valeurs ?

Étude

Si par exemple la lecture d'un périphérique retourne une valeur entre 0 et 100, on pourrait retourner juste l'information "supperposition des entiers entre 0 et 100". Mais alors deux telles valeurs pourraient être confondues.

Si une telle valeur superposée contient l'information de l'instruction permetant de lire la valeur, alors il n'y a pas d'égalité syntaxique entre les différentes valeurs superposées, sauf celles faisant la même lecture.

Pour calculer le type d'une fonction utilisant dans son calcul la lecture d'un périphérique, il faut pouvoir calculer comment se combine ce type avec des types sans état superposés.

Remarquons que le type "valeurs superposées" peut être interprétés de deux manièrs :

  • soit ne lit pas le périphérique et alors on réalise le calcul du type, ce qui fait qu'à la fin on obtient la superposition des valeurs possibles,
  • soit on réalise des lectures et si on lit tous les périphériques nécessaire on obtient une valeur non superposée.

Il faut donc que le type de la fonction utilisant de la lecture de périphérique puisse voir comme membre à la fois une superposition et une non superposition.

Donc le type "valeurs superposée entre 0 et 100" devra avoir comme domaine un entier entre 0 et 100 mais aussi l'objet signifiant "une superposition de valeur entre 0 et 100 résolue par l'instruction x" où x est n'importe quelle instruction retournant des valeurs incluses dans le segment des entiers [0,100].

Mais alors doit-on lire le périphrique plusieurs fois si on a la même valeur superposée (donc résolvable par la même instruction de lecture) ?

Réponse

@todo