Представляем проверенное машинным способом расширение логики программы.
Диафрагма с временными кредитами и временными поступлениями, два двойных способа аргументации. Принимая во внимание, что временные кредиты используются для установления верхней границы по следующим позициям время выполнения программы, квитанции могут быть использованы для установления более низкого значения времени выполнения программы связаны. Временные квитанции могут быть использованы для доказательства того, что были нежелательные события, такие как целочисленные переполнения, включая заявление, в котором и то и другое концепции эксплуатируются.
Логика программы, такая как логика Hoare или Separation Logic, представляет собой набор вычетов. Правила, которые могут быть использованы для объяснения поведения программы. По сей день, значительные усилия были вложены в разработку все более мощной программы. Логики, управляющие расширенным поведением программ, т.е. логики, которые гарантируют, что программа надежно рассчитывает действительный конечный результат, а так же, логике позволяющей рассуждать не только о безопасности и функциональности.
Временные кредиты и временные поступления являются независимыми понятиями: имеет смысл расширить логику программы с помощью одной из них или отдельно, или с помощью обеих одновременно. Это двойственные понятия: каждый этап вычислений потребляет одно целое, кредит времени и выдает одноразовую квитанцию. Рассматриваем их как утверждения Айрис. Таким образом, они могут появиться в файле корректности формулировок, которые мы формулируем о программах и в доказательствах того эти заявления. Временные кредиты могут быть использованы для установления верхнего предела срока исполнения программы.
Что касается пользователя составной логики, то команда tick() и утверждение 1 доллар США, представляющее собой одноразовый кредит, абстрактно: единственное факт, к которому у пользователя есть доступ, это галочка Hoare triple {$1} tick() {True}, и пользователь имеет доступ, гласит, что "тик() потребляет одноразовый кредит".
Есть две причины, по которым в качестве базовой логики мы выбрали Iris.
Во-первых, в доказательство правильности композитной логики, мы должны выработать конкретные определения тика и доллара, так что тик остается в силе. Некоторые особенности Iris, такие, как государство-призрак и общие инварианты, играют ключевую роль в этом строительстве. Во-вторых, на уровне пользователя, сила Iris также может играть решающую роль.
Чтобы проиллюстрировать это, представляем первую проверенную машинным способом реконструкцию дебетов Окасаки в условия временных кредитов. В строительстве используются оба временных кредита и призрачное монотонное состояние Айрис. Квитанции о затратах времени — это новая концепция, которая является вкладом данного документа. Чтобы расширить базовую логику с временными поступлениями, следуем по тому же маршруту, что и выше составляем базовую логику с тем же программным преобразованием, что и описанное выше.
В глазах пользователя композитной логики, инструкция tick() и утверждение 1, представляющее собой одноразовую квитанцию, снова абстрактны: на этот раз, единственный опубликованный факт о тике — тройной. {True} тик() {1}, который гласит, что "тик() выдает одноразовую расписку".
До сих пор симметрия между временными кредитами и поступлениями кажется идеальной: в то время как временные кредиты позволяют установить верхнюю границу стоимости программы фрагмент, временные поступления позволяют установить нижний предел. В связи с этим возникает прагматичный вопрос. Зачем тратить усилия, время и деньги на формальное доказательство того, что часть кода медленная? Какой смысл в этом начинании? Взятие вдохновение Клочарда и др отвечаем на этот вопрос медлительностью в качестве.
Если есть определенный момент, когда процесс может потерпеть неудачу показывая, что этот процесс медленный, можем показать, что неудача далеко в том. В частности, Клохард и др. предлагают два абстрактных типа целых чисел счетчики, называемые "одноразовыми" целыми числами и "торфяными" целыми числами, и обеспечивают бумагу как доказательство того, что эти счетчики не могут переполниться в течение практически осуществимого времени: для этого потребуется немыслимое время для исполнения, чтобы достичь точки, когда переполнение переполнено на самом деле.
Современная параллельная программная логика, может быть расширена с помощью способов рассуждать о времени. По теории здравого смысла, укажите, какие именно гарантии дает расширенная логика программы Iris$, Айрис, и Айрис$. Мы определили эту новую логику по модульному принципу, создав Iris. С преобразованием программы. Три доказательства следуют схожим схемам: доказательство того, что теорема здорового образа жизни Айрис составлена с леммой моделирования клеща.
Для доказательства отсутствия определенных целочисленных переполнений, и путем представления анализ результатов исследования Union-Find, в котором используются как временные кредиты, так и временные поступления.
Одно из ограничений нашей работы заключается в том, что все наши метатеоретические результаты являются специфическими на HeapLang, и должны быть воспроизведены, следуя той же схеме, если кто-то захотел создать экземпляр Iris$ для другого языка программирования. Это было бы желательно, чтобы наши заявления и доказательства носили общий характер.
Может ли время, проведенное в ожидании быть ограниченым? Какую спецификацию можно дать замку, или мысль, которая защищена на замок?
Представляется, что гипотеза о планировщике должна быть справедлива, но она пока не ясно, как сформулировать и использовать такую гипотезу. Хоффманн, Мармар и Шао проводили новаторскую работу в этой области, но занимались только тем, что с незаблокированными структурами данных и только в тех случаях, когда количество конкурирующие нити фиксированы.