— язык —

Язык VVL

Гомоиконный Lisp-синтаксис. 879 встроенных. Двадцать семантических операторов. Нейронное и символическое сосуществуют первым классом.

Попробуйте VVL онлайн Полный справочник
— Золотое правило —

Всё — команда в скобках

Одно синтаксическое правило — [команда аргументы…] — действует везде: вычисление, класс, сетевой вызов, запрос к LLM. Код является данными: список вычисляется или цитируется обратным апострофом, чтобы обрабатывать его как синтаксическое дерево.

~ базовый синтаксис ~
# Prefix form [command args…] — eager evaluation, innermost first
[print [+ 1 2 3]]          # → 6

# Variables ($), assignment (=), sugared infix arithmetic (…)
$prix = 100
$ttc  = ($prix * 1.20)          # → 120.0

# Quasiquote (backtick) = literal data; unquote (,) injects a value
$n = 5
`[1 ,$n ,[+ 1 2]]            # → [1 5 3]

# String interpolation: ${ VVL expression }
$msg = "n*n = ${[* $n $n]}"     # → "n*n = 25"

# Dotted accessors, chainable
$s = "  42  "
$s.trim.int                     # → 42

# Lambda (params → $__name) + map / pmap (parallel)
$double = [lambda [x] [* $__x 2]]
[map $double `[1 2 3 4]]          # → [2 4 6 8]
[pmap $extract $documents]      # N LLM calls in parallel
❦
— LLM — это не API, это язык —

Четыре роли, ноль конвейера

LLM — не внешний сервис: это оператор языка. Семантический операнд [§ "..."] (тип VVL_Semantic) переключает тот же диспетчер из арифметического режима в нейро-символический: [§ "кот"] == [§ "кошачий"] возвращает 1. Четыре семейства, плюс @.

1 · opérateur

Оператор [§ "…"]

Семантический операнд переключает тот же диспетчер из арифметического режима в нейросимволический. Типизированный результат: булево, строка или концепт.

[§ "chat"] == [§ "félin"]   # → 1
[§ "voiture"] + [§ "électrique"]
# → electric car (concept)
2 · générateur

Генератор @

Описание порождает VVL-лямбду, проверенную парсером и исполняемую в песочнице (белый список функций). LLM думает один раз, код работает N раз.

$fn = ($orders @ [§ "total_amount > 1000"])
[filter $fn $orders]   # local lambda, 0 LLM
3 · objet

Объект [@ "имя"]

Имя концепта материализуется в формальный объект (Zalta). Ядро свойств при инициализации, ленивое доопределение далее, трёхуровневый кеш → убывающая стоимость.

$soleil = [@ "Soleil"]
$soleil.masse_kg     # → 1.989e30
($soleil ~~ "Étoile")  # → ~0.95
4 · compilateur

Компилятор §§ / generic

§§ компилирует вопрос на естественном языке в программу VVL, исполняет её и возвращает результат. generic превращает её в именованный, протестированный и сохранённый keyword — пригодный для других концептов.

[§§ "consommation BMW Série 3 diesel 2024 ?"] # → ~5.1

[generic "masse de @{Saturne} ?"]
[get-mass-kg-of-concept "Jupiter"] # reusable

Одна языковая модель, четыре разные роли, ноль интеграционного конвейера. Именно это делает VVL нейросимволическим языком, а не обёрткой над API.

❦
— Нейронная алгебра —

Двадцать семантических операторов

Активируемые операндом [§ "…"], это те же операторы, что и над числами — переключает их тип операнда. Четыре семейства плюс @.

Семейство Операторы Результат Пример → результат
1 · Нечёткие сравнения — булев возврат, пригодны в if/filter == != < > <= >= BOOLEAN [§ "кошка"] == [§ "кошачий"] → 1
2 · Концептуальная алгебра — арифметика над понятиями (семантический / строковый возврат) + − * / % SEMANTIC / STRING / APPROX [§ "Париж"] % [§ "страна"] → Франция
3 · Семантическая логика — составные концептуальные выражения && || ^^ ~ ? SEMANTIC / STRING $bio ? [§ "год рождения?"] → 1912
4 · Принадлежность и включение — отношение IS-A первым классом (булев возврат) in <| |> BOOLEAN [§ "электромобиль"] <| [§ "транспорт"] → 1
+ · Генерация кода — гомоиконная кульминация (подробно ниже) @ LAMBDA $data @ [§ "фильтровать по возрасту"] → lambda

