რა განსხვავებაა სრულ სისწორესა და ნაწილობრივ სისწორეს შორის?


პასუხი 1:

სრული სისწორის განცხადება ასევე წარმოადგენს ნაწილობრივ სისწორეს. ნაწილობრივი სისწორე უფრო სუსტია, რადგან დასკვნამდე მისვლისთვის სჭირდება 'S დამთავრების' დამატებითი დახმარება: R ვრცელდება საბოლოო მდგომარეობაში.

ნაწილობრივი სისწორე {Q} S {R} შეგიძლიათ მიიღოთ შემდეგი ინფორმაცია: თუ არსებობს საწყისი პირობა, რომელიც აკმაყოფილებს Q, S შეიძლება ან არ დასრულდეს. თუ S დასრულდა, S- ის შესრულების შემდეგ, თქვენ მიაღწევთ საბოლოო მდგომარეობას, რომელიც ასრულებს რ. თუ არა, R გამოუყენებელია, რადგან არ არსებობს საბოლოო მდგომარეობა.

მაგალითად:

{x == 10} დროს (y! = 0): y = y - 1 x = 0 {x == 0}

ეს არის ნაწილობრივი სიზუსტის განცხადება. თუ y ინიცირებულია რიცხვი ტოლი ან 0-ზე მეტი რიცხვი, S დასრულდა და შემდეგ x არის 0. თუ y იწყება უარყოფითი რიცხვი, S მეორდება მეორედ და შემდეგ რადგან ეს არ მთავრდება, ვერ მიაღწევთ მდგომარეობას. 'ს.-ს შესრულების შემდეგ'

სინამდვილეში, R შეიძლება იყოს ყველაფერი, თუ S არის მკვდარი მარყუჟი. მაგალითად, თითოეული Q და R– სთვის:

{Q} დროს (მართალია): y = y - 1 {R}

ყოველთვის სწორად ნაწილობრივი მითითებაა.

თუ Q არ არის საკმარისად ძლიერი, თქვენ ვერ უზრუნველყოფს S- ის შეწყვეტის გარანტიას, რომ აღარაფერი გაამართლოთ S- ის შესრულების შემდეგ. ამ შემთხვევაში, შეგიძლიათ ხელით დაამატოთ მდგომარეობა: S შეჩერებულია. არგუმენტი შეიძლება გაგრძელდეს Q და მასთან ერთად.

სრული სისწორე სპეციფიკაციისთვის {Q} S {R}, Q საკმაოდ ძლიერია S– ის შეწყვეტის გარანტია, ასე რომ თქვენ შეგიძლიათ დაასკვნათ, რომ S წყდება და საბოლოო სახელმწიფო R დაკმაყოფილებულია.

მაგალითად:

{x == 10} დროს (x! = 0): x = x - 1 {x == 0}

სრული სიზუსტის განცხადება.

სხვათა შორის: არ ვარ დარწმუნებული, რომ პასუხი არის სწორი, რადგან შეკითხვა აღინიშნება პოლიტიკურ სისწორედ. მიუხედავად იმისა, რომ კითხვაში მოცემული განმარტება იგივეა, რაც კომპიუტერულ მეცნიერებაში.