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. Видео: Краткое введение в мат. аппарат

-

2. Текст: Учебник И. Н. Пономарева

-

3. Видео: лекции для 4 курса (второй семестр 2022-23 год)

-
-
+

+ Формальная запись (экспликация) концептуальных схем осуществляется с помощью языка родов структур (далее + – Язык). В данном разделе поясняются основные понятия и формальные конструкции Языка. В своей основе Язык + является формальной логикой первого порядка, все дополнительные обозначения основываются на предикате + принадлежности x∈y. +

+

+ Используются строгие правила написания идентификаторов для обозначений понятий, локальных переменных и + литералов. +

+

+ Элементы Языка подразделяются на теоретико-множественные выражения и логические выражения. Упрощенно говоря, + теоретико-множественное выражение возвращает элемент некоторой{' '} + , логическое выражение возвращает логическое + значение ИСТИНА или ЛОЖЬ. +

+

+ Помимо указанных выражений также допускаются параметризованные и шаблонные выражения, значения и типизация + которых зависят от вводимых параметров. Такие выражения используются в определениях{' '} + + . +

+

Выражения, позволяющие манипулировать ступенями операндов называются структурными выражениями.

+

+ Отдельно рассматриваются сложные конструкции, задающие множество через отбор элементов, императивно или + рекурсивно. +

+ + +
+

Для глубокого ознакомления с основами родов структур можно использовать следующие материалы:

+

+ 1. Видео: Краткое введение в мат. аппарат +

+

+ 2.{' '} + + Текст: Учебник И. Н. Пономарева + +

+

+ 3.{' '} + + Видео: лекции для 4 курса (второй семестр 2022-23 год) + +