Тонкое различие: проекция / извлекает измерение, уже содержащееся в описании; свойство % обращается к общим знаниям LLM. Семантические результаты композируются, как арифметика. При проекции на шкалу ([§ ["низкий" "средний" "высокий"]]) / возвращает оценку: откалиброванную позицию с её уверенностью.

❦
— Система 1 / Система 2 —

Решать быстро, рассуждать при необходимости

С [semanticMode "jev"] типизированные решения сначала передаются Jev (TypeSafe AI) — модели, которая не пишет текст, а принимает решение (да/нет, выбор, позиция на шкале) с откалиброванной уверенностью, примерно за 0,4 с. Если Jev сомневается (уверенность ниже порога, по умолчанию 0,8), управление переходит к LLM. Тот же синтаксис, тот же кэш; каждое решение записывается в semantic.log (вкладка Semantic в :log).

[semanticMode "jev"]
[§ "a trumpet"] == [§ "a refrigerator"]         # → 0   (Jev, 0.4 s)
[match [§ $ticket]
    [§ "Payments, refunds"]  "billing"
    [§ "Bugs, outages"]      "technical"
    "escalade"]                                   # branch chosen by meaning
([§ $review] / [§ ["calm" "annoyed" "angry"]])   # → <approx: 1.99 [high]>
[fuzzy:degree [§ $mail] "spam"]                  # → 0.98

Операторы и match

== in <| · match · tables

Логические операторы всегда возвращают 1/0. [match] по [§ …] выбирает ветку по смыслу; с кортежами он становится таблицей решений: один вопрос на столбец, один вызов.

Оценка и нечёткие степени

/ scale · fuzzy:degree(s)

При проекции на шкалу / возвращает откалиброванную позицию (Approximation). [fuzzy:degrees] измеряет несколько степеней за один вызов — сразу для ~& и fuzzy:very.

Онтологии и Zalta

fromText · ~~

Jev выбирает подкласс извлечённого объекта и сопоставляет значения из закрытого списка; сходство ~~ в правилах решает все пары за один вызов.

Маршрутизатор, агент, архитектор

[§§] · [agent] · [architect]

Маршрутизатор [§§] классифицирует вопрос примерно за 0,4 с; судья [agent] отвечает «да» без вызова LLM; [architect] проверяет свои шаги степенью, а не циклом агента.

❦
— Детерминизм —

Стоимость ИИ платится один раз

Как вероятностная система становится столь же надёжной, как нативный оператор? Благодаря четырём гарантиям, встроенным в движок, а не оставленным разработчику: (1) автоматическая типизация вывода (вы никогда не парсите строку), (2) детерминированный кеш на диске — одно выражение, один результат во всех сессиях, стоимость API → 0 и воспроизводимые тесты, (3) проверяемый повтор до успеха, (4) XML-спецификации few-shot. Без типизации пришлось бы парсить; без кеша задержка была бы непомерной; без повтора малейший дрейф модели ломал бы программу. Именно совокупность отличает VVL от простой обёртки.

❦
— Символический аспект —

От нейронного к гарантированному выводу

Тот же язык несёт символический аспект: гарантированный дедуктивный вывод, типизированные схемы и доказанную оптимизацию. Реифицированные концепты становятся операндами этой алгебры — это нейросимволический мост.

База Prolog

facts · rules · query

Встроенная дедуктивная база знаний. Объекты внедряются в неё (obj-assert); выводы гарантированы, а не приближены.

Онтологическая система

ontology:*

Типизированные схемы, каскадные бизнес-правила и возможные миры (форк онтологии) для рассуждения при допущениях. В режиме jev подкласс извлечённого объекта и его значения из закрытого списка определяет Jev.

Операторы Zalta

== ~~ · * ** · + ++ · / //

Восемь операторов (4 операции × 2 режима символический/гибридный): настоящая алгебра над концептами, бесплатная после загрузки свойств. Сходство ~~ для нетривиальных значений проходит через Jev: все пары за один вызов.

Реляционный miniKanren

run-all · predicate · ==

Отношения, а не функции: одно определение решается во всех направлениях. Полный поиск с чередованием, ограничения (distinct, символьный CLP) и вероятностный режим в духе ProbLog.

Доказательства и контракты

proof:auto · contract:verify

Ядро решает пропозиции и отвечает proved, refuted или unknown — но не правдоподобным «да». Для функции под контрактом require ⇒ ensure проверяется статически, без её выполнения.

Байесовская диагностика

bfacts · diagnose

