Наступне питання виникає неодноразово під час тестування безпеки системи чи моделі.
Мотивація: Програми безпеки програмного забезпечення часто виникають не від помилок через дійсні входи, а від помилок, що виникають внаслідок недійсних входів, достатньо близьких до дійсних входів, щоб пройти безліч прямолінійних перевірок дійсності. Класичний приклад - це звичайно переповнення буфера, де вхід є розумним, за винятком того, що він занадто великий. Компілятори та інші інструменти можуть допомогти вирішити ці проблеми, змінивши компонування стека та купи та за допомогою інших методів обфускування. Альтернативою є видалення проблем із самого вихідного коду. Один з методів, який називається неясними бомбардувальниками, програма з входами близька до очікуваних входів, але в деяких місцях є необґрунтованою (великі значення для цілих чи рядкових полів). Я хотів би зрозуміти нечіткість (як один із прикладів) з більш формальної точки зору.
Припустимо, що простір дійсних входів описується обмеженнями . Нехай M - сукупність рішень таких обмежень, а саме M = \ lbrace m \ in \ mathcal {M} ~ | ~ m \ models \ Phi \ rbrace , де \ mathcal {M} - простір можливих входів.
Я шукаю роботу, що описує такі поняття:
Півтінь з є безліч , що для кожного і в якому - то сенсі елементи М » знаходяться близько до елементам М . Можна вважати півтінь як майже рішення . Звичайно, це поняття не буде унікальним.
Шляхи розслаблення обмежень до такі, що по-перше та , в певному сенсі, синтаксична півтінь .
«Півтінь» - це слово, яке я вибрав для опису поняття. Це цілком можна назвати чимось іншим.
Я знайшов натхнення в математичній морфології , звідси і моя візуальна метафора, але два світи розділені один від одного. Чи є там якась корисна робота? А може, у світі грубих наборів ?
Чи може хтось пролити світло?