2017-10-18 4 views
-1

Voici par exemple:axiomatique Sémantique - Comment calculer une faible condition

x = y + 1; 
y = y - 2; 
{y < 3} 

Quelle est la plus faible condition de cet exemple?

Je pense que peut-être y < 3 est une réponse.

Sinon, pouvez-vous me dire pourquoi, en détail?

+1

Pourquoi pensez-vous que cela pourrait être? Que pensez-vous que vos références vous disent de faire pour trouver un wp ici? S'il vous plaît lire [ask] et google 'devoirs stackexchange'. – philipxy

Répondre

1

Voici ma première tentative erronée à une réponse fondée sur une lecture rapide de Predicate transformer semantics

WP(x := y + 1; y := y - 2, y < 3)  # Initial problem 
= WP(x := y + 1, WP(y := y - 2, y < 3)) # Sequence rule 
= WP(x := y + 1, y < 5)     # Assignment rule 
= WP(x - 1 = y, y < 5)      # solve for y <--- this is wrong! 
= WP(x - 1 < 5)       # Assignment rule 
= x < 6          # solve for x 

Cependant, comme l'a souligné Kris depuis x := y + 1 est une affectation à x qui ne porte pas atteinte y la condition la plus faible pour y devrait juste être y < 5 donc la réponse correcte doit être

WP(x := y + 1; y := y - 2, y < 3)   # Initial problem 
= WP(x := y + 1, WP(y := y - 2, y < 3)) # Sequence rule 
= WP(x := y + 1, y < 5)      # Assignment rule 
= y < 5          

Merci également à philipxy pour identifier les erreurs dans ma syntaxe en particulier := vs = car cela rendait plus facile de confondre les affectations pour les équations qui faisaient partie de ma confusion initiale.

+0

Sûrement la condition la plus faible doit mentionner y? Intuitivement, la condition la plus faible est 'y <5'. Votre étape 'résoudre pour y' est invalide, le signe '=' est une affectation, pas une égalité arithmétique. Il n'y a aucune mention de «x», d'où «wp (x = y + 1; y <5) = y <5», et nous avons terminé. – Kris

+1

Cela a du sens. J'ai appliqué votre correction. – jq170727

+0

Vous avez toujours une faute de frappe ou un malentendu. Le code signifie 'x: = y + 1; y: = y - 2; La condition de publication est * y <3 *. Votre référence utilise WP (code, condition). Donc les derniers points-virgules de vos WP devraient être des virgules. PS S'il vous plaît, gardez votre question ou votre réponse à jour dans le meilleur formulaire. Les anciens versoions sont accessibles via le lien "édité". Aussi cette question "ne montre aucun effort de recherche", downvote. – philipxy