Skip to content

Ассоциативный прувер для формальной нотации метатеории связей

License

Notifications You must be signed in to change notification settings

netkeep80/aprover

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

107 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

aprover

Публичный URL: https://netkeep80.github.io/aprover/

Ассоциативный прувер для формальной нотации Метатеории Связей (МТС)

Описание проекта

aprover — это веб-приложение на Vue.js + TypeScript для парсинга, визуализации и верификации выражений в формальной нотации МТС (Метатеории Связей). Приложение публикуется на GitHub Pages.

Что такое МТС?

Метатеория Связей (МТС) — это онтологически замкнутая система, в которой всё есть связь. В отличие от классических логических систем (ZFC, теория типов, категории), МТС:

  • Не допускает онтологического дуализма — нет разделения на "носитель" и "отношение"
  • Знак не ссылается на внешний объект, а является запросом по форме в "океане связей"
  • Доказательство = резолюция запроса по форме в асети связей

Документация МТС

Теоретические основы Метатеории Связей изложены в следующих разделах:

Введение и основы

Фундаментальные концепции

Нотации и сериализация

Вычисления и структуры

Сравнительный анализ и спецификации

Дополнительные материалы

Архитектура системы

Три нотации МТС

Нотация Назначение Алфавит Формат файлов
Формальная Запросы по форме связей , ->, !->, , , !, :, =, !=, {}, () .mtl
Строковые ачисла Человекочитаемая сериализация Любой UTF-8 символ .astr
Четверичная Базовая сериализация для апамяти 0, 1, [, ] .anum

Система аксиом МТС v0.1

Аксиома Формула Описание
А0. Определение (s : F) -> (s = F) Знак как запрос по форме
А1. Тождественность x = x, (x = y) -> (y = x), {(x = y), (y = z)} -> (x = z) Рефлексивность, симметрия, транзитивность
А2. Конгруэнция {(a = c), (b = d)} -> ((a -> b) = (c -> d)) Структурная прозрачность
А3. Связь be : (b -> e) Базовый конструктор
А4. Смысл (акорень) ∞ : (∞ -> ∞) Полное самозамыкание
А5. Самозамыкание начала ♂x : (♂x -> x) Начало замкнуто на связь
А6. Самозамыкание конца x♀ : (x -> x♀) Конец замкнут на связь
А7. Инверсия !(a -> b) = (b -> a), !(♂x) = x♀, !(x♀) = ♂x, !∞ = ∞, !!x = x Дуальность
А8. Единица смысла 1 : (♂∞ -> ∞♀) Направленная связь
А9. Нуль смысла 0 : !1 Инверсия единицы
А10. Абиты '[' : ♂∞, ']' : ∞♀, '1' : 1, '0' : 0 Четверичная система
А11. Левоассоциативность (a -> b -> c) = ((a -> b) -> c) Порядок группировки

План разработки

  • Фаза 1 — Основная реализация (завершена)
  • Фаза 2 — Улучшение UI и расширение функциональности (завершена)
  • Фаза 3 — Файловые операции и поддержка всех нотаций МТС (в процессе)

Текущий статус: Фаза 3, Этапы 3.1-3.2 завершены. Предстоящие этапы:

  • ✅ Этап 3.1: Файловые операции (загрузка/сохранение .mtl файлов) — завершён
  • ✅ Этап 3.2: Поддержка строковых ачисел (.astr) — завершён
  • Этап 3.3: Поддержка четверичной нотации (.anum)
  • Этап 3.4: Расширение алгоритма резолюции
  • Этап 3.5: Улучшение производительности и UX
  • Этап 3.6: Тестирование и документация

Файловые операции (v0.2.0)

Приложение поддерживает работу с файлами:

Клавиатурные сокращения

  • Ctrl+N — Новый файл
  • Ctrl+O — Открыть файл
  • Ctrl+S — Сохранить код

Панель инструментов

  • Новый — создать новый файл с шаблоном
  • Открыть — открыть файл .mtl или .astr с диска
  • Недавние — список последних 10 файлов
  • Сохранить — сохранить код в файл
  • Результаты — экспорт результатов верификации в текстовый файл
  • JSON — экспорт результатов в формате JSON

