Обоснованность и полнота - PullRequest
0 голосов
/ 02 марта 2019

Я беру урок анализа программного обеспечения, и мне задали следующий вопрос.Это связано с логикой программирования, поэтому я и разместил ее здесь.(Я также разместил это на сайте переполнения математического стека.):

Program Space

Предположим, что часть SHADED обозначает все программы, которые НЕ содержат ошибок деления на ноль, иНЕЗАКРЫТАЯ часть внутри черного прямоугольника обозначает все программы, которые ДОЛЖНЫ содержать такие ошибки.

Пусть A1, A2 и A3 - это разные анализы программ, которые проверяют ошибки деления на ноль.Каждый анализ либо ПРИНИМАЕТ (т.е. объявляет его свободным от ошибок деления на ноль), либо ОТКЛЮЧАЕТ (т.е. объявляет, что в данной программе существует хотя бы одна ошибка деления на ноль).

Для каждого анализаПрограммы, принятые этим анализом, содержатся ВНУТРИ соответствующего овала, а программы, отклоненные этим анализом, содержатся ВНЕ соответствующего овала.

Со ссылкой на Вопрос 4, предположим, что мы проектируем анализ А4, который ведет себя следующим образом при вводепрограмма P:

if (A1 rejects P) reject P;
else if (A3 accepts P) accept P; 
else run forever; 

Звук А4 звучит?А4 завершен?

Я выбрал А4, это было нормально, потому что А1 принимает действующие программы и отклоняет те, которые не являются действительными.Это было отмечено правильно.Я сказал, что это не было завершено, потому что A4 не принимала программы, которые действительно были действительными и были отмечены как неправильныеХотите знать, если кто-то может пролить немного света на это для меня?Заранее спасибо.

1 Ответ

0 голосов
/ 02 марта 2019

Я думаю, что это будет завершено.Допустим, у вас есть программа, которая выдает ошибку DBZ, и мы хотим это проверить.Отправьте эту программу в А1.A1 содержит пространство обеих программ с и без DBZ.Таким образом, он может быть принят А1 или отклонен А1.Если он отклонен A1, то мы можем отклонить программу как ошибку DBZ.Если он не отклонен A1, перейдите к A3, который принимает только программы без ошибок DBZ.Помните, что это для программ, которые не были отклонены A1.Если программа принята А3, то мы знаем, что в ней нет ошибки DBZ.Если и здесь это отклонено, мы знаем, что оно содержит ошибку DBZ.

По сути, использование одного A1 не может полностью определить, будет ли программа принята.Но поскольку A3 содержит только пространство программ, которые могут быть приняты, если оно принято в A1 и в A3, мы можем сделать вывод, что это действительная программа.

Из этого объяснения кажется, что если бы программа была действительной, она была бы принята A3, даже если A1 не распознает программу как недействительную, поскольку A3 будет принимать только действительные программы, что противоположно тому, чтоВы сказали, почему А4 не может быть полным.

Дайте мне знать, если я должен уточнить некоторые моменты в этом ответе.

...