 Merci pour l'organisateur. Merci, Krishna, pour l'invitation. C'est mon plaisir de vous présenter une sorte de récent travail que nous avons présenté à MFCS cette année. C'est l'automate cost registrée de Copiless. Vous avez déjà vu une sorte d'automate cost registrée. Je suis content. Et je vais parler plus précisément de non-déterminisme dans cet état. Et plus précisément, la relation entre un ambiguous, un bandide, un ambiguous copiless cost registrée d'automate contre la partie déterminée. C'est un travail joint avec Jean-Marc Talbot et ma PhD étudiante Theodore Lopez, à Marseille, l'université de Marseille. Donc, somehow, Ismaël était le premier à parler d'une chose d'autre que juste des transducers. C'était un peu plus, et pour cet état, l'automate cost registrée, le travail de l'automate, c'est un travail quantitatif, un peu plus général que les transducers. Donc, je t'explicerai que tu sais tous ce que l'automate est, et donc, la question est, tu vas d'un answered non-déterminisme à un answered quantitatif, comme un integer, ou une probabilité, ou quelque chose comme ça. Et donc, tu peux paramétruire ta automata, ta automata de l'automate, par des sortes de summaries où tu as deux opérations, un plus d'opérations et un temps d'opérations. Donc, tu peux avoir des numéros naturels, où, somehow, tu comptes l'ambiguité de ton automate. Tu as un tropical, donc, min plus, ou max plus, pour modéliser des problèmes de plus en plus. Bien sûr, le set classique est le bouillon de summaries, et tu peux aussi avoir des langues de summaries. Et donc, c'est exactement le transducer, et c'est pourquoi le transducer est un cas spécial de l'automate, en un sens. Et nous avons vu, ce matin, dans tous les paroles, quelque sorte d'automate, que c'est exactement la partie de l'automate que je vais utiliser dans ce talk. Donc, qu'est-ce que c'est la partie de l'automate juste pour vous montrer les notations que je vais utiliser? Donc, tu as un bon nombre de states, ici, il y a seulement un. Donc, c'est une machine déterminée. Et donc, ici, c'est l'input que tu parles. Donc, l'input alphabet est 0 et 1. Et tu as un bon nombre de registres sur lequel tu peux faire une arithmetic, donc tu peux faire des sums et des produits avec constants. Et tu peux faire des produits de registres et des sums de registres et des choses comme ça. Donc, des substitutions compliquées de registres, des opérations et des registres. Et donc, ici, pour exemple, tu as une valeur initiale qui est 0 pour tous. Et ensuite, tu parles de toute façon ton input. Et tu updates la valeur des registres. Donc, ici, quand tu parles de 1, tu prends cette transition. Tu n'oublies pas de la valeur de y. Tu discutes. Tu prends la valeur de x. Tu multiplies par 2, tu as 1. Et donc, maintenant, tous les 2 registres ont la valeur de 1. Donc, quand tu parles de 0, maintenant, tu prends la transition. Tu multiplies par 4 la valeur de y et tu obtiennes 2 4. Et tu continues à la fin. Et à un moment, tu décides que c'est la fin de l'input. La valeur, pour exemple, ici, c'est la valeur des registres y. Et donc, tu mets la valeur 80. Ok, pourquoi pas. Donc, une particularité qui a été mentionnée ce matin était que, parfois, tu veux restricter les substitutions particulières qui sont copilées. C'est-à-dire que tu ne veux pas faire ça où la valeur de x est utilisée deux fois dans deux substitutions particulières. Donc, ce n'est pas copilée, mais c'est parce que, à chaque étape, tu utilises seulement la valeur de x et la valeur de t, ici aussi, et aussi dans l'input final. Donc, ce n'est pas copilée. Donc, pour maintenant, je suis en train d'accéder au cost register automata. Et avant de vous montrer les résultats qu'on a obtenus, je veux briefly mentionner quelques des résultats qu'on connaît dans ce set-up. Donc, la première chose que Allure et ses co-authors introduisent au cost register automata, la première chose qu'il a montré c'est que, si tu considères pas copilée, copifoule, le cost register automata, où la seule opération que tu peux faire sur les registres est la valeur et la multiplication par une constance. Donc, tu ne peux plus multiplier deux registres. Donc, c'est pas mal. Donc, c'est bon. On peut toujours manager ça. Donc, ok. Donc, tu vois, déjà, c'est pas complètement trivial parce que cette opération automata a utilisé non-déterminisme pour conclure les summations. Mais ici, ceci est une machine déterministique. Donc, c'est une sorte de streaming. Donc, c'est une sorte de streaming pour conclure quelque chose. Tu as une seule ronde pour suivre, mais maintenant, tu as plusieurs registres. Ok, maintenant, le problème est que, en particulier, parce que si tu considères un particular stream, qui est le stream tropical, plus, tu sais que l'équivalent d'automata sur le stream automata est indécisible. Donc, maintenant, c'est aussi vrai pour le cost register automata. Mais c'est même vrai pour le cost register automata, qui pourrait être assez surprise. Donc, c'est une sorte de récent résultat par Yalmagor, Kadyak, Mazoviki et Pérez qui ont montré que même si tu stickes pour copier le cost register automata sur le stream tropical, l'équivalent est indécisible. Ok. Donc, c'est comme une bad news. Donc, peut-être que ça signifie que tu ne veux pas faire l'équivalent, même si tu n'es pas dans cette sorte tropicale. C'est ok. Tu récupères tous les résultats de la décidabilité. Une autre chose intéressante que tu peux faire, maintenant que tu as des registres, c'est essayer de minimiser le nombre de registres que tu as à opérer, en parallèle. Et donc, encore une fois, Allure et Raghotaman ont montré en 2013 que pour le cost register automata, c'est tout de suite l'un qui... non, même pas ça. Maintenant, tu peux juste accroître un registre particulier. Donc, tu ne peux même pas mettre des registres ensemble. Maintenant, tu peux minimiser le nombre de registres. Donc, il y a un procédure pour trouver le minimum du nombre de registres que tu dois faire. C'est quelque sorte de minimisation de l'automatisation de la weight. C'est une sorte de parallèle de ça. Mais ici, tu notices que c'est pas le cost register automata, c'est le général cost register automata. Et ce résultat a été généralisé en 2016 par Daviu, Eddy et Talbot. Ok. Donc, encore une fois, pour vous donner un sentiment sur ce genre d'objet, qu'est-ce qu'on pourrait faire avec quelque sorte de cost register automata? On considère un commutatif semérin, maintenant. Donc, je veux dire, tout, mais pas celui-là, par exemple. Donc, pas le langage semérin. Donc, si tu es dans un commutatif semérin, donc le produit commut. Maintenant, tu peux savoir, c'est un peu facile, que dans un automata, tu peux réverser ça. Donc, si tu peux compter la fonction de gauche à droite, parce que tu es dans un commutatif semérin, tu peux aussi compter de droite à droite. Cependant, ce n'est pas le cas pour le cost register automata. Donc, c'est quelque chose d'une petite classe, quelque part. Et donc, tu ne peux pas l'entraîner sous la rivière, même dans le commutatif semérin. Donc, c'est un des résultats, c'est-à-dire, un des exemples que la rivière de Mäsolykin a montré dans l'article en 2016. Et donc, c'est une sorte de motivation qu'ils utilisent pour trouver un autre subclass de cost register automata, où ils recouvrent la cloche sous la rivière. Et c'est ce qu'ils n'appellent pas l'alternation cost register automata. Et non, c'est pas que ce soit un alternation bondé, mais c'est-à-dire que tu ne peux pas alterner entre la summation et les produits sur les registres, tu peux seulement alterner un numéro, un numéro fondé de temps. Et pas seulement ça, mais c'est pas seulement fermé sous la rivière de cette classe, mais ce qu'ils montrent, et c'est un bon résultat, je crois, c'est que si tu ajoutes le terministique look ahead pour ce cost register automata qui est un alternation bondé, c'est de l'expression d'expression. Donc ajouter le terministique look ahead n'a pas d'aide. Si tu n'en sais pas ce que c'est le terministique look ahead, ça ne va pas, parce que je vais vous montrer dans un autre manière, dans le prochain slide, mais c'est bon. Ce serait une très belle propreté d'un point de vue modélisé. Tu peux utiliser un régulier look ahead de ce que tu n'as pas vu depuis, donc tu as ajouté un peu de non-déterminisme maintenant dans ta machine. Et ils montrent qu'ils ne montrent pas que pour un plus de sens, je crois, pas pour tous les commutatifs. Ok? Ça peut sembler surprenant, peut-être, mais, donc, parce que de ce lack de clôture sur les rivières, quitté automata et quitté cost register automata ne peuvent pas être de la même classe, mais il y a une inclusion. Donc tout ce qui peut être fait par quitté cost register automata et ce n'est pas trivial, parce que maintenant j'assume la multiplication de deux registres. Ok? Et bien sûr, ce n'est pas vrai pour commutatifs semérings, parce que d'aujourd'hui, ce serait pas avec les streamings, streamings, transducers, si tu peux faire le revers d'un monde, ce quitté automata ne peut pas faire. Donc, ce n'est pas seulement pour commutatifs semérings. Et maintenant, la picture est comme ça, si tu es dans un commutatif semérings, le copilais scrap est un subclass, un subclass strict de quitté automata et si ce n'est pas un commutatif semérings, c'est quelque chose que c'est de l'orthogène. Ok, donc maintenant, je voudrais faire attention à ce déterminisme, et juste en parlant de non-déterminisme, ajouter non-déterminisme dans un non-nébigous de cette façon. Donc maintenant, considèrez quitté cost register automata pour ajouter non-déterminisme. Donc, ici, vous avez non-déterminisme, parce que quand vous êtes en state A et que vous êtes dans une règle, vous avez le choix entre ces deux transitions. Mais, c'est un automaton non-nébigous avec respect à juste l'automate finie d'underlayant. Donc, vous avez seulement un règle accepté seul. Donc, en termes de semestres, je suis toujours bon. Je prends un règle d'input, je prends le règle d'input world, si ça existe. Et maintenant, j'utilise les mêmes semestres qu'avant. Je fais les opérations sur les registres et je vais mettre la valeur du registre X à Dien et je suis toujours bon. Ok, donc c'est le modèle non-nébigous, non-déterminisme copilése registre automata. Donc, comme j'ai dit, c'est exactement ce que vous obtenez si vous ajoutez un règle régulier à un règle cost registre automaton et puis, quand vous retirez ce règle régulier, vous obtenez quelque chose non-déterministe, mais un règle embigous. D'un point de vue de bonheur, je pense que c'est très utile. Et maintenant, un problème ouvert par Mazoviki et Riveros dans leur papier en 2016 était, bien, est-ce que ça ajoute plus de pouvoir ? Donc, est-ce que quand vous avez un règle non-déterministe dans un règle embigous, vous ajoutez l'expressivité d'une machine déterministe. Donc, juste pour vous donner un sentiment, peut-être ce sera un sentiment mauvais, un sentiment mauvais mais c'est ok, on va le faire de toute façon. Avec respect à l'automate vous avez une longue séquence d'inclusions strictes. Donc, si vous avez seulement l'automate déterministe d'automate, vous avez un règle embigous non-déterminisme est strictement plus puissant. Vous avez un règle embigous c'est-à-dire que maintenant vous avez un règle finitif d'accepter un règle boundin d'accepter un règle pour tous les outils. Encore une fois, vous recouvrez plus de pouvoirs strictes. Je pouvais avoir dit l'ambiguité linéaire. Vous recouvrez encore un peu plus. Et l'ambiguité exponentielle donc l'ambiguité d'automate non-déterministe pour l'automate vous recouvrez encore un peu plus. Donc, vous avez une chaine stricte d'inclusions. Et maintenant, la théorème est que ce n'est pas le cas pour l'automate non-déterministe. Donc, vous pouvez remettre l'ambiguité non-déterministe d'un règle embigous non-déterministe d'automate puis vous êtes aussi expressif d'automate non-déterministe Ok, donc maintenant, bien sûr, je ne sais pas, peut-être que ça pourrait sembler surprenant. À le début, nous n'avons un sentiment fort, mais est-ce que c'est vrai ou est-ce que c'est faux. Et donc, je ne sais pas, à un moment, j'ai trouvé ce qui est assez surprenant, que vous pouvez remettre ce non-déterminisme. Et donc, je veux vous donner un sentiment et pour faire ça, je vais vous donner de toute façon la preuve. Donc, bien sûr, de hiding des détails, des détails nazis. Donc, la preuve, c'est constructif. Donc, je vous constructerai une procédure déterminisée Donc, je commence avec un NMB GOS copyless non-déterministique cost register automaton et je vais aller vers cette version déterministique et pour faire ça, je vais avoir un point en milieu et ce sera quelque chose de moins copyless cost register automaton, pas copyless, mais diamonless. Donc, à un moment, il y a quelque chose de moins que cost register automaton mais ce n'est pas vraiment encore copyless, c'est diamonless. Et donc, à un moment, je vais vous définir cette classe et pour faire ça, je vais avoir besoin des flows que Ismaël, c'est-à-dire que somehow Ismaël a un peu parlé d'avant et donc j'ai besoin de flows de registers. Ok. Donc, j'ai besoin une picture pour faire ça. Donc, reposons encore le même automaton qu'avant avec le particuleur et maintenant ici, ce que j'ai fait c'est que somehow vous remouvez toutes les computations, mais vous juste c'est le flow de register pour un autre register. Donc, ça signifie ici, pour obtenir ces valeurs 2 et 4, la valeur que vous avez besoin pour X, pour le register X était seulement la valeur de X avant, parce que vous suivez cette transition ou la valeur de X, la nouvelle valeur de X dépend seulement de la valeur de X avant. Ok. Et donc, donc ce rôle c'est de conclure la valeur de X la nouvelle valeur de X, j'ai besoin de la valeur de X avant. Vous pouvez imaginer que à un moment vous utilisez deux valeurs. Par exemple, ici si j'ai écrit 2 X times Y et j'ai remoussé ici, puis, bien sûr, la valeur de Y flows dans la valeur de X. C'est ok. Donc, le flow graphique est bien pour tout le monde. Donc, je vais calling ça un layer dans le suivi. Et maintenant, un autre exemple. Donc ici, je change le Summary, maintenant. C'est dans le Summary de Language, où chaque constant que j'utilise est un langage single-tone. Et je n'ai pas utilisé un Sum. Donc, effectivement, c'est un Streaming Strings from Users. Et donc, je peux, again, faire des flow graphs, et c'est ce que vous pouvez obtenir. Donc, vous voyez que ce n'est pas copilé, donc ce n'est pas safe de mon point de vue, parce que la valeur de Y ici est la valeur d'X et la valeur de Z. Donc, ce n'est pas safe. Je commence seulement avec un ambiguous copilé, parce que le registre automaton. Donc, ce n'est pas acceptable de mon point de vue. Ok, donc, ce n'est pas diamant moins, dans le flow graphique, ça signifie que vous n'avez pas de diamants. Donc, un diamant est quelque chose où vous faites une copie. Donc, c'est une copie de la valeur d'un registre qui est à un point de flow dans le même registre. Ok, donc, si vous avez un diamant, vous n'avez pas un diamant moins, et si vous n'avez pas un diamant moins, vous n'avez pas un diamant moins. Ok, c'est très facile. Il y a quelque chose qui est un peu détenu, c'est que je n'ai aussi pas d'améliorer les diamants avec respect à l'output final. Donc, si dans l'output final, il faut merger deux copies, je n'ai aussi pas d'améliorer les diamants. Et maintenant, ce n'est pas un diamant moins cost registre automaton, c'est un cost registre automaton qui est un diamant moins. Donc, vous n'avez pas d'améliorer les diamants dans tout le monde possible. Ok, donc maintenant, vous savez ce qui est un cost registre automaton. Ok, donc, c'est même si c'est une copie, ce n'est pas une copie moins, donc ça fait des copies, mais vous pouvez vérifier que c'est encore un diamant moins. Donc, vous n'avez pas d'améliorer les diamants dans l'output final. Ok, vous avez un peu d'amélioration, mais vous pouvez vérifier que si vous changez la substitution et vous ajoutez ce x là-bas, donc a priori, vous n'avez pas de copie à ce point, mais maintenant, il y a un merge. Donc, vous recouvrez ce petit diamant. Donc, ce n'est pas un copie moins. Ok, ce n'est pas un diamant moins. Donc, maintenant, ce que je veux vous montrer, c'est que, à partir de cet objet, nous pouvons tomber à ça, qui est déterministe. Donc, maintenant, ce sera le procédure de déterminisation. Donc, ce sera la partie plus facile. Et puis, de ce diamant moins d'automatisation, je dois vous montrer pourquoi je peux retirer tous les copies possibles. Ok. Donc, pour le procédure de déterminisation, c'est juste un slide, c'est très facile. Donc, ce n'est vraiment pas la partie difficile. Vous commencez avec ce qui est copie-less, mais non déterministe avec une fashion unambiguée. Et maintenant, vous déterminisez comme vous l'expectez, c'est-à-dire que je vais faire un procédure de déterminisation. Et je remercie autant de copies du procédure que j'ai dans mon modèle. Donc, maintenant, j'ai deux procédures. Donc, ici, le seul procédure accessible et le procédure riche est un procédure complet, AB. Mais j'ai deux versions du procédure. C'est-à-dire que si le renneau s'est arrêté là-bas, c'est cette valeur qui est utilisée. Pourquoi est-ce cette valeur ? Et tout de suite, ce n'est pas complet. C'est assez facile d'obtenir une version déterministe. Ok, cela devrait vous rappeler d'un modèle de modèles que l'on a montré avant, parce que c'est exactement celui sur lequel j'ai commencé. Et... Ok. Et donc, le procédure de déterminisation est juste la génération de cela. Vous commencez avec cela et vous obtenez maintenant le procédure déterministe. Et le bon procédure est que l'ambiguïté de cet objectif reflète dans le procédure déterministe de la version déterministe. C'est exactement ce qui veut dire qu'il n'y a pas de possibilité pour chaque copier d'être utilisé plusieurs fois dans l'output. Il n'y a pas de merge du renneau. Ok. C'est-à-dire qu'il y a quelque chose... Il y a un sens entier d'avoir maintenant, mais si vous n'en avez pas, ce n'est pas une bonne chose, parce que maintenant c'est le début de la première compétition. Et maintenant, on revient à la deuxième. Donc, maintenant, on commence avec le procédure déterministe. Il n'y a pas de déterminisme. Ce n'est pas tout déterministe. Et on juste doit retirer les copiers. Et la façon dont je vais faire ça n'a pas de façon à le faire. Je vais juste essayer d'évoiler les copiers autant que possible par déterminer l'automate. Et ce sera le résultat d'un automaton de faim mais avec un nombre finit et des registres. Mais après, je vais vous montrer que nous pouvons réduire tout le nombre de registres et des registres. Donc, c'est ce que je veux vous montrer maintenant. Ok, donc, d'abord, je dois dire que bien sûr, le graphe flow c'est juste très, je veux dire, c'est pas le plus grand, c'est-à-dire qu'il n'y a pas de plus grand information quand vous avez juste les flows. Mais vous pouvez déterminer, qu'est-ce que la compétition par faire plus précis, dans ce particular flow et vous voyez que c'est juste la multiplication par 2. Donc, je vais écrire dans le suivi l'opération arithmique comme 3, comme termes. Mais c'est juste pour la visualisation. Donc, cette opération était cette multiplication par 2. Et cette opération qui est en bas est cette multiplication par 2 plus 1. Et au début, il y avait 0 qui était la valeur originale du registre X. Donc, je peux unfolder de cette façon et obtenir un terme qui est exactement la semantique de mon registre automatique. Et bien sûr, je peux faire ça même pour la fin. Je peux déterminer ce passage ici et je obtenirai un bon termen de rainbow qui est exactement ce qui est la semantique du registre automatique. Donc, maintenant, vous voyez que nous avons des graphes de flow et que nous avons des termes, des fruits qui font la computation. Ok, maintenant, nous allons unfolder le registre automatique du copie-less que nous avons avant. Et maintenant, nous unfoldons en gardant dans le state les graphes de flow et les termes que j'ai présenté avant. Ok, donc les graphes au début vous comprenez que X a la valeur 0 et Y a la valeur 0. En plus, si vous devez exister maintenant vous terminez avec la valeur Y qui est 0. Et maintenant, vous unfoldez. Donc, si vous recuez le 1, par exemple, vous followez cette transition. Et maintenant, vous ajoutez une autre étape pour votre graphe. Et en tout cas, vous vous rappelez aussi les termes. Et donc, vous savez que ce value de registre X multiplie par 2 plus 1. Ok, donc vous avez tout dans ce modèle. Donc, bien sûr, c'est très facile maintenant d'obtenir la valeur finale. Et vous pouvez continuer comme ça. Et vous obtenez un automaton infinitif. Il n'y a pas encore des registres pour maintenant. Mais encore, je vais utiliser les registres afin d'en souvenir moins dans mon state. Donc maintenant, j'ai essayé de réutiliser le pouvoir des registres. Et il y a un changement dans la façon dont je vais faire ça. Maintenant, n'étiez pas dans les registres le valeur X. Mais ce que je vais faire sera l'efficacité de ce qui est un polynomial. Ok, donc maintenant, ce que je vais faire dans les nouveaux registres ce n'est pas la valeur. C'est tout le possible coefficient que j'ai dans mon polynomial. Donc ici, c'est un polynomial constant. Donc pour maintenant, c'est un value constant. C'est vraiment comme avant. Mais maintenant, ça va changer beaucoup. Parce que maintenant, je me souviens d'obtenir le valeur final. Ce que je dois faire, c'est multiplier le valeur qui est ici par alpha1 et à gamma1 avec alpha1 en 2 et gamma1 en 1. Donc je mets les registres. J'utilise les registres pour déterminer les coefficients du polynomial. C'est ce que vous devez continuer. Ok, donc pour faire ça, on doit faire de l'amélioration de nos polynomials, mais ce n'est pas possible. Donc on a un moyen de normaliser le polynomial, d'avoir une forme normale, une forme spéciale. Et on a un moyen d'améliorer la valeur alpha et gamma. On a un moyen spécial de penser à ça. Donc c'est technique et ce n'est pas vraiment important. Donc je peux tout le temps tous ces particuliers polynomials avec des polynomials où les coefficients ne sont pas stockées dans les registres. Ok, donc maintenant c'est même meilleur parce que maintenant j'ai un nombre infinitaire et un nombre infinitaire de registres. Ok, donc je suis dans le bon endroit. Donc maintenant, ce que je vais essayer de convaincre c'est que je peux réduire cet objet dans un objet final où il n'y a que un nombre final et un nombre final de registres. Et ça sera copilé. Ok, donc la bonne chose c'est que quand vous avez ce progrès, donc maintenant c'est somehow l'idée d'indépendance. Ce n'est pas vraiment l'indépendance que je suis en train de regarder. C'est beaucoup plus facile qui est une pièce où vous n'aurez pas de copies. Donc, souvenez-vous, mon stuff original n'est pas copilé. Donc parfois ça fait copies mais c'est moins dur. Donc quand vous faites une copie, peut-être que vous trouverez quelque part où c'est copilé. Et maintenant ce que j'allais dire c'est que quand j'ai une pièce qui est copilé, je peux mélanger les deux pièces et faire donc c'est quelque sorte de computation partiale sur les registres. Et je peux augmenter la vague de les registres pour faire ça vrai. Donc si vous avez quelque chose et que vous pliez la valeur de l'arrow donc je vais plier ça donc je vais replier la valeur avec ces trois. Et de toute façon, c'est exactement le plier. Donc je peux faire ça dans mon automaton et je peux dire que le nouveau de toute façon, j'ai maintenant un grand terme je peux normaliser ça. C'est encore un polynomial avec la variable x donc je peux normaliser ça et le faire dans une forme j'ajoute les coefficients des registres en utilisant alpha3, alpha1, gamma1 et gamma2. Donc en faisant un petit peu de computation très petite computation ici, c'est là où j'utilise la distributivité. Et puis je peux récomputer ça et j'ai mélangé les deux pièces ensemble. Donc ici c'est exactement ce que nous obtenons. Nous obtenons un simple terme où j'ai de nouveaux coefficients qui sont obtenus par les précédentes. Donc on peut faire ça ici parce qu'il y a beaucoup de couper less layers maintenant. Ici, vous êtes dans la situation présentée où vous avez un couper less layer et si vous mélangez ces deux vous obtenez exactement le même flow graphique qu'avant. Donc maintenant ce n'est pas un nouveau état c'est exactement le même état où vous loupez mais vous changez les valeurs de la coefficient et vous utilisez les valeurs de la coefficient. Ok ? Donc il y a quelque chose plus, qui est ici ce registre ne peut pas être utilisé plus dans l'output donc c'est mort. Donc on peut retirer ça et on peut aussi retirer cet état et si vous retirez ça maintenant vous avez un couper less layer ce qui est le premier état. Il n'y a pas de couper plus. Donc vous pouvez mélanger ces deux vous faites ça donc vous retirez une branche infinie et vous pouvez aussi le faire ici parce que c'est un couper less layer et vous pouvez le mélanger et vous obtenez le premier état. Donc boum par 3 simple opérations j'ai maintenant une machine finite qui est un registre automaton qui est déterministe et vous pouvez vérifier que c'est un couper less. Ok. Le problème c'est que j'ai traité mais quand je vous montre la removal d'un couper less layer j'ai traité parce que ça n'est pas couper less. Donc la ré-writing que je dois faire sur les coefficients n'est pas vraiment couper less. C'était couper less sur mon exemple parce que j'ai fait des modifications mais c'est pas couper less en général. Donc c'est un problème qu'on a récoveré il y a encore quelques copies mais la bonne chose c'est que on va pouvoir vous montrer et ce n'est pas trop difficile que chaque coefficient d'une sorte sera couper seulement un nombre un nombre de fois dans le futur parce que c'est une assumption couper less. Donc ce genre de copies c'est ok vous pouvez voir que somehow vous avez décrit donc cette question particulière ne peut pas être couper beaucoup de fois dans le futur. Ok, c'est doable. Donc somehow j'ai sauté un petit peu parce que maintenant il y a un plus de step c'est pas vraiment couper less en général il sera un couper cost registre automaton où vous faites un nombre de copies qui est maintenant très limité et ce nombre de copies très limité c'est très facile d'en retirer. Vous avez juste à initier tous les possibles values que vous pourriez couper un nombre de fois dans le futur vous avez juste à initier beaucoup de copies à la fin et puis vous utilisez les copies attentionnellement donc c'est facile. Ok, donc c'était le premier problème mais peut-être peut-être vous pouvez dire ok, ce n'est pas une preuve parce que j'ai juste fait le problème, j'ai juste sauté le problème sur un exemple particulier et bien sûr, ce n'est pas une preuve très simple, c'est que parfois ok, donc avant d'arriver je vais vous dire que ce n'est pas facile donc ce n'est pas parce que vous avez un nombre de copies que vous avez bindé donc ici c'est un exemple où vous n'avez pas bindé parce que cette valeur est toujours couper beaucoup de fois dans le futur bien sûr c'est couper mais à un moment l'un des copies est mort mais depuis que vous devez faire ça dans une manière déterminique si vous initier avec 10 copies la meilleure chose que vous devez faire parce que vous ne savez pas si c'est cette copies ou cette copies qui sera utilisée après la meilleure chose que vous devez faire c'est de vendre 5 copies en haut et 5 copies en bas et si vous avez toujours un copy et vous avez deux copies ici et trois copies là et à un moment vous serez mort donc ce n'est pas un copy bindé dans notre définition donc ce n'est pas bon donc la première copies bindé n'est pas très bien seconde il y a toujours quelques problèmes ok, donc peut-être ok, peut-être que je vais quitter que ce n'est pas très important un gros problème c'est que parfois, encore sur les traductions de streaming string vous pouvez générer des runs, des flowgraphs où vous n'avez pas de copies donc je peux générer un input world 0000 où chaque layer fait copies c'est toujours moins vous voyez que je ne peux jamais merger les choses mais encore je ne peux pas utiliser mon pattern avant donc le automaton est toujours infinit ok, donc c'est la partie difficile et la preuve parce que maintenant vous devez trouver quelque chose d'autre pour faire une réduction et l'idée est que quand vous voyez que ce registre Y est copié ce que vous savez c'est que cette valeur ne peut pas être copiée beaucoup, beaucoup de fois dans le futur donc c'est ce qui pourrait encore être c'est que ça dépend de l'avenir parce que je pouvais toujours pluger quelque chose comme ça dans le futur où je copie beaucoup de fois mais le premier ne peut pas être copié anymore parce que c'est une assumption de diamo donc vous devez me croire à ce point, il y a une variante propriété pour prouver qu'il y a un bon ordre qui termine à un point et donc on utilise ces idées si vous copiez votre registre le premier que vous avez fait de ce registre en tout cas c'est boundé et en utilisant ces idées donc c'est un nouveau donc en tout cas je veux dire cette laiture maintenant devient presque copilée en tout cas et on s'appelle la laiture primaire et on montre que nous pouvons réduire les laitures primaires donc nous allons créer des copies mais dans une façon bondée et donc c'est toujours managable de cette façon ok, donc je vais maintenant conclure donc ce que j'ai montré est une transformation d'une copie less non déterministique du registre automaton d'une copie less déterministique du registre automaton d'une haute doule des détails dans les prouves donc cette étape est un peu mal mais c'est ok, c'est managable et nous avons plus donc d'ailleurs si vous permettez pour la fin de l'ambiguité c'est toujours bon donc si votre copie less non déterministique du registre automaton est trop ambigous c'est-à-dire que dans tous les outils il y a à peu près deux rues acceptées donc maintenant je dois changer les semantiques et je dois dire ce que je vais faire donc j'ai bien sûr que je fais la somme pour qu'il soit automaton et si je fais ça, on peut montrer que l'on peut de nouveau retirer le non déterminisme donc c'est pas très difficile d'aller de là à là c'est pas très difficile parce que c'est juste le procédure de déterminisation qui est un peu plus complexe mais c'est complètement managable d'ailleurs, c'est très moins puissant que légèrement ambigous non déterministe copie less registre automaton parce que les mêmes exemples utilisés par Mazoviki et Riveros montrent qu'ici vous avez une illégalité ok, donc c'est le résultat et pour ne pas conclure je vais vous donner quelques perspectives donc, premièrement je n'ai pas donné vous les liens complexes de la construction mais ce que nous pouvons obtenir c'est que nous construisons un copie cost registre automaton donc ce n'est pas à la fin mais juste avant un copie cost registre automaton qui a un nombre exponentiel de copies qui fait un nombre exponentiel de copies et qui a un nombre exponentiel qui respecte le nombre original d'ambigous copie less et cras et quand vous retirez les copies vous le faites avec un nombre exponentiel de copies et donc vous avez besoin d'un nombre exponentiel de copies donc il y a un bloc dans le nombre de copies un seul bloc exponentiel respectant le nombre de copies et donc, bien sûr, on pourrait demander et je ne sais pas si c'est optimal ou si c'est improuvable donc je n'ai pas la solution pour maintenant et un moyen de solver ça peut-être que ce n'est pas optimal mais un moyen de solver ça fait un un grand challenge dans le cost registre automaton qui est de minimiser les registres donc j'ai montré deux cases spéciales où ça a déjà été fait avant et c'est un très très spécial parce que vous pouvez seulement ajouter un constant pour les registres donc vous pouvez pas ajouter deux registres ensemble et vous pouvez même multiplier par quelque chose même par un constant donc c'est un grand un grand challenge donc il y a quelque chose à être fait définitivement à un point donc en particulier j'utilise la puissance pour pouvoir multiplier deux registres donc même si je commence avec une copie non déterminique avec seulement la summation de deux registres et la multiplication par un constant puis ma construction va faire des multiplications de registres parce que j'utilise ces coefficients de mes polynomiaux donc je ne remonte pas le non déterminisme dans cette particularité je vais dans un grand subclass et ça pourrait être aussi une bonne chose pour adapter l'approche pour ça et je ne suis pas sûr que c'est possible donc peut-être que la réponse sera non aussi記得 que l'une de les motivations par Riberos et Mazoviki et maintenant donc ils ont trouvé une possible classe de registres automata qui est fermée dans le Riberos et l'un des défis qu'on essaie de faire maintenant et c'est tout de même lié à ces questions c'est de trouver l'un des plus grands subclass qui est fermé dans le Riberos et qui encore a cette bonne propriété de être fermée par ajouter un régulier ou par utiliser un non déterminisme et je pense que je vais arrêter et merci pour votre attention