У статті описується конструкція системи переписування термів TermWare-3, що побудована на основі рефлексивного числення контекстних термів, коли структура терму включає до себе, окрім дерева, ще й внутрішній контекст та обмеження на співставлення при застосуванні (зовнішній контекст), що дозволяє занурити операції розв’язування імен в математичну семантику переписувальних правил. Описується метод ефективної диспетчеризації вибору правил, а також автоматичне перетворення виразів між системами на основі алгебраїчних типів мови Scala та контекстними термами.
В статье описывается конструкция системы переписывания термов TermWare-3, построенной на основе рефлексивного исчисления контекстных термов, когда структура терма включает в себя дополнительно к дереву терма еще внутренний контекст и ограничения на сопоставление (внешний контекст). Это позволяет погрузить операции разрешения имен в математическую семантику переписывающих правил. Элементами алгебры являются мультитермы, которые дополняют контекстные термы конструкциями стрелок, универсальным образцом сопоставления и непротиворечивых множеств. Это позволяет эмулировать подстановку типизированных переменных в рамках алгебры мультитермов. Также описывается метод эффективной диспетчеризации выбора правил. Приводится пример применения системы переписывающих правил для анализа смарт-контрактов вместе с автоматическим преобразованием выражения между системами на основе алгебраических типов Scala и контекстными термами.
In this paper, the design of the TermWare-3 rewriting system which is built on the ground of reflective calculus of context term is considered. In the calculus of the context term, term structure contains not only tree, but a reference to an internal context and matching constrains (external context). This allows to embed operation of name resolving into the mathematical semantics of the term rewriting. The elements of algebra are multiterms, which complement context terms by constructions of arrows, universal matching pattern and consistent set. This allows to emulate substitutions of typed variables in the terms of multiterm algebra. Also, the method of effective rule dispatch is described. Example of usage term rewriting system for checking of smart-contract properties, with automatic transformation of expression between representation in terms of Scala algebraic types and TermWare-3 context terms
is shown.