Каждая клауза несёт бета-убеждение, а не булево значение. Когда наблюдение противоречит базе, движок вычисляет минимальные конфликты и ранжирует подозреваемых по стоимости отзыва.

Решатель CP-SAT

OR-Tools · NL → modèle

VVL открывает CP-SAT с концептуальным синтаксисом (типизированные решения, жёсткие и мягкие ограничения). Намерение на естественном языке становится моделью с доказанной оптимальностью.

❦
— Смарт-контракты —

Состояние, которое доказывает себя и повторно воспроизводится

[keyword], чей [contract] указывает реестр, становится смарт-контрактом: каждый вызов — это транзакция, записанная в связанный в цепочку и подписанный блок. Условия контракта доказываются до выполнения, проверяются при каждом вызове, а вся история повторно воспроизводится — всё это в самом языке, без внешнего блокчейна.

[keyword transfer
    [contract
        [args from to [amount :type Integer :min 1]]
        [ledger bank]
        [state [src "account:{from}" :required] [dst "account:{to}" :required]]
        [require "amount <= src"]
        [ensure  "src + dst = old(src) + old(dst)"]]
    [do [state:put src ([state:get src] - @3)]
        [state:put dst ([state:get dst] + @3)]]]

[contract:verify transfer].status        # → "proved"   (for every state)
[transfer "alice" "bob" 30]              # → one signed block
[transfer "alice" "bob" 500]             # → refused, nothing written
[ledger:verify bank].ok                  # → 1   (chain, signatures, full replay)

Состояние & условия

state · require · ensure · old()

[state] объявляет слоты контракта; [require] относится к состоянию до, [ensure] — к состоянию после, old(x) связывает одно с другим. Невыполненное условие отменяет транзакцию: всё или ничего.

Доказать, затем повторно воспроизвести

contract:verify · ledger:verify · ledger:proof

[contract:verify] доказывает контракт для всех состояний с помощью символьного выполнения. [ledger:verify] повторно выполняет каждую транзакцию с исходным кодом; [ledger:proof] доказывает значение без сервера.

Классы & оракулы

class [ledger …] · oracle

Класс, привязанный через [ledger имя :key …]: объект — это состояние, метод — это транзакция. [oracle] записывает в блок ответ LLM, который становится имеющим доказательную силу и никогда не запрашивается заново при повторном воспроизведении.

Имеющий доказательную силу & распределённый

ledger:anchor · ledger:follow · ledger:finality

Закрепление якорем головы цепочки у третьей стороны (метка времени RFC 3161, Bitcoin). Реплики кластера повторно выполняют каждый блок, удостоверяют то, что они проверили ([ledger:finality]), и обнаруживают переписанную историю.

❦
— Выполнение —

Интерпретируется, компилируется, затем распределяется

Один и тот же код переходит от интерпретатора к нативной виртуальной машине, а затем на несколько машин — без переписывания. Решает не настройка, а проверяемое свойство кода: его чистота.

Нативная ВМ

[compile] · .run · .coverage

Код компилируется в ВМ на Rust и остаётся исследуемым: промежуточное представление, байт-код и, главное, покрытие — что выполняется нативно, а что уходит к хосту.

Горячая компиляция

[jit] · [vectorize]

Ставшая «горячей» лямбда компилируется автоматически после N вызовов. Порог читается и задаётся одной командой; векторизующий уровень map переключается без перезапуска.

Вычислительный кластер

cluster:register · cluster:map

Замкнутая и чистая функция адресуется по SHA-256 и выполняется персистентными шардами на нескольких экземплярах. Что не компилируется — не распространяется: детерминизм здесь условие, а не надежда.

❦
— Сравнение —

VVL против Python + LangChain

КритерийPython + LangChainVVL
LLM как оператор языкаВызовы API для парсингаНативно (20 операторов)
Конвейер извлечение → обогащение → решение~500 строк~40 строк
Код от LLM, проверенный и исполняемыйПроверять самому@: парсер + песочница + повтор
Компиляция NL → решатель ограниченийНе нативноCP-SAT, доказанная оптимальность
Постоянный семантический кеш (стоимость → 0)Нужно реализоватьВстроено
Мост LLM ↔ Prolog ↔ объектТройная интеграцияПервый класс
Возможные миры (форк онтологии)Вручнуюontology:*

Единый ИИ-сервер, управляемый языком, парадигма которого создана для него. Это разница между интеграцией ИИ и программированием с ним.

❦ ❦ ❦