Si vous avez deux fonctions implémentant un algorithme de tri différent, est-il alors possible de déduire par code source qu'elles ont toutes les deux les mêmes propriétés externes? Cela signifie qu'ils auront tous les deux une séquence non triée possible comme entrée et une séquence triée comme sortie? De quelle manière ces propriétés externes pourraient-elles être déterminées par le code source? Et comment décririez-vous ces propriétés externes? Quelle notation serait utilisée?
Les propriétés externes pourraient être connues en les définissant explicitement, par exemple dans un système de type, mais je me demande si cela pourrait être fait implicitement. Ou est-il théoriquement impossible de déduire ce genre de sémantique? Je m'intéresse à savoir si cela est possible pour des fonctions arbitraires, pas seulement pour les algorithmes de tri, en supposant que des choses comme les fonctions s'arrêteront toujours et n'auront pas d'effets secondaires.
Dois-je regarder la sémantique dénotationnelle ou est-elle sans rapport?
Je suis intéressé par des pointeurs de recherche dans ce domaine et par différents termes utilisés pour décrire le sujet qui pourraient aider ma recherche documentaire.
la source
L'égalité d'extension dans les langages de programmation complets de Turing est indécidable en général, mais cela ne devrait pas vous empêcher de vérifier ou de falsifier que deux fonctions spécifiques sont égales sur le plan de l'extension.
la source
Une réponse rapide (j'avoue que je n'ai pas passé beaucoup de temps ...) Le théorème de Rice dit que pour toute question non triviale, il est indécidable de dire si la fonction calculée par un programme aura la propriété ou non. Par conséquent, la question ici est indécidable
la source