<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://os-vps418.infomaniak.ch:1250/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ahacque</id>
	<title>Wiki du LAMA (UMR 5127) - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="http://os-vps418.infomaniak.ch:1250/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ahacque"/>
	<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php/Sp%C3%A9cial:Contributions/Ahacque"/>
	<updated>2026-05-24T04:08:03Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=14241</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=14241"/>
		<updated>2022-05-29T18:36:48Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacements (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont appelés des lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; abbca est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur. (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de valider la saisie. (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet, la touche entrée existe, car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de saisie alors que les claviers manuels oui. Il faut donc utiliser des touches acceptantes qui mènent à une fin de saisie après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des &#039;&#039;a&#039;&#039; et des &#039;&#039;b&#039;&#039;, il y a plus ou autant de &#039;&#039;a&#039;&#039; que de &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b◀ }&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont des &#039;&#039;a&#039;&#039; et des &#039;&#039;b&#039;&#039;, pas forcément le même nombre et tous les &#039;&#039;a&#039;&#039; sont avant les &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {◀}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {◀, ▶}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK { █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {◀, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {◀, ▶, █ }&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {◀, ←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {◀, ▶, ←}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {◀, ←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {◀, ▶, ←, █ }&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; l’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile, car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de &#039;&#039;&#039;EK&#039;&#039;&#039; et de &#039;&#039;&#039;REK&#039;&#039;&#039; dans &#039;&#039;&#039;FRK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un &#039;&#039;[https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse]&#039;&#039; où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément &#039;&#039;&#039;x&#039;&#039;&#039; est inférieur ou égal à un autre élément &#039;&#039;&#039;y&#039;&#039;&#039;, alors le point représentant &#039;&#039;&#039;x&#039;&#039;&#039; est placé plus bas que celui pour &#039;&#039;&#039;y&#039;&#039;&#039;. Ainsi, les &#039;&#039;&#039;segments&#039;&#039;&#039; n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque &#039;&#039;&#039;x &amp;lt; y&#039;&#039;&#039;, s&#039;il existe &#039;&#039;&#039;z&#039;&#039;&#039; tel que  &#039;&#039;&#039;x &amp;lt; z &amp;lt; y&#039;&#039;&#039;, alors aucun segment ne doit lier &#039;&#039;&#039;x&#039;&#039;&#039; à &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tout clavier &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement des lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039; (l’ensemble des mots de longueur k), &#039;&#039;&#039;+&#039;&#039;&#039; (ou logique) et &#039;&#039;&#039;.&#039;&#039;&#039; (concaténation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnaît le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles correspondent à utiliser une suite de touches pour passer de &#039;&#039;i&#039;&#039; lettres à effacer à &#039;&#039;j&#039;&#039; lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touches nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de &#039;&#039;a&#039;&#039; que l’on veut ou qui ne font qu’un &#039;&#039;b&#039;&#039;, il peut aussi s&#039;écrire &#039;&#039;&#039;{ε, b, a, aa, aaa, aaa, a…a}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de &#039;&#039;a&#039;&#039; et une touche qui fait un &#039;&#039;b&#039;&#039; mais si on utilise les deux touches, il y aura des &#039;&#039;a&#039;&#039; avec un &#039;&#039;b&#039;&#039; dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
En effet, si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
on part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour avoir le mot avec un unique &#039;&#039;b&#039;&#039;, il faut simplement utiliser la touche 1 la première fois et ne pas utiliser la touche 3. Pareil pour avoir le mot avec l&#039;unique &#039;&#039;a&#039;&#039;, il faut utiliser la touche 2 en premier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres, car il utilise les bords pour vérifier s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple, on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple d&#039;un clavier pour créer le langage a*b*c* (un certain nombre de &#039;&#039;a&#039;&#039; suivi d&#039;un certain nombre de &#039;&#039;b&#039;&#039; suivi d&#039;un certain nombre de &#039;&#039;c&#039;&#039;), aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer qu&#039;un clavier n&#039;existe pas, on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13960</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13960"/>
		<updated>2022-05-27T17:12:41Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Un langage un peu plus complexe : Le langage a*+b */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont appelés des lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; abbca est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur. (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisie. (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet, la touche entrée existe, car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de saisie alors que les claviers manuels oui. Il faut donc utiliser des touches acceptantes qui mènent à une fin de saisie après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des &#039;&#039;a&#039;&#039; et des &#039;&#039;b&#039;&#039;, il y a plus ou autant de &#039;&#039;a&#039;&#039; que de &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b◀ }&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de &#039;&#039;a&#039;&#039; et de &#039;&#039;b&#039;&#039; que l’on veut et tous les &#039;&#039;a&#039;&#039; sont avant les &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {◀}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {◀, ▶}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK { █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {◀, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {◀, ▶, █ }&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {◀, ←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {◀, ▶, ←}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {◀, ←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {◀, ▶, ←, █ }&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; l’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile, car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de &#039;&#039;&#039;EK&#039;&#039;&#039; et de &#039;&#039;&#039;REK&#039;&#039;&#039; dans &#039;&#039;&#039;FRK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un &#039;&#039;[https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse]&#039;&#039; où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément &#039;&#039;&#039;x&#039;&#039;&#039; est inférieur ou égal à un autre élément &#039;&#039;&#039;y&#039;&#039;&#039;, alors le point représentant &#039;&#039;&#039;x&#039;&#039;&#039; est placé plus bas que celui pour &#039;&#039;&#039;y&#039;&#039;&#039;. Ainsi, les &#039;&#039;&#039;segments&#039;&#039;&#039; n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque &#039;&#039;&#039;x &amp;lt; y&#039;&#039;&#039;, s&#039;il existe &#039;&#039;&#039;z&#039;&#039;&#039; tel que  &#039;&#039;&#039;x &amp;lt; z &amp;lt; y&#039;&#039;&#039;, alors aucun segment ne doit lier &#039;&#039;&#039;x&#039;&#039;&#039; à &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tout clavier &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement des lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnaît le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de &#039;&#039;i&#039;&#039; lettres à effacer à &#039;&#039;j&#039;&#039; lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de &#039;&#039;a&#039;&#039; que l’on veut ou qui ne font qu’un &#039;&#039;b&#039;&#039;, il peut aussi s&#039;écrire &#039;&#039;&#039;{ε, b, a, aa, aaa, aaa, a…a}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de &#039;&#039;a&#039;&#039; et une touche qui fait un &#039;&#039;b&#039;&#039; mais si on utilise les deux touches, il y en aura des &#039;&#039;a&#039;&#039; avec un &#039;&#039;b&#039;&#039; dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
En effet, si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
on part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour avoir le mot avec un unique &#039;&#039;b&#039;&#039;, il faut simplement utiliser la touche 1 la première fois et ne pas utiliser la touche 3 le reste. Pareil pour avoir le mot avec l&#039;unique &#039;&#039;a&#039;&#039;, il faut utiliser la touche 2 en premier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres, car il utilise les bords pour vérifier s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple, on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple d&#039;un clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer qu&#039;un clavier n&#039;existe pas, on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13959</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13959"/>
		<updated>2022-05-27T17:10:52Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont appelés des lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; abbca est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur. (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisie. (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet, la touche entrée existe, car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de saisie alors que les claviers manuels oui. Il faut donc utiliser des touches acceptantes qui mènent à une fin de saisie après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des &#039;&#039;a&#039;&#039; et des &#039;&#039;b&#039;&#039;, il y a plus ou autant de &#039;&#039;a&#039;&#039; que de &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b◀ }&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de &#039;&#039;a&#039;&#039; et de &#039;&#039;b&#039;&#039; que l’on veut et tous les &#039;&#039;a&#039;&#039; sont avant les &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {◀}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {◀, ▶}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK { █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {◀, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {◀, ▶, █ }&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {◀, ←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {◀, ▶, ←}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {◀, ←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {◀, ▶, ←, █ }&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; l’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile, car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de &#039;&#039;&#039;EK&#039;&#039;&#039; et de &#039;&#039;&#039;REK&#039;&#039;&#039; dans &#039;&#039;&#039;FRK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un &#039;&#039;[https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse]&#039;&#039; où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément &#039;&#039;&#039;x&#039;&#039;&#039; est inférieur ou égal à un autre élément &#039;&#039;&#039;y&#039;&#039;&#039;, alors le point représentant &#039;&#039;&#039;x&#039;&#039;&#039; est placé plus bas que celui pour &#039;&#039;&#039;y&#039;&#039;&#039;. Ainsi, les &#039;&#039;&#039;segments&#039;&#039;&#039; n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque &#039;&#039;&#039;x &amp;lt; y&#039;&#039;&#039;, s&#039;il existe &#039;&#039;&#039;z&#039;&#039;&#039; tel que  &#039;&#039;&#039;x &amp;lt; z &amp;lt; y&#039;&#039;&#039;, alors aucun segment ne doit lier &#039;&#039;&#039;x&#039;&#039;&#039; à &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tout clavier &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement des lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnaît le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de &#039;&#039;i&#039;&#039; lettres à effacer à &#039;&#039;j&#039;&#039; lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de &#039;&#039;a&#039;&#039; que l’on veut ou qui ne font qu’un &#039;&#039;b&#039;&#039;, il peut aussi s&#039;écrire &#039;&#039;&#039;{ε, b, a, aa, aaa, aaa, a…a}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de &#039;&#039;a&#039;&#039; et une touche qui fait un &#039;&#039;b&#039;&#039; mais si on utilise les deux touches, il y en aura des &#039;&#039;a&#039;&#039; avec un &#039;&#039;b&#039;&#039; dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
En effet, si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
on part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour avoir le mot avec un unique &#039;&#039;b&#039;&#039;, il faut simplement utiliser la touche 1 la première fois et ne pas utiliser la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres, car il utilise les bords pour vérifier s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple, on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple d&#039;un clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer qu&#039;un clavier n&#039;existe pas, on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13952</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13952"/>
		<updated>2022-05-27T16:53:31Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Les conjectures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont appelés des lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; abbca est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de saisie alors que les claviers manuels oui. Il faut donc utiliser des touches acceptantes qui mènent à une fin de saisie après avoir effectuer leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des &#039;&#039;a&#039;&#039; et des &#039;&#039;b&#039;&#039;, il y a plus ou autant de &#039;&#039;a&#039;&#039; que de &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b◀ }&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de &#039;&#039;a&#039;&#039; et de &#039;&#039;b&#039;&#039; que l’on veut et tous les &#039;&#039;a&#039;&#039; sont avant les &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {◀}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {◀, ▶}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK { █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {◀, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {◀, ▶, █ }&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {◀, ←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {◀, ▶, ←}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {◀, ←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {◀, ▶, ←, █ }&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de &#039;&#039;&#039;EK&#039;&#039;&#039; et de &#039;&#039;&#039;REK&#039;&#039;&#039; dans &#039;&#039;&#039;FRK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un &#039;&#039;[https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse]&#039;&#039; où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément &#039;&#039;&#039;x&#039;&#039;&#039; est inférieur ou égal à un autre élément &#039;&#039;&#039;y&#039;&#039;&#039;, alors le point représentant &#039;&#039;&#039;x&#039;&#039;&#039; est placé plus bas que celui pour &#039;&#039;&#039;y&#039;&#039;&#039;. Ainsi, les &#039;&#039;&#039;segments&#039;&#039;&#039; n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque &#039;&#039;&#039;x &amp;lt; y&#039;&#039;&#039;, s&#039;il existe &#039;&#039;&#039;z&#039;&#039;&#039; tel que  &#039;&#039;&#039;x &amp;lt; z &amp;lt; y&#039;&#039;&#039;, alors aucun segment ne doit lier &#039;&#039;&#039;x&#039;&#039;&#039; à &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement des lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de &#039;&#039;i&#039;&#039; lettres à effacer à &#039;&#039;j&#039;&#039; lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de &#039;&#039;a&#039;&#039; que l’on veut ou qui ne font qu’un &#039;&#039;b&#039;&#039;, il peut aussi s&#039;écrire &#039;&#039;&#039;{ε, b, a, aa, aaa, aaa, a…a}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de &#039;&#039;a&#039;&#039; et une touche qui fait un &#039;&#039;b&#039;&#039; mais si on utilise les deux touches il y en aura des &#039;&#039;a&#039;&#039; avec un &#039;&#039;b&#039;&#039; dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifier s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple d&#039;un clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer qu&#039;un clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13951</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13951"/>
		<updated>2022-05-27T16:52:38Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Un langage un peu plus complexe : Le langage a*+b */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont appelés des lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; abbca est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de saisie alors que les claviers manuels oui. Il faut donc utiliser des touches acceptantes qui mènent à une fin de saisie après avoir effectuer leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des &#039;&#039;a&#039;&#039; et des &#039;&#039;b&#039;&#039;, il y a plus ou autant de &#039;&#039;a&#039;&#039; que de &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b◀ }&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de &#039;&#039;a&#039;&#039; et de &#039;&#039;b&#039;&#039; que l’on veut et tous les &#039;&#039;a&#039;&#039; sont avant les &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {◀}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {◀, ▶}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK { █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {◀, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {◀, ▶, █ }&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {◀, ←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {◀, ▶, ←}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {◀, ←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {◀, ▶, ←, █ }&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de &#039;&#039;&#039;EK&#039;&#039;&#039; et de &#039;&#039;&#039;REK&#039;&#039;&#039; dans &#039;&#039;&#039;FRK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un &#039;&#039;[https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse]&#039;&#039; où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément &#039;&#039;&#039;x&#039;&#039;&#039; est inférieur ou égal à un autre élément &#039;&#039;&#039;y&#039;&#039;&#039;, alors le point représentant &#039;&#039;&#039;x&#039;&#039;&#039; est placé plus bas que celui pour &#039;&#039;&#039;y&#039;&#039;&#039;. Ainsi, les &#039;&#039;&#039;segments&#039;&#039;&#039; n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque &#039;&#039;&#039;x &amp;lt; y&#039;&#039;&#039;, s&#039;il existe &#039;&#039;&#039;z&#039;&#039;&#039; tel que  &#039;&#039;&#039;x &amp;lt; z &amp;lt; y&#039;&#039;&#039;, alors aucun segment ne doit lier &#039;&#039;&#039;x&#039;&#039;&#039; à &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement des lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de &#039;&#039;i&#039;&#039; lettres à effacer à &#039;&#039;j&#039;&#039; lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de &#039;&#039;a&#039;&#039; que l’on veut ou qui ne font qu’un &#039;&#039;b&#039;&#039;, il peut aussi s&#039;écrire &#039;&#039;&#039;{ε, b, a, aa, aaa, aaa, a…a}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de &#039;&#039;a&#039;&#039; et une touche qui fait un &#039;&#039;b&#039;&#039; mais si on utilise les deux touches il y en aura des &#039;&#039;a&#039;&#039; avec un &#039;&#039;b&#039;&#039; dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifier s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13949</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13949"/>
		<updated>2022-05-27T16:50:59Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Théorème (Les claviers sans flèches) : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont appelés des lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; abbca est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de saisie alors que les claviers manuels oui. Il faut donc utiliser des touches acceptantes qui mènent à une fin de saisie après avoir effectuer leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des &#039;&#039;a&#039;&#039; et des &#039;&#039;b&#039;&#039;, il y a plus ou autant de &#039;&#039;a&#039;&#039; que de &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b◀ }&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de &#039;&#039;a&#039;&#039; et de &#039;&#039;b&#039;&#039; que l’on veut et tous les &#039;&#039;a&#039;&#039; sont avant les &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {◀}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {◀, ▶}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK { █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {◀, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {◀, ▶, █ }&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {◀, ←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {◀, ▶, ←}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {◀, ←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {◀, ▶, ←, █ }&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de &#039;&#039;&#039;EK&#039;&#039;&#039; et de &#039;&#039;&#039;REK&#039;&#039;&#039; dans &#039;&#039;&#039;FRK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un &#039;&#039;[https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse]&#039;&#039; où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément &#039;&#039;&#039;x&#039;&#039;&#039; est inférieur ou égal à un autre élément &#039;&#039;&#039;y&#039;&#039;&#039;, alors le point représentant &#039;&#039;&#039;x&#039;&#039;&#039; est placé plus bas que celui pour &#039;&#039;&#039;y&#039;&#039;&#039;. Ainsi, les &#039;&#039;&#039;segments&#039;&#039;&#039; n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque &#039;&#039;&#039;x &amp;lt; y&#039;&#039;&#039;, s&#039;il existe &#039;&#039;&#039;z&#039;&#039;&#039; tel que  &#039;&#039;&#039;x &amp;lt; z &amp;lt; y&#039;&#039;&#039;, alors aucun segment ne doit lier &#039;&#039;&#039;x&#039;&#039;&#039; à &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement des lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de &#039;&#039;i&#039;&#039; lettres à effacer à &#039;&#039;j&#039;&#039; lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire &#039;&#039;&#039;{ε, b, a, aa, aaa, aaa, a…a}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13948</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13948"/>
		<updated>2022-05-27T16:49:41Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Théorème (Les claviers sans flèches) : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont appelés des lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; abbca est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de saisie alors que les claviers manuels oui. Il faut donc utiliser des touches acceptantes qui mènent à une fin de saisie après avoir effectuer leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des &#039;&#039;a&#039;&#039; et des &#039;&#039;b&#039;&#039;, il y a plus ou autant de &#039;&#039;a&#039;&#039; que de &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b◀ }&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de &#039;&#039;a&#039;&#039; et de &#039;&#039;b&#039;&#039; que l’on veut et tous les &#039;&#039;a&#039;&#039; sont avant les &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {◀}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {◀, ▶}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK { █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {◀, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {◀, ▶, █ }&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {◀, ←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {◀, ▶, ←}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {◀, ←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {◀, ▶, ←, █ }&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de &#039;&#039;&#039;EK&#039;&#039;&#039; et de &#039;&#039;&#039;REK&#039;&#039;&#039; dans &#039;&#039;&#039;FRK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un &#039;&#039;[https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse]&#039;&#039; où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément &#039;&#039;&#039;x&#039;&#039;&#039; est inférieur ou égal à un autre élément &#039;&#039;&#039;y&#039;&#039;&#039;, alors le point représentant &#039;&#039;&#039;x&#039;&#039;&#039; est placé plus bas que celui pour &#039;&#039;&#039;y&#039;&#039;&#039;. Ainsi, les &#039;&#039;&#039;segments&#039;&#039;&#039; n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque &#039;&#039;&#039;x &amp;lt; y&#039;&#039;&#039;, s&#039;il existe &#039;&#039;&#039;z&#039;&#039;&#039; tel que  &#039;&#039;&#039;x &amp;lt; z &amp;lt; y&#039;&#039;&#039;, alors aucun segment ne doit lier &#039;&#039;&#039;x&#039;&#039;&#039; à &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement des lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire &#039;&#039;&#039;{ε, b, a, aa, aaa, aaa, a…a}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13947</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13947"/>
		<updated>2022-05-27T16:48:54Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Les classes de claviers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont appelés des lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; abbca est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de saisie alors que les claviers manuels oui. Il faut donc utiliser des touches acceptantes qui mènent à une fin de saisie après avoir effectuer leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des &#039;&#039;a&#039;&#039; et des &#039;&#039;b&#039;&#039;, il y a plus ou autant de &#039;&#039;a&#039;&#039; que de &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b◀ }&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de &#039;&#039;a&#039;&#039; et de &#039;&#039;b&#039;&#039; que l’on veut et tous les &#039;&#039;a&#039;&#039; sont avant les &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {◀}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {◀, ▶}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK { █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {◀, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {◀, ▶, █ }&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {◀, ←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {◀, ▶, ←}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {◀, ←, █ }&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {◀, ▶, ←, █ }&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de &#039;&#039;&#039;EK&#039;&#039;&#039; et de &#039;&#039;&#039;REK&#039;&#039;&#039; dans &#039;&#039;&#039;FRK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un &#039;&#039;[https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse]&#039;&#039; où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément &#039;&#039;&#039;x&#039;&#039;&#039; est inférieur ou égal à un autre élément &#039;&#039;&#039;y&#039;&#039;&#039;, alors le point représentant &#039;&#039;&#039;x&#039;&#039;&#039; est placé plus bas que celui pour &#039;&#039;&#039;y&#039;&#039;&#039;. Ainsi, les &#039;&#039;&#039;segments&#039;&#039;&#039; n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque &#039;&#039;&#039;x &amp;lt; y&#039;&#039;&#039;, s&#039;il existe &#039;&#039;&#039;z&#039;&#039;&#039; tel que  &#039;&#039;&#039;x &amp;lt; z &amp;lt; y&#039;&#039;&#039;, alors aucun segment ne doit lier &#039;&#039;&#039;x&#039;&#039;&#039; à &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire &#039;&#039;&#039;{ε, b, a, aa, aaa, aaa, a…a}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13946</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13946"/>
		<updated>2022-05-27T16:48:24Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Les classes de claviers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont appelés des lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; abbca est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de saisie alors que les claviers manuels oui. Il faut donc utiliser des touches acceptantes qui mènent à une fin de saisie après avoir effectuer leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des &#039;&#039;a&#039;&#039; et des &#039;&#039;b&#039;&#039;, il y a plus ou autant de &#039;&#039;a&#039;&#039; que de &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b◀ }&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de &#039;&#039;a&#039;&#039; et de &#039;&#039;b&#039;&#039; que l’on veut et tous les &#039;&#039;a&#039;&#039; sont avant les &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {◀}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {◀, ▶}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {█}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {◀, █}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {◀, ▶, █}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {◀, ←}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {◀, ▶, ←}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {←, █}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {◀, ←, █}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {◀, ▶, ←, █}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de &#039;&#039;&#039;EK&#039;&#039;&#039; et de &#039;&#039;&#039;REK&#039;&#039;&#039; dans &#039;&#039;&#039;FRK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un &#039;&#039;[https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse]&#039;&#039; où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément &#039;&#039;&#039;x&#039;&#039;&#039; est inférieur ou égal à un autre élément &#039;&#039;&#039;y&#039;&#039;&#039;, alors le point représentant &#039;&#039;&#039;x&#039;&#039;&#039; est placé plus bas que celui pour &#039;&#039;&#039;y&#039;&#039;&#039;. Ainsi, les &#039;&#039;&#039;segments&#039;&#039;&#039; n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque &#039;&#039;&#039;x &amp;lt; y&#039;&#039;&#039;, s&#039;il existe &#039;&#039;&#039;z&#039;&#039;&#039; tel que  &#039;&#039;&#039;x &amp;lt; z &amp;lt; y&#039;&#039;&#039;, alors aucun segment ne doit lier &#039;&#039;&#039;x&#039;&#039;&#039; à &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire &#039;&#039;&#039;{ε, b, a, aa, aaa, aaa, a…a}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13943</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13943"/>
		<updated>2022-05-27T16:45:27Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Exemples : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont appelés des lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; abbca est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de saisie alors que les claviers manuels oui. Il faut donc utiliser des touches acceptantes qui mènent à une fin de saisie après avoir effectuer leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des &#039;&#039;a&#039;&#039; et des &#039;&#039;b&#039;&#039;, il y a plus ou autant de &#039;&#039;a&#039;&#039; que de &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b◀ }&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de &#039;&#039;a&#039;&#039; et de &#039;&#039;b&#039;&#039; que l’on veut et tous les &#039;&#039;a&#039;&#039; sont avant les &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de &#039;&#039;&#039;EK&#039;&#039;&#039; et de &#039;&#039;&#039;REK&#039;&#039;&#039; dans &#039;&#039;&#039;FRK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un &#039;&#039;[https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse]&#039;&#039; où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément &#039;&#039;&#039;x&#039;&#039;&#039; est inférieur ou égal à un autre élément &#039;&#039;&#039;y&#039;&#039;&#039;, alors le point représentant &#039;&#039;&#039;x&#039;&#039;&#039; est placé plus bas que celui pour &#039;&#039;&#039;y&#039;&#039;&#039;. Ainsi, les &#039;&#039;&#039;segments&#039;&#039;&#039; n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque &#039;&#039;&#039;x &amp;lt; y&#039;&#039;&#039;, s&#039;il existe &#039;&#039;&#039;z&#039;&#039;&#039; tel que  &#039;&#039;&#039;x &amp;lt; z &amp;lt; y&#039;&#039;&#039;, alors aucun segment ne doit lier &#039;&#039;&#039;x&#039;&#039;&#039; à &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire &#039;&#039;&#039;{ε, b, a, aa, aaa, aaa, a…a}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13941</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13941"/>
		<updated>2022-05-27T16:44:18Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Rappels, définitions et exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont appelés des lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; abbca est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de saisie alors que les claviers manuels oui. Il faut donc utiliser des touches acceptantes qui mènent à une fin de saisie après avoir effectuer leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b◀ }&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de &#039;&#039;&#039;EK&#039;&#039;&#039; et de &#039;&#039;&#039;REK&#039;&#039;&#039; dans &#039;&#039;&#039;FRK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un &#039;&#039;[https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse]&#039;&#039; où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément &#039;&#039;&#039;x&#039;&#039;&#039; est inférieur ou égal à un autre élément &#039;&#039;&#039;y&#039;&#039;&#039;, alors le point représentant &#039;&#039;&#039;x&#039;&#039;&#039; est placé plus bas que celui pour &#039;&#039;&#039;y&#039;&#039;&#039;. Ainsi, les &#039;&#039;&#039;segments&#039;&#039;&#039; n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque &#039;&#039;&#039;x &amp;lt; y&#039;&#039;&#039;, s&#039;il existe &#039;&#039;&#039;z&#039;&#039;&#039; tel que  &#039;&#039;&#039;x &amp;lt; z &amp;lt; y&#039;&#039;&#039;, alors aucun segment ne doit lier &#039;&#039;&#039;x&#039;&#039;&#039; à &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire &#039;&#039;&#039;{ε, b, a, aa, aaa, aaa, a…a}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13926</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13926"/>
		<updated>2022-05-27T16:19:06Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Définitions : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de saisie alors que les claviers manuels oui. Il faut donc utiliser des touches acceptantes qui mènent à une fin de saisie après avoir effectuer leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de &#039;&#039;&#039;EK&#039;&#039;&#039; et de &#039;&#039;&#039;REK&#039;&#039;&#039; dans &#039;&#039;&#039;FRK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un &#039;&#039;[https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse]&#039;&#039; où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément &#039;&#039;&#039;x&#039;&#039;&#039; est inférieur ou égal à un autre élément &#039;&#039;&#039;y&#039;&#039;&#039;, alors le point représentant &#039;&#039;&#039;x&#039;&#039;&#039; est placé plus bas que celui pour &#039;&#039;&#039;y&#039;&#039;&#039;. Ainsi, les &#039;&#039;&#039;segments&#039;&#039;&#039; n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque &#039;&#039;&#039;x &amp;lt; y&#039;&#039;&#039;, s&#039;il existe &#039;&#039;&#039;z&#039;&#039;&#039; tel que  &#039;&#039;&#039;x &amp;lt; z &amp;lt; y&#039;&#039;&#039;, alors aucun segment ne doit lier &#039;&#039;&#039;x&#039;&#039;&#039; à &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire &#039;&#039;&#039;{ε, b, a, aa, aaa, aaa, a…a}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13920</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13920"/>
		<updated>2022-05-27T16:08:58Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Un langage un peu plus complexe : Le langage a*+b */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de &#039;&#039;&#039;EK&#039;&#039;&#039; et de &#039;&#039;&#039;REK&#039;&#039;&#039; dans &#039;&#039;&#039;FRK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un &#039;&#039;[https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse]&#039;&#039; où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément &#039;&#039;&#039;x&#039;&#039;&#039; est inférieur ou égal à un autre élément &#039;&#039;&#039;y&#039;&#039;&#039;, alors le point représentant &#039;&#039;&#039;x&#039;&#039;&#039; est placé plus bas que celui pour &#039;&#039;&#039;y&#039;&#039;&#039;. Ainsi, les &#039;&#039;&#039;segments&#039;&#039;&#039; n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque &#039;&#039;&#039;x &amp;lt; y&#039;&#039;&#039;, s&#039;il existe &#039;&#039;&#039;z&#039;&#039;&#039; tel que  &#039;&#039;&#039;x &amp;lt; z &amp;lt; y&#039;&#039;&#039;, alors aucun segment ne doit lier &#039;&#039;&#039;x&#039;&#039;&#039; à &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire &#039;&#039;&#039;{ε, b, a, aa, aaa, aaa, a…a}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13919</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13919"/>
		<updated>2022-05-27T16:08:37Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Un langage un peu plus complexe : Le langage a*+b */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de &#039;&#039;&#039;EK&#039;&#039;&#039; et de &#039;&#039;&#039;REK&#039;&#039;&#039; dans &#039;&#039;&#039;FRK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un &#039;&#039;[https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse]&#039;&#039; où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément &#039;&#039;&#039;x&#039;&#039;&#039; est inférieur ou égal à un autre élément &#039;&#039;&#039;y&#039;&#039;&#039;, alors le point représentant &#039;&#039;&#039;x&#039;&#039;&#039; est placé plus bas que celui pour &#039;&#039;&#039;y&#039;&#039;&#039;. Ainsi, les &#039;&#039;&#039;segments&#039;&#039;&#039; n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque &#039;&#039;&#039;x &amp;lt; y&#039;&#039;&#039;, s&#039;il existe &#039;&#039;&#039;z&#039;&#039;&#039; tel que  &#039;&#039;&#039;x &amp;lt; z &amp;lt; y&#039;&#039;&#039;, alors aucun segment ne doit lier &#039;&#039;&#039;x&#039;&#039;&#039; à &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire &#039;&#039;&#039;{ε, b, a, aa, aaa, aaa, a…a}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13918</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13918"/>
		<updated>2022-05-27T16:08:22Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Le théorème principal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de &#039;&#039;&#039;EK&#039;&#039;&#039; et de &#039;&#039;&#039;REK&#039;&#039;&#039; dans &#039;&#039;&#039;FRK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un &#039;&#039;[https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse]&#039;&#039; où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément &#039;&#039;&#039;x&#039;&#039;&#039; est inférieur ou égal à un autre élément &#039;&#039;&#039;y&#039;&#039;&#039;, alors le point représentant &#039;&#039;&#039;x&#039;&#039;&#039; est placé plus bas que celui pour &#039;&#039;&#039;y&#039;&#039;&#039;. Ainsi, les &#039;&#039;&#039;segments&#039;&#039;&#039; n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque &#039;&#039;&#039;x &amp;lt; y&#039;&#039;&#039;, s&#039;il existe &#039;&#039;&#039;z&#039;&#039;&#039; tel que  &#039;&#039;&#039;x &amp;lt; z &amp;lt; y&#039;&#039;&#039;, alors aucun segment ne doit lier &#039;&#039;&#039;x&#039;&#039;&#039; à &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire {ε, b, a, aa, aaa, aaa, a…a}.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13915</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13915"/>
		<updated>2022-05-27T16:06:32Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Annexes (code) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire {ε, b, a, aa, aaa, aaa, a…a}.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos du code que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13914</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13914"/>
		<updated>2022-05-27T16:06:17Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Annexes (code) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire {ε, b, a, aa, aaa, aaa, a…a}.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
&lt;br /&gt;
Voici les photos des codes que j&#039;ai pu faire.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13912</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13912"/>
		<updated>2022-05-27T16:04:28Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Théorème (Les claviers sans flèches) : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche &#039;&#039;&#039;←abc&#039;&#039;&#039; nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039; nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire {ε, b, a, aa, aaa, aaa, a…a}.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13910</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13910"/>
		<updated>2022-05-27T16:03:41Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Théorème (Les claviers sans flèches) : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observons par exemple comment nous pouvons reconnaître le mot &#039;&#039;&#039;babababb&#039;&#039;&#039; avec l’automate et le clavier. On le décompose en &#039;&#039;b · a · b · ab · a · bb&#039;&#039;.&lt;br /&gt;
* On écrit un b avec la touche ←←←←bb, ce qui nous mène à l’état 1 (il faudra effacer le deuxième b avant d’écrire la suite du mot).&lt;br /&gt;
* La touche ←abc nous permet d’effacer le b et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer (le bc) à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La ←←←←bb nous permet d’effacer les quatre lettres et d’écrire b, ce qui nous mène à l’état 1 (il nous faudra effacer le b restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche ←abc nous permet d’effacer le b et d’écrire ab, ce qui nous mène à l’état 1 (il faudra effacer le c restant avant d’écrire la suite du mot).&lt;br /&gt;
* La touche ←abc nous permet d’effacer le c et d’écrire a, ce qui nous mène à l’état 2 (il faudra effacer le bc restant avant d’écrire la suite du mot).&lt;br /&gt;
* Une suite de touche nous permet de passer de deux lettres à effacer à quatre lettres à effacer, ce qui nous permet de passer à l’état 4.&lt;br /&gt;
* La touche ←←←←bb nous permet d’écrire le bb restant, ce qui nous mène à l’état 0 où on peut accepter le mot.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire {ε, b, a, aa, aaa, aaa, a…a}.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13906</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13906"/>
		<updated>2022-05-27T15:59:11Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Les conjectures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire {ε, b, a, aa, aaa, aaa, a…a}.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
Malgré le fait que la théorie des langages existe depuis quelques années, il y a encore des hypothèses. Par exemple on ne sait toujours pas si on a &#039;&#039;&#039;REK ⊂ FRK&#039;&#039;&#039; ou même &#039;&#039;&#039;EK ⊂ FRK&#039;&#039;&#039;. On ne sait pas non plus si tous les claviers rationnels existent. On peut prendre l&#039;exemple du clavier pour créer le langage a*b*c*, aucun clavier n&#039;a été trouvé pour l&#039;écrire. Si on arrivait à démontrer que ce clavier n&#039;existe pas on pourra prouver qu&#039;il existe un nouveau type de langage.&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13902</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13902"/>
		<updated>2022-05-27T15:51:42Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Un langage un peu plus complexe : Le langage a*+b */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire {ε, b, a, aa, aaa, aaa, a…a}.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifié s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13901</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13901"/>
		<updated>2022-05-27T15:51:28Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Un langage un peu plus complexe : Le langage a*+b */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b, il peut aussi s&#039;écrire {ε, b, a, aa, aaa, aaa, a…a}.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le langage est plus complexe que les autres car il utilise les bords pour vérifiés s&#039;il y a un caractère ou non.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13900</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13900"/>
		<updated>2022-05-27T15:47:31Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Le théorème principal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13899</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13899"/>
		<updated>2022-05-27T15:47:17Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Les classes de claviers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13898</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13898"/>
		<updated>2022-05-27T15:47:08Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Les classes de claviers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13897</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13897"/>
		<updated>2022-05-27T15:46:55Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Les classes de claviers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13896</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13896"/>
		<updated>2022-05-27T15:46:38Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Rappels, définitions et exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13895</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13895"/>
		<updated>2022-05-27T15:46:30Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Rappels, définitions et exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13894</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13894"/>
		<updated>2022-05-27T15:46:21Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13893</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13893"/>
		<updated>2022-05-27T15:46:10Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13892</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13892"/>
		<updated>2022-05-27T15:46:02Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13891</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13891"/>
		<updated>2022-05-27T15:45:49Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Rappels, définitions et exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13890</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13890"/>
		<updated>2022-05-27T15:45:23Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Rappels, définitions et exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13889</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13889"/>
		<updated>2022-05-27T15:44:27Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Un langage un peu plus complexe : Le langage a*+b */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres.&#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b▶◀←, a▶◀←, ▶←aa◀}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b▶◀←&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a▶◀←&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;▶←aa◀&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13888</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13888"/>
		<updated>2022-05-27T15:42:46Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Théorème (Les claviers sans flèches) : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres.&#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers &#039;&#039;&#039;sans flèches&#039;&#039;&#039;, il existe un &#039;&#039;&#039;automate fini&#039;&#039;&#039; reconnaissant le même langage qui est &#039;&#039;&#039;rationnel&#039;&#039;&#039;. Un langage &#039;&#039;&#039;rationnel&#039;&#039;&#039; est un langage qui est décrit par une expression contenant uniquement les lettres et les symboles &#039;&#039;&#039;*&#039;&#039;&#039;, &#039;&#039;&#039;+&#039;&#039;&#039; et &#039;&#039;&#039;.&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Par exemple :&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Le clavier &#039;&#039;&#039;K = {←abc, ←←←←bb}&#039;&#039;&#039; reconnait le langage &#039;&#039;&#039;abc + bb + abb + [(ab + b) (ab)* abb]&#039;&#039;&#039; ainsi que le l&#039;automate suivant :&lt;br /&gt;
&lt;br /&gt;
Les transitions en &#039;&#039;&#039;rouge&#039;&#039;&#039; (flèches pleines) correspondent à celles qu’il est possible de faire avec la touche &#039;&#039;&#039;←abc&#039;&#039;&#039; et les &#039;&#039;&#039;bleues&#039;&#039;&#039; (tirets) à celles qu’on fait avec la touche &#039;&#039;&#039;←←←←bb&#039;&#039;&#039;. Et finalement, les transitions &#039;&#039;&#039;noires&#039;&#039;&#039; (pointillés), elles, correspondent à utiliser une suite de touches pour passer de i lettres à effacer à j lettres à effacer. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:automate_REK.png]]&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b&amp;gt;&amp;lt;&amp;amp;, a&amp;gt;&amp;lt;&amp;amp;, &amp;gt;&amp;amp;aa&amp;lt;}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;&amp;gt;&amp;amp;aa&amp;lt;&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Automate_REK.png&amp;diff=13886</id>
		<title>Fichier:Automate REK.png</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Automate_REK.png&amp;diff=13886"/>
		<updated>2022-05-27T15:36:54Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13881</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13881"/>
		<updated>2022-05-27T14:59:57Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Les langages rationnels */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres.&#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Théorème (Les claviers sans flèches) :==&lt;br /&gt;
Pour tous claviers sans flèches, il existe un automate fini reconnaissant le même langage qui est rationnel.&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b&amp;gt;&amp;lt;&amp;amp;, a&amp;gt;&amp;lt;&amp;amp;, &amp;gt;&amp;amp;aa&amp;lt;}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;&amp;gt;&amp;amp;aa&amp;lt;&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13880</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13880"/>
		<updated>2022-05-27T14:58:00Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Le théorème principal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres.&#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des classes de claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Les langages rationnels==&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b&amp;gt;&amp;lt;&amp;amp;, a&amp;gt;&amp;lt;&amp;amp;, &amp;gt;&amp;amp;aa&amp;lt;}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;&amp;gt;&amp;amp;aa&amp;lt;&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13878</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13878"/>
		<updated>2022-05-27T14:56:26Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Rappels : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres.&#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* = {ε, a, aa, aaa, aaa, a…a}  sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Les langages rationnels==&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b&amp;gt;&amp;lt;&amp;amp;, a&amp;gt;&amp;lt;&amp;amp;, &amp;gt;&amp;amp;aa&amp;lt;}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;&amp;gt;&amp;amp;aa&amp;lt;&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13877</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13877"/>
		<updated>2022-05-27T14:55:26Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Définitions : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres.&#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
uv est la &#039;&#039;&#039;concaténation&#039;&#039;&#039; des mots &#039;&#039;&#039;u&#039;&#039;&#039; et &#039;&#039;&#039;v&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre si elle appartient à l&#039;alphabet&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur (backspace)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi (entrée)&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Les langages rationnels==&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b&amp;gt;&amp;lt;&amp;amp;, a&amp;gt;&amp;lt;&amp;amp;, &amp;gt;&amp;amp;aa&amp;lt;}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;&amp;gt;&amp;amp;aa&amp;lt;&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13876</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13876"/>
		<updated>2022-05-27T14:54:38Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Définitions : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres.&#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
uv est la &#039;&#039;&#039;concaténation&#039;&#039;&#039; des mots &#039;&#039;&#039;u&#039;&#039;&#039; et &#039;&#039;&#039;v&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre a si a appartient au clavier &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;←&#039;&#039;&#039; : efface la lettre à gauche du curseur&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;◀ &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;▶ &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;█ &#039;&#039;&#039;: permet de validé la saisi&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Les langages rationnels==&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b&amp;gt;&amp;lt;&amp;amp;, a&amp;gt;&amp;lt;&amp;amp;, &amp;gt;&amp;amp;aa&amp;lt;}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;&amp;gt;&amp;amp;aa&amp;lt;&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13874</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13874"/>
		<updated>2022-05-27T14:53:35Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Le théorème principal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres.&#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
uv est la &#039;&#039;&#039;concaténation&#039;&#039;&#039; des mots &#039;&#039;&#039;u&#039;&#039;&#039; et &#039;&#039;&#039;v&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre a si a appartient au clavier &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039; : efface la lettre à gauche du curseur&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt; &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;gt; &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;$ &#039;&#039;&#039;: permet de validé la saisi&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
Ce schéma est un [https://fr.wikipedia.org/wiki/Diagramme_de_Hasse diagramme de Hasse] où &lt;br /&gt;
la relation entre deux éléments est représentée par un segment entre deux points.&lt;br /&gt;
Si un élément x est inférieur ou égal à un autre élément y, alors le point représentant x est placé plus bas que celui pour y. Ainsi, les segments n&#039;ont pas besoin d&#039;être fléchés pour avoir leur orientation décrite.&lt;br /&gt;
Lorsque x &amp;lt; y, s&#039;il existe z tel que  x &amp;lt; z &amp;lt; y, alors aucun segment ne doit lier x à y.&lt;br /&gt;
&lt;br /&gt;
==Les langages rationnels==&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b&amp;gt;&amp;lt;&amp;amp;, a&amp;gt;&amp;lt;&amp;amp;, &amp;gt;&amp;amp;aa&amp;lt;}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;&amp;gt;&amp;amp;aa&amp;lt;&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Theo_principal.png&amp;diff=13873</id>
		<title>Fichier:Theo principal.png</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Theo_principal.png&amp;diff=13873"/>
		<updated>2022-05-27T14:42:41Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13872</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13872"/>
		<updated>2022-05-27T14:42:27Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Le théorème principal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres.&#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
uv est la &#039;&#039;&#039;concaténation&#039;&#039;&#039; des mots &#039;&#039;&#039;u&#039;&#039;&#039; et &#039;&#039;&#039;v&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre a si a appartient au clavier &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039; : efface la lettre à gauche du curseur&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt; &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;gt; &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;$ &#039;&#039;&#039;: permet de validé la saisi&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
Voici l’ordre exact des claviers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:theo_principal.png]]&lt;br /&gt;
&lt;br /&gt;
Les seules inclusions de classes sont les inclusions triviales,&lt;br /&gt;
sauf peut-être les inclusions de EK et de REK dans FRK.&lt;br /&gt;
&lt;br /&gt;
==Les langages rationnels==&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b&amp;gt;&amp;lt;&amp;amp;, a&amp;gt;&amp;lt;&amp;amp;, &amp;gt;&amp;amp;aa&amp;lt;}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;&amp;gt;&amp;amp;aa&amp;lt;&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13871</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13871"/>
		<updated>2022-05-27T14:35:50Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Modélisation : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres.&#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
uv est la &#039;&#039;&#039;concaténation&#039;&#039;&#039; des mots &#039;&#039;&#039;u&#039;&#039;&#039; et &#039;&#039;&#039;v&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre a si a appartient au clavier &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039; : efface la lettre à gauche du curseur&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt; &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;gt; &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;$ &#039;&#039;&#039;: permet de validé la saisi&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
==Les langages rationnels==&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b&amp;gt;&amp;lt;&amp;amp;, a&amp;gt;&amp;lt;&amp;amp;, &amp;gt;&amp;amp;aa&amp;lt;}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;&amp;gt;&amp;amp;aa&amp;lt;&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Configurations.png&amp;diff=13870</id>
		<title>Fichier:Configurations.png</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Configurations.png&amp;diff=13870"/>
		<updated>2022-05-27T14:34:13Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13869</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13869"/>
		<updated>2022-05-27T14:34:02Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Rappels, définitions et exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres.&#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
uv est la &#039;&#039;&#039;concaténation&#039;&#039;&#039; des mots &#039;&#039;&#039;u&#039;&#039;&#039; et &#039;&#039;&#039;v&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre a si a appartient au clavier &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039; : efface la lettre à gauche du curseur&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt; &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;gt; &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;$ &#039;&#039;&#039;: permet de validé la saisi&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur.&lt;br /&gt;
&lt;br /&gt;
On peut donc avoir ce genre de configurations en fonction de l&#039;opération élémentaire utilisée.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:configurations.png]]&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
==Les langages rationnels==&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b&amp;gt;&amp;lt;&amp;amp;, a&amp;gt;&amp;lt;&amp;amp;, &amp;gt;&amp;amp;aa&amp;lt;}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;&amp;gt;&amp;amp;aa&amp;lt;&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13868</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13868"/>
		<updated>2022-05-27T14:31:48Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Rappels, définitions et exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres.&#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
uv est la &#039;&#039;&#039;concaténation&#039;&#039;&#039; des mots &#039;&#039;&#039;u&#039;&#039;&#039; et &#039;&#039;&#039;v&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre a si a appartient au clavier &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039; : efface la lettre à gauche du curseur&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt; &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;gt; &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;$ &#039;&#039;&#039;: permet de validé la saisi&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
===Modélisation :===&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
==Les langages rationnels==&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b&amp;gt;&amp;lt;&amp;amp;, a&amp;gt;&amp;lt;&amp;amp;, &amp;gt;&amp;amp;aa&amp;lt;}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;&amp;gt;&amp;amp;aa&amp;lt;&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13834</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13834"/>
		<updated>2022-05-22T21:10:18Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Les classes de claviers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres.&#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