Drag-and-Drop

Файлы .mtl и .astr можно перетащить прямо в редактор для загрузки.

Автосохранение

Содержимое редактора автоматически сохраняется в localStorage каждые 30 секунд.

Строковые ачисла (.astr) — v0.3.0

Поддержка строковых ачисел позволяет работать с данными в человекочитаемой форме:

Что такое строковое ачисло?

Строковое ачисло — это последовательность UTF-8 символов, интерпретируемая как цепочка связей:

"связь" ≡ (((((∞ -> 'с') -> 'в') -> 'я') -> 'з') -> 'ь')

Каждый символ становится CharLit узлом, связанным с предыдущей частью цепочки левоассоциативной связью ->.

Загрузка .astr файлов

При открытии файла .astr:

  1. Каждая строка конвертируется в формальную нотацию
  2. Отображается панель визуализации процесса преобразования
  3. Результат автоматически верифицируется прувером

Формат файла .astr

// Комментарии поддерживаются
связь
link
Hello, мир!
🌍🔗✨

Визуализация конвертации

При загрузке .astr файла можно включить панель визуализации (кнопка "Show Conv"), которая показывает пошаговое преобразование строки в цепочку формальных запросов.

Структура проекта

aprover/
├── .github/
│   └── workflows/
│       ├── ci.yml           # Линтинг, тесты
│       └── deploy.yml       # GitHub Pages
├── docs/
│   ├── mts/                 # Документация МТС
│   │   ├── 00-introduction.md
│   │   ├── 01-ontology-of-distinction.md
│   │   ├── ...
│   │   └── specification-v0.1.md
│   └── PHASE1-PLAN.md       # План первой фазы
├── src/
│   ├── core/
│   │   ├── lexer.ts         # Лексический анализатор
│   │   ├── parser.ts        # Синтаксический анализатор
│   │   ├── ast.ts           # Типы AST
│   │   ├── normalizer.ts    # Нормализация и десахаризация
│   │   ├── prover.ts        # Ядро прувера (унификация, modus ponens)
│   │   ├── fileIO.ts        # Файловые операции (загрузка, сохранение, история)
│   │   └── stringAnum.ts    # Парсер строковых ачисел (.astr)
│   ├── components/
│   │   ├── Editor.vue       # Редактор кода с подсветкой синтаксиса
│   │   ├── ASTViewer.vue    # Визуализация AST в виде дерева
│   │   ├── ProverPanel.vue  # Панель результатов верификации
│   │   └── ErrorPanel.vue   # Панель ошибок парсинга
│   ├── App.vue              # Главный компонент приложения
│   └── main.ts
├── tests/
│   ├── unit/
│   │   ├── lexer.test.ts
│   │   ├── parser.test.ts
│   │   ├── normalizer.test.ts
│   │   ├── prover.test.ts
│   │   ├── fileIO.test.ts
│   │   └── stringAnum.test.ts
│   ├── integration/
│   │   └── mtl_formulas.test.ts
│   └── e2e/
│       └── editor.spec.ts
├── examples/
│   ├── basic.mtl            # Примеры файлов МТС (формальная нотация)
│   └── basic.astr           # Примеры строковых ачисел
├── index.html
├── package.json
├── tsconfig.json
├── vite.config.ts
└── README.md

Метрики качества

Согласно Best Practices:

  • Размер файлов: максимум 1000-1500 строк
  • Форматирование: ESLint + Prettier
  • Типизация: строгий TypeScript (noImplicitAny, strictNullChecks)
  • Тесты: Vitest для unit/интеграционных, Playwright для E2E
  • CI/CD: GitHub Actions с автодеплоем

Быстрый старт

# Установка зависимостей
npm install

# Запуск dev-сервера
npm run dev

# Запуск unit и интеграционных тестов
npm run test

# Запуск E2E тестов (требуется предварительная сборка)
npm run build
npm run test:e2e

# Сборка для production
npm run build

Лицензия

Unlicense

About

Ассоциативный прувер для формальной нотации метатеории связей

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages