From 1d182f441770a862dfd6a66784e60342f1c95eaa Mon Sep 17 00:00:00 2001
From: Ivan <8611739+IRBorisov@users.noreply.github.com>
Date: Fri, 15 Aug 2025 21:53:49 +0300
Subject: [PATCH] D: Generating help pt1
---
.../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 | 99 +++++++++++++++
.../help-rslang-expression-declarative.tsx | 97 ++++++++++++++
.../help-rslang-expression-imperative.tsx | 98 +++++++++++++++
.../rslang/help-rslang-expression-logic.tsx | 81 ++++++++++++
.../help-rslang-expression-parameter.tsx | 119 ++++++++++++++++++
.../rslang/help-rslang-expression-quantor.tsx | 96 ++++++++++++++
.../help-rslang-expression-recursive.tsx | 110 ++++++++++++++++
.../rslang/help-rslang-expression-set.tsx | 85 +++++++++++++
.../help-rslang-expression-structure.tsx | 78 ++++++++++++
.../items/rslang/help-rslang-interpret.tsx | 2 +-
.../items/rslang/help-rslang-literals.tsx | 63 ++++++++++
.../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 +++-
20 files changed, 1053 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/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..e11078fc --- /dev/null +++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-expression-arithmetic.tsx @@ -0,0 +1,99 @@ +export function HelpRSLangExpressionArithmetic() { + return ( +
+ Арифметические выражения в языке родов структур позволяют выполнять математические операции над числовыми + данными. Эти выражения работают с целыми числами и возвращают числовые результаты. +
+ +a + b - сумма чисел a и b
+ a - b - разность чисел a и b
+ a × b или a * b - произведение чисел a и b
+ a ÷ b или a / b - частное от деления a на b
+ a mod b - остаток от деления a на b
+ a^b или a**b - a в степени b
+ a = b - a равно b
+ a ≠ b - a не равно b
+ {'a < b'} - a меньше b
+ a ≤ b - a меньше или равно b
+ {'a > b'} - a больше b
+ a ≥ b - a больше или равно b
+ |a| - модуль числа a
+ min(a, b) - минимальное из чисел a и b
+ max(a, b) - максимальное из чисел a и b
+ n! - факториал числа n
+ (a + b) × c - произведение суммы a и b на c
+ a^2 + b^2 - сумма квадратов a и b
+ |x - y| - абсолютная разность x и y
+ min(a, b) + max(c, d) - сумма минимума a и b с максимумом c и d
+
+ Все арифметические выражения имеют типизацию Z (целые числа). Результат арифметической операции
+ всегда является целым числом.
+
+ Арифметические выражения используются для определения числовых характеристик объектов предметной области, + вычисления количественных показателей и формулировки числовых ограничений в аксиомах и теоремах. +
++ Декларативные выражения в языке родов структур используются для определения понятий через их свойства и + характеристики. Эти выражения описывают "что есть" объект, а не "как его получить". +
+ +{'A = {x | P(x)}'} - A есть множество всех x, обладающих
+ свойством P
+ A = B - A равно B по определению
+ A ⊆ B - A является подмножеством B
+ ∀x ∈ A: P(x) - для всех x из A выполняется свойство P
+ {'EVEN = {x ∈ Z | x mod 2 = 0}'} - четные числа есть множество целых чисел, делящихся на 2
+ {'PRIME = {x ∈ N | x > 1 ∧ ∀y ∈ N: y | x → y = 1 ∨ y = x}'} - простые числа
+ ∀x ∈ A: x ∈ B → x ∈ C - все элементы A, принадлежащие B, принадлежат также C
+ {'MAX = {x ∈ A | ∀y ∈ A: y ≤ x}'} - максимум множества A
+ Декларативные выражения могут иметь различные типизации в зависимости от типа определяемого объекта:
+ℬ(H)
+ ℬ(H₁ × H₂ × ... × Hₙ)
+ + Декларативные выражения используются для определения понятий в концептуальных схемах, формулировки аксиом и + теорем, а также для описания свойств объектов предметной области. Они составляют основу формального описания + концептуальных схем. +
++ Императивные выражения в языке родов структур используются для задания множеств через последовательность + действий или операций. Эти выражения описывают "как получить" объект, а не "что он есть". +
+ +op₁; op₂; ...; opₙ - выполнение операций в заданном порядке
+ if P then op₁ else op₂ - условное выполнение операций
+ while P do op - повторение операции пока выполняется условие P
+ x := expr - присваивание значения выражения переменной
+ {'A := A ∪ {x}'} - добавление элемента x к множеству A
+ {'A := A {x}'} - удаление элемента x из множества A
+ A := A ∪ B - объединение множеств A и B
+ A := A ∩ B - пересечение множеств A и B
+ {'result := ∅; for x ∈ A do if P(x) then result := result ∪ {x}'} - построение множества
+ элементов A, удовлетворяющих условию P
+ sum := 0; for x ∈ A do sum := sum + x - вычисление суммы элементов множества A
+ {'max := first(A); for x ∈ A do if x > max then max := x'} - поиск максимального элемента в A
+ {'B := ∅; while A ≠ ∅ do {x := choose(A); B := B ∪ {f(x)}; A := A {x}}'} - применение функции f
+ к элементам A
+ Императивные выражения могут иметь различные типизации в зависимости от результата выполнения:
+ℬ(H)
+ H
+ + Императивные выражения используются для определения алгоритмов построения множеств, вычисления характеристик + объектов и реализации операций над данными в концептуальных схемах. Они позволяют задавать конструктивные + способы получения объектов. +
++ Логические выражения в языке родов структур возвращают логическое значение ИСТИНА или ЛОЖЬ. Они используются для + формулировки аксиом, теорем и условий. +
+ +¬P или !P - "не P"
+ P ∧ Q или P && Q - "P и Q"
+ P ∨ Q или P || Q - "P или Q"
+ P → Q или {'P => Q'} - "если P, то Q"
+ P ↔ Q или {'P <=> Q'} - "P эквивалентно Q"
+ ∀x ∈ A: P(x) - "для всех x из A выполняется P(x)"
+ ∃x ∈ A: P(x) - "существует x из A такой, что P(x)"
+ ∃!x ∈ A: P(x) - "существует единственный x из A такой, что P(x)"
+ x ∈ A - "x принадлежит множеству A"
+ x ∉ A - "x не принадлежит множеству A"
+ A ⊆ B - "A является подмножеством B"
+ A ⊂ B - "A является собственным подмножеством B"
+ A = B - "множества A и B равны"
+ ∀x ∈ A: x ∈ B - "все элементы A принадлежат B"
+ ∃x ∈ A: P(x) ∧ Q(x) - "существует элемент x из A, для которого выполняются P(x) и Q(x)"
+ A ⊆ B ∧ B ⊆ A → A = B - "если A включено в B и B включено в A, то A равно B"
+ + Все логические выражения имеют типизацию Logic и могут использоваться в качестве аксиом, теорем или + условий в определениях конституент. +
++ Параметризованные выражения в языке родов структур позволяют создавать шаблоны выражений, которые могут быть + применены к различным наборам параметров. Такие выражения используются в определениях терм-функций и + предикат-функций. +
+ +f(x₁, x₂, ..., xₙ) = expr - функция с параметрами
+ P(x₁, x₂, ..., xₙ) = condition - предикат с параметрами
+ template(param₁, param₂, ...) - шаблон с параметрами
+ {'A(param) = {x | P(x, param)}'} - множество, зависящее от
+ параметра
+ sum(x, y) = x + y - функция сложения двух чисел
+ {'is_greater(x, y) = x > y'} - предикат сравнения
+ power(base, exp) = if exp = 0 then 1 else base × power(base, exp-1) - возведение в степень
+ {'filter(A, P) = {x ∈ A | P(x)}'} - фильтрация множества по предикату
+
+ Параметризованные выражения имеют типизацию вида Hᵣ ← [H₁, H₂, ..., Hᵢ], где:
+
Hᵣ - типизация результата
+ H₁, H₂, ..., Hᵢ - типизации аргументов
+ Hᵣ = Logic
+ Hᵣ определяется типом возвращаемого значения
+ + Параметризованные выражения используются для определения терм-функций и предикат-функций в концептуальных + схемах. Они позволяют создавать универсальные шаблоны, которые могут применяться к различным объектам предметной + области. +
++ Кванторные выражения в языке родов структур позволяют формулировать утверждения о свойствах элементов множеств. + Кванторы связывают переменные и позволяют выражать логические утверждения о всех или некоторых элементах + множества. +
+ +∀x ∈ A: P(x) - "для всех x из A выполняется P(x)"
+ ∃x ∈ A: P(x) - "существует x из A такой, что P(x)"
+ ∃!x ∈ A: P(x) - "существует единственный x из A такой, что P(x)"
+ ∃₁x ∈ A: P(x) - альтернативная запись для ∃!
+ ∀x ∈ A: P(x) связана квантором ∀
+ ∀x ∈ A ∀y ∈ B: P(x, y) - для всех x из A и всех y из B
+ ∀x ∈ A ∃y ∈ B: P(x, y) - для каждого x из A существует y из B
+ ∀x ∈ A: P(x) → Q(x) - для всех x из A, если P(x), то Q(x)
+ ∀x ∈ A: x ∈ B - все элементы A принадлежат B
+ {'∃x ∈ A: x > 0'} - существует положительный элемент в A
+ ∀x ∈ A ∃y ∈ B: x = f(y) - для каждого x из A существует y из B такой, что x = f(y)
+ ∃!x ∈ A: P(x) ∧ Q(x) - существует единственный x из A, для которого выполняются P(x) и Q(x)
+ ¬(∀x ∈ A: P(x)) эквивалентно ∃x ∈ A: ¬P(x)
+ ¬(∃x ∈ A: P(x)) эквивалентно ∀x ∈ A: ¬P(x)
+ ¬(∃!x ∈ A: P(x)) эквивалентно{' '}
+ ∀x ∈ A: ¬P(x) ∨ ∃y ∈ A: P(y) ∧ x ≠ y
+ + Все кванторные выражения имеют типизацию Logic, так как они возвращают логическое значение ИСТИНА или + ЛОЖЬ. Кванторы используются для формулировки аксиом, теорем и условий в определениях конституент. +
+ ++ Кванторные выражения используются для формулировки общих свойств объектов предметной области, определения + отношений между понятиями и выражения универсальных закономерностей в рамках концептуальных схем. +
++ Рекурсивные выражения в языке родов структур используются для определения множеств и функций через их + собственные определения. Рекурсия позволяет задавать бесконечные структуры и сложные зависимости. +
+ +A = B ∪ f(A) - множество A определяется через себя
+ f(n) = if n = 0 then 1 else n × f(n-1) - функция определяется через
+ себя
+ {'A = A₀ ∪ {f(x) | x ∈ A}'} - множество строится индуктивно
+ {'A = ⋃{Aᵢ | i < α}'} - объединение по ординалам
+ {'N = {0} ∪ {n+1 | n ∈ N}'} - индуктивное определение натуральных чисел
+ fact(n) = if n = 0 then 1 else n × fact(n-1) - факториал
+ fib(n) = if n ≤ 1 then n else fib(n-1) + fib(n-2) - числа Фибоначчи
+ {'LIST = {nil} ∪ {cons(x, l) | x ∈ A, l ∈ LIST}'} - список элементов из A
+ Для доказательства свойств рекурсивно определенных объектов используется принцип математической индукции:
+Рекурсивные выражения могут иметь различные типизации:
+ℬ(H)
+ H₁ → H₂
+ + Рекурсивные выражения используются для определения сложных структур данных, бесконечных множеств и функций в + концептуальных схемах. Они позволяют описывать объекты с внутренней структурой и зависимостями. +
++ Теоретико-множественные выражения в языке родов структур позволяют создавать и манипулировать множествами. + Результатом таких выражений является множество элементов определенной ступени. +
+ +A ∪ B - множество всех элементов, принадлежащих A или B
+ A ∩ B - множество всех элементов, принадлежащих и A, и B
+ A \ B - множество всех элементов A, не принадлежащих B
+ A △ B - множество элементов, принадлежащих ровно одному из A или
+ B
+ A' - множество всех элементов универсального множества, не принадлежащих A
+ {'{a, b, c}'} - множество из элементов a, b, c
+ {'{x ∈ A | P(x)}'} - множество всех x из A, для которых выполняется P(x)
+ {'{f(x) | x ∈ A}'} - множество значений f(x) для всех x из A
+ A × B - множество всех пар (a, b), где a ∈ A, b ∈ B
+ ℘(A) - множество всех подмножеств A
+ ∅ - множество, не содержащее элементов
+ U - множество всех элементов рассматриваемой области
+ {'{a}'} - множество, содержащее только элемент a
+ A ∪ (B ∩ C) - объединение A с пересечением B и C
+ {'{x ∈ A | x > 0}'} - множество всех положительных элементов из A
+ {'{x² | x ∈ {1, 2, 3}}'} - множество {'{(1, 4, 9)}'}
+ A × B × C - множество всех троек (a, b, c)
+
+ Множество имеет типизацию ℬ(H), где H - ступень элементов множества. Например, множество целых
+ чисел имеет типизацию ℬ(Z).
+
+ Структурные выражения в языке родов структур позволяют манипулировать ступенями операндов. Эти выражения + используются для изменения структуры данных и создания новых типов на основе существующих. +
+ +(H₁, H₂, ..., Hₙ) - ступень кортежа арности n
+ πᵢ(t) - извлечение i-го элемента кортежа t
+ t₁ ⊕ t₂ - объединение двух кортежей
+ struct(field₁: H₁, field₂: H₂, ...) - создание структуры с именованными
+ полями
+ H₁ × H₂ × ... × Hₙ - ступень n-арных кортежей
+ Hⁿ - n-арное произведение ступени H на себя
+ ℬ(H₁ × H₂ × ... × Hₙ) - множество n-арных кортежей
+ (Z, Z) - ступень пар целых чисел
+ ℬ(Z × Z) - множество пар целых чисел
+ π₁((x, y)) - извлечение первого элемента кортежа
+ struct(name: Z, age: Z) - структура с полями name и age типа целых чисел
+ Результат структурного выражения имеет типизацию, определяемую операцией:
+(H₁, H₂, ..., Hₙ)
+ Hᵢ
+ ℬ(H₁ × H₂ × ... × Hₙ)
+ + Структурные выражения используются для определения сложных типов данных в концептуальных схемах, таких как + записи, кортежи и структурированные множества. Они позволяют создавать формальные описания сложных объектов + предметной области. +
+Интерпретация производных понятий может быть задана внешними методами либо автоматически вычислена с помощью 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..c4e53d0a --- /dev/null +++ b/rsconcept/frontend/src/features/help/items/rslang/help-rslang-literals.tsx @@ -0,0 +1,63 @@ +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 (