From f3327f9c5f3e4de3245f24b183c871a812b4c267 Mon Sep 17 00:00:00 2001
From: Ivan <8611739+IRBorisov@users.noreply.github.com>
Date: Mon, 18 Aug 2025 22:30:26 +0300
Subject: [PATCH] D: Add documentation for RS Language
---
.vscode/settings.json | 6 +
.../help/items/cc/help-concept-system.tsx | 4 +-
.../src/features/help/items/help-rslang.tsx | 65 +++++++--
.../features/help/items/help-thesaurus.tsx | 2 +-
.../help/items/rslang/help-rslang-correct.tsx | 2 +-
.../help-rslang-expression-arithmetic.tsx | 63 +++++++++
.../help-rslang-expression-declarative.tsx | 45 +++++++
.../help-rslang-expression-imperative.tsx | 71 ++++++++++
.../rslang/help-rslang-expression-logic.tsx | 91 +++++++++++++
.../help-rslang-expression-parameter.tsx | 55 ++++++++
.../rslang/help-rslang-expression-quantor.tsx | 53 ++++++++
.../help-rslang-expression-recursive.tsx | 58 +++++++++
.../rslang/help-rslang-expression-set.tsx | 45 +++++++
.../help-rslang-expression-structure.tsx | 123 ++++++++++++++++++
.../items/rslang/help-rslang-interpret.tsx | 2 +-
.../items/rslang/help-rslang-literals.tsx | 60 +++++++++
.../items/rslang/help-rslang-operations.tsx | 2 +-
...types.tsx => help-rslang-typification.tsx} | 2 +-
.../frontend/src/features/help/labels.ts | 24 +++-
.../src/features/help/models/help-topic.ts | 24 +++-
.../help/pages/manuals-page/topic-page.tsx | 24 +++-
21 files changed, 797 insertions(+), 24 deletions(-)
create mode 100644 rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-arithmetic.tsx
create mode 100644 rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-declarative.tsx
create mode 100644 rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-imperative.tsx
create mode 100644 rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-logic.tsx
create mode 100644 rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-parameter.tsx
create mode 100644 rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-quantor.tsx
create mode 100644 rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-recursive.tsx
create mode 100644 rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-set.tsx
create mode 100644 rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-structure.tsx
create mode 100644 rsconcept/frontend/src/features/help/items/rslang/help-rslang-literals.tsx
rename rsconcept/frontend/src/features/help/items/rslang/{help-rslang-types.tsx => help-rslang-typification.tsx} (98%)
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 329f582d..cbc32314 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -193,6 +193,8 @@
"Бурбакизатор",
"Версионирование",
"Владельцом",
+ "генемные",
+ "дебуль",
"Демешко",
"Десинглетон",
"доксинг",
@@ -214,6 +216,9 @@
"Кучкаров",
"Кучкарова",
"мультиграфа",
+ "мультииндекс",
+ "Мультииндексы",
+ "Мультифильтр",
"неинтерпретируемый",
"неитерируемого",
"Никанорова",
@@ -230,6 +235,7 @@
"подпапках",
"Присакарь",
"ПРОКСИМА",
+ "родовидовое",
"Родоструктурная",
"родоструктурного",
"Родоструктурное",
diff --git a/rsconcept/frontend/src/features/help/items/cc/help-concept-system.tsx b/rsconcept/frontend/src/features/help/items/cc/help-concept-system.tsx
index e4279d8f..bcba80fc 100644
--- a/rsconcept/frontend/src/features/help/items/cc/help-concept-system.tsx
+++ b/rsconcept/frontend/src/features/help/items/cc/help-concept-system.tsx
@@ -35,8 +35,8 @@ export function HelpConceptSystem() {
экспликации. Портал поддерживает
diff --git a/rsconcept/frontend/src/features/help/items/help-rslang.tsx b/rsconcept/frontend/src/features/help/items/help-rslang.tsx index 3c07bda1..2244c165 100644 --- a/rsconcept/frontend/src/features/help/items/help-rslang.tsx +++ b/rsconcept/frontend/src/features/help/items/help-rslang.tsx @@ -1,23 +1,66 @@ import { external_urls, videos } from '@/utils/constants'; import { BadgeVideo } from '../components/badge-video'; +import { LinkTopic } from '../components/link-topic'; import { Subtopics } from '../components/subtopics'; import { HelpTopic } from '../models/help-topic'; export function HelpRSLang() { - // prettier-ignore return ( -
Формальная запись (экспликация) концептуальных схем осуществляется с помощью языка родов структур.
-Для ознакомления с основами родов структур можно использовать следующие материалы:
-1.
+ Формальная запись (экспликация) концептуальных схем осуществляется с помощью языка родов структур (далее
+ – Язык). В данном разделе поясняются основные понятия и формальные конструкции Языка. В своей основе Язык
+ является формальной логикой первого порядка, все дополнительные обозначения основываются на предикате
+ принадлежности x∈y.
+
+ Используются строгие правила написания идентификаторов для обозначений понятий, локальных переменных и + литералов. +
+
+ Элементы Языка подразделяются на теоретико-множественные выражения и логические выражения. Упрощенно говоря,
+ теоретико-множественное выражение возвращает элемент некоторой{' '}
+
+ Помимо указанных выражений также допускаются параметризованные и шаблонные выражения, значения и типизация
+ которых зависят от вводимых параметров. Такие выражения используются в определениях{' '}
+
Выражения, позволяющие манипулировать ступенями операндов называются структурными выражениями.
++ Отдельно рассматриваются сложные конструкции, задающие множество через отбор элементов, императивно или + рекурсивно. +
+Для глубокого ознакомления с основами родов структур можно использовать следующие материалы:
+
+ 1.
+ 2.{' '} + + Текст: Учебник И. Н. Пономарева + +
++ 3.{' '} + + Видео: лекции для 4 курса (второй семестр 2022-23 год) + +
+diff --git a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-arithmetic.tsx b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-arithmetic.tsx new file mode 100644 index 00000000..e6b3ad77 --- /dev/null +++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-arithmetic.tsx @@ -0,0 +1,63 @@ +export function HelpRSLangExpressionArithmetic() { + return ( +
Арифметические выражения в языке родов структур предназначены для работы с целыми числами.
+ +
+ Данные операции формируют теоретико-множественное выражение, которое имеет типизацию Z (целое
+ число).
+
a + b — сумма чисел a и b.
+ a - b — разность чисел a и b.
+ a * b — произведение чисел a и b.
+
+ Данные операции формируют логическое выражение, которое имеет типизацию Logic.
+
a < b
+ a ≤ b
+ a > b
+ a ≥ b
+
+ Мощность множества: card(X1) — количество элементов множества X. Так как на
+ практике используются только конечные множества, мощность всегда является целым числом.
+
(4 + 5) * 3
+ card(X1) > 5
+ x ≤ y + 1
+ + Декларативная конструкция, также известная как схема ограниченного выделения, в языке родов структур задает + множество через перебираемое множество и проверяемое условие. С точки зрения определения понятий такие выражения + задают родовидовое определение. +
+
+
D{'{ξ∈ТМВ | ЛВ(ξ)}'}
+ D{'{(ξ₁, ξ₂)∈ТМВ | ЛВ(ξ₁, ξ₂)}'}
+ D — часть синтаксиса, а не идентификатор.
+ + Локальные переменные перебирают свою область определения. Если для текущего значения переменной логическое + выражение справа истинно, то это значение (или кортеж значений) включается в результирующее множество. +
+ +
+
+ D{'{ξ∈{1, 2, 3, 4, 5, 6} | ∃σ∈{10, 11, 12} (σ = 2 ∗ ξ)}'} = {'{5, 6}'}
+
+
+ Императивная конструкция в языке родов структур является теоретико-множественным выражением, построенным с + помощью блоков и правил вычисления. Она выражает конструктивные (генемные) способы определения понятий. +
+
+ Императивная конструкция может быть преобразовано в эквивалентную с точки зрения теории множеств{' '}
+
I{'{ТМВ(ξ1, ξ2) | ξ1∶∈ТМВ1; ξ2≔ТМВ2; ξk∶∈ТМВk; ЛВ(ξ1,ξ2); ...}'}
+ D — часть синтаксиса, а не идентификатор.
+ ТМВ(ξ1, ..., ξk), которое задаёт результирующий элемент, из которых
+ формируется множества.
+ ∶∈
+ объявленная переменная или кортеж переменных перебирает элементы множества.
+ ≔
+ объявленная переменная или кортеж переменных получает значение выражения. Значение вычисляется заново при
+ каждом переходе к следующему набору значений перебираемых переменных.
+
+ Для каждого набора значений перебираемых и определяемых переменных вычисляется значение{' '}
+ ТМВ(ξ1, ..., ξk). Этот результат включается в итоговое множество, если все логические выражения
+ истинны.
+
+
+ I{'{(ξ1,ξ2) | ξ1∶∈{1, 2, 3}; ξ2≔ξ1+1; ∃σ∈{4, 5, 6} (σ=2∗ξ2)}'} = {'{(1, 2), (2, 3)}'}
+
+
+ Пропозициональные формулы в языке родов структур — это логические выражения, построенные из предикатов + (логических выражений) и переменных с помощью связок. Константы ИСТИНА И ЛОЖЬ не используются в экспликации + концептуальных схем. +
+ +ξ∈S — элемент ξ принадлежит множеству S.
+ ξ∉S — элемент ξ не принадлежит множеству S.
+ S1=S2.
+ S1≠S2.
+ S1⊆S2 — S₁ является подмножеством S₂.
+ S1⊂S2.
+ S1⊄S2.
+ 2 = 4.
+ 2 ≠ 4.
+ 2 < 4.
+ 2 ≤ 4.
+ 2 > 4.
+ 2 ≥ 4.
+ ¬A — истина тогда и только тогда, когда A ложно.
+ A & B — истина, если оба A и B истинны.
+ A ∨ B — истина, если хотя бы одно из A или B истинно.
+ A ⇒ B — истина, если из A следует B (ложно только при A истинно и B ложно).
+ A ⇔ B — истина, если A и B имеют одинаковое значение истины.
+ ¬α∈S1
+ D1∈S1 ⇒ 2+2=5
+ {`D1⊆D2 ⇔ ∀x∈D1 x∈D2`}
+ + Параметризованные выражения в языке родов структур образуют самостоятельный класс конструкций. Они используются + для объявления терм-функций и предикат-функций. Вызов таких функций является соответственно + теоретико-множественным выражением (ТМВ) или логическим выражением (ЛВ). +
+ +F1 ::= [α1∈ТМВ1, α2∈ТМВ2(α1)] ТМВ(α1, α2)
+ ∈. Слева — идентификатор
+ локальной переменной, справа — область определения параметра.
+ P1 ::= [α1∈ТМВ1, α2∈ТМВ2(α1)] ЛВ(α1, α2)
+ Отличие от терм-функции состоит в том, что после списка параметров задаётся логическое выражение, а не ТМВ.
+ +F1[ξ1, S1], P1[ξ1\ξ2, ξ3]
+ F2 ::= [α1∈R1×R2, α2∈R1] α2=pr1(α1)
+ + Функции, параметры которых содержат радикалы, называются шаблонными. Радикал используется для обозначения + произвольной типизации в ступени аргумента функции. +
++ Кванторные выражения в языке родов структур используются для формулировки утверждений о всех или некоторых + элементах множества. +
+ +∀ξ∈ТМВ (ЛВ(ξ))
+ ∃ξ∈ТМВ (ЛВ(ξ))
+ ∀(ξ1, ξ2)∈ТМВ (ЛВ(ξ1, ξ2))
+ ∀ξ1,ξ2∈ТМВ (ЛВ(ξ1, ξ2))
+ ξ из области определения
+ выполняется условие ЛВ(ξ).
+ ξ из области
+ определения, для которого условие ЛВ(ξ) выполняется.
+ ∀x∈D1 ∃y∈D2 (x,y)∈S1 & (x,x)∈S1
+ Циклическая (рекурсивная) конструкция является теоретико-множественным выражением.
+ +{'R{ξ ≔ ТМВ1 | ТМВ2(ξ)}'}
+ {'R{ξ ≔ ТМВ1 | ЛВ(ξ) | ТМВ2(ξ)}'}
+ {'R{(ξ,σ) ≔ (ТМВ1,ТМВ2) | ЛВ(ξ,σ) | ТМВ3(ξ,σ)}'}
+ R — часть синтаксиса, а не идентификатор.
+ ≔ задаётся начальное значение
+ переменной (или кортежа переменных) рекурсии.
+ ЛВ, которое
+ пересчитывается на каждом шаге для текущего значения переменной рекурсии. Второй блок опционален, условием
+ выхода по умолчанию считается повторение предыдущего значения на текущем шаге.
+ На каждом шаге сначала вычисляется условие продолжения рекурсии, затем выполняется пересчёт.
+ ++ Рекурсия продолжается, пока условие продолжения истинно, или до стабилизации значения переменной рекурсии + (значение на шаге k равно значению на шаге k+1). Результатом является последнее значение + переменной (или кортежа переменных) рекурсии. +
+ +
+ Вычисление степеней двойки:
+
+ {'R{(ξ,σ) ≔ (1, 0) | σ<5 | (2∗ξ, σ+1)} = 32'}
+
+ Теоретико-множественные выражения (ТМВ) в языке родов структур используются для задания и преобразования + множеств. Сложные конструкции теоретико-множественных выражений выделены в индивидуальные разделы справочника. +
++ В данном разделе приведены классические операции над множествами, построенные на основе предикатов + принадлежности и логических связок. +
+ +D1 ∪ D2 — множество элементов, принадлежащих D1 или D2.
+ D1 ∩ D2 — множество элементов, принадлежащих и D1, и D2.
+ D1 \ D2 — множество элементов, принадлежащих D1, но не D2.
+ D1 ∆ D2 — множество элементов, принадлежащих исключительно D1 или
+ исключительно D2.
+ {`{1,2} ∪ {2,3} = {1,2,3}`}
+ {`{1,2,3} ∩ {2,3,4} = {2,3}`}
+ {`{1,2,3} \\ {2} = {1,3}`}
+
+ Структурные выражения в языке родов структур используются для преобразований, меняющий{' '}
+
ℬ(X1) — множество всех подмножеств X1.
+ X1×X2 — множество всех пар элементов из X1 и{' '}
+ X2.
+ (a, b, c) — упорядоченная n-ка (n ≥ 2).
+ {'{a, b, c}'} — неупорядоченная n-ка (n ≥ 1).
+ bool(a) = {`{a}`} — множество, состоящее из одного
+ элемента.
+ red(S1) — объединение элементов всех множеств в S1. Операция
+ применима только к множествам, состоящим из множеств.
+ debool({`{a}`}) = a — извлечение единственного элемента
+ из множества. Операция применима только к множествам с одним элементом.
+ pr1((a1, …, an)) = a1.
+ Pr1(S1) — множество первых компонентов всех кортежей из S1.
+ + Индексы у операций над кортежами для упрощения отображаются равными 1, но их можно заменить на другие + натуральные числа или их последовательность, разделенная запятой. +
+ ++ Вместо одного индекса можно использовать мультииндекс — последовательность натуральных чисел через + запятую. В этом случае проекция или фильтр возвращает сразу несколько позиций кортежа. +
+pr1,3((a1, a2, a3, a4)) = (a1, a3)
+ Pr2,4(S1) — множество пар, составленных из второй и четвёртой компонент кортежей из{' '}
+ S1.
+ Fi1[D1](S1) — подмножество S1, в котором для каждого элемента первая
+ проекция принадлежит D1.
+ Fi1,2[D1](S1) отличается от фильтра с мультииндексом{' '}
+ Fi1,2[Pr1(D1), Pr2(D2)](S1) тем, что в первом случае проверяется принадлежность парам из D1, а во
+ втором — полному декартову произведению проекций D1
+ {`ℬ(2) = {{}, {1}, {2}, {1, 2}}`}
+ (1,2,3) — кортеж из трёх чисел
+ pr2((5, 4, 3, 2, 1)) = 4
+
+ Pr3({`{(1, 2, 3),(4, 5, 6)}`}) = {`{3, 6}`}
+
+
+ red({`{{1, 2, 3},{3, 4}}`}) = {`{1, 2, 3, 4}`}
+
+ bool(1) = {`{1}`}, debool({`{1}`}) = 1
+ {`Fi2[{2, 4}]({((1, 2), (3, 4), (5, 6))}) = {((1, 2), (3, 4))}`}
+ Интерпретация производных понятий может быть задана внешними методами либо автоматически вычислена с помощью diff --git a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-literals.tsx b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-literals.tsx new file mode 100644 index 00000000..f5f65798 --- /dev/null +++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-literals.tsx @@ -0,0 +1,60 @@ +import { LinkTopic } from '../../components/link-topic'; +import { HelpTopic } from '../../models/help-topic'; + +export function HelpRSLangLiterals() { + return ( +
+ В языке родов структур идентификаторы и литералы имеют строгие правила записи, определяющие их роль в выражениях + и обеспечивающие однозначность интерпретации. +
+ +X1,F11,{' '}
+ D24.
+ ξ, μ2, y1.
+ Литералы задают фиксированные значения в выражениях.
+0, 42.
+ Z.
+ ∅.
+
+ Пример использования переменной и понятия: x ∈ X1, где x — переменная, а{' '}
+ X1 — понятие.
+
+ Пример с литералами: card(X1) = 5.
+
Порождение полной совокупности термов, раскрывающих структуру выбранной конституенты. Операция применима к
- терм-функциям, термам и родовым структурам с
{'Generate(S1∈ℬ(X1×ℬ(X1))) = {Pr1(S1), Pr2(S1), red(Pr2(S1))}'}
diff --git a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-types.tsx b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-typification.tsx
similarity index 98%
rename from rsconcept/frontend/src/features/help/items/rslang/help-rslang-types.tsx
rename to rsconcept/frontend/src/features/help/items/rslang/help-rslang-typification.tsx
index de5db510..b5f3f437 100644
--- a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-types.tsx
+++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-typification.tsx
@@ -1,4 +1,4 @@
-export function HelpRSLangTypes() {
+export function HelpRSLangTypification() {
return (