Skip to content

Реализация стандартной библиотеки логических операций и обновление документации и версии до 0.0.6#30

Open
konard wants to merge 3 commits intonetkeep80:mainfrom
konard:issue-21-9aa1aab34bc9

Conversation

@konard
Copy link
Contributor

@konard konard commented Feb 6, 2026

Summary

Fixes #21

Реализация следующей задачи в текущей фазе разработки (Фаза 2: Функциональность, Направление 2: Платформа для логического программирования) — стандартная библиотека логических операций.

Что реализовано

  1. Стандартная библиотека логических операций в базовом словаре (include/avm.h)

    • Новые статические сущности Xor, Nand, Nor, Implies, Eq в базовом словаре rel_t
    • Все операции являются сущностями (->sub == E)
    • Таблицы истинности реализованы через вложенные entity map (двумерные)
  2. XOR — исключающее ИЛИ (include/avm.h)

    • {"Xor": [a, b]} — XOR[a][b]
    • XOR[True][True] = False, XOR[True][False] = True
    • XOR[False][True] = True, XOR[False][False] = False
  3. NAND — НЕ-И (include/avm.h)

    • {"Nand": [a, b]} — NOT[AND[a][b]]
    • NAND[True][True] = False, NAND[True][False] = True
    • NAND[False][True] = True, NAND[False][False] = True
  4. NOR — НЕ-ИЛИ (include/avm.h)

    • {"Nor": [a, b]} — NOT[OR[a][b]]
    • NOR[True][True] = False, NOR[True][False] = False
    • NOR[False][True] = False, NOR[False][False] = True
  5. Implies — логическая импликация (include/avm.h)

    • {"Implies": [a, b]} — (¬a ∨ b), a → b
    • IMPLIES[True][True] = True, IMPLIES[True][False] = False
    • IMPLIES[False][True] = True, IMPLIES[False][False] = True
  6. Eq — логическая эквивалентность (include/avm.h)

    • {"Eq": [a, b]} — (a ↔ b), NOT[XOR[a][b]]
    • EQ[True][True] = True, EQ[True][False] = False
    • EQ[False][True] = False, EQ[False][False] = True
  7. Поддержка в интерпретаторе (src/main.cpp)

    • Добавлены Xor, Nand, Nor, Implies, Eq в resolve_operator()
    • Все операции автоматически работают через существующий бинарный путь интерпретатора
    • Обновлены комментарии интерпретатора
  8. 61 новых модульных тестов (test/unit_test.cpp)

    • test_stdlib_vocabulary() — проверка наличия операций в базовом словаре (10 проверок)
    • test_xor_eval() — полная таблица истинности XOR через eval() (4 проверки)
    • test_nand_eval() — полная таблица истинности NAND через eval() (4 проверки)
    • test_nor_eval() — полная таблица истинности NOR через eval() (4 проверки)
    • test_implies_eval() — полная таблица истинности Implies через eval() (4 проверки)
    • test_eq_eval() — полная таблица истинности Eq через eval() (4 проверки)
    • test_interpret_xor() — XOR через интерпретатор (4 проверки)
    • test_interpret_nand() — NAND через интерпретатор (4 проверки)
    • test_interpret_nor() — NOR через интерпретатор (4 проверки)
    • test_interpret_implies() — Implies через интерпретатор (4 проверки)
    • test_interpret_eq() — Eq через интерпретатор (4 проверки)
    • test_stdlib_nested() — вложенные выражения со стандартной библиотекой (4 проверки)
    • test_stdlib_with_def_call() — комбинация с Def/Call (2 проверки)
    • Исправлен тест test_interpret_error_cases(): заменён Xor на Unknown как пример неизвестного оператора
  9. 5 новых тестовых JSON файлов

    • test/expr_xor.json{"Xor": [true, false]}true
    • test/expr_nand.json{"Nand": [true, true]}false
    • test/expr_nor.json{"Nor": [false, false]}true
    • test/expr_implies.json{"Implies": [true, false]}false
    • test/expr_eq.json{"Eq": [true, true]}true
  10. Обновление версии и документации

    • Версия: 0.0.5 → 0.0.6
    • README.md: обновлены Features, Current Status, Usage (обе секции EN/RU)
    • plan.md: задача «Создать стандартную библиотеку» отмечена как выполненная, обновлён Roadmap
    • analysis.md: обновлены метрики (240 тестов, 32 JSON файла)

Принцип работы

Стандартная библиотека реализована как таблицы истинности в entity map (ent_aspect) существующей структуры rel_t, аналогично базовым операциям NOT, AND, OR:

XOR[True][False] → (*Xor).find(True) → xor_true → (*xor_true).find(False) → True
IMPLIES[False][True] → (*Implies).find(False) → imp_false → (*imp_false).find(True) → True

Все новые операции автоматически работают через существующий интерпретатор interpret(), поддерживают вложенные выражения и комбинацию с Def/Call.

Файлы изменены

  • include/avm.h — добавлены 5 новых сущностей и их таблицы истинности (+97 строк)
  • src/main.cpp — добавлены 5 операций в resolve_operator(), обновлены комментарии (+15 строк)
  • test/unit_test.cpp — 61 новый тест (всего 240), исправлен error case тест (+209 строк)
  • test/expr_xor.json, test/expr_nand.json, test/expr_nor.json, test/expr_implies.json, test/expr_eq.json — тестовые выражения
  • CMakeLists.txt — версия 0.0.6
  • README.md — обновлена документация (EN + RU)
  • plan.md — задача отмечена как выполненная
  • analysis.md — обновлены метрики

Test plan

  • 240 модульных тестов проходят (240 passed, 0 failed)
  • 16 JSON roundtrip тестов проходят
  • Файлы в пределах лимита 1500 строк (main.cpp: 728, avm.h: 577, unit_test.cpp: 1104)
  • Сборка успешна на Linux (локально)
  • CI на Ubuntu ✅
  • CI на Windows ✅
  • CI на macOS ✅

🤖 Generated with Claude Code

konard and others added 2 commits February 6, 2026 21:16
Adding CLAUDE.md with task information for AI processing.
This file will be removed when the task is complete.

Issue: netkeep80#21
…кументации и версии до 0.0.6

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@konard konard changed the title [WIP] Сделать следующую задачу в текущей фазе разработки и после обновить README.md и файл фазы разработки Реализация стандартной библиотеки логических операций и обновление документации и версии до 0.0.6 Feb 6, 2026
@konard konard marked this pull request as ready for review February 6, 2026 20:26
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@konard
Copy link
Contributor Author

konard commented Feb 6, 2026

🤖 Solution Draft Log

This log file contains the complete execution trace of the AI solution draft process.

💰 Cost estimation:

  • Public pricing estimate: $9.627756 USD
  • Calculated by Anthropic: $6.523556 USD
  • Difference: $-3.104200 (-32.24%)
    📎 Log file uploaded as Gist (1675KB)
    🔗 View complete solution draft log

Now working session is ended, feel free to review and add any feedback on the solution draft.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant