Si la propriété est une spécification (totale) alors spec est déjà en quelque sorte le programme en lui-même. Si cette spec était "exécutée", par une machine, son comportement serait le même que celui du programme à vérifier.
Je comprends bien. D'où la recherche de l'écriture de spec exécutable (est ce que tu connais Scade ? c'est l'argument des LLR executable pour le vendre).
Mais il existe toujours un moment il faut spécifier ce que tu mets dans la spec. Il y a toujours une spec de spec en cascade.
Donc, il y a toujours à un moment l'écriture de quelques choses de non ambigüe et l'écriture du code final. Ce qui revient à avoir 2 "modèles", non ?
Tu parles quand même dans un cadre très général bien loin des cas pratiques.
- de déterminer si ce programme fait la même chose qu'un autre programme
Dans le cas général.
Parce que c'est justement dans ce domaine là que les prouveurs formelles sont utilisés industriellement à grande échelle. On appelle cela les "equivalence checker". C'est un outil du domaine de l'EDA qui permet de s'assurer qu'une mer de portes générées par un synthétiseur est équivalent au code source HDL.
- et par extension de déterminer si ce programme est conforme à sa spécification
Il faut encore savoir ce qu'est une spec. Souvent, c'est super flou et pas clair. Le client veut que le produit réponde à son problème et ne plante pas, par contre, il ne sait pas forcément bien le définir. C'est plus un problème d'ingénierie logiciel que de preuves mathématiques.
Tu pourrais nous expliquer le genre de code qui est fournis à un assistant de preuve, par exemple, en utilisant du pseudo code ?
Dans le milieu de l'aéronautique, il est souvent question de comparaison de modèles et de confrontation d'interprétation de spec entre 2 équipes utilisant des outils différents. Donc, on a une équipe qui développe le programme et l'autre un modèle sous une autre forme. On compare ensuite les résultats de tests définit par avance par l'équipe de test (mais qui pourrait être généré automatiquement par classe d'équivalence des entrées et couverture de code)
Le but serait ici de facilité la vie de la deuxième équipe.
D'ailleurs, y'a ESL Technology qui est à racheter (ex-Esterel EDA), la boite qui a repris le langage Esterel. 10 ans de R&D. Elle est en faillite suite à l'arrêt de la moitié des contrats de prestation du principale client TI.
L'intégration de le preuve est assez sympa. Le langage lui-même fait passer le VHDL pour de l'assembleur par rapport à Java.
Ce que tu dis, c'est justement que c'est très précieux, car cela trouve jusqu'au manquement de la spec. Cela repousse le travail idiot du test systématique par une recherche d'une meilleur cohérence de spec et d'un test de haut niveau.
Personne n'a jamais dit qu'un ordinateur ferait tout le boulot à ta place.
Sinon dans les prouveurs "100% automatique", il recherche si il existe les conditions de plantage du code C, comme les "array out of bound", les division par zéro. Le but est ici de prouver que le code ne plante pas, pas qu'il correspond à la spec. C'est déjà pas mal car on ne demande rien aux codeurs "en plus".
D'une manière général, la preuve, c'est génial, sauf que cela passe rarement à l'échelle (pb numero 1) et "les gens" ne font pas confiance à un "toujours vrai" rendu par un outil, par contre, ils aiment bien qu'on trouve leur bug.
Les défauts que tu cites sont du niveau de l'arrachage de prise sans sauvegarde automatique.
En te lisant, on se dit que le problème est plutôt entre la chaise et le clavier, ton but avec cette expérience n'est pas d'essayer la Mandriva mais de lui casser du sucre sur le dos pour dire "***" c'est mieux.
Disons qu'aujourd'hui, un GPU est surtout capable de faire un nombre de MAC 10x supérieur à un CPU si il n'y a pas trop de dépendance de donné et si tu n'exploses pas le nombre de registre interne. C'est donc assez limitant.
de toute façon en général les autres (État, banques, etc.) se servent avant lors de la liquidation
ça, c'est lamentable. Vu la fragilité de leur finance, les PME devrait être servi en premier mais j'imagine qu'il doit exister des moyens de faillites frauduleuse pour ne pas payer le fisc :/
Or il est quelconque. C'est "programme" qui défini son comportement vis-à-vis de la donnée, qu'il peut très bien considérer comme une fonction avec des arguments si il a envie.
Mais dans ce cas, tu retombes dans le problème de la string infinie (pour le cas du programme qui prend en paramètre un programme et qui s'avale lui-même, au hasard halt()).
Et si tu rajoutes les données dans ta 2ième string, dans halt(halt1,halt2) halt2 ne contient pas de donné à sa suite, il contient donc "null" ?
[^] # Re: Se passer des tests ...
Posté par Nicolas Boulay (site web personnel) . En réponse au journal La preuve de programme : où en est-on ?. Évalué à 2.
Ensuite, il faut aussi prouver le prouver, ce qui n'est pas gagné.
"La première sécurité est la liberté"
[^] # Re: Se passer des tests ...
Posté par Nicolas Boulay (site web personnel) . En réponse au journal La preuve de programme : où en est-on ?. Évalué à 2.
J'imagine que écrire le code puis écrire sa preuve devrait aussi suffire.
Mais d'après les exemples de "Why" pour un code de 20 lignes, il y en a 1000 de preuves. On est loin d'être utilisable.
"La première sécurité est la liberté"
[^] # Re: Se passer des tests ...
Posté par Nicolas Boulay (site web personnel) . En réponse au journal La preuve de programme : où en est-on ?. Évalué à 2.
Je comprends bien. D'où la recherche de l'écriture de spec exécutable (est ce que tu connais Scade ? c'est l'argument des LLR executable pour le vendre).
Mais il existe toujours un moment il faut spécifier ce que tu mets dans la spec. Il y a toujours une spec de spec en cascade.
Donc, il y a toujours à un moment l'écriture de quelques choses de non ambigüe et l'écriture du code final. Ce qui revient à avoir 2 "modèles", non ?
"La première sécurité est la liberté"
[^] # Re: mouais
Posté par Nicolas Boulay (site web personnel) . En réponse au journal La preuve de programme : où en est-on ?. Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Se passer des tests ...
Posté par Nicolas Boulay (site web personnel) . En réponse au journal La preuve de programme : où en est-on ?. Évalué à 2.
Mais lors d'une recherche de meilleur qualité, il n'y a pas d'autres solutions non ?
"La première sécurité est la liberté"
[^] # Re: prouveur automatique/assistant de preuve
Posté par Nicolas Boulay (site web personnel) . En réponse au journal La preuve de programme : où en est-on ?. Évalué à 2.
- de déterminer si ce programme fait la même chose qu'un autre programme
Dans le cas général.
Parce que c'est justement dans ce domaine là que les prouveurs formelles sont utilisés industriellement à grande échelle. On appelle cela les "equivalence checker". C'est un outil du domaine de l'EDA qui permet de s'assurer qu'une mer de portes générées par un synthétiseur est équivalent au code source HDL.
- et par extension de déterminer si ce programme est conforme à sa spécification
Il faut encore savoir ce qu'est une spec. Souvent, c'est super flou et pas clair. Le client veut que le produit réponde à son problème et ne plante pas, par contre, il ne sait pas forcément bien le définir. C'est plus un problème d'ingénierie logiciel que de preuves mathématiques.
"La première sécurité est la liberté"
[^] # Re: prouveur automatique/assistant de preuve
Posté par Nicolas Boulay (site web personnel) . En réponse au journal La preuve de programme : où en est-on ?. Évalué à 2.
Dans le milieu de l'aéronautique, il est souvent question de comparaison de modèles et de confrontation d'interprétation de spec entre 2 équipes utilisant des outils différents. Donc, on a une équipe qui développe le programme et l'autre un modèle sous une autre forme. On compare ensuite les résultats de tests définit par avance par l'équipe de test (mais qui pourrait être généré automatiquement par classe d'équivalence des entrées et couverture de code)
Le but serait ici de facilité la vie de la deuxième équipe.
"La première sécurité est la liberté"
[^] # Re: mouais
Posté par Nicolas Boulay (site web personnel) . En réponse au journal La preuve de programme : où en est-on ?. Évalué à 2.
L'intégration de le preuve est assez sympa. Le langage lui-même fait passer le VHDL pour de l'assembleur par rapport à Java.
"La première sécurité est la liberté"
[^] # Re: mouais
Posté par Nicolas Boulay (site web personnel) . En réponse au journal La preuve de programme : où en est-on ?. Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: mouais
Posté par Nicolas Boulay (site web personnel) . En réponse au journal La preuve de programme : où en est-on ?. Évalué à 4.
Personne n'a jamais dit qu'un ordinateur ferait tout le boulot à ta place.
Sinon dans les prouveurs "100% automatique", il recherche si il existe les conditions de plantage du code C, comme les "array out of bound", les division par zéro. Le but est ici de prouver que le code ne plante pas, pas qu'il correspond à la spec. C'est déjà pas mal car on ne demande rien aux codeurs "en plus".
D'une manière général, la preuve, c'est génial, sauf que cela passe rarement à l'échelle (pb numero 1) et "les gens" ne font pas confiance à un "toujours vrai" rendu par un outil, par contre, ils aiment bien qu'on trouve leur bug.
"La première sécurité est la liberté"
[^] # Re: trop simple
Posté par Nicolas Boulay (site web personnel) . En réponse au message Quelle utilité a Xorg quand on a DirectFB. Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Pourquoi utiliser la FAT ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Analyse de Bruce Perens de Microsoft versus TomTom. Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Pourquoi utiliser la FAT ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Analyse de Bruce Perens de Microsoft versus TomTom. Évalué à 2.
Ce qui veut dire qu'il sera refusé.
Dans ce cas, le plus rapide serait un ext2 light, sans permission. Cela ne devrait pas être trop dure à écrire.
"La première sécurité est la liberté"
[^] # Re: Peut être
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Analyse de Bruce Perens de Microsoft versus TomTom. Évalué à 5.
Et ensuite, faire en sorte que Tomtom perde le procès pour faire jurisprudence en leur faveur ?
"La première sécurité est la liberté"
[^] # Re: Pourquoi utiliser la FAT ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Analyse de Bruce Perens de Microsoft versus TomTom. Évalué à 2.
Dans ce cas, il ne faudrait pas mieux quelques choses de dédié comme logfs ou autre système pour le stockage lent ?
"La première sécurité est la liberté"
# trop simple
Posté par Nicolas Boulay (site web personnel) . En réponse au message Quelle utilité a Xorg quand on a DirectFB. Évalué à 0.
Le but c'est d'être simple et de marcher partout, si tu veux du plus haut niveau attaque en openGL.
"La première sécurité est la liberté"
[^] # Re: Combien de fois faudra-t-il le dire...
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Firefox est-il un bloatware (en français : un logiciel dont les fonctionnalités ne justifie pas une telle utilisation des ressources matérielles) ?. Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Firefox est-il un bloatware ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Firefox est-il un bloatware (en français : un logiciel dont les fonctionnalités ne justifie pas une telle utilisation des ressources matérielles) ?. Évalué à -2.
"La première sécurité est la liberté"
[^] # Re: ENFIN
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Redoublant Mandriva, au tableau. Évalué à -2.
En te lisant, on se dit que le problème est plutôt entre la chaise et le clavier, ton but avec cette expérience n'est pas d'essayer la Mandriva mais de lui casser du sucre sur le dos pour dire "***" c'est mieux.
"La première sécurité est la liberté"
[^] # Re: Parfais
Posté par Nicolas Boulay (site web personnel) . En réponse au journal éclairez moi..... Évalué à 2.
Les plasma doivent être encore plus sensible à cet effet.
"La première sécurité est la liberté"
[^] # Re: Halting problem
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Déterminer le domaine d'un programme. Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Moteur physique
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Passage de Rigs of Rods en Open Source. Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Si j'étais commerçant...
Posté par Nicolas Boulay (site web personnel) . En réponse au journal [HS]Location: L'abus de caution nuit aux clients. Évalué à 2.
ça, c'est lamentable. Vu la fragilité de leur finance, les PME devrait être servi en premier mais j'imagine qu'il doit exister des moyens de faillites frauduleuse pour ne pas payer le fisc :/
"La première sécurité est la liberté"
[^] # Re: Halting problem
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Déterminer le domaine d'un programme. Évalué à 2.
Mais dans ce cas, tu retombes dans le problème de la string infinie (pour le cas du programme qui prend en paramètre un programme et qui s'avale lui-même, au hasard halt()).
Et si tu rajoutes les données dans ta 2ième string, dans halt(halt1,halt2) halt2 ne contient pas de donné à sa suite, il contient donc "null" ?
"La première sécurité est la liberté"
[^] # Re: Halting problem
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Déterminer le domaine d'un programme. Évalué à 2.
Tu oublis le cas du compilo C de l'interpréteur python qui exécute un script.
C'est pas en connaissant le compilo C et le code C de l'interpréteur que tu peux conclure quoi que ce soit sur le script.
"La première sécurité est la liberté"