J'ai entendu parler de l'induction (structurelle). Il vous permet de construire des structures finies à partir de plus petites et vous donne des principes de preuve pour raisonner sur de telles structures. L'idée est assez claire.
Mais qu'en est-il de la coinduction? Comment ça marche? Comment peut-on dire quelque chose de concluant sur une structure infinie?
Il y a (au moins) deux angles à aborder, à savoir la coinduction comme moyen de définir les choses et comme technique de preuve.
En ce qui concerne la coinduction en tant que technique de preuve, quelle est la relation entre la coinduction et la bisimulation?
terminology
logic
proof-techniques
formal-methods
coinduction
Dave Clarke
la source
la source
Réponses:
Premièrement, pour dissiper une possible dissonance cognitive: raisonner sur des structures infinies n’est pas un problème, nous le faisons tout le temps. Tant que la structure est finement descriptible, ce n'est pas un problème. Voici quelques types courants de structures infinies:
La coinductivité en tant que plus grand point de fixation
Là où les définitions inductives construisent une structure à partir de blocs élémentaires, les définitions coinductives façonnent les structures à partir de la manière dont elles peuvent être déconstruites. Par exemple, le type de listes dont les éléments sont dans un ensemble
A
est défini comme suit dans Coq:De manière informelle, le∀xy,nil≠consxy
list
type est le plus petit type contenant toutes les valeurs construites à partir des constructeursnil
etcons
, avec l'axiome suivant: . Inversement, nous pouvons définir le type le plus grand contenant toutes les valeurs construites à partir de ces constructeurs, en conservant l’axiome de discrimination:list
est isomorphe à un sous-ensemble decolist
. En outre,colist
contient des listes infinies: listes aveccocons
surcocons
.flipflop
est l'infini (liste circulaire) ; est la liste infinie de nombres naturels .0 : : 1 : : 2 : : ...from 0
Une définition récursive est bien formée si le résultat est construit à partir de blocs plus petits: les appels récursifs doivent fonctionner sur des entrées plus petites. Une définition corécursive est bien formée si le résultat génère des objets plus volumineux. L'induction regarde les constructeurs, la coinduction regarde les destructeurs. Notez que la dualité passe non seulement de plus en plus petit à plus grand mais également d’entrées en sorties Par exemple, la raison pour laquelle les
flipflop
etfrom
définitions ci - dessus sont bien formés est que l'appel corecursive est gardée par un appel aucocons
constructeur dans les deux cas.Lorsque les déclarations sur les objets inductifs ont des preuves inductives, les déclarations sur les objets coinductifs ont des preuves coinductives. Par exemple, définissons le prédicat infini sur les colistes; intuitivement, les colistes infinis sont ceux qui ne finissent pas avec
conil
.Pour prouver que les couleurs de la forme
from n
sont infinies, nous pouvons raisonner par coinduction.from n
est égal àcocons n (from (1 + n))
. Cela montre quefrom n
est plus grand quefrom (1 + n)
, qui est infini par l'hypothèse de la coinduction,from n
est donc infini.Bisimilarité, une propriété coinductive
La coinduction en tant que technique de preuve s'applique également aux objets finitaires. Intuitivement, les preuves inductives sur un objet sont basées sur la façon dont l'objet est construit. Les preuves coinductives sont basées sur la façon dont l'objet peut être décomposé.
Lors de l’étude de systèmes déterministes, il est courant de définir l’équivalence par des règles inductives: deux systèmes sont équivalents s’il est possible de passer de l’un à l’autre par une série de transformations. De telles définitions tendent à ne pas saisir les nombreuses manières différentes dont les systèmes non déterministes peuvent avoir le même comportement (observable) malgré une structure interne différente. (La coinduction est également utile pour décrire les systèmes sans terminaison, même s'ils sont déterministes, mais ce n'est pas ce sur quoi je vais me concentrer ici.)
Les systèmes non déterministes tels que les systèmes concurrents sont souvent modélisés par des systèmes de transition étiquetés . Un LTS est un graphe orienté dans lequel les arêtes sont étiquetées. Chaque bord représente une transition possible du système. Une trace d'un LTS est la séquence d'étiquettes de bord sur un chemin dans le graphique.
Deux LTS peuvent se comporter de manière identique, en ce sens qu'ils ont les mêmes traces possibles, même si leur structure interne est différente. L'isomorphisme des graphes est trop fort pour définir leur équivalence. Au lieu de cela, un LTS est dit pour simuler un autre LTS si chaque transition du second LTS admet une transition correspondant à la première. Formellement, soit l’union disjointe des états des deux LTS, l’ensemble (commun) d’étiquettes et la relation de transition. La relation est une simulation si B S L → R ⊆ S × S ∀ ( p , q ) ∈ R , si p alpha → p ' puis ∃ q ' ,A B S L → R⊆S×S
Il existe potentiellement de nombreuses bisimulations dans un LTS. Différentes bisimulations peuvent identifier différents états. Étant donné deux bisimulations et , la relation donnée en prenant l'union des graphes de relation est elle-même une bisimulation, car les états liés donnent lieu à des états liés pour les deux relations. (Cela vaut également pour les unions infinies. La relation vide est une bisimulation non intelligible, de même que la relation identitaire.) En particulier, l'union de toutes les bisimulations est elle-même une bisimulation, appelée bisimilarité. La bisimilarité est le moyen le plus grossier d’observer un système qui ne fait pas la distinction entre des États distincts.R1 R2 R1∪R2
La bi-similitude est une propriété coinductive. Il peut être défini comme le plus grand point fixe d'un opérateur: c'est la relation la plus grande qui, lorsqu'elle est étendue à l'identification d'états équivalents, reste la même.
Références
Coq et le calcul des constructions inductives
Systèmes de transition étiquetés et bisimulations
Davide Sangiorgi. Le Pi-calcul: une théorie des processus mobiles . Cambridge University Press, 2003. [ Amazon ]
Un chapitre de la programmation certifiée avec types dépendants par A. Chlipala
la source
Considérons la définition inductive suivante:
Qu'est-ce que ? De toute évidence, le jeu de chaînes sans deux ultérieurs , c'est-à-direT b
Droite? Eh bien, ce dont nous avons besoin pour cela, c’est la phrase anodine "et est le plus petit ensemble qui remplisse ces conditions". C'est assez vrai, sinon fonctionnerait aussi.T T={a,b}∗
Mais il y a plus que cela. Écrivez au-dessus de la définition sous forme de fonction (monotone) :f:2Σ∞→2Σ∞
Maintenant, est le plus petit point de fixation de . En fait, parce que est monotone et est un réseau complet , le théorème de Knaster-Tarski nous dit qu'un point de repère aussi petit existe et est un langage approprié. Parce que cela fonctionne avec n'importe quelle définition inductive raisonnable¹, nous n'en parlons généralement pas. Cela correspond tout à fait à notre intuition: nous commençons avec et appliquons les règles étape par étape; dans la limite, nous obtenons .T f f (2Σ∞,⊆) {ε} T
Maintenant nous retournons les choses. Au lieu de dire "si est inclus, ainsi est " nous disons "si est inclus, alors doit avoir été ". Nous ne pouvons pas retourner l'ancre, alors elle s'en va. Cela nous laisse avec un problème: nous devons pouvoir enlever les préfixes arbitrairement longs de tout mot de et rester dans ! Ce n'est pas possible avec des mots finis; C'est une bonne chose que je me suis glissé dans ci-dessus! On finit avec l'ensemble des mots infinis sans facteur (sous-chaîne) , c'est-à-dire .a w a w w T ' T ' Σ ∞ b b T ' = L ( ( b a | a ) ω )w aw aw w T′ T′ Σ∞ bb T′=L((ba∣a)ω)
En termes de , est son plus grand point de fixation². C’est en fait assez intuitif: nous ne pouvons pas espérer toucher d’en bas , c’est-à-dire inductivement en partant de et en ajoutant des éléments qui respectent les règles, nous allons donc d’en haut , c’est-à-dire coinductivement en commençant de et en supprimant les éléments non conformes aux règles.T ' T ' { ε } Σ ∞f T′ T′ {ε} Σ∞
Notation:
¹ Vous n'êtes pas autorisé à faire des choses comme ; la fonction correspondante ne serait pas monotone. ² Nous devons balayer sous le tapis d’une manière ou d’une autre. { ε }w∈T⇒aw∉T
{ε}
la source
We can not turn the anchor around, so it goes away
.