Question

J'ai un moteur de vérification où tandis que les boucles sont traduites en code fonctionnel, comme ceci:

def f() = ... while(c) b ...

def f() = ... fwhile() ...                        
def fwhile() = if(c){ fwhile() } 

Nous voulons que les utilisateurs puissent annoter pendant que les boucles avec une construction diminuent qui indique qu'une certaine mesure diminue à chaque itération. Ceci est utilisé pour prouver la résiliation comme suit:

while (x > 0) {
 decreases(x)
 x = x - 1
}

Le problème est que le vérificateur des diminutions utilise les indices donnés par les conditions préalables des fonctions avec lesquelles il fonctionne. Nous ne pouvons pas spécifier que la condition préalable est la condition de boucle while car elle peut être fausse au premier appel. De mon côté, j'ai proposé la traduction suivante:

def f() = ... if(c) fwhile() else ...        
def fwhile() = b if(c) fwhile() else ...

Je voudrais avoir des commentaires sur l'exactitude de mon approche ainsi que s'il y a de meilleures options, car cela nécessitera toujours de se déplacer dans la fonction FA partie du temps qui devrait être naturellement contenu dans la fonction F

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top