+
-
); + ); } diff --git a/rsconcept/frontend/src/features/help/items/help-thesaurus.tsx b/rsconcept/frontend/src/features/help/items/help-thesaurus.tsx index fe8c504f..bc30cb8a 100644 --- a/rsconcept/frontend/src/features/help/items/help-thesaurus.tsx +++ b/rsconcept/frontend/src/features/help/items/help-thesaurus.tsx @@ -137,7 +137,7 @@ export function HelpThesaurus() { {'\u2009'}родовая структура (S#) – неопределяемое понятие, имеющее структуру, построенную на базисных множествах и константных множеств. Содержание родовой структуры формируется{' '} - , аксиомами и конвенцией. + , аксиомами и конвенцией.
  • diff --git a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-correct.tsx b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-correct.tsx index 1433cf50..b323e054 100644 --- a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-correct.tsx +++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-correct.tsx @@ -18,7 +18,7 @@ export function HelpRSLangCorrect() { Правила проверки теоретико-множественных выражений выводятся из условия биективной переносимости предиката принадлежности – элемент должен соответствовать множеству, для которого проверяется принадлежность. Необходимым условием биективной переносимости является выполнение{' '} - для всех локальных и глобальных + для всех локальных и глобальных идентификаторов.

    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 +
    • +
    +
    + ); +} diff --git a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-declarative.tsx b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-declarative.tsx new file mode 100644 index 00000000..c2e09407 --- /dev/null +++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-declarative.tsx @@ -0,0 +1,45 @@ +import { LinkTopic } from '../../components/link-topic'; +import { HelpTopic } from '../../models/help-topic'; + +export function HelpRSLangExpressionDeclarative() { + return ( +
    +

    Декларативные выражения

    +

    + Декларативная конструкция, также известная как схема ограниченного выделения, в языке родов структур задает + множество через перебираемое множество и проверяемое условие. С точки зрения определения понятий такие выражения + задают родовидовое определение. +

    +

    + конструкции совпадает с типизацией множества, + из которого происходит отбор. +

    + +

    Синтаксис

    +
      +
    • + D{'{ξ∈ТМВ | ЛВ(ξ)}'} +
    • +
    • + D{'{(ξ₁, ξ₂)∈ТМВ | ЛВ(ξ₁, ξ₂)}'} +
    • +
    • + Буква D — часть синтаксиса, а не идентификатор. +
    • +
    + +

    Семантика

    +

    + Локальные переменные перебирают свою область определения. Если для текущего значения переменной логическое + выражение справа истинно, то это значение (или кортеж значений) включается в результирующее множество. +

    + +

    Пример

    +

    + + D{'{ξ∈{1, 2, 3, 4, 5, 6} | ∃σ∈{10, 11, 12} (σ = 2 ∗ ξ)}'} = {'{5, 6}'} + +

    +
    + ); +} diff --git a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-imperative.tsx b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-imperative.tsx new file mode 100644 index 00000000..a596da5f --- /dev/null +++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-imperative.tsx @@ -0,0 +1,71 @@ +import { LinkTopic } from '../../components/link-topic'; +import { HelpTopic } from '../../models/help-topic'; + +export function HelpRSLangExpressionImperative() { + return ( +
    +

    Императивные выражения

    +

    + Императивная конструкция в языке родов структур является теоретико-множественным выражением, построенным с + помощью блоков и правил вычисления. Она выражает конструктивные (генемные) способы определения понятий. +

    +

    + Императивная конструкция может быть преобразовано в эквивалентную с точки зрения теории множеств{' '} + , что обосновывает ее + теоретические свойства. Однако использование императивной конструкции при экспликации отличается от + декларативной тем, что позволяет выражать другие типы определений и точно указывает способ интерпретации + понятия. +

    + +

    Синтаксис

    +
      +
    • + 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)}'} + +

    +
    + ); +} diff --git a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-logic.tsx b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-logic.tsx new file mode 100644 index 00000000..ca4b1467 --- /dev/null +++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-logic.tsx @@ -0,0 +1,91 @@ +export function HelpRSLangExpressionLogic() { + return ( +
    +

    Логические выражения

    +

    + Пропозициональные формулы в языке родов структур — это логические выражения, построенные из предикатов + (логических выражений) и переменных с помощью связок. Константы ИСТИНА И ЛОЖЬ не используются в экспликации + концептуальных схем. +

    + +

    Теоретико-множественные предикаты

    +
      +
    • + Принадлежность: ξ∈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`} +
    • +
    +
    + ); +} diff --git a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-parameter.tsx b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-parameter.tsx new file mode 100644 index 00000000..524741db --- /dev/null +++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-parameter.tsx @@ -0,0 +1,55 @@ +export function HelpRSLangExpressionParameter() { + return ( +
    +

    Параметризованные выражения

    +

    + Параметризованные выражения в языке родов структур образуют самостоятельный класс конструкций. Они используются + для объявления терм-функций и предикат-функций. Вызов таких функций является соответственно + теоретико-множественным выражением (ТМВ) или логическим выражением (ЛВ). +

    + +

    Объявление терм-функции

    + 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) +

    + Функции, параметры которых содержат радикалы, называются шаблонными. Радикал используется для обозначения + произвольной типизации в ступени аргумента функции. +

    +
      +
    • + При вызове функции значение радикала вычисляется из типизаций аргументов. Все вычисленные значения должны + совпадать. +
    • +
    • Радикалы с разными индексами считаются различными по типизации.
    • +
    • + Радикалы могут использоваться только в описании областей определения параметров, но не в выражении результата. +
    • +
    +
    + ); +} diff --git a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-quantor.tsx b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-quantor.tsx new file mode 100644 index 00000000..707e0811 --- /dev/null +++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-quantor.tsx @@ -0,0 +1,53 @@ +export function HelpRSLangExpressionQuantor() { + return ( +
    +

    Кванторные выражения

    +

    + Кванторные выражения в языке родов структур используются для формулировки утверждений о всех или некоторых + элементах множества. +

    + +

    Синтаксис

    +
      +
    • + Всеобщность: ∀ξ∈ТМВ (ЛВ(ξ)) +
    • +
    • + Существование: ∃ξ∈ТМВ (ЛВ(ξ)) +
    • +
    • + ∀(ξ1, ξ2)∈ТМВ (ЛВ(ξ1, ξ2)) +
    • +
    • + ∀ξ1,ξ2∈ТМВ (ЛВ(ξ1, ξ2)) +
    • +
    • Скобки вокруг ЛВ могут быть опущены для атомарных логических выражений.
    • +
    + +

    Семантика

    +
      +
    • + Всеобщность: выражение истинно, если для всех значений ξ из области определения + выполняется условие ЛВ(ξ). +
    • +
    • + Существование: выражение истинно, если существует хотя бы одно значение ξ из области + определения, для которого условие ЛВ(ξ) выполняется. +
    • +
    • + Кортеж переменных означает объявление переменной, пробегающий значения и введение обозначений для ее проекций. +
    • +
    • + Перечисление переменных является сокращением вложенных кванторов с одним типом и одной областью определения. +
    • +
    + +

    Пример

    +
      +
    • + ∀x∈D1 ∃y∈D2 (x,y)∈S1 & (x,x)∈S1 +
    • +
    +
    + ); +} diff --git a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-recursive.tsx b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-recursive.tsx new file mode 100644 index 00000000..26ce7d52 --- /dev/null +++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-recursive.tsx @@ -0,0 +1,58 @@ +export function HelpRSLangExpressionRecursive() { + return ( +
    +

    Циклические конструкции

    +

    Циклическая (рекурсивная) конструкция является теоретико-множественным выражением.

    + +

    Синтаксис

    +
      +
    • + {'R{ξ ≔ ТМВ1 | ТМВ2(ξ)}'} +
    • +
    • + {'R{ξ ≔ ТМВ1 | ЛВ(ξ) | ТМВ2(ξ)}'} +
    • +
    • + {'R{(ξ,σ) ≔ (ТМВ1,ТМВ2) | ЛВ(ξ,σ) | ТМВ3(ξ,σ)}'} +
    • +
    • + Буква R — часть синтаксиса, а не идентификатор. +
    • +
    + +

    Состав конструкции

    +
      +
    • + База рекурсии — в первом блоке оператором присваивания задаётся начальное значение + переменной (или кортежа переменных) рекурсии. +
    • +
    • + Условие продолжения — во втором блоке указывается логическое выражение ЛВ, которое + пересчитывается на каждом шаге для текущего значения переменной рекурсии. Второй блок опционален, условием + выхода по умолчанию считается повторение предыдущего значения на текущем шаге. +
    • +
    • + Пересчёт — в третьем блоке задаётся ТМВ, вычисляемое на текущем значении переменной и дающее значение + переменной на следующем шаге. +
    • +
    + +

    Порядок выполнения шага

    +

    На каждом шаге сначала вычисляется условие продолжения рекурсии, затем выполняется пересчёт.

    + +

    Завершение и результат

    +

    + Рекурсия продолжается, пока условие продолжения истинно, или до стабилизации значения переменной рекурсии + (значение на шаге k равно значению на шаге k+1). Результатом является последнее значение + переменной (или кортежа переменных) рекурсии. +

    + +

    Пример

    +

    + Вычисление степеней двойки: +
    + {'R{(ξ,σ) ≔ (1, 0) | σ<5 | (2∗ξ, σ+1)} = 32'} +

    +
    + ); +} diff --git a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-set.tsx b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-set.tsx new file mode 100644 index 00000000..20ff8d97 --- /dev/null +++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-set.tsx @@ -0,0 +1,45 @@ +export function HelpRSLangExpressionSet() { + return ( +
    +

    Теоретико-множественные выражения

    +

    + Теоретико-множественные выражения (ТМВ) в языке родов структур используются для задания и преобразования + множеств. Сложные конструкции теоретико-множественных выражений выделены в индивидуальные разделы справочника. +

    +

    + В данном разделе приведены классические операции над множествами, построенные на основе предикатов + принадлежности и логических связок. +

    + +

    Основные операции

    +
      +
    • + Объединение: 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}`} +
    • +
    +
    + ); +} diff --git a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-structure.tsx b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-structure.tsx new file mode 100644 index 00000000..f19a1fdb --- /dev/null +++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-structure.tsx @@ -0,0 +1,123 @@ +import { LinkTopic } from '../../components/link-topic'; +import { HelpTopic } from '../../models/help-topic'; + +export function HelpRSLangExpressionStructure() { + return ( +
    +

    Структурные выражения

    +

    + Структурные выражения в языке родов структур используются для преобразований, меняющий{' '} + аргументов, позволяя порождать структурно + зависимые или структурно новые понятия. +

    + +

    Порождение структур

    +
      +
    • + Булеан / Множество подмножеств: ℬ(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-interpret.tsx b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-interpret.tsx index 5942241e..6e3c50e8 100644 --- a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-interpret.tsx +++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-interpret.tsx @@ -10,7 +10,7 @@ export function HelpRSLangInterpret() { содержания и схемных терминов и определений. Для этого в соответствии с{' '} вводятся списки объектов предметной области, соответствующих неопределяемым понятиям. При этом обеспечивается корректность отношений{' '} - для родовых структур. + для родовых структур.

    Интерпретация производных понятий может быть задана внешними методами либо автоматически вычислена с помощью 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. +
    • +
    • + Радикалы — обозначения для произвольных типизаций, используемые в{' '} + — идентификаторы, + начинающиеся с буквы R. +
    • +
    • + Переменные — идентификаторы, начинающиеся со строчной греческой или латинской буквы, например: + ξ, μ2, y1. +
    • +
    • + Специальные идентификаторы — зарезервированные слова и обозначения, имеющие фиксированное значение в + языке. +
    • +
    + +

    Литералы

    +

    Литералы задают фиксированные значения в выражениях.

    +
      +
    • + Целые числа — последовательность цифр. Отрицательные числа не поддерживаются: + 0, 42. +
    • +
    • + Множество целых чисел — символ Z. +
    • +
    • + Пустое множество — символ . +
    • +
    + +

    Примеры

    +

    + Пример использования переменной и понятия: x ∈ X1, где x — переменная, а{' '} + X1 — понятие. +

    +

    + Пример с литералами: card(X1) = 5. +

    +
    + ); +} diff --git a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-operations.tsx b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-operations.tsx index 62a78f19..ef3bd714 100644 --- a/rsconcept/frontend/src/features/help/items/rslang/help-rslang-operations.tsx +++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-operations.tsx @@ -47,7 +47,7 @@ export function HelpRSLangOperations() {

    Порождение полной совокупности термов, раскрывающих структуру выбранной конституенты. Операция применима к - терм-функциям, термам и родовым структурам с {' '} + терм-функциям, термам и родовым структурам с {' '} множество и кортеж.
    {'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 (

    Типизация

    diff --git a/rsconcept/frontend/src/features/help/labels.ts b/rsconcept/frontend/src/features/help/labels.ts index f4ecc4b7..0c7feac0 100644 --- a/rsconcept/frontend/src/features/help/labels.ts +++ b/rsconcept/frontend/src/features/help/labels.ts @@ -31,7 +31,17 @@ const labelHelpTopicRecord: Record = { [HelpTopic.CC_PROPAGATION]: 'Сквозные изменения', [HelpTopic.RSLANG]: '🚀 Экспликация', - [HelpTopic.RSL_TYPES]: 'Типизация', + [HelpTopic.RSL_LITERALS]: 'Идентификаторы', + [HelpTopic.RSL_TYPIFICATION]: 'Типизация', + [HelpTopic.RSL_EXPRESSION_LOGIC]: 'Логические выражения', + [HelpTopic.RSL_EXPRESSION_SET]: 'Операции с множествами', + [HelpTopic.RSL_EXPRESSION_STRUCTURE]: 'Структурные выражения', + [HelpTopic.RSL_EXPRESSION_ARITHMETIC]: 'Арифметика', + [HelpTopic.RSL_EXPRESSION_QUANTOR]: 'Кванторные конструкции', + [HelpTopic.RSL_EXPRESSION_DECLARATIVE]: 'Декларативные', + [HelpTopic.RSL_EXPRESSION_IMPERATIVE]: 'Императивные', + [HelpTopic.RSL_EXPRESSION_RECURSIVE]: 'Рекурсивные', + [HelpTopic.RSL_EXPRESSION_PARAMETER]: 'Параметризованные', [HelpTopic.RSL_CORRECT]: 'Переносимость', [HelpTopic.RSL_INTERPRET]: 'Интерпретируемость', [HelpTopic.RSL_OPERATIONS]: 'Операции', @@ -82,7 +92,17 @@ const describeHelpTopicRecord: Record = { [HelpTopic.CC_PROPAGATION]: 'сквозные изменения в ОСС', [HelpTopic.RSLANG]: 'экспликация и язык родов структур', - [HelpTopic.RSL_TYPES]: 'система типов в
    родоструктурной экспликации', + [HelpTopic.RSL_LITERALS]: 'обозначения конституент,
    локальных переменных и литералов', + [HelpTopic.RSL_TYPIFICATION]: 'система типов в
    родоструктурной экспликации', + [HelpTopic.RSL_EXPRESSION_LOGIC]: 'логические связывающие конструкции', + [HelpTopic.RSL_EXPRESSION_SET]: 'операции с множествами', + [HelpTopic.RSL_EXPRESSION_STRUCTURE]: 'операции со ступенями', + [HelpTopic.RSL_EXPRESSION_ARITHMETIC]: 'арифметические выражения', + [HelpTopic.RSL_EXPRESSION_QUANTOR]: 'кванторные конструкции', + [HelpTopic.RSL_EXPRESSION_DECLARATIVE]: 'декларативные выражения', + [HelpTopic.RSL_EXPRESSION_IMPERATIVE]: 'императивные выражения', + [HelpTopic.RSL_EXPRESSION_RECURSIVE]: 'рекурсивные выражения', + [HelpTopic.RSL_EXPRESSION_PARAMETER]: 'выражения с внешними параметрами', [HelpTopic.RSL_CORRECT]: 'биективная переносимость', [HelpTopic.RSL_INTERPRET]: 'интерпретация определений
    и утверждений', [HelpTopic.RSL_OPERATIONS]: 'формальные операции', diff --git a/rsconcept/frontend/src/features/help/models/help-topic.ts b/rsconcept/frontend/src/features/help/models/help-topic.ts index d16ace94..67f38150 100644 --- a/rsconcept/frontend/src/features/help/models/help-topic.ts +++ b/rsconcept/frontend/src/features/help/models/help-topic.ts @@ -32,7 +32,17 @@ export const HelpTopic = { CC_PROPAGATION: 'concept-change-propagation', RSLANG: 'rslang', - RSL_TYPES: 'rslang-types', + RSL_LITERALS: 'rslang-literals', + RSL_TYPIFICATION: 'rslang-typification', + RSL_EXPRESSION_LOGIC: 'rslang-expression-logic', + RSL_EXPRESSION_SET: 'rslang-expression-set', + RSL_EXPRESSION_STRUCTURE: 'rslang-expression-structure', + RSL_EXPRESSION_ARITHMETIC: 'rslang-expression-arithmetic', + RSL_EXPRESSION_QUANTOR: 'rslang-expression-quantor', + RSL_EXPRESSION_DECLARATIVE: 'rslang-expression-declarative', + RSL_EXPRESSION_IMPERATIVE: 'rslang-expression-imperative', + RSL_EXPRESSION_RECURSIVE: 'rslang-expression-recursive', + RSL_EXPRESSION_PARAMETER: 'rslang-expression-parameter', RSL_CORRECT: 'rslang-correctness', RSL_INTERPRET: 'rslang-interpretation', RSL_OPERATIONS: 'rslang-operations', @@ -88,7 +98,17 @@ export const topicParent = new Map([ [HelpTopic.CC_PROPAGATION, HelpTopic.CONCEPTUAL], [HelpTopic.RSLANG, HelpTopic.RSLANG], - [HelpTopic.RSL_TYPES, HelpTopic.RSLANG], + [HelpTopic.RSL_LITERALS, HelpTopic.RSLANG], + [HelpTopic.RSL_TYPIFICATION, HelpTopic.RSLANG], + [HelpTopic.RSL_EXPRESSION_LOGIC, HelpTopic.RSLANG], + [HelpTopic.RSL_EXPRESSION_SET, HelpTopic.RSLANG], + [HelpTopic.RSL_EXPRESSION_STRUCTURE, HelpTopic.RSLANG], + [HelpTopic.RSL_EXPRESSION_ARITHMETIC, HelpTopic.RSLANG], + [HelpTopic.RSL_EXPRESSION_QUANTOR, HelpTopic.RSLANG], + [HelpTopic.RSL_EXPRESSION_DECLARATIVE, HelpTopic.RSLANG], + [HelpTopic.RSL_EXPRESSION_IMPERATIVE, HelpTopic.RSLANG], + [HelpTopic.RSL_EXPRESSION_RECURSIVE, HelpTopic.RSLANG], + [HelpTopic.RSL_EXPRESSION_PARAMETER, HelpTopic.RSLANG], [HelpTopic.RSL_CORRECT, HelpTopic.RSLANG], [HelpTopic.RSL_INTERPRET, HelpTopic.RSLANG], [HelpTopic.RSL_OPERATIONS, HelpTopic.RSLANG], diff --git a/rsconcept/frontend/src/features/help/pages/manuals-page/topic-page.tsx b/rsconcept/frontend/src/features/help/pages/manuals-page/topic-page.tsx index 7a1c1c4d..ca43cbdb 100644 --- a/rsconcept/frontend/src/features/help/pages/manuals-page/topic-page.tsx +++ b/rsconcept/frontend/src/features/help/pages/manuals-page/topic-page.tsx @@ -23,10 +23,20 @@ import { HelpContributors } from '../../items/info/help-contributors'; import { HelpPrivacy } from '../../items/info/help-privacy'; import { HelpRules } from '../../items/info/help-rules'; import { HelpRSLangCorrect } from '../../items/rslang/help-rslang-correct'; +import { HelpRSLangExpressionArithmetic } from '../../items/rslang/help-rslang-expression-arithmetic'; +import { HelpRSLangExpressionDeclarative } from '../../items/rslang/help-rslang-expression-declarative'; +import { HelpRSLangExpressionImperative } from '../../items/rslang/help-rslang-expression-imperative'; +import { HelpRSLangExpressionLogic } from '../../items/rslang/help-rslang-expression-logic'; +import { HelpRSLangExpressionParameter } from '../../items/rslang/help-rslang-expression-parameter'; +import { HelpRSLangExpressionQuantor } from '../../items/rslang/help-rslang-expression-quantor'; +import { HelpRSLangExpressionRecursive } from '../../items/rslang/help-rslang-expression-recursive'; +import { HelpRSLangExpressionSet } from '../../items/rslang/help-rslang-expression-set'; +import { HelpRSLangExpressionStructure } from '../../items/rslang/help-rslang-expression-structure'; import { HelpRSLangInterpret } from '../../items/rslang/help-rslang-interpret'; +import { HelpRSLangLiterals } from '../../items/rslang/help-rslang-literals'; import { HelpRSLangOperations } from '../../items/rslang/help-rslang-operations'; import { HelpRSLangTemplates } from '../../items/rslang/help-rslang-templates'; -import { HelpRSLangTypes } from '../../items/rslang/help-rslang-types'; +import { HelpRSLangTypification } from '../../items/rslang/help-rslang-typification'; import { HelpCstClass } from '../../items/ui/help-cst-class'; import { HelpCstStatus } from '../../items/ui/help-cst-status'; import { HelpFormulaTree } from '../../items/ui/help-formula-tree'; @@ -86,7 +96,17 @@ export function TopicPage({ topic }: TopicPageProps) { if (topic === HelpTopic.CC_PROPAGATION) return ; if (topic === HelpTopic.RSLANG) return ; - if (topic === HelpTopic.RSL_TYPES) return ; + if (topic === HelpTopic.RSL_LITERALS) return ; + if (topic === HelpTopic.RSL_TYPIFICATION) return ; + if (topic === HelpTopic.RSL_EXPRESSION_LOGIC) return ; + if (topic === HelpTopic.RSL_EXPRESSION_SET) return ; + if (topic === HelpTopic.RSL_EXPRESSION_STRUCTURE) return ; + if (topic === HelpTopic.RSL_EXPRESSION_ARITHMETIC) return ; + if (topic === HelpTopic.RSL_EXPRESSION_QUANTOR) return ; + if (topic === HelpTopic.RSL_EXPRESSION_DECLARATIVE) return ; + if (topic === HelpTopic.RSL_EXPRESSION_IMPERATIVE) return ; + if (topic === HelpTopic.RSL_EXPRESSION_RECURSIVE) return ; + if (topic === HelpTopic.RSL_EXPRESSION_PARAMETER) return ; if (topic === HelpTopic.RSL_CORRECT) return ; if (topic === HelpTopic.RSL_INTERPRET) return ; if (topic === HelpTopic.RSL_OPERATIONS) return ;