ANTHILL: a progressive formalization language for agent-supported software projects

The article presents the Anthill language — a specialized language for progressive (gradual) knowledge for malization, designed for use in real-world software projects with the integration of agent support, in particular large language models. Anthill allows you to describe, accumulate and maintain...

Повний опис

Збережено в:
Бібліографічні деталі
Дата:2026
Автори: Shevchenko, R.S., Doroshenko, A.Yu., Yatsenko, O.A.
Формат: Стаття
Мова:Українська
Опубліковано: PROBLEMS IN PROGRAMMING 2026
Теми:
Онлайн доступ:https://pp.isofts.kiev.ua/index.php/ojs1/article/view/887
Теги: Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
Назва журналу:Problems in programming
Завантажити файл: Pdf

Репозитарії

Problems in programming
_version_ 1863311599131951104
author Shevchenko, R.S.
Doroshenko, A.Yu.
Yatsenko, O.A.
author_facet Shevchenko, R.S.
Doroshenko, A.Yu.
Yatsenko, O.A.
author_sort Shevchenko, R.S.
baseUrl_str https://pp.isofts.kiev.ua/index.php/ojs1/oai
collection OJS
datestamp_date 2026-04-23T22:26:13Z
description The article presents the Anthill language — a specialized language for progressive (gradual) knowledge for malization, designed for use in real-world software projects with the integration of agent support, in particular large language models. Anthill allows you to describe, accumulate and maintain domain knowledge, functional and non-functional requirements, design solutions, invariants, integrity constraints and property proofs in a single structured knowledge base. A distinctive feature is that the knowledge base is stored directly in the pro ject repository file system, which ensures close versioned synchronization of specifications with code and fa cilitates their evolution throughout the development life cycle. The core of the language is made minimal and consists of only four basic constructs: namespace, sort, rule and operation. This architecture is similar to the core of modern automated theorem proving systems (e. g. Lean, Coq), where a small trusted core performs on ly the correctness check of the derivation, while the search for proofs, rule generation, specification refinement, and resolution of commitments are delegated to external agents. The main innovation of Anthill is the built-in support for partial (progressive) formalization: one and the same language allows for the description of knowledge across the entire spectrum — from free-text natural language comments in blocks through semi formal machine-verifying rules (Horn clauses) to fully formal proofs and laws of algebra. Three application examples are considered: structured task management, specification of communication protocols for embedded systems, and proof of properties at the compilation stage.Problems in programming 2026; 1: 4-13 
first_indexed 2026-04-24T01:00:15Z
format Article
fulltext Мови програмування 4 УДК 004.052.32, 004.43 https://doi.org/10.15407/pp2026.01.004 Р.С. Шевченко, А.Ю. Дорошенко, О.А. Яценко ANTHILL: МОВА ПРОГРЕСИВНОЇ ФОРМАЛІЗАЦІЇ ДЛЯ ПРОГРАМНИХ ПРОЄКТІВ З АГЕНТНОЮ ПІДТРИМКОЮ У статті представлено мову Anthill — спеціалізовану мову прогресивної (поступової) формалізації знань, призначену для використання в реальних програмних проєктах з інтеграцією агентної підтрим- ки, зокрема, великих мовних моделей. Anthill дозволяє описувати, накопичувати та підтримувати в єдиній структурованій базі знань доменні знання, функціональні та нефункціональні вимоги, проєктні рішення, інваріанти, обмеження цілісності та доведення властивостей. Відмінною особливістю є те, що база знань зберігається безпосередньо у файловій системі репозиторію проєкту, що забезпечує тісну версійовану синхронізацію специфікацій з кодом і полегшує їхню еволюцію протягом життєвого циклу розробки. Ядро мови зроблено мінімальним і складається з чотирьох базових конструктів: простір імен, сорт, правило та операція. Така архітектура аналогічна ядру сучасних систем автоматизованого дове- дення теорем (наприклад, Lean, Coq), де мале довірене ядро виконує лише перевірку коректності виве- дення, тоді як пошук доведень, генерацію правил, уточнення специфікацій та розв’язання зобов’язань делеговано зовнішнім агентам. Головною інновацією Anthill є вбудована підтримка часткової формалі- зації: одна й та сама мова дозволяє описувати знання на всьому спектрі — від природномовних комен- тарів у блоках через напівформальні машинно-перевірні правила (клаузи Хорна) до повністю формаль- них доведень та законів алгебри. Розглянуто три приклади застосування: структуроване управління за- дачами, специфікація комунікаційних протоколів для вбудованих систем та доведення властивостей на етапі компіляції. Ключові слова: формальна специфікація, прогресивна формалізація, база знань, стигмергія, мультиаге- нтні системи, великі мовні моделі. R.S. Shevchenko, A.Yu. Doroshenko, O.A. Yatsenko ANTHILL: A PROGRESSIVE FORMALIZATION LANGUAGE FOR AGENT-SUPPORTED SOFTWARE PROJECTS The article presents the Anthill language — a specialized language for progressive (gradual) knowledge for- malization, designed for use in real-world software projects with the integration of agent support, in particular large language models. Anthill allows you to describe, accumulate and maintain domain knowledge, functional and non-functional requirements, design solutions, invariants, integrity constraints and property proofs in a single structured knowledge base. A distinctive feature is that the knowledge base is stored directly in the pro- ject repository file system, which ensures close versioned synchronization of specifications with code and fa- cilitates their evolution throughout the development life cycle. The core of the language is made minimal and consists of only four basic constructs: namespace, sort, rule and operation. This architecture is similar to the core of modern automated theorem proving systems (e. g. Lean, Coq), where a small trusted core performs on- ly the correctness check of the derivation, while the search for proofs, rule generation, specification refinement, and resolution of commitments are delegated to external agents. The main innovation of Anthill is the built-in support for partial (progressive) formalization: one and the same language allows for the description of knowledge across the entire spectrum — from free-text natural language comments in blocks through semi- formal machine-verifying rules (Horn clauses) to fully formal proofs and laws of algebra. Three application examples are considered: structured task management, specification of communication protocols for embedded systems, and proof of properties at the compilation stage. Keywords: formal specification, progressive formalization, knowledge base, stigmergy, multi-agent systems, large language models. © Р.С. Шевченко, А.Ю. Дорошенко, О.А. Яценко, 2026 ISSN 1727-4907. Проблеми програмування. 2026. №1 https://pp.isofts.kiev.ua CC BY 4.0 Мови програмування 5 Вступ Специфікації в сучасних програм- них проєктах існують у двох крайностях. З одного боку — неформальні описи: задачі в системі управління проєктами, коментарі в коді, текстові документи з вимогами. Вони доступні людям, але не перевіряють- ся машиною: неузгодженість між вимогою та реалізацією виявляється лише під час тестування. З іншого боку — повністю формальні специфікації в системах дове- дення теорем (Lean [1], Coq [2], Isabelle [3]) або алгебраїчних мовах спе- цифікацій (OBJ [4], Maude [5]). Вони за- безпечують математичну строгість, але потребують спеціалізованих знань, і поріг входу для більшості таких програмних проєктів надто високий. Поява великих мовних моделей (Large Language Models — LLM) як учас- ників розробки програмного забезпечення загострює цю проблему. LLM-агенти здатні генерувати код, але працюють без стійкої структури знань: кожна сесія починається з порожнього контексту, а результати попе- редньої роботи зберігаються лише як текст у файлах. Відсутність формальних інваріа- нтів означає, що агент може порушити нея- вні припущення проєкту, які ніде не зафік- совані машинно-перевірним чином. Ми пропонуємо третю точку: мову часткової формалізації з поступовим уто- чненням. Anthill дозволяє починати з при- родномовних описів і поступово замінюва- ти їх на формальні правила та обмеження — без необхідності формалізувати все од- разу. База знань (БЗ) живе безпосередньо у файловій системі проєкту (каталог anthill/ поруч з src/ та tests/) і еволюціонує разом із кодом. Архітектура Anthill спирається на поділ, що зарекомендував себе в системах доведення теорем: мале довірене ядро пе- ревіряє правила та обмеження, а великі недовірені агенти (LLM, скрипти, люди) шукають рішення та докази. Ядру байду- же, як доведення було знайдене — форма- льним рушієм, SMT-солвером (Satisfiability Modulo Theories solver) [6], нейронною мережею чи людиною — важ- ливо лише, що перевірка пройдена. Стаття організована наступним чи- ном. Розділ 1 описує принципи проєкту- вання. У розділі 2 дається стислий огляд мови. Розділ 3 розглядає концепцію легкої аплікації в репозиторії та агентний цикл зворотного зв’язку. Розділ 4 представляє три приклади застосування, а розділ 5 об- говорює зв’язок з існуючими роботами. 1. Принципи проєктування 1.1. Мінімальне ядро. Ядро мови містить рівно чотири конструкти: ̶ namespace — простір імен з ім- портом, експортом та вкладенням; ̶ sort — тип (параметричний, абс- трактний або визначений); ̶ rule — правило (клауза Хорна), єдиний примітив знань; ̶ operation — оголошення операції з типізованим контрактом та ефектами. Ці конструкти дозволяють описува- ти багатосортні алгебри в традиції алгебра- їчних мов специфікацій OBJ [4] та Maude [5]: простори імен визначають сиг- натури, сорти задають носії, операції — це функціональні символи, а правила — аксі- оми (тотожності та клаузи Хорна). Решта конструкцій мови зводяться до цих чоти- рьох. Зокрема, entity — це сорт з єдиним конструктором (алгебра з одним породжу- вальним елементом); fact — це правило без тіла, тобто безумовна аксіома; constraint — це правило без голови, тобто обмеження цілісності (denial у термінології логічного програмування). Такий підхід аналогічний до архіте- ктури систем типу proof assistant (Lean [1], Coq [2]): мале довірене ядро перевіряє ви- ведення, тоді як тактики (великі, недовіре- ні) шукають докази. Ядро є мовонезалежним: сорти, правила та операції описують доменну логіку без прив’язки до конкретної мови реалізації. Ядро може бути підключене до мови-хоста через механізм підключення зовнішніх функцій (Foreign Function Inter- face — FFI) або реімплементоване для цієї мови; наразі підтримуються Rust та Scala. Вбудовування відбувається через механізм реалізацій, який відображає абстрактні Мови програмування 6 сорти на типи хост-мови, операції — на функції, а ефекти — на відповідні конс- трукції хост- мови. 1.2. Подання знань через правила. Всі знання в БЗ представляються у вигляді клауз Хорна: ̶ факт (правило без тіла): безумо- вна істина: fact Eq{Int} ̶ правило виведення: length визна- чається рекурсивно: rule length(nil) = 0 rule length(cons(?x, ?xs)) = add(1, length(?xs)) ̶ обмеження (правило без голови): дільник не може бути нулем: constraint div_nonzero: neq(?b, 0) :- divExact(?_, ?b) Рушій виведення поєднує два меха- нізми: SLD-резолюцію (як у Prolog) для логічного виведення над клаузами Хорна та екваціональне переписування для спро- щення термів згідно з аксіомами алгебри. Хоча це різні обчислювальні моделі (резо- люція працює з цілями та підстановками, а переписування — з напрямленими тотож- ностями), на рівні реалізації обидва зво- дяться до єдиної базової операції: співста- влення терму з патерном та застосування підстановки. Цей підхід відтворює архіте- ктуру системи TermWare [7], де правила переписування та логічне виведення об’єднані через контекстні терми з ефек- тивною диспетчеризацією. Кожний факт несе метадані: хто йо- го створив, коли, з яким рівнем довіри та в якій ітерації. Кожний факт несе рівень до- віри, що може поступово підвищуватися: від початкового припущення через підтве- рдження тестами, верифікацію автоматич- ним інструментом (наприклад, SMT- солвером) до повного формального дове- дення, перевіреного довіреним ядром. 1.3. Часткова формалізація. Будь- яке оголошення може мати один або декілька блоків опису ({< >}) — вільнотекстові описи, що зберігаються як факти в БЗ. На відміну від коментарів, блоки опису є структурними: вони доступні для запитів та аналізу. В поєднанні з анонімними змінними (?) це дає спектр від повністю неформального до повністю формального: ̶ повністю неформальне: sort Account {< Банківський рахунок. Має баланс, власника, та підтримує операції зняття та поповнення. >} sort T = ? end частково формальне: sort Account {< Банківський рахунок >} entity account(id: AccountId, owner: String, balance: Money) operation withdraw(amount: Money) -> Account constraint positive_balance: gte(?bal, 0) :- account(?_, ?_, ?bal) end Всюди, де очікується ім’я типу або вираз, можна використовувати логічні змінні: ?x — іменована змінна (спільна в межах області видимості); ? — анонімна (кожне входження позначає окрему змін- ну). Зокрема, sort T = ? визначає абстракт- ний параметр типу — сорт, що буде уточ- нений під час інстанціації. 2. Огляд мови Цей розділ дає стислий огляд мови, достатній для розуміння прикладів. Повна специфікація доступна як частина репози- торію проєкту [8]. 2.1. Простори імен та модульність. Простори імен організують код ієрархічно, з імпортом та експортом символів: namespace anthill.prelude.Int import anthill.prelude.{Eq, Ordered, Numeric} export abs, neg, mod, rem, sign, divExact fact Eq{Int} Мови програмування 7 fact Ordered{Int} fact Numeric{Int} end 2.2. Сорти. Сорти описують типи. Параметричний сорт має абстрактні параметри (sort T = ?): sort anthill.prelude.List export List, nil, cons, length, member, append sort T = ? -- параметр типу -- (абстрактний) entity nil -- порожній список -- клітинка entity cons(head: T, tail: List) operation length(l: List) -> Int rule length(nil) = 0 rule length(cons(?x, ?xs)) = add(1, length(?xs)) end Задоволення специфікації деклару- ється через факти. Запис fact Eq{Int} озна- чає, що тип Int задовольняє специфікацію Eq — операції eq та neq доступні для зна- чень Int. На відміну від ключового слова instance у мові Haskell, тут задоволення специфікації — це звичайний факт в БЗ, який може мати метадані та рівень довіри. 2.3. Специфікації та вимоги. Специфікації — це сорти з абстрактними операціями та правилами-законами: sort anthill.prelude.Ordered sort T = ? requires Eq{T} operation compare(a: T, b: T) -> Int -- Похідні операції operation gt(a: T, b: T) -> Bool rule gt(?a, ?b) = gt(compare(?a, ?b), 0) -- Закони rule compare_antisym: compare(?a, ?b) = neg(compare(?b, ?a)) rule compare_refl: compare(?a, ?a) = 0 end Зв’язок requires Eq{T} означає: для будь-якого типу, що реалізує Ordered, має існувати факт Eq{T}. 2.4. Операції та ефекти. Операції мають типізований контракт та оголошення ефектів: operation withdraw(account: Account, amount: Money) -> Account requires gte(amount, 0) ensures gte(balance(result), 0) effects (Modify(ledger)) Ефекти явно декларують, які ресур- си операція модифікує, читає або може перервати. Це забезпечує можливість ста- тичного аналізу залежностей між - операціями. 3. Аплікація в репозиторії та агентний цикл Anthill-застосунок — це набір .anthill файлів, що живуть безпосередньо в репозиторії проєкту поруч з src/ та tests/, еволюціонують разом з кодом і версіону- ються в тому ж репозиторії. Центральне поняття агентної взає- модії — зобов’язання (obligation): логічне твердження, яке має бути виконане. Це може бути твердження, яке потрібно дове- сти; операція без реалізації; обмеження, для якого потрібно побудувати свідчення; або декомпозиція складної задачі на підза- дачі. Зобов’язання формулюються як зви- чайні терми та правила мови Anthill. Агент (LLM, скрипт, людина або формальний рушій) бере зобов’язання та надає відпо- відь — доведення, реалізацію, факт з від- повідним рівнем довіри. Ядро перевіряє, чи відповідь задовольняє зобов’язання. Координація між агентами відбува- ється через спільне середовище — базу знань — без центрального оркестратора (принцип стигмергії). Стан БЗ визначає поточну роботу: агент спостерігає відкриті зобов’язання, порушені обмеження, опера- ції без реалізації — і обирає, що виконува- ти. Результат записується як факт з мета- даними походження (провенансу). Якщо факт визнано некоректним, виникає кон- Мови програмування 8 тамінація: залежні факти автоматично втрачають довіру, блокуючи подальшу роботу, поки неузгодженість не буде усу- нена. Формалізація не відбувається одно- моментно — різні частини проєкту можуть перебувати на різних рівнях: від вільноте- кстових описів (рівень 0), через доменну модель як багатосортну алгебру (рівень 1), формальні обмеження та специфікації з законами (рівень 2), до формальних дове- день з верифікацією зовнішнім рушієм (рівень 3). Зобов’язання та агентний цикл працюють однаково на всіх рівнях. 4. Приклади застосування 4.1. Декомпозиція задач як зобов’язання. Зобов’язання в Anthill можуть описувати декомпозицію задач — розбиття складної цілі на підзадачі з формальними залежностями та критеріями прийому. Кожна задача — це факт в БЗ: workitem WI-AUTH-001 { description: "Define User entity and authentication traits" acceptance: Compiles({ path: "src", scope: Main }) depends_on: [] status: Open [trust: proposed, agent: "architect"] } workitem WI-AUTH-002 { description: "Implement JWT token generation and validation" acceptance: Compiles({path:"src"}), ToolPasses(cargo-test) depends_on: [WI-AUTH-001] status: Open [trust: proposed, agent: "architect"] } Правила виведення визначають ло- гіку робочого процесу — наприклад, які задачі готові до виконання: rule claimable(?id, ?desc) :- WorkItem(id: ?id, status: Open, description: ?desc), all_deps_verified(?id) rule blocked(?id, ?desc) :- WorkItem(id: ?id, status: Open, description: ?desc), not(all_deps_verified(?id)) Запит claimable(?id, ?desc) — це ло- гічний висновок над станом БЗ через SLD- резолюцію. Та ж механіка працює і для більш формальних зобов’язань: «які обме- ження порушені», «які операції не мають реалізації». 4.2. Специфікація комунікаційних протоколів. Розглянемо більш формальний приклад: специфікація правил та обмежень для системи моделювання безпілотних апаратів. У роботі [9] симуляційне середовище (на базі Bevy ECS) взаємодіє з агентами (Python, Scala) через gRPC, передаючи повідомлення за протоколом MAVLink. Поведінка агента — це функція, що на основі поточних показів сенсорів та історії видає команди актуаторам. Агенти реалізуються різними мовами, але мають відповідати спільним обмеженням безпеки та протоколу. Anthill дозволяє формалізувати три категорії знань, які в поточній реалізації існують лише неявно, а саме: обмеження місії, автомат станів MAVLink і правила деградації сенсорів. Обмеження місії. Місія (пошук, па- трулювання, доставка) має властивості, які мають виконуватися протягом усього по- льоту: namespace blefusku.mission import anthill.prelude.{Int, Float, Bool, List} entity DroneState(id: String, position: Vector3D, altitude: Float, battery: Float) -- Дрон має залишатися в межах -- геозони constraint geofence: in_zone(?pos, ?zone) :- DroneState(id: ?d, position: ?pos), Mission(drone: ?d, zone: ?zone) -- Безпечна відстань між дронами Мови програмування 9 constraint safe_separation: distance(?p1, ?p2) > 100.0 :- DroneState(id: ?d1, position: ?p1), DroneState(id: ?d2, position: ?p2), ?d1 != ?d2 -- Заряд батареї має бути достатнім -- для повернення constraint battery_reserve: ?battery > return_energy(?pos, ?home) :- DroneState(id: ?d, position: ?pos, battery: ?battery), HomeBase(drone: ?d, position: ?home) end Автомат станів MAVLink. Прото- кол MAVLink визначає автомат станів ав- топілота (Disarmed → Armed → Takeoff → Guided → Land), де певні команди допус- тимі лише в певних станах. Ці правила наразі розкидані по документації та реалі- заціях: namespace blefusku.mavlink_fsm -- Допустимі переходи між -- станами rule valid_transition(Disarmed, Armed) :- PrearmChecks(ok) rule valid_transition(Armed, Takeoff) rule valid_transition(Takeoff, Guided) :- DroneState(altitude: ?a), ?a > min_takeoff_alt rule valid_transition(Guided, Land) rule valid_transition(Land, Disarmed) :- DroneState(altitude: ?a), ?a < 0.5 -- Команда допустима лише у -- відповідному стані constraint valid_command: valid_in_state(?cmd, ?state) :- CommandSent(command: ?cmd), FlightState(state: ?state) end Правила деградації сенсорів. По- ведінка у разі втраті GPS-сигналу або дрейфі IMU — це доменне знання, яке має бути явним: namespace blefusku.sensors rule gps_reliable(?d) :- SensorData(drone: ?d, type: gps, satellites: ?n, fix_type: ?f), ?n >= 6, ?f >= 3 rule navigation_mode(?d, gps_primary) :- gps_reliable(?d) rule navigation_mode(?d, imu_dead_reckoning) :- not(gps_reliable(?d)), SensorData(drone: ?d, type: imu) -- в режимі Guided дрон має мати -- навігацію constraint must_have_navigation: navigation_mode(?d, ?) :- DroneState(id: ?d, state: Guided) end Сформульовані правила та обме- ження можуть використовуватися двома способами. По-перше, верифікація трас: записані траси виконання агентів (послідо- вності станів, сенсорних даних та команд) завантажуються в БЗ як факти, після чого перевіряються обмеження — порушення виявляються перед- і пост- умови автома- тично. По-друге, аналіз коду агентів: об- меження Anthill можуть бути відображені на перед- і пост- умови хост- мови (напри- клад, requires/ensures в Scala або assert в Python), що дозволяє перевіряти їх статич- но або під час тестування. Зв’язок з інтерфейсно-орієнтованим підходом до моделювання мультиагентних систем [9]: Anthill надає формальний шар специфікації поверх gRPC- інтерфейсів [10], дозволяючи виражати інваріанти, які не можуть бути описані лише засобами protobuf [11], — обмеження Мови програмування 10 місії, автомат станів протоколу та правила деградації. 4.3. Доведення на етапі компіляції. Попередні приклади ілюструють використання Anthill для специфікації доменних знань. В рамках поточної роботи ми також досліджуємо використання БЗ Anthill як рушія доведень, вбудованого безпосередньо в компіляційний конвеєр мови-хоста. Ідея полягає у створенні системи верифікації властивостей на етапі компі- ляції для Scala 3. Центральним є тип Checked[A, P], що позначає значення типу A, для якого доведено предикат P. Преди- кати записуються як типорівневий AST: @pre(_ > 0) на параметрі означає, що зна- чення має тип Checked[A, GT[Self, Lit[0]]], а @post(_ >= 0) на результаті — що повер- нене значення несе доведення не- від’ємності. Арифметичні операції над Checked- значеннями оголошують зобов’язання до- ведення як using-параметри — наприклад, def +[Q](b: Checked[A, Q])(using proof: ProofAdd[P, Q]): Checked[A, proof.Out]. Компілятор шукає відповідний given- instance через механізм implicit resolution, який є рушієм зворотного виведення (backward chaining): given відповідає пра- вилу виведення, fact — аксіомі, summon — зобов’язанню доведення. Прості доведення вирішуються прямими правилами given-instances (на- приклад, given mulNonNeg: ProofMul[NonNeg, NonNeg] with { type Out = NonNeg }). Коли прямих правил недо- статньо, компілятор звертається до macro- given, який делегує до БЗ Anthill. Предикати типорівневого AST в Scala відображаються на терми Anthill (на- приклад, GT[Self, Lit[0]] стає gt(self, lit(0))), а правила доведення зберігаються в БЗ. Наведемо приклад: набір правил, що описує безпечний доступ до масиву, де потрібно довести, що індекс знаходиться в межах. namespace ctproof.array_safety import anthill.prelude.{Int, Bool} -- Базові аксіоми послаблення та транзитивності rule ?a >= ?b :- ?a > ?b rule ?a >= ?c :- ?a >= ?b, ?b >= ?c -- Індекс в межах масиву rule in_bounds(?i, ?n) :- ?i >= 0, ?i < ?n -- Якщо індекс в межах -- і n == length(arr), -- то доступ arr(i) безпечний rule safe_access(?arr, ?i) :- in_bounds(?i, ?n), ?n = length(?arr) -- Індукційний крок: доступ до -- хвоста потребує нового -- доведення зі зменшеним -- індексом Rule requires_proof( safe_access(?arr2, ?i - 1)) :- safe_access(?arr, ?i), ?arr2 = tail(?arr) -- Ціле ділення: якщо дільник -- додатний і ділене невід’ємне, -- результат невід’ємний rule (?a / ?b) >= 0 :- ?a >= 0, ?b > 0 -- Композиція: якщо f зберігає P, -- і g зберігає Q, то compose(g, f) -- зберігає and(P, Q) rule preserves(compose(?g, ?f), ?p and ?q) :- preserves(?f, ?p), preserves(?g, ?q) end Коли Scala-компілятор зустрічає операцію над Checked-значенням (напри- клад, arr(i) де arr: Checked[Array[T], _]), макрос генерує зобов’язання доведення safe_access(arr, i). Спочатку доведення шу- кається в контентно-адресованому кеші: якщо для даного зобов’язання вже існує збережене доведення і його передумови не змінилися, воно повторно перевіряється ядром і використовується без повторного пошуку. Якщо кешоване доведення відсу- Мови програмування 11 тнє або стало невалідним (наприклад, че- рез зміни в коді, що вплинули на переду- мови), зобов’язання передається до БЗ Anthill для пошуку нового доведення. Як- що i було отримано з конструкції if (i < arr.length), передумова (i >= 0) and (i < length(arr)) вже є в контексті, і доведення будується автоматично через SLD- резолюцію. Для арифметичних підцілей, що виходять за межі можливостей резо- люції, викликається Z3 SMT-солвер як вбудована операція. Таким чином, Anthill працює як вбудований рушій доведень — активна час- тина компіляційного конвеєра, а не лише формат зберігання знань. Трирівнева архі- тектура (пряма резолюція given → SLD- резолюція Anthill → Z3 SMT) дозволяє балансувати між швидкістю та потужніс- тю: більшість доведень вирішуються на першому рівні без накладних витрат. 5. Огляд суміжних досліджень Anthill знаходиться в традиції алге- браїчних мов специфікацій OBJ [4], CafeOBJ [12], Maude [5] та використовує архітектурний принцип proof assistants Lean 4 [1], Coq [2], Isabelle [3] — мале до- вірене ядро перевіряє докази, тоді як вели- кі недовірені тактики їх шукають. Питання формальних гарантій для ШІ-агентів набуває актуальності в кількох напрямках. Universalis [13] — це мова для програмного синтезу класу AI-first, побу- дована на Prolog, де перед- та пост-умови вбудовані в семантику як механізм безпеки ШІ. В роботі [14] пропонують capture checking в Scala 3 як оболонку “safety harness” для агентів — статичне відсте- ження спроможностей (capabilities) запобі- гає витоку інформації та несанкціонова- ним побічним ефектам. Обидва підходи підтверджують тенденцію до використан- ня формальних методів замість суто стати- стичних методів вирівнювання (RLHF). В роботі [15] надається огляд взає- модії формальних методів та LLM: авто- формалізація, LLM-керований пошук до- ведень, нейронне доведення теорем (AlphaProof [16]). В екосистемі Lean 4 це реалізовано в проєктах Lean Copilot [17] та APOLLO [18] — агентних фреймворках, де LLM інтегровані як тактики пошуку дове- день. Окремий напрямок — використання машинного навчання як евристики для прискорення формального пошуку: графо- ві нейронні мережі (Graph neural networks — GNN) для ранжування рівнянь у солвері [19], scored logic monad для направлення логічного бектрекінгу [20]. Висновки Представлено мову Anthill для про- гресивної формалізації знань у програмних проєктах. Мова дозволяє описувати бага- тосортні алгебри з аксіомами у вигляді клауз Хорна. Ключовою є підтримка част- кової формалізації: спектр від вільнотекс- тових описів до формальних доведень в одній мові з єдиним механізмом рівнів довіри та провенансу. Наведені приклади демонструють застосування на різних рівнях формаліза- ції: від декомпозиції задач із машинно- перевірними критеріями, через специфіка- цію обмежень протоколів та правил дегра- дації для мультиагентних систем, до вери- фікації властивостей на етапі компіляції з використанням БЗ як рушія доведень. Повна специфікація мови та реалі- зація доступні за адресою https://github.com/rssh/anthill. Література 1. L. de Moura, S. Ullrich, The Lean 4 theorem prover and programming language, 28th International Conference on Automated Deduction (CADE 2021). Lecture Notes in Computer Science. 2021. Vol. 12699. P. 625– 635. https://doi.org/10.1007/978-3-030- 79876-5_37 2. The Coq Development Team. The Coq Proof Assistant. Accessed: 18.03.2026. https://coq.inria.fr 3. T. Nipkow, L. Paulson, M. Wenzel, Isabelle/HOL — a proof assistant for higher- order logic, Springer, 2002. 4. J. Goguen, T. Winkler. Introducing OBJ. Technical Report, SRI International, 1988. 5. M. Clavel et al., Maude: specification and programming in rewriting logic, Theoretical Computer Science. 2002. Vol. 285, N 2. P. 187–243. https://doi.org/10.1016/S0304- 3975(01)00359-0 Мови програмування 12 6. L. de Moura, N. Bjørner, Z3: An Efficient SMT Solver, in: Ramakrishnan, C.R., Rehof, J. (eds) Tools and Algorithms for the Construction and Analysis of Systems. TACAS 2008. Lecture Notes in Computer Science. 2008. Vol. 4963. P. 337–340. https://doi.org/10.1007/978-3-540-78800- 3_24 7. Р. С. Шевченко, А. Ю. Дорошенко, TermWare-3 — система переписування термів, заснована на контекстному численні, Проблеми програмування. 2019. № 1. https://doi.org/10.15407/pp2019.01.048 8. Anthill kernel language specification. Accessed: 18.03.2026. https://github.com/rssh/anthill 9. Р. С. Шевченко, А. Ю. Дорошенко, В. О. Лесик, О. В. Савчук, О. А. Яценко, Інтерфейсно-орієнтований підхід до засо- бів моделювання мультиагентних систем, Проблеми програмування. 2025. № 1. С. 110–117. https://doi.org/10.15407/pp2025.01.110 10. gRPC. Accessed: 18.03.2026. URL: https://grpc.io/ 11. Protocol Buffers. Accessed: 18.03.2026. https://protobuf.dev 12. R. Diaconescu, K. Futatsugi, CafeOBJ Report. World Scientific, 1998. 13. E. Meijer, Unleashing the power of end-user programmable AI, ACM Queue. 2025. Vol. 23, N 3. Accessed: 18.03.2026. https://spawn- queue.acm.org/doi/10.1145/3746223 14. M. Odersky, Y. Zhao, Y. Xu, O. Bračevac, C.N. Pham, tracking capabilities for safer agents, arXiv:2603.00991. 2026. P. 1–21. https://doi.org/10.48550/arXiv.2603.00991 15. K. Yang, G. Poesia, J. He, W. Li, K. Lauter, S. Chaudhuri, D. Song, Formal mathematical reasoning: a new frontier in AI, arXiv:2412.16075. 2025. P. 1–42. https://doi.org/10.48550/arXiv.2412.16075 16. Google DeepMind. AI achieves silver-medal standard solving International Mathematical Olympiad problems (AlphaProof announcement). 2024. Accessed: 18.03.2026. https://deepmind.google/discover/blog/ai- solves-imo-problems-at-silver-medal-level/ 17. P. Song et al., Lean Copilot: large language models as copilots for theorem proving in Lean, arXiv:2404.12534, 2024. P. 1–26. https://doi.org/10.48550/arXiv.2404.12534 18. X. Hu et al., APOLLO: automated LLM and Lean collaboration for advanced formal reasoning, arXiv:2505.05758. 2025. P. 1–28. https://doi.org/10.48550/arXiv.2505.05758 19. P. A. Abdulla, M. F. Atig, J. Cailler, C. Liang, P. Rümmer, When GNNs met a Word equations solver: learning to rank equations, arXiv:2506.23784, 2025. https://doi.org/10.48550/arXiv.2506.23784 20. R. Shevchenko, A. Doroshenko, O. Yatsenko, A. Nemish, Merging logic and the coinductive selection monad: mixing machine learning in- to logical search. ICTERI 2025. Communications in Computer and Information Science. Vol. 2763. 2025. P. 33– 46. https://doi.org/10.1007/978-3-032-10477- 9_3 References 1. L. de Moura, S. Ullrich, The Lean 4 theorem prover and programming language, in: 28th International Conference on Automated Deduction (CADE 2021), Lecture Notes in Computer Science 12699 (2021) 625–635. doi: 10.1007/978-3-030-79876-5_37 2. The Coq Development Team. The Coq Proof Assistant. Accessed: 18.03.2026. https://coq.inria.fr 3. T. Nipkow, L. Paulson, M. Wenzel, Isabelle/HOL — a proof assistant for higher- order logic, Springer, 2002. 4. J. Goguen, T. Winkler. Introducing OBJ. Technical Report, SRI International, 1988. 5. M. Clavel et al., Maude: specification and programming in rewriting logic, in: Theoretical Computer Science 285 (2002) 187–243. doi: 10.1016/S0304- 3975(01)00359-0 6. L. de Moura, N. Bjørner, Z3: An Efficient SMT Solver, in: Ramakrishnan, C.R., Rehof, J. (eds) Tools and Algorithms for the Construction and Analysis of Systems. TACAS 2008. Lecture Notes in Computer Science 4963 (2008) 337–340. doi: 10.1007/978-3-540-78800-3_24 7. R. S. Shevchenko, A.Yu. Doroshenko, TermWare-3 – term rewriting system, based on context-term calculus, Problems in programming 1 (2019) 48–58. https://doi.org/10.15407/ pp2019.01.048 [in Ukrainian] 8. Anthill kernel language specification. Accessed: 18.03.2026. https://github.com/rssh/anthill 9. R.S. Shevchenko, A.Yu. Doroshenko, V.O. Lesyk, O.V. Savchuk, O.A. Yatsenko, Interface-oriented approach to modelling tools for multi-agent systems, Problems in pro- gramming 1 (2025) 110–117. Мови програмування 13 https://doi.org/10.15407/pp2025.01.110 [in Ukrainian] 10. gRPC. Accessed: 18.03.2026. URL: https://grpc.io/ 11. Protocol Buffers. Accessed: 18.03.2026. https://protobuf.dev 12. R. Diaconescu, K. Futatsugi, CafeOBJ Report. World Scientific, 1998. 13. E. Meijer, Unleashing the power of end-user programmable AI, in: ACM Queue 23 (2025) Accessed: 18.03.2026. https://spawn- queue.acm.org/doi/10.1145/3746223 14. M. Odersky, Y. Zhao, Y. Xu, O. Bračevac, C.N. Pham, tracking capabilities for safer agents, in: arXiv:2603.00991 (2026) 1–21. doi: 10.48550/arXiv.2603.00991 15. K. Yang, G. Poesia, J. He, W. Li, K. Lauter, S. Chaudhuri, D. Song, Formal mathematical reasoning: a new frontier in AI, in: arXiv:2412.16075 (2025) 1–42. doi: 10.48550/arXiv.2412.16075 16. Google DeepMind. AI achieves silver-medal standard solving International Mathematical Olympiad problems (AlphaProof announcement). 2024. Accessed: 18.03.2026. https://deepmind.google/discover/blog/ai- solves-imo-problems-at-silver-medal-level/ 17. P. Song et al., Lean Copilot: large language models as copilots for theorem proving in Lean, arXiv:2404.12534 (2024) 1–26. doi: 10.48550/arXiv.2404.12534 18. X. Hu et al., APOLLO: automated LLM and Lean collaboration for advanced formal reasoning, arXiv:2505.05758 (2025) 1–28. doi: 10.48550/arXiv.2505.05758 19. P. A. Abdulla, M. F. Atig, J. Cailler, C. Liang, P. Rümmer, When GNNs met a Word equations solver: learning to rank equations, in: arXiv:2506.23784 (2025) doi: 10.48550/arXiv.2506.23784 20. R. Shevchenko, A. Doroshenko, O. Yatsenko, A. Nemish, Merging logic and the coinductive selection monad: mixing machine learning in- to logical search, in: ICTERI 2025. Communications in Computer and Information Science 2763 (2025) 33–46. doi: 10.1007/978-3-032-10477-9_3 Дата першого надходження до видання: 12.03.2026 Внутрішня рецензія отримана: 17.03.2026 Зовнішня рецензія отримана: 18.03.2026 Дата прийняття статті до друку: 19.03.2026 Дата публікації: 16.04.2026 Про авторів: 1Шевченко Руслан Сергійович, кандидат технічних наук старший науковий співробітник Shevchenko Ruslan, Ph.D (technical sciences), senior scientist https://orcid.org/0000-0002-1554-2019. 1,2Дорошенко Анатолій Юхимович, доктор фізико-математичних наук, професор, провідний науковий співробітник Doroshenko Anatoliy, Ph.D (doctor, physical and mathematical sciences), professor, leading scientist http://orcid.org/0000-0002-8435-1451. 1Яценко Олена Анатоліївна, кандидат фізико-математичних наук, старший науковий співробітник Yatsenko Olena, Ph.D (physical and mathematical sciences), senior scientist http://orcid.org/0000-0002-4700-6704. Місце роботи авторів: 1 Інститут програмних систем НАН України, 1 Institute of Software Systems. National Academy of Sciences of Ukraine тел. +38-067-407-32-33 E-mail: doroshenkoanatoliy2@gmail.com, ruslan@shevchenko.kiev.ua, oayat@ukr.net Сайт: https://iss.nas.gov.ua 2 Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» 2 National Technical University of Ukraine “Igor Sikorsky Kyiv Polytechnic Institute” Сайт: https://ist.kpi.ua
id pp_isofts_kiev_ua-article-887
institution Problems in programming
keywords_txt_mv keywords
language Ukrainian
last_indexed 2026-04-24T01:00:15Z
publishDate 2026
publisher PROBLEMS IN PROGRAMMING
record_format ojs
resource_txt_mv ppisoftskievua/22/0379492a57236fdf6efc26e91b5a0222.pdf
spelling pp_isofts_kiev_ua-article-8872026-04-23T22:26:13Z ANTHILL: a progressive formalization language for agent-supported software projects ANTHILL: мова прогресивної формалізації для програмних проєктів з агентною підтримкою Shevchenko, R.S. Doroshenko, A.Yu. Yatsenko, O.A. formal specification; progressive formalization; knowledge base; stigmergy; multi-agent systems; large language models UDC 004.052.32, 004.43 формальна специфікація; прогресивна формалізація; база знань; стигмергія; мультиаге нтні системи; великі мовні моделі УДК 004.052.32, 004.43 The article presents the Anthill language — a specialized language for progressive (gradual) knowledge for malization, designed for use in real-world software projects with the integration of agent support, in particular large language models. Anthill allows you to describe, accumulate and maintain domain knowledge, functional and non-functional requirements, design solutions, invariants, integrity constraints and property proofs in a single structured knowledge base. A distinctive feature is that the knowledge base is stored directly in the pro ject repository file system, which ensures close versioned synchronization of specifications with code and fa cilitates their evolution throughout the development life cycle. The core of the language is made minimal and consists of only four basic constructs: namespace, sort, rule and operation. This architecture is similar to the core of modern automated theorem proving systems (e. g. Lean, Coq), where a small trusted core performs on ly the correctness check of the derivation, while the search for proofs, rule generation, specification refinement, and resolution of commitments are delegated to external agents. The main innovation of Anthill is the built-in support for partial (progressive) formalization: one and the same language allows for the description of knowledge across the entire spectrum — from free-text natural language comments in blocks through semi formal machine-verifying rules (Horn clauses) to fully formal proofs and laws of algebra. Three application examples are considered: structured task management, specification of communication protocols for embedded systems, and proof of properties at the compilation stage.Problems in programming 2026; 1: 4-13  У статті представлено мову Anthill — спеціалізовану мову прогресивної (поступової) формалізації знань, призначену для використання в реальних програмних проєктах з інтеграцією агентної підтрим ки, зокрема, великих мовних моделей. Anthill дозволяє описувати, накопичувати та підтримувати в єдиній структурованій базі знань доменні знання, функціональні та нефункціональні вимоги, проєктні рішення, інваріанти, обмеження цілісності та доведення властивостей. Відмінною особливістю є те, що база знань зберігається безпосередньо у файловій системі репозиторію проєкту, що забезпечує тісну версійовану синхронізацію специфікацій з кодом і полегшує їхню еволюцію протягом життєвого циклу розробки. Ядро мови зроблено мінімальним і складається з чотирьох базових конструктів: простір імен, сорт, правило та операція. Така архітектура аналогічна ядру сучасних систем автоматизованого дове дення теорем (наприклад, Lean, Coq), де мале довірене ядро виконує лише перевірку коректності виве дення, тоді як пошук доведень, генерацію правил, уточнення специфікацій та розв’язання зобов’язань делеговано зовнішнім агентам. Головною інновацією Anthill є вбудована підтримка часткової формалі зації: одна й та сама мова дозволяє описувати знання на всьому спектрі — від природномовних комен тарів у блоках через напівформальні машинно-перевірні правила (клаузи Хорна) до повністю формаль них доведень та законів алгебри. Розглянуто три приклади застосування: структуроване управління за дачами, специфікація комунікаційних протоколів для вбудованих систем та доведення властивостей на етапі компіляції.Problems in programming 2026; 1: 4-13  PROBLEMS IN PROGRAMMING ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ ПРОБЛЕМИ ПРОГРАМУВАННЯ 2026-04-23 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/887 PROBLEMS IN PROGRAMMING; No 1 (2026); 4-13 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 1 (2026); 4-13 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 1 (2026); 4-13 1727-4907 uk https://pp.isofts.kiev.ua/index.php/ojs1/article/view/887/940 Copyright (c) 2026 PROBLEMS IN PROGRAMMING
spellingShingle formal specification
progressive formalization
knowledge base
stigmergy
multi-agent systems
large language models
UDC 004.052.32
004.43
Shevchenko, R.S.
Doroshenko, A.Yu.
Yatsenko, O.A.
ANTHILL: a progressive formalization language for agent-supported software projects
title ANTHILL: a progressive formalization language for agent-supported software projects
title_alt ANTHILL: мова прогресивної формалізації для програмних проєктів з агентною підтримкою
title_full ANTHILL: a progressive formalization language for agent-supported software projects
title_fullStr ANTHILL: a progressive formalization language for agent-supported software projects
title_full_unstemmed ANTHILL: a progressive formalization language for agent-supported software projects
title_short ANTHILL: a progressive formalization language for agent-supported software projects
title_sort anthill: a progressive formalization language for agent-supported software projects
topic formal specification
progressive formalization
knowledge base
stigmergy
multi-agent systems
large language models
UDC 004.052.32
004.43
topic_facet formal specification
progressive formalization
knowledge base
stigmergy
multi-agent systems
large language models
UDC 004.052.32
004.43
формальна специфікація
прогресивна формалізація
база знань
стигмергія
мультиаге нтні системи
великі мовні моделі
УДК 004.052.32
004.43
url https://pp.isofts.kiev.ua/index.php/ojs1/article/view/887
work_keys_str_mv AT shevchenkors anthillaprogressiveformalizationlanguageforagentsupportedsoftwareprojects
AT doroshenkoayu anthillaprogressiveformalizationlanguageforagentsupportedsoftwareprojects
AT yatsenkooa anthillaprogressiveformalizationlanguageforagentsupportedsoftwareprojects
AT shevchenkors anthillmovaprogresivnoíformalízacíídlâprogramnihproêktívzagentnoûpídtrimkoû
AT doroshenkoayu anthillmovaprogresivnoíformalízacíídlâprogramnihproêktívzagentnoûpídtrimkoû
AT yatsenkooa anthillmovaprogresivnoíformalízacíídlâprogramnihproêktívzagentnoûpídtrimkoû