tsguide.refl.fr/content/docs/playing/interaction.md

4.6 KiB

title weight
Interaction 2

Rayons compatibles

Dans la théorie de l'unification, on dit que deux termes (qu'on peut voir comme des rayons sans polarités) sont unifiables lorsqu'il existe une substitution des variables de telle sorte à les rendre égaux. Par exemple, f(X) et f(h(Y)) sont unifiables avec la substitution {X:=h(Y)} remplaçant X par h(Y).

Les substitutions d'intérêt sont les plus générales. Nous aurions pu considérer la substitution {X:=h(c(a)); Y:={c(a)}, tout aussi valide mais inutilement précise.

Dans la même idée, ici, nous disons que deux rayons sont compatibles lorsque leur terme sous-jacent (obtenu par oubli des polarités) sont unifiables mais nous voulons aussi que des symboles de fonctions de polarités opposées se rencontrent (au lieu de considérer des symboles identiques):

  • +f(X) and -f(h(a)) are matchable with {X:=h(a)};
  • f(X) and f(h(a)) are not matchable;
  • +f(X) and +f(h(a)) are not matchable;
  • +f(+h(X)) and -f(-h(a)) are matchable with {X:=a};
  • +f(+h(X)) and -f(-h(+a)) are matchable with {X:=+a};

Fusion

Les étoiles interagissent au travers d'une opération appelée fusion, en utilisant le principe de la règle de résolution de Robinson. On définit un opérateur <i,j> connectant le ième rayon d'une étoile au jème rayon d'une autre étoile.

La fusion est définie ainsi pour deux rayons compatibles r et r':

r r1 ... rk <0,0> r' r1' ... rk' == theta(r1) ... theta(rk) theta(r1') ... theta(rk')

theta est la substitution la plus générale induite par r et r'.

Remarquez que:

  • r et r' sont annihilées pendant l'interaction;
  • leurs deux étoiles fusionnent;
  • la substitution obtenue par résolution du conflit entre r et r' est propagée aux rayons adjacents.

Exemple :

X +f(X) <1,0> -f(a) == a

{{< hint info >}} Cette opération de fusion correspond à la règle de compure pour la logique du premier ordre. Cependant, la différence ici est que nous sommes dans un cadre "alogique" (nos symboles ne portent aucun sens logique). {{< /hint >}}

Exécution

Il faut poser un focus sur les étoiles initiales sur lesquelles nous voulons démarrer le calcul :

X1, f(X1);
+a(X2 Y2);
@-h(f(X3 Y3)) +a(+f(X4) h(-f(X4)));

{{< hint info >}} Le focus est optionnel. Lorsqu'il est omis, une étoile est sélectionnée pour nous. {{< /hint >}}

Passons à la théorie de l'exécution !

Une configuration interactive est une expression R |- I où:

  • R est une constellation statique nommée constellation de référence. Elle est constituée des étoiles non marquées par @ et elle nous servira de stock infini d'étoiles à tirer comme on pioche dans des bacs à LEGO pour faire des constructions;
  • I est une constellation dynamique nommée espace d'interaction. Elle est constituée de l'ensemble des étoiles marquées avec @ et se comporte comme un espace de travail où des constructions sont réalisées par fusion d'étoiles.

Le LSC exécute les constellations en prenant pour partenaire des copies d'étoiles dans R pour les projeter et fusionner sur chaque rayon de I comme suit :

  1. selectionner un rayon ri d'une étoile s de I;
  2. chercher toutes les connexions possibles avec des rayons rj d'étoiles s' de R;
  3. dupliquer s dans I pour chaque rj trouvé;
  4. remplacer chaque copie de s par la fusion s <i,j> s';
  5. répeter jusqu'à qu'il n'y a plus aucune interaction possible dans I.

Le résultat de l'exécution contient toutes les étoiles non polarisées qui restent dans I. Ces étoiles non polarisées que nous ignorons correspondent en fait à des calculs bloqués ou non terminés.

Exemple

Considérons l'exécution de la constellation suivante :

+7(l:X) +7(r:X); 3(X) +8(l:X); @+8(r:X) 6(X);
-7(X) -8(X);

On sépare la constellation en constellation de référence et en espace d'interaction. On préfixe par >> les rayons sélectionnés. Nous avons donc les étapes suivantes :

+7(l:X) +7(r:X); 3(X) +8(l:X); -7(X) >>-8(X) |- >>+8(r:X) 6(X); 
+7(l:X) +7(r:X); 3(X) +8(l:X); -7(X) -8(X) |- -7(r:X) 6(X); 
+7(l:X) >>+7(r:X); 3(X) +8(l:X); -7(X) -8(X) |- >>-7(r:X) 6(X); 
+7(l:X) +7(r:X); 3(X) +8(l:X); -7(X) -8(X) |- +7(l:X) 6(X); 
+7(l:X) +7(r:X); 3(X) +8(l:X); >>-7(X) -8(X) |- >>+7(l:X) 6(X); 
+7(l:X) +7(r:X); 3(X) +8(l:X); -7(X) -8(X) |- -8(l:X) 6(X); 
+7(l:X) +7(r:X); 3(X) >>+8(l:X); -7(X) -8(X) |- >>-8(l:X) 6(X); 
+7(l:X) +7(r:X); 3(X) +8(l:X); -7(X) -8(X) |- 3(X) 6(X); 

Le résultat du calcul est une constellation contenant l'étoile 3(X) 6(X);.