uv est la &#039;&#039;&#039;concaténation&#039;&#039;&#039; des mots &#039;&#039;&#039;u&#039;&#039;&#039; et &#039;&#039;&#039;v&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre a si a appartient au clavier &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039; : efface la lettre à gauche du curseur&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt; &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;gt; &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;$ &#039;&#039;&#039;: permet de validé la saisi&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:20%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
==Les langages rationnels==&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b&amp;gt;&amp;lt;&amp;amp;, a&amp;gt;&amp;lt;&amp;amp;, &amp;gt;&amp;amp;aa&amp;lt;}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;&amp;gt;&amp;amp;aa&amp;lt;&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13833</id>
		<title>Les &quot;claviers&quot;</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Les_%22claviers%22&amp;diff=13833"/>
		<updated>2022-05-22T21:07:39Z</updated>

		<summary type="html">&lt;p&gt;Ahacque : /* Annexes (code) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chaque touche d&#039;un clavier affiche un caractère. On peut alors écrire tous les mots possibles en appuyant successivement sur les touches pertinentes. Sur un clavier cassé (par exemple, parce qu&#039;il a reçu du café), les touches n&#039;ont plus forcément le comportement attendu : la première touche peut inscrire &amp;quot;ktjh&amp;quot;, le seconde &amp;quot;uta&amp;quot;, etc. Il n&#039;est alors plus forcément possible d&#039;écrire tous les mots possibles, mais il est facile de comprendre ce que l&#039;on peut faire. Lorsque le comportement de ces touches peut inclure des déplacement (gauche / droite) et la touche &amp;quot;backspace&amp;quot;, la situation peut devenir infernale ! Quatre jeunes étudiants en thèse ont récemment développé cette théorie.&lt;br /&gt;
L&#039;objectif est de se familiariser avec les notions de théorie des langages et de regarder les premiers résultats de cette théorie, les astuces mises en œuvre pour étudier les langages engendrés et les questions ouvertes.&lt;br /&gt;
&lt;br /&gt;
==Rappels, définitions et exemples==&lt;br /&gt;
===Rappels :===&lt;br /&gt;
Un &#039;&#039;&#039;alphabet&#039;&#039;&#039; est un ensemble fini dont les éléments sont des appelés lettres.&#039;&#039;&#039;Exemple :&#039;&#039;&#039; {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;mot&#039;&#039;&#039; est une suite finie de lettres. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; acabbac est un mot sur l’alphabet {a,b,c}&lt;br /&gt;
&lt;br /&gt;
Un &#039;&#039;&#039;langage&#039;&#039;&#039; est un ensemble de mots. &#039;&#039;&#039;Exemple :&#039;&#039;&#039; a* sur le clavier  {a}&lt;br /&gt;
&lt;br /&gt;
uv est la &#039;&#039;&#039;concaténation&#039;&#039;&#039; des mots &#039;&#039;&#039;u&#039;&#039;&#039; et &#039;&#039;&#039;v&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Une &#039;&#039;&#039;configuration&#039;&#039;&#039; s’écrit &#039;&#039;&#039;&amp;lt; u | v &amp;gt;&#039;&#039;&#039; avec &#039;&#039;&#039;u&#039;&#039;&#039; le préfixe, &#039;&#039;&#039;v&#039;&#039;&#039; le suffixe et &#039;&#039;&#039;|&#039;&#039;&#039; le curseur&lt;br /&gt;
&lt;br /&gt;
===Définitions :===&lt;br /&gt;
Un &#039;&#039;&#039;clavier&#039;&#039;&#039; est un ensemble fini de suite d’opérations élémentaires appelées des &#039;&#039;&#039;touches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs touches spéciales appelées des &#039;&#039;&#039;opérations élémentaires&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; : ajoute la lettre a si a appartient au clavier &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039; : efface la lettre à gauche du curseur&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt; &#039;&#039;&#039;: déplace le curseur à gauche&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;gt; &#039;&#039;&#039;: déplace le curseur à droite&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;$ &#039;&#039;&#039;: permet de validé la saisi&lt;br /&gt;
&lt;br /&gt;
En effet la touche entrée existe car il existe deux types de claviers, les &#039;&#039;&#039;claviers automatiques&#039;&#039;&#039; et les &#039;&#039;&#039;claviers manuels&#039;&#039;&#039;. Les claviers automatiques n’ont pas de notion de fin de série alors que les claviers manuels oui. Il faut donc utilisé des touches acceptantes qui mène a une fin de série après avoir effectué leur action, on peut voir ces touches comme des touches qui se terminent par le symbole entrée.&lt;br /&gt;
&lt;br /&gt;
===Exemples :=== &lt;br /&gt;
====Le langage (ab+a)*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {ab, a}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui s’écrivent avec des a et des b, il y a plus ou autant de a que de b.&lt;br /&gt;
&lt;br /&gt;
====Le langage a*b*====&lt;br /&gt;
Ce langage s’écrit avec le clavier &#039;&#039;&#039;K = {a, b&amp;lt;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a et de b que l’on veut et tous les a sont avant les b.&lt;br /&gt;
&lt;br /&gt;
==Les classes de claviers ==&lt;br /&gt;
On appelle &#039;&#039;&#039;claviers minimaux&#039;&#039;&#039; les claviers automatiques qui ne contiennent aucun symbole spécial. On note &#039;&#039;&#039;MK&#039;&#039;&#039; l’ensemble de ces claviers. On construit toutes les autres classes de claviers en partant d’un clavier minimal et en ajoutant certaines possibilités de symboles spéciaux. Les noms des classes sont obtenus en rajoutant &#039;&#039;&#039;E&#039;&#039;&#039; pour la touche entrée, &#039;&#039;&#039;R&#039;&#039;&#039; pour la touche de suppression à gauche du curseur, &#039;&#039;&#039;G&#039;&#039;&#039; pour la touche de déplacement à gauche et &#039;&#039;&#039;F&#039;&#039;&#039; pour les touches de déplacement. Ainsi, en fonction des symboles spéciaux autorisés, on obtient ces différentes classes .&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
|+ Classes de claviers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:33%;&amp;quot; |&lt;br /&gt;
MK {}&lt;br /&gt;
| style=&amp;quot;width:33%;&amp;quot; |&lt;br /&gt;
GK {&amp;lt;}&lt;br /&gt;
| style=&amp;quot;width:34%;&amp;quot; |&lt;br /&gt;
FK {&amp;lt;, &amp;gt;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:33%;&amp;quot; |&lt;br /&gt;
EK {$}&lt;br /&gt;
| style=&amp;quot;width:33%;&amp;quot; |&lt;br /&gt;
GEK {&amp;lt;, $}&lt;br /&gt;
| style=&amp;quot;width:34%;&amp;quot; |&lt;br /&gt;
FEK {&amp;lt;, &amp;gt;, $}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:33%;&amp;quot; |&lt;br /&gt;
RK {&amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:33%;&amp;quot; |&lt;br /&gt;
GRK {&amp;lt;, &amp;amp;}&lt;br /&gt;
| style=&amp;quot;width:34%;&amp;quot; |&lt;br /&gt;
FRK {&amp;lt;, &amp;gt;, &amp;amp;}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:33%;&amp;quot; |&lt;br /&gt;
REK {&amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:33%;&amp;quot; |&lt;br /&gt;
GREK {&amp;lt;, &amp;amp;, $}&lt;br /&gt;
| style=&amp;quot;width:34%;&amp;quot; |&lt;br /&gt;
FREK {&amp;lt;, &amp;gt;, &amp;amp;, $}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarque :&#039;&#039;&#039; L’utilisation de la touche de déplacement à droite sans la touche de déplacement à gauche est inutile car le curseur est toujours à droite, il est donc inutile de déplacer le curseur à droite.&lt;br /&gt;
&lt;br /&gt;
==Le théorème principal==&lt;br /&gt;
&lt;br /&gt;
==Les langages rationnels==&lt;br /&gt;
&lt;br /&gt;
==Un langage un peu plus complexe : Le langage a*+b==&lt;br /&gt;
C’est l’ensemble des mots qui ont autant de a que l’on veut ou qui ne font qu’un b.&lt;br /&gt;
&lt;br /&gt;
On peut se dire que que la création d’un tel clavier n’est pas possible, il faudrait une touche qui fait un certain nombre de a et une touche qui fait un b mais si on utilise les deux touches il y en aura des a avec un b dans le même mot.&lt;br /&gt;
&lt;br /&gt;
Mais ce langage est possible et il s’écrit avec le clavier &#039;&#039;&#039;K = {b&amp;gt;&amp;lt;&amp;amp;, a&amp;gt;&amp;lt;&amp;amp;, &amp;gt;&amp;amp;aa&amp;lt;}.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En effet si on regarde l’automate suivant on peut mieux comprendre ce que fait le clavier.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Automate.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nommons la touche &#039;&#039;&#039;b&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 1, la touche &#039;&#039;&#039;a&amp;lt;&amp;gt;&amp;amp;&#039;&#039;&#039; la touche 2 et la touche &#039;&#039;&#039;&amp;gt;&amp;amp;aa&amp;lt;&#039;&#039;&#039; la touche 3, &lt;br /&gt;
On part de la configuration initiale &#039;&#039;&#039;&amp;lt; ε | ε &amp;gt;&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 1, les touches 1 et 2 ne modifient rien par la suite. &lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 2, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
* Si on fait la touche 3, les touches 1 et 2 ne modifient rien par la suite.&lt;br /&gt;
&lt;br /&gt;
Seulement la touche 3 modifie les configurations précédentes et donne une configuration de la forme &#039;&#039;&#039;&amp;lt; a^n+1 | a &amp;gt;&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Ainsi pour avoir le mot avec un unique b il faut simplement utilisé la touche 1 la première fois et ne pas utilisé la touche 3 le reste.&lt;br /&gt;
&lt;br /&gt;
==Les conjectures==&lt;br /&gt;
&lt;br /&gt;
== Annexes (code)==&lt;br /&gt;
[[Fichier:comb_ta_inf.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comb_tai_n.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_list_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ajoute_touche_ex.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mot_v_n_comb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mots_comb_tai_n.png]]&lt;/div&gt;</summary>
		<author><name>Ahacque</name></author>
	</entry>
</feed>