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.