SlideShare a Scribd company logo
1 of 10
Download to read offline
Язык работы с Конечными Системами
(YAFOLL сообщение 1)
А.В. Шкотин,
ashkotin(at)acm.org
https://sites.google.com/site/alex0shkotin/
осень 2015
Аннотация
Вводится понятие конечной многоосновной алгебраической системы (КМАС/FMAS), а также язык
для работы с такими системами - YAFOLL (Yet Another First Order Logic Language).
Показывается применимость таких систем для построения математической модели части
реальности, т.е. математической конструкции к которой можно обращаться с вопросами о свойствах
объектов и процессов предметной области.
Введение 
Базовое определение 
Имена 
Числа и строки 
Элементы сортов 
Итоги­1. Пример на текущий момент 
Сорта R и S 
Сигнатура функции 
Истинностные значения и предикаты 
Понятие терма 
Задание первичных функций 
Конечная система (КС) 
Тождество 
Запрос значения терма 
Построение онтологии предметной области (БД Проба) 
Сорта 
Наполнение сортов и базовые атрибуты 
Дополнительные атрибуты и связи 
Предикаты горных пород и химических веществ 
Заключение 
Литература 
Введение 
Алгебраическая система (АС) является классической математической конструкцией для которой
известно как задавать её свойства и как проверять обладает ли она теми или иными
свойствами[ASWp].
Для создания и ведения АС некоторого вида описывается фрагмент языка YAFOLL (сокращённо -
Y!L). Процессор, выполняющий предложения языка YAFOLL называется Yp. Работа с АС
происходит в виде диалога с Yp: ему передаётся на вход одно или несколько предложений, а он
возвращает пустую строку либо одно или несколько сообщений. Одно из важных сообщений - "No
value". Yp состоит из двух компонент: синтаксический анализатор и исполнитель. Синтаксический
анализатор передаёт на выход весь входной текст и в случае обнаружения ошибок вставляет в него
сообщения в виде xml-элементов, но главное конечно, он строит дерево разбора. Исполнитель
получает на вход дерево разбора группы предложений, выполняет их и оформляет протокол своей
работы как xml-документ.
Среди предложений Y!L есть команды:
-команда !0! обнуляет АС, которую ведёт Yp.
-команда !2! выдаёт текст на Y!L в котором задана АС содержащаяся в Yp.
В целом режим работы с АС таков: АС загружается из файла в Yp, обрабатывается и выгружается из
Yp командой !2!
Таким образом АС содержится в тексте - ​онтологии​.
Базовое определение 
В классических определениях АС [АС] с.46 и [СКпМЛ] т.I, с.25, составляющими алгебраической
системы являются: основы, отношения, операции (функции). Мы сразу перейдём к
многоосновности (см. [КоДра], с.71), ограничениям на мощность множеств и частичности функций.
И сразу уйдём от отношений. Кроме того для простоты будем называть основы ​сортами​.
Определение​КМАС-0
Конечная многоосновная алгебраическая система вида 0 (КМАС-0) есть конечная совокупность:
1. ​конечных​не пересекающихся именованных множеств - ​сортов​.
1.1. И возможно некоторого количества их именованных элементов - ​констант​.
2. ​функций (тоже именованных) ​из сорта или прямого произведения сортов в какой-то сорт. Эти
функции называются ​первичными​.
конец определения
Замечание. Обычно АС без отношений называют алгеброй.
Итак, функция мыслится частичной (из-функция) но может оказаться и полной, а иногда полнота
даже требуется.
Примеров неименованных функций много в λ-исчислении.
Имена 
Пусть в алфавите есть множество букв - Lttr, цифр - DIGIT и буква "_", которую будем именовать -
US.
Для именования КМАС и её составляющих будем использовать строки букв РВ-вида
Id​= {Lttr}({Lttr}|{DIGIT}|{US})*
т.е. буква за которой может следовать цепочка из букв, цифр и "_".
Например, предложения Y!L:
Declaration sample sort .
Declaration place sort .
Вводят два сорта: sample и place.
Числа и строки 
Числа задаются РВ-выражением
Number = {MI}?{DIGIT}+({DOT}{DIGIT}+)?
где MI обозначает "-", а DOT - ".", т.е. это десятичные рациональные числа, но знак "+"
подразумевается и не разрешён.
Например, 0, 10, -3.62.
Строки задаются РВ-выражением
String = {DQ}[^{DQ}]*{DQ}
где DQ обозначает двойную кавычку ("), т.е. это произвольная цепочка букв за исключением DQ,
обрамлённая DQ.
Например, "это строка".
Элементы сортов 
Для элементов сортов будем использовать строки букв РВ-вида
Ide = {US}{Lttr}({Lttr}|{DIGIT}|{US})*
т.е. начинающихся с "_", а далее следует Id. Ясно что два множества строк (Id и Ide) не
пересекаются.
Введём сорт
Declaration TV sort .
И зададим его элементы:
! _True TV !
! _False TV !
Синтаксис
Здесь и далее в БНФ-правилах e_m обозначает "!".
БНФ-правило языка Y!L
(fmca) Statement : e_m Ide Id e_m
приписывает основе Id элемент Ide.
Для полноты картины правило
(fmcd) Statement : e_m Ide e_m
удаляет элемент Ide из того сорта которому он принадлежит.
Семантика
Эти два вида предложений (fmca и fmcd) позволяют вести состав, наполнение сортов, т.е. добавлять
в сорт элементы и удалять элементы из сорта. Напомним, что по определению КМАС-0 п.1, сорта не
пересекаются.
Следующие предложения Y!L пополняют сорта place и sample
! _PLC1809 place !
! _SAM32994 sample !
! _SAM32995 sample !
! _SAM32996 sample !
Итоги­1. Пример на текущий момент  
Итак если передать Yp команду !0! - "всё забыть", а потом выполнить встречающиеся ранее в тексте
команды Y!L, то в АС будет три сорта следующего наполнения:
sample={_SAM32994 _SAM32995 _SAM32996}
place={_PLC1809}
TV={_True _False}
Если теперь сказать Yp: !2!, то получим на выход текст АС в виде предложений для создания с нуля:
!0!
! _True TV !
! _False TV !
! _PLC1809 place !
! _SAM32994 sample !
! _SAM32995 sample !
! _SAM32996 sample !
Сорта R и S 
В языке есть два встроенных сорта R и S.
Элементами сорта R являются числа вида Number.
Элементами сорта S являются строки букв вида String.
Замечание. Эти сорта являясь по объёму счётными, при осторожном использовании не выводят нас
за пределы КМАС.
Сигнатура функции 
Наличие нескольких сортов приводит к тому что теперь надо указывать не только количество
аргументов функции, но и сорт каждого аргумента и сорт значения функции. Это приводит к
понятию сигнатуры функции (см. [КоДра], с.53, где сигнатура функции называется "вид").
Пусть COLON обозначает букву ":".
Синтаксис
Сигнатура есть синтаксическая конструкция (sig_f), задаваемая тремя БНФ правилами:
(sig_eI) sig_e : Id
(#sig_arg) sig_arg : sig_e+
(sig_f) sig_f : sig_arg COLON sig_e
Правило sig_eI говорит что нетерминал sig_e должен быть Id. При этом "семантически"
подразумевается Id сорта!
Правило #sig_arg говорит что нетерминал sig_arg есть цепочка из одного или более sig_e.
Правило sig_f говорит что сигнатура есть сигнатура аргументов за которой следует двоеточие (буква
COLON) и сигнатура результата.
Например, предложение
Declaration gathering_place sample : place prime .
вводит первичную функцию gathering_place сигнатуры "sample : place", т.е. функция объявляется
унарной, с аргументом из сорта sample и значением сорта place.
Истинностные значения и предикаты 
Наличие истинностных значений даёт возможность выразить отношения классической АС через
функции специального вида - предикаты, функции область значений которых TV. См. также
"Отношения и предикаты" [ОиП] и [КоДра] с.71.
Например, объявим предикат
Declaration rhyolite sample : TV prime .
который на элементе сорта sample может принимать значение:
_True, что естественно трактовать как то что этот образец есть риолит;
_False, что естественно трактовать как то что этот образец не есть риолит.
Кроме того, т.к. rhyolite изначально частичная функция значения может и не быть вовсе.
Допустимо ли для предиката быть частичным зависит от предметной области. Так имея образец
горной породы и сведения о нём в АС мы можем в какой-то момент не знать риолит он или нет и
отсутствие значения может трактоваться как "не известно".
Пример
В результате проведения исследований может выясниться что конкретный образец представленный
в АС как _SAM30697 действительно риолит.
Надо задать значение предиката равным _True на _SAM30697, что пишется на Y!L так
! rhyolite ( _SAM30697 ):_True!
т.е. значению функции rhyolite на _SAM30697 присвоено _True.
Теперь если Yp спросить
?rhyolite ( _SAM30697 )?
он ответит _True.
Понятие терма 
Синтаксическая конструкция ​терм используется в первую очередь для получения значений от
применения функции к аргументам.
Например, терм NOT(_True) обычно имеет значение _False.
Мы будем использовать терм также для задания значения первичным функциям.
Например, предложения
! NOT ( _False ):_True!
! NOT ( _True ):_False!
задают значения унарной функции NOT на элементах сорта TV.
Синтаксис
Здесь и далее l_p обозначает "(", r_p - ")", EXISTS - ∃, FOR_ANY - ​∀​, COLON как и раньше - ":".
(trmi) term : Id
(trmie) term : Ide
(trmn) term : Number
(trms) term : String
(trmf) term : Id l_p TermList r_p
(trmp) term : l_p INFIX term r_p
(trmin)term : l_p term INFIX term r_p
(trme) term : l_p EXISTS Id COLON Id term r_p
(trma) term : l_p FOR_ANY Id COLON Id term r_p
(#trml) TermList : term+
Итак,
-trmi говорит что терм может быть Id, при этом подразумевается константа и значение терма -
значение константы.
-trmie говорит что терм может быть Ide, и значение его - он сам.
-trmn говорит что терм может быть Number, т.е. числом и значение его - он сам.
-trms говорит что терм может быть String, т.е. строка в кавычках и значение его - строка без
кавычек.
-trmf говорит что термом может быть Id (подразумевается - функции), применённый к списку
термов (TermList), подразумевается что значения термов дадут аргументы для функции Id.
Например, NOT ( _False ) - терм правила trmf.
-trmp, trmin позволяют использовать специальные буквы или ключевые слова (префиксы - trmp, и
инфиксы - trmin), которым должны быть сопоставлены унарные и бинарные функции. Префиксы и
инфиксы совокупно называются ​фиксы​.
-trme, trma говорят что кванторная конструкция так же есть терм. В ней, как обычно,
подразумевается что Id-1 - идентификатор связанной квантором переменной, Id-2 - сорт этой
переменной, по значениям которого она собственно и бегает. А значение терма: _True или _False.
-#trml говорит что TermList это непустой список термов.
INFIX может принимать следующие значения: ¬ ∧ ∨ → ≡ ≠ ≤ ≥ = neq leq geq < > + - * / not and or
impl eqv
Рассмотрим пример, терм
( ∀ x : sample ( ∃ y : place ( gathering_place ( x ) = y ) ) )
утверждает что для любого образца существует (задано) место сбора.
На конкретной АС, значение этого терма может быть истинно, ложно, а может привести к
сообщению "No value". Например если Yp спросить
?( ∀ x : sample ( ∃ y : place ( gathering_place ( x ) = y ) ) )?
No value
Вычисление значения терма выполняется в некоторых предложениях языка, которые проще
рассматривать как команды процессору Yp. В случае если значения терма нет, выполнение команды
останавливается и процессор выдаёт сообщение "No value".
Определения
Определение ​СИ1 ​свободный идентификатор в терме. Это идентификатор не приписанный
константе, функции или квантору.
Определение ​ЗТ1 ​замкнутый терм. Замкнутый терм удовлетворяет обязательным требованиям и в
нём нет свободных идентификаторов. Добавочное требование эквивалентно
(trmi-4) Если Id в терме не приписан константе или функции, то он приписан квантору.
Задание первичных функций  
Многие функции можно задавать графиками: совокупностью n-ок, таких что первые n-1 величин -
значения аргументов функции, а последняя величина - значение результата функции.
Так график функции NOT состоит из двух n-ок: <_True _False> <_False _True>.
С другой стороны можно задавать значения термам.
Например, пусть _SAM30697 есть элемент основы sample, тогда первичной функции rhyolite можно
задать значение так
! rhyolite ( _SAM30697 ):_True!
В общем случае мы имеем
Синтаксис
(fmta) Statement : e_m term COLON term e_m
(fmtd) Statement : e_m term COLON e_m
Предложение правила fmta назначает значение терма term-2 терму term-1 в том числе константе.
Если значение у term-1 уже есть то заменяется.
Предложение правила fmtd лишает term-2 значения, в том числе константу.
На строение термов есть большие ограничения ограничения. Начнём с определений.
term-1 называется КСт - терм Конечной Системы, term-2 - КСз - значение Конечной Системы.
КСт должен удовлетворять следующим дополнительным требованиям: быть trmf-термом без
кванторов и фиксов; идентификаторы в нём лишь константы и функции, причём и те и другие
первичны.
Из определения следует, что элементы сорта допустимы;-)
КСз​должен быть лишь строка, число, эо или Id первичной ф-и, константы.
Замечание. Возможность использования Id первичной ф-и, константы выводит нас за пределы
КМАС, т.к. значение уже не является элементом сорта.
Требования
(fmta-1) term-1 должен быть КСт.
(fmta-2) терм-2 должен быть КСз.
(fmta_proc-1) Согласованность типов. Тип значения терм-1 должен быть равен типу значения
терм-2.
(​fmtd-1​) term должен быть КСт.
(​fmtd-2​) term должен быть ​в КС, т.е. иметь какое-то значение. Желание снять не существующее
значение может быть ошибкой не понимания строения КС.
Задание КМАС
Чтобы задать КМАС достаточно термов высоты 1, т.е. вида применения функции к простым
аргументам, а не другим функциям.
Например, предложения с КСт высоты 1
! OR ( False False ):False!
! OR ( False True ):True!
! OR ( True False ):True!
! OR ( True True ):True!
задают значения первичной функции OR.
А предложения
! NOT ( False ):True!
! NOT ( True ):False!
задают первичную функцию NOT.
Предложение
Declaration authorial_number sample : S prime .
задаёт функцию, которая присваивает образцу авторский номер.
Например,
! authorial_number ( _SAM32994 ):"A"!
А предложения
Declaration latitude place : R prime .
Declaration longitude place : R prime .
дают возможность задавать широту и долготу месту:
! latitude ( _PLC1555 ):-7.93!
! longitude ( PLC1555 ):-14.37!
Конечная система (КС) 
Совокупность пар КСт, КСз где все КСт различны называется Конечной Системой (КС).
За пределами КМАС
На высоту КСт ограничений нет и можно написать, например
!NOT(NOT(True)):False!
При этом надо лишь иметь в виду, что Yp при поиске в КС значения терма идёт по терму снизу
вверх: он попытается найти значение для NOT(True) и только если его нет будет искать значение
для NOT(NOT(True)).
Нужна ли такая возможность в практике онтологистики - вопрос.
Тождество 
С каждым сортом естественно связать бинарный предикат тождества, истинный тогда и только
тогда когда значения аргументов есть один и тот же элемент сорта.
Для этого надо ввести функцию и приписать ей инфикс "=".
Например, пусть sample и place - два сорта. Следующие предложения YAFOLL вводят две первичных
функции EQU_sample, EQU_place и объявляют их вычислимыми при помощи алгоритма
fm_strcmp, являющегося частью процессора Yp.
Каждой из этих функций приписывается один и тот же инфикс "=".
Declaration EQU_sample sample sample : TV prime fm_strcmp .
Add infix "=" to EQU_sample .
Declaration place sort .
Declaration EQU_place place place : TV prime fm_strcmp .
Add infix "=" to EQU_place .
Запрос значения терма 
Задав значения первичных функций и, если надо констант, т.е. КС, мы можем вычислять на ней
значение тех или иных термов. Что иногда можно рассматривать как выяснение её свойств, а
иногда как получение интересующей величины.
Заметим что формулы исчисления предикатов первого порядка, в том числе кванторные, есть
термы.
Пусть q_m обозначает "?".
Синтаксис
(st-11) Statement : q_m term q_m
Такое предложение запрашивает у Yp значение терма. И т.к. мы имеем дело с частичными
функциями ответом процессора Yp может быть не только величина но и сообщение: No value!
Требования
(st-11-1) term правила st-11 должен быть замкнутый, т.е. удовлетворять trmi-4 в дополнение к общим
требованиям.
По аналогии с АС запрос к КС выполняет две фундаментальные функции:
-проверка соблюдения аксиом предметной области,
-выяснение свойств предметной области.
Если все аксиомы соблюдены АС считается моделью системы аксиом и самой предметной области.
Пример-1.
?(∀x:TV ((x∨x)=x))?
ответ: _True.
Построение онтологии предметной области (БД Проба) 
Рассмотрим формализацию небольшой части знаний петрологии: накопление сведений об
образцах горных пород: место сбора, горная порода, концентрация химических веществ, статья в
которой опубликованы сведения и т.д.
Речь идёт обо всех образцах накопленных во всех лабораториях мира.
Как образец берутся сведения уже накопленные в базе данных Проба [ОБДПр].
Это "мир" образцов хранимых в лабораториях, мест на Земле где они были собраны и публикаций в
которых были напечатаны сведения о свойствах образцов.
Сорта 
При формализации будем придерживаться "плоской" идеи о сортах: если сущие некоторого вида
представляют интерес, то этот вид можно считать сортом. Мы сразу получим три предметных сорта:
-sample - образец горной породы,
-place - место сбора образца,
-publication - публикация.
Наполнение сортов и базовые атрибуты 
Идентификация образцов горной породы обработанных и хранимых в той или иной лаборатории
может быть разнообразной. В рамках КМАС идентификатор вида Ide сопоставляемый образцу
может быть любым лишь бы выполнялись три требования:
(GUI) global unique identification - идентификаторы разных образцов должны быть разными,
(I2SW) id to sample works - по идентификатору и КМАС можно найти образец в лаборатории,
(S2IW) sample to id works - по образцу в лаборатории можно получить его идентификатор в КМАС.
Чтобы выполнить GUI был взят уникальный номер записи об образце из БД Проба и дооформлен
до Ide. Так, запись номер 32994 в БД, получает Ide _SAM32994.
Чтобы выполнить I2SW в КМАС вводятся функции "отсылки в реальность" - ​базовые атрибуты
элемента каждого предметного сорта, по значениям которых образец можно найти в реальности.
Например, введём функцию
Declaration authorial_number sample : S prime .
Функция authorial_number поддерживает авторский номер образца, уникальный для лаборатории,
хранящей образец.
Эта функция должна быть полной, т.е. мы имеем аксиому:
Axiom AN_full ( ∀ x : sample ( ∃ y : S ( authorial_number ( x ) = y ) ) ) .
Подразумевается что есть ​материальный алгоритм​: как зная авторский номер образца и другие его
базовые атрибуты добраться до него в лаборатории.
Чтобы выполнить S2IW, т.е. находясь в лаборатории один-на-один с образцом выяснить его Ide в
КМАС, предполагается в некотором смысле "обратный" ​материальный алгоритм​: где-то в
лаборатории находятся значения базовых атрибутов образца, которые однозначно характеризуют
его в КМАС. Эта однозначность поддерживается аксиомой уникальности совокупности базовых
атрибутов.
Для простоты предположим, что глобально (по всем лабораториям) уникален уже
authorial_number. Тогда аксиома уникальности будет выглядеть так
Axiom AN_uni (∀x:sample (∀y:sample (authorial_number(x)=authorial_number(y)) → (x=y))).
Аналогично для сорта publication и сорта place имеется набор базовых атрибутов, материальных
алгоритмов и аксиом полноты и уникальности их базовых атрибутов.
Кроме того для географических имён (например, Iceland, Atlantic Ocean) используется следующий
приём формализации: по ним формируется Ide (_Iceland, _Atlantic_Ocean) и приписывается сорту
place.
! _Iceland place !
! _Atlantic_Ocean place !
Дополнительные атрибуты и связи 
Атрибуты не являющиеся базовыми могут быть разнообразны и массово встречаются в базах
данных. Наличие в YAFOLL чисел и строк позволяет "прописать" в КМАС любой атрибут БД.
Отметим также что функциональная связь между таблицами БД является в КМАС просто частичной
(или полной) функцией. Это не значит что при построении КМАС по БД следует каждой таблице
сопоставить сорт, но обычно некоторые таблицы будут сортами.
Функция gathering_place сопоставляющая образцу место сбора была уже упомянута выше.
У неё есть своя аксиома полноты
Axiom GPfull ( ∀ x : sample ( ∃ y : place ( gathering_place ( x ) = y ) ) ) .
И свои предложения назначения значений
! gathering_place ( _SAM30681 ):_PLC1555!
! gathering_place ( _SAM30682 ):_PLC1555!
! gathering_place ( _SAM30683 ):_PLC1555!
Пример строкового атрибута
Declaration title publication : S prime .
И назначение ему значения
! title ( PUB5633 ):"A CONTRIBUTION TO THE GEOLOGY OF THE KERLINGARFJELL"!
Предикаты горных пород и химических веществ 
Термин соответствующий определённой горной породе (например, rhyolite) в КМАС естественно
представить предикатом
Declaration rhyolite sample : TV prime .
который на образце принимает одно из истинностных значений: _True, _False, а может и не иметь
значения, хотя это запрещено аксиомой
Axiom full_rhyolite ( ∀ x : sample ( ∃ y : TV ( rhyolite ( x ) = y ) ) ) .
В данной КМАС этот предикат первичен и ему можно и нужно назначать значения приписывая ему
образцы, например, так
! rhyolite ( _SAM30697 ):_True!
! rhyolite ( _SAM32994 ):_True!
Как пример предиката химического вещества приведём
Declaration SIO2 sample : TV prime .
Он будет истинен на образце только если тот кремнезём.
Заключение 
Описана часть возможностей языка YAFOLL и его процессора Yp, позволяющих вести КМАС и
задавать вопросы "первого порядка" о её свойствах.
Конечная система​. Конечность системы моделирующей часть реальности является важнейшим
элементом подхода. В большинстве случаев именно как конечная система элементов часть
реальности и моделируется. При этом конечно может оказаться что элементов очень много (для
прямых вычислений) или что часть элементов мыслится непрерывными, т.е. "бесконечными".
Сравнение с РБД​. Следует подчеркнуть что рассматриваемая как модель данных (МД) КМАС не
слабее реляционной МД. В том числе строение таблиц РБД может быть один-к-одному
воспроизведено в КМАС. Но это не означает что при построении онтологии следует так поступать.
Несколько языков​. Фактически в YAFOLL объединено по крайней мере 3 языка:
-ведение КМАС,
-запрос к КМАС,
-язык ответов.
Последний довольно зачаточен, но будет развиваться.
Прямые вычисления​. Идея прямых вычислений является фундаментальной и предшествующей
идее логического вывода. Подавляющее большинство инженерных расчётов есть в общем случае
алгоритмические прямые вычисления. Одна из основных задача проекта в целом - выяснить какие
виды прямых вычислений нужны при моделировании предметной области. При этом естественно
было начать с языка исчисления предикатов первого порядка (FOL). В область прямых вычислений
попадают как формализованные законы предметной области, так и свойства сущих предметной
области. Первые накапливаются в виде аксиом, а вторые - формул запросов.
В науке, технике, законодательстве если нечто сущее мыслится как система, то оно может быть
смоделировано конечной системой.
Какими свойствами должна обладать такая система и языки работы с ней и есть предмет сообщения
- этого и последующих.
Литература 
[ASWp] "Алгебраическая система", статья Википедии, ​ссылка
[АС] А.И. Мальцев «Алгебраические системы», — М., Наука, 1970 г.
[СКпМЛ] Справочная книга по математической логике, в четырёх частях, (ред. Дж. Барвайс), — М.,
Наука, 1982-1983 г.
[ОиП] "Отношение (теория множеств)", статья Википедии, ​ссылка
[КоДра] А.Н. Колмогоров, А.Г. Драгалин, Математическая логика. Изд. 3-е, стереотипное. — М.:
КомКнига, 2006. (Классический университетский учебник.)
[ОБДПр] А.В. Шкотин, В.М. Ряховский, БД Проба. Онтология реляционной базы данных.
Промежуточный отчёт. 2008-2015гг. ​ссылка

More Related Content

What's hot (11)

Об одном методе автоматической транскрипции
Об одном методе автоматической транскрипцииОб одном методе автоматической транскрипции
Об одном методе автоматической транскрипции
 
лек8
лек8лек8
лек8
 
лек7
лек7лек7
лек7
 
Regexp
RegexpRegexp
Regexp
 
алгебра логики
алгебра логикиалгебра логики
алгебра логики
 
20100923 proof complexity_hirsch_lecture02
20100923 proof complexity_hirsch_lecture0220100923 proof complexity_hirsch_lecture02
20100923 proof complexity_hirsch_lecture02
 
Slides2
Slides2Slides2
Slides2
 
Zakony algebry logiki
Zakony algebry logikiZakony algebry logiki
Zakony algebry logiki
 
формальные языки и грамматики
формальные языки и грамматикиформальные языки и грамматики
формальные языки и грамматики
 
04 классическая логика предикатов
04 классическая логика предикатов04 классическая логика предикатов
04 классическая логика предикатов
 
Module 5 1
Module 5 1Module 5 1
Module 5 1
 

Similar to язык работы с КМАС (Yafoll сообщение 1)

Уровни проектирования информационной системы (обзор материалов портала wiki....
Уровни проектирования информационной системы  (обзор материалов портала wiki....Уровни проектирования информационной системы  (обзор материалов портала wiki....
Уровни проектирования информационной системы (обзор материалов портала wiki....Media Gorod
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.Unguryan Vitaliy
 
Евгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в HaskellЕвгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в HaskellFProg
 
введение в паскаль
введение в паскальвведение в паскаль
введение в паскальisva69
 
лекции 3 4 тема 1
лекции 3 4 тема 1лекции 3 4 тема 1
лекции 3 4 тема 1Noobie312
 
Типы данных
Типы данныхТипы данных
Типы данныхMonsterXX
 
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеLidia Pivovarova
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямSergey Staroletov
 
АОТ - Предсинтаксис
АОТ - ПредсинтаксисАОТ - Предсинтаксис
АОТ - Предсинтаксисeibolshakova
 
C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.Igor Shkulipa
 
Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. ПеречисленияюUnguryan Vitaliy
 
Алгоритмизация
АлгоритмизацияАлгоритмизация
АлгоритмизацияLebedeva_Zoya
 
презентация лекции №10
презентация лекции №10презентация лекции №10
презентация лекции №10student_kai
 
элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данныхЕлена Ключева
 

Similar to язык работы с КМАС (Yafoll сообщение 1) (20)

Scala lecture #4
Scala lecture #4Scala lecture #4
Scala lecture #4
 
алгоритм
алгоритмалгоритм
алгоритм
 
Уровни проектирования информационной системы (обзор материалов портала wiki....
Уровни проектирования информационной системы  (обзор материалов портала wiki....Уровни проектирования информационной системы  (обзор материалов портала wiki....
Уровни проектирования информационной системы (обзор материалов портала wiki....
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.
 
Евгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в HaskellЕвгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в Haskell
 
введение в паскаль
введение в паскальвведение в паскаль
введение в паскаль
 
лекции 3 4 тема 1
лекции 3 4 тема 1лекции 3 4 тема 1
лекции 3 4 тема 1
 
лек7
лек7лек7
лек7
 
Типы данных
Типы данныхТипы данных
Типы данных
 
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделирование
 
Автоматическое извлечение синтаксических контекстов из текстовой коллекции
Автоматическое извлечение синтаксических контекстов из текстовой коллекцииАвтоматическое извлечение синтаксических контекстов из текстовой коллекции
Автоматическое извлечение синтаксических контекстов из текстовой коллекции
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциям
 
АОТ - Предсинтаксис
АОТ - ПредсинтаксисАОТ - Предсинтаксис
АОТ - Предсинтаксис
 
fp intro
fp introfp intro
fp intro
 
C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.
 
Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. Перечисленияю
 
Алгоритмизация
АлгоритмизацияАлгоритмизация
Алгоритмизация
 
презентация лекции №10
презентация лекции №10презентация лекции №10
презентация лекции №10
 
Rule b platf
Rule b platfRule b platf
Rule b platf
 
элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данных
 

More from Alex Shkotin

формальное определение вида горной породы
формальное определение вида горной породыформальное определение вида горной породы
формальное определение вида горной породыAlex Shkotin
 
Finite Systems Handling Language (YAFOLL message 1)
Finite Systems Handling Language (YAFOLL message 1)Finite Systems Handling Language (YAFOLL message 1)
Finite Systems Handling Language (YAFOLL message 1)Alex Shkotin
 
Построение системы онтологий для предметной области “Петрология” .V2
Построение системы онтологий для предметной области “Петрология”.V2Построение системы онтологий для предметной области “Петрология”.V2
Построение системы онтологий для предметной области “Петрология” .V2Alex Shkotin
 
Graph representation of context-free grammar
Graph representation of context-free grammarGraph representation of context-free grammar
Graph representation of context-free grammarAlex Shkotin
 
Исследование графа категорий Wikipedia(en)
Исследование графа категорий Wikipedia(en)Исследование графа категорий Wikipedia(en)
Исследование графа категорий Wikipedia(en)Alex Shkotin
 
Построение системы онтологий для предметной области “Петрология”
Построение системы онтологий для предметной области “Петрология”Построение системы онтологий для предметной области “Петрология”
Построение системы онтологий для предметной области “Петрология”Alex Shkotin
 
Towards OWL-based Knowledge Representation in Petrology
Towards OWL-based Knowledge Representation in PetrologyTowards OWL-based Knowledge Representation in Petrology
Towards OWL-based Knowledge Representation in PetrologyAlex Shkotin
 

More from Alex Shkotin (8)

формальное определение вида горной породы
формальное определение вида горной породыформальное определение вида горной породы
формальное определение вида горной породы
 
Finite Systems Handling Language (YAFOLL message 1)
Finite Systems Handling Language (YAFOLL message 1)Finite Systems Handling Language (YAFOLL message 1)
Finite Systems Handling Language (YAFOLL message 1)
 
Построение системы онтологий для предметной области “Петрология” .V2
Построение системы онтологий для предметной области “Петрология”.V2Построение системы онтологий для предметной области “Петрология”.V2
Построение системы онтологий для предметной области “Петрология” .V2
 
Program structure
Program structureProgram structure
Program structure
 
Graph representation of context-free grammar
Graph representation of context-free grammarGraph representation of context-free grammar
Graph representation of context-free grammar
 
Исследование графа категорий Wikipedia(en)
Исследование графа категорий Wikipedia(en)Исследование графа категорий Wikipedia(en)
Исследование графа категорий Wikipedia(en)
 
Построение системы онтологий для предметной области “Петрология”
Построение системы онтологий для предметной области “Петрология”Построение системы онтологий для предметной области “Петрология”
Построение системы онтологий для предметной области “Петрология”
 
Towards OWL-based Knowledge Representation in Petrology
Towards OWL-based Knowledge Representation in PetrologyTowards OWL-based Knowledge Representation in Petrology
Towards OWL-based Knowledge Representation in Petrology
 

язык работы с КМАС (Yafoll сообщение 1)

  • 1. Язык работы с Конечными Системами (YAFOLL сообщение 1) А.В. Шкотин, ashkotin(at)acm.org https://sites.google.com/site/alex0shkotin/ осень 2015 Аннотация Вводится понятие конечной многоосновной алгебраической системы (КМАС/FMAS), а также язык для работы с такими системами - YAFOLL (Yet Another First Order Logic Language). Показывается применимость таких систем для построения математической модели части реальности, т.е. математической конструкции к которой можно обращаться с вопросами о свойствах объектов и процессов предметной области. Введение  Базовое определение  Имена  Числа и строки  Элементы сортов  Итоги­1. Пример на текущий момент  Сорта R и S  Сигнатура функции  Истинностные значения и предикаты  Понятие терма  Задание первичных функций  Конечная система (КС)  Тождество  Запрос значения терма  Построение онтологии предметной области (БД Проба)  Сорта  Наполнение сортов и базовые атрибуты  Дополнительные атрибуты и связи  Предикаты горных пород и химических веществ  Заключение  Литература  Введение  Алгебраическая система (АС) является классической математической конструкцией для которой известно как задавать её свойства и как проверять обладает ли она теми или иными свойствами[ASWp]. Для создания и ведения АС некоторого вида описывается фрагмент языка YAFOLL (сокращённо - Y!L). Процессор, выполняющий предложения языка YAFOLL называется Yp. Работа с АС происходит в виде диалога с Yp: ему передаётся на вход одно или несколько предложений, а он возвращает пустую строку либо одно или несколько сообщений. Одно из важных сообщений - "No value". Yp состоит из двух компонент: синтаксический анализатор и исполнитель. Синтаксический анализатор передаёт на выход весь входной текст и в случае обнаружения ошибок вставляет в него сообщения в виде xml-элементов, но главное конечно, он строит дерево разбора. Исполнитель
  • 2. получает на вход дерево разбора группы предложений, выполняет их и оформляет протокол своей работы как xml-документ. Среди предложений Y!L есть команды: -команда !0! обнуляет АС, которую ведёт Yp. -команда !2! выдаёт текст на Y!L в котором задана АС содержащаяся в Yp. В целом режим работы с АС таков: АС загружается из файла в Yp, обрабатывается и выгружается из Yp командой !2! Таким образом АС содержится в тексте - ​онтологии​. Базовое определение  В классических определениях АС [АС] с.46 и [СКпМЛ] т.I, с.25, составляющими алгебраической системы являются: основы, отношения, операции (функции). Мы сразу перейдём к многоосновности (см. [КоДра], с.71), ограничениям на мощность множеств и частичности функций. И сразу уйдём от отношений. Кроме того для простоты будем называть основы ​сортами​. Определение​КМАС-0 Конечная многоосновная алгебраическая система вида 0 (КМАС-0) есть конечная совокупность: 1. ​конечных​не пересекающихся именованных множеств - ​сортов​. 1.1. И возможно некоторого количества их именованных элементов - ​констант​. 2. ​функций (тоже именованных) ​из сорта или прямого произведения сортов в какой-то сорт. Эти функции называются ​первичными​. конец определения Замечание. Обычно АС без отношений называют алгеброй. Итак, функция мыслится частичной (из-функция) но может оказаться и полной, а иногда полнота даже требуется. Примеров неименованных функций много в λ-исчислении. Имена  Пусть в алфавите есть множество букв - Lttr, цифр - DIGIT и буква "_", которую будем именовать - US. Для именования КМАС и её составляющих будем использовать строки букв РВ-вида Id​= {Lttr}({Lttr}|{DIGIT}|{US})* т.е. буква за которой может следовать цепочка из букв, цифр и "_". Например, предложения Y!L: Declaration sample sort . Declaration place sort . Вводят два сорта: sample и place. Числа и строки  Числа задаются РВ-выражением Number = {MI}?{DIGIT}+({DOT}{DIGIT}+)? где MI обозначает "-", а DOT - ".", т.е. это десятичные рациональные числа, но знак "+" подразумевается и не разрешён. Например, 0, 10, -3.62. Строки задаются РВ-выражением String = {DQ}[^{DQ}]*{DQ} где DQ обозначает двойную кавычку ("), т.е. это произвольная цепочка букв за исключением DQ, обрамлённая DQ.
  • 3. Например, "это строка". Элементы сортов  Для элементов сортов будем использовать строки букв РВ-вида Ide = {US}{Lttr}({Lttr}|{DIGIT}|{US})* т.е. начинающихся с "_", а далее следует Id. Ясно что два множества строк (Id и Ide) не пересекаются. Введём сорт Declaration TV sort . И зададим его элементы: ! _True TV ! ! _False TV ! Синтаксис Здесь и далее в БНФ-правилах e_m обозначает "!". БНФ-правило языка Y!L (fmca) Statement : e_m Ide Id e_m приписывает основе Id элемент Ide. Для полноты картины правило (fmcd) Statement : e_m Ide e_m удаляет элемент Ide из того сорта которому он принадлежит. Семантика Эти два вида предложений (fmca и fmcd) позволяют вести состав, наполнение сортов, т.е. добавлять в сорт элементы и удалять элементы из сорта. Напомним, что по определению КМАС-0 п.1, сорта не пересекаются. Следующие предложения Y!L пополняют сорта place и sample ! _PLC1809 place ! ! _SAM32994 sample ! ! _SAM32995 sample ! ! _SAM32996 sample ! Итоги­1. Пример на текущий момент   Итак если передать Yp команду !0! - "всё забыть", а потом выполнить встречающиеся ранее в тексте команды Y!L, то в АС будет три сорта следующего наполнения: sample={_SAM32994 _SAM32995 _SAM32996} place={_PLC1809} TV={_True _False} Если теперь сказать Yp: !2!, то получим на выход текст АС в виде предложений для создания с нуля: !0! ! _True TV ! ! _False TV ! ! _PLC1809 place ! ! _SAM32994 sample ! ! _SAM32995 sample ! ! _SAM32996 sample ! Сорта R и S  В языке есть два встроенных сорта R и S.
  • 4. Элементами сорта R являются числа вида Number. Элементами сорта S являются строки букв вида String. Замечание. Эти сорта являясь по объёму счётными, при осторожном использовании не выводят нас за пределы КМАС. Сигнатура функции  Наличие нескольких сортов приводит к тому что теперь надо указывать не только количество аргументов функции, но и сорт каждого аргумента и сорт значения функции. Это приводит к понятию сигнатуры функции (см. [КоДра], с.53, где сигнатура функции называется "вид"). Пусть COLON обозначает букву ":". Синтаксис Сигнатура есть синтаксическая конструкция (sig_f), задаваемая тремя БНФ правилами: (sig_eI) sig_e : Id (#sig_arg) sig_arg : sig_e+ (sig_f) sig_f : sig_arg COLON sig_e Правило sig_eI говорит что нетерминал sig_e должен быть Id. При этом "семантически" подразумевается Id сорта! Правило #sig_arg говорит что нетерминал sig_arg есть цепочка из одного или более sig_e. Правило sig_f говорит что сигнатура есть сигнатура аргументов за которой следует двоеточие (буква COLON) и сигнатура результата. Например, предложение Declaration gathering_place sample : place prime . вводит первичную функцию gathering_place сигнатуры "sample : place", т.е. функция объявляется унарной, с аргументом из сорта sample и значением сорта place. Истинностные значения и предикаты  Наличие истинностных значений даёт возможность выразить отношения классической АС через функции специального вида - предикаты, функции область значений которых TV. См. также "Отношения и предикаты" [ОиП] и [КоДра] с.71. Например, объявим предикат Declaration rhyolite sample : TV prime . который на элементе сорта sample может принимать значение: _True, что естественно трактовать как то что этот образец есть риолит; _False, что естественно трактовать как то что этот образец не есть риолит. Кроме того, т.к. rhyolite изначально частичная функция значения может и не быть вовсе. Допустимо ли для предиката быть частичным зависит от предметной области. Так имея образец горной породы и сведения о нём в АС мы можем в какой-то момент не знать риолит он или нет и отсутствие значения может трактоваться как "не известно". Пример В результате проведения исследований может выясниться что конкретный образец представленный в АС как _SAM30697 действительно риолит. Надо задать значение предиката равным _True на _SAM30697, что пишется на Y!L так ! rhyolite ( _SAM30697 ):_True! т.е. значению функции rhyolite на _SAM30697 присвоено _True. Теперь если Yp спросить ?rhyolite ( _SAM30697 )? он ответит _True.
  • 5. Понятие терма  Синтаксическая конструкция ​терм используется в первую очередь для получения значений от применения функции к аргументам. Например, терм NOT(_True) обычно имеет значение _False. Мы будем использовать терм также для задания значения первичным функциям. Например, предложения ! NOT ( _False ):_True! ! NOT ( _True ):_False! задают значения унарной функции NOT на элементах сорта TV. Синтаксис Здесь и далее l_p обозначает "(", r_p - ")", EXISTS - ∃, FOR_ANY - ​∀​, COLON как и раньше - ":". (trmi) term : Id (trmie) term : Ide (trmn) term : Number (trms) term : String (trmf) term : Id l_p TermList r_p (trmp) term : l_p INFIX term r_p (trmin)term : l_p term INFIX term r_p (trme) term : l_p EXISTS Id COLON Id term r_p (trma) term : l_p FOR_ANY Id COLON Id term r_p (#trml) TermList : term+ Итак, -trmi говорит что терм может быть Id, при этом подразумевается константа и значение терма - значение константы. -trmie говорит что терм может быть Ide, и значение его - он сам. -trmn говорит что терм может быть Number, т.е. числом и значение его - он сам. -trms говорит что терм может быть String, т.е. строка в кавычках и значение его - строка без кавычек. -trmf говорит что термом может быть Id (подразумевается - функции), применённый к списку термов (TermList), подразумевается что значения термов дадут аргументы для функции Id. Например, NOT ( _False ) - терм правила trmf. -trmp, trmin позволяют использовать специальные буквы или ключевые слова (префиксы - trmp, и инфиксы - trmin), которым должны быть сопоставлены унарные и бинарные функции. Префиксы и инфиксы совокупно называются ​фиксы​. -trme, trma говорят что кванторная конструкция так же есть терм. В ней, как обычно, подразумевается что Id-1 - идентификатор связанной квантором переменной, Id-2 - сорт этой переменной, по значениям которого она собственно и бегает. А значение терма: _True или _False. -#trml говорит что TermList это непустой список термов. INFIX может принимать следующие значения: ¬ ∧ ∨ → ≡ ≠ ≤ ≥ = neq leq geq < > + - * / not and or impl eqv Рассмотрим пример, терм ( ∀ x : sample ( ∃ y : place ( gathering_place ( x ) = y ) ) ) утверждает что для любого образца существует (задано) место сбора. На конкретной АС, значение этого терма может быть истинно, ложно, а может привести к сообщению "No value". Например если Yp спросить ?( ∀ x : sample ( ∃ y : place ( gathering_place ( x ) = y ) ) )? No value Вычисление значения терма выполняется в некоторых предложениях языка, которые проще
  • 6. рассматривать как команды процессору Yp. В случае если значения терма нет, выполнение команды останавливается и процессор выдаёт сообщение "No value". Определения Определение ​СИ1 ​свободный идентификатор в терме. Это идентификатор не приписанный константе, функции или квантору. Определение ​ЗТ1 ​замкнутый терм. Замкнутый терм удовлетворяет обязательным требованиям и в нём нет свободных идентификаторов. Добавочное требование эквивалентно (trmi-4) Если Id в терме не приписан константе или функции, то он приписан квантору. Задание первичных функций   Многие функции можно задавать графиками: совокупностью n-ок, таких что первые n-1 величин - значения аргументов функции, а последняя величина - значение результата функции. Так график функции NOT состоит из двух n-ок: <_True _False> <_False _True>. С другой стороны можно задавать значения термам. Например, пусть _SAM30697 есть элемент основы sample, тогда первичной функции rhyolite можно задать значение так ! rhyolite ( _SAM30697 ):_True! В общем случае мы имеем Синтаксис (fmta) Statement : e_m term COLON term e_m (fmtd) Statement : e_m term COLON e_m Предложение правила fmta назначает значение терма term-2 терму term-1 в том числе константе. Если значение у term-1 уже есть то заменяется. Предложение правила fmtd лишает term-2 значения, в том числе константу. На строение термов есть большие ограничения ограничения. Начнём с определений. term-1 называется КСт - терм Конечной Системы, term-2 - КСз - значение Конечной Системы. КСт должен удовлетворять следующим дополнительным требованиям: быть trmf-термом без кванторов и фиксов; идентификаторы в нём лишь константы и функции, причём и те и другие первичны. Из определения следует, что элементы сорта допустимы;-) КСз​должен быть лишь строка, число, эо или Id первичной ф-и, константы. Замечание. Возможность использования Id первичной ф-и, константы выводит нас за пределы КМАС, т.к. значение уже не является элементом сорта. Требования (fmta-1) term-1 должен быть КСт. (fmta-2) терм-2 должен быть КСз. (fmta_proc-1) Согласованность типов. Тип значения терм-1 должен быть равен типу значения терм-2. (​fmtd-1​) term должен быть КСт. (​fmtd-2​) term должен быть ​в КС, т.е. иметь какое-то значение. Желание снять не существующее значение может быть ошибкой не понимания строения КС. Задание КМАС Чтобы задать КМАС достаточно термов высоты 1, т.е. вида применения функции к простым аргументам, а не другим функциям. Например, предложения с КСт высоты 1 ! OR ( False False ):False! ! OR ( False True ):True! ! OR ( True False ):True!
  • 7. ! OR ( True True ):True! задают значения первичной функции OR. А предложения ! NOT ( False ):True! ! NOT ( True ):False! задают первичную функцию NOT. Предложение Declaration authorial_number sample : S prime . задаёт функцию, которая присваивает образцу авторский номер. Например, ! authorial_number ( _SAM32994 ):"A"! А предложения Declaration latitude place : R prime . Declaration longitude place : R prime . дают возможность задавать широту и долготу месту: ! latitude ( _PLC1555 ):-7.93! ! longitude ( PLC1555 ):-14.37! Конечная система (КС)  Совокупность пар КСт, КСз где все КСт различны называется Конечной Системой (КС). За пределами КМАС На высоту КСт ограничений нет и можно написать, например !NOT(NOT(True)):False! При этом надо лишь иметь в виду, что Yp при поиске в КС значения терма идёт по терму снизу вверх: он попытается найти значение для NOT(True) и только если его нет будет искать значение для NOT(NOT(True)). Нужна ли такая возможность в практике онтологистики - вопрос. Тождество  С каждым сортом естественно связать бинарный предикат тождества, истинный тогда и только тогда когда значения аргументов есть один и тот же элемент сорта. Для этого надо ввести функцию и приписать ей инфикс "=". Например, пусть sample и place - два сорта. Следующие предложения YAFOLL вводят две первичных функции EQU_sample, EQU_place и объявляют их вычислимыми при помощи алгоритма fm_strcmp, являющегося частью процессора Yp. Каждой из этих функций приписывается один и тот же инфикс "=". Declaration EQU_sample sample sample : TV prime fm_strcmp . Add infix "=" to EQU_sample . Declaration place sort . Declaration EQU_place place place : TV prime fm_strcmp . Add infix "=" to EQU_place . Запрос значения терма  Задав значения первичных функций и, если надо констант, т.е. КС, мы можем вычислять на ней значение тех или иных термов. Что иногда можно рассматривать как выяснение её свойств, а иногда как получение интересующей величины. Заметим что формулы исчисления предикатов первого порядка, в том числе кванторные, есть
  • 8. термы. Пусть q_m обозначает "?". Синтаксис (st-11) Statement : q_m term q_m Такое предложение запрашивает у Yp значение терма. И т.к. мы имеем дело с частичными функциями ответом процессора Yp может быть не только величина но и сообщение: No value! Требования (st-11-1) term правила st-11 должен быть замкнутый, т.е. удовлетворять trmi-4 в дополнение к общим требованиям. По аналогии с АС запрос к КС выполняет две фундаментальные функции: -проверка соблюдения аксиом предметной области, -выяснение свойств предметной области. Если все аксиомы соблюдены АС считается моделью системы аксиом и самой предметной области. Пример-1. ?(∀x:TV ((x∨x)=x))? ответ: _True. Построение онтологии предметной области (БД Проба)  Рассмотрим формализацию небольшой части знаний петрологии: накопление сведений об образцах горных пород: место сбора, горная порода, концентрация химических веществ, статья в которой опубликованы сведения и т.д. Речь идёт обо всех образцах накопленных во всех лабораториях мира. Как образец берутся сведения уже накопленные в базе данных Проба [ОБДПр]. Это "мир" образцов хранимых в лабораториях, мест на Земле где они были собраны и публикаций в которых были напечатаны сведения о свойствах образцов. Сорта  При формализации будем придерживаться "плоской" идеи о сортах: если сущие некоторого вида представляют интерес, то этот вид можно считать сортом. Мы сразу получим три предметных сорта: -sample - образец горной породы, -place - место сбора образца, -publication - публикация. Наполнение сортов и базовые атрибуты  Идентификация образцов горной породы обработанных и хранимых в той или иной лаборатории может быть разнообразной. В рамках КМАС идентификатор вида Ide сопоставляемый образцу может быть любым лишь бы выполнялись три требования: (GUI) global unique identification - идентификаторы разных образцов должны быть разными, (I2SW) id to sample works - по идентификатору и КМАС можно найти образец в лаборатории, (S2IW) sample to id works - по образцу в лаборатории можно получить его идентификатор в КМАС. Чтобы выполнить GUI был взят уникальный номер записи об образце из БД Проба и дооформлен до Ide. Так, запись номер 32994 в БД, получает Ide _SAM32994. Чтобы выполнить I2SW в КМАС вводятся функции "отсылки в реальность" - ​базовые атрибуты элемента каждого предметного сорта, по значениям которых образец можно найти в реальности. Например, введём функцию
  • 9. Declaration authorial_number sample : S prime . Функция authorial_number поддерживает авторский номер образца, уникальный для лаборатории, хранящей образец. Эта функция должна быть полной, т.е. мы имеем аксиому: Axiom AN_full ( ∀ x : sample ( ∃ y : S ( authorial_number ( x ) = y ) ) ) . Подразумевается что есть ​материальный алгоритм​: как зная авторский номер образца и другие его базовые атрибуты добраться до него в лаборатории. Чтобы выполнить S2IW, т.е. находясь в лаборатории один-на-один с образцом выяснить его Ide в КМАС, предполагается в некотором смысле "обратный" ​материальный алгоритм​: где-то в лаборатории находятся значения базовых атрибутов образца, которые однозначно характеризуют его в КМАС. Эта однозначность поддерживается аксиомой уникальности совокупности базовых атрибутов. Для простоты предположим, что глобально (по всем лабораториям) уникален уже authorial_number. Тогда аксиома уникальности будет выглядеть так Axiom AN_uni (∀x:sample (∀y:sample (authorial_number(x)=authorial_number(y)) → (x=y))). Аналогично для сорта publication и сорта place имеется набор базовых атрибутов, материальных алгоритмов и аксиом полноты и уникальности их базовых атрибутов. Кроме того для географических имён (например, Iceland, Atlantic Ocean) используется следующий приём формализации: по ним формируется Ide (_Iceland, _Atlantic_Ocean) и приписывается сорту place. ! _Iceland place ! ! _Atlantic_Ocean place ! Дополнительные атрибуты и связи  Атрибуты не являющиеся базовыми могут быть разнообразны и массово встречаются в базах данных. Наличие в YAFOLL чисел и строк позволяет "прописать" в КМАС любой атрибут БД. Отметим также что функциональная связь между таблицами БД является в КМАС просто частичной (или полной) функцией. Это не значит что при построении КМАС по БД следует каждой таблице сопоставить сорт, но обычно некоторые таблицы будут сортами. Функция gathering_place сопоставляющая образцу место сбора была уже упомянута выше. У неё есть своя аксиома полноты Axiom GPfull ( ∀ x : sample ( ∃ y : place ( gathering_place ( x ) = y ) ) ) . И свои предложения назначения значений ! gathering_place ( _SAM30681 ):_PLC1555! ! gathering_place ( _SAM30682 ):_PLC1555! ! gathering_place ( _SAM30683 ):_PLC1555! Пример строкового атрибута Declaration title publication : S prime . И назначение ему значения ! title ( PUB5633 ):"A CONTRIBUTION TO THE GEOLOGY OF THE KERLINGARFJELL"! Предикаты горных пород и химических веществ  Термин соответствующий определённой горной породе (например, rhyolite) в КМАС естественно представить предикатом Declaration rhyolite sample : TV prime . который на образце принимает одно из истинностных значений: _True, _False, а может и не иметь значения, хотя это запрещено аксиомой Axiom full_rhyolite ( ∀ x : sample ( ∃ y : TV ( rhyolite ( x ) = y ) ) ) . В данной КМАС этот предикат первичен и ему можно и нужно назначать значения приписывая ему образцы, например, так
  • 10. ! rhyolite ( _SAM30697 ):_True! ! rhyolite ( _SAM32994 ):_True! Как пример предиката химического вещества приведём Declaration SIO2 sample : TV prime . Он будет истинен на образце только если тот кремнезём. Заключение  Описана часть возможностей языка YAFOLL и его процессора Yp, позволяющих вести КМАС и задавать вопросы "первого порядка" о её свойствах. Конечная система​. Конечность системы моделирующей часть реальности является важнейшим элементом подхода. В большинстве случаев именно как конечная система элементов часть реальности и моделируется. При этом конечно может оказаться что элементов очень много (для прямых вычислений) или что часть элементов мыслится непрерывными, т.е. "бесконечными". Сравнение с РБД​. Следует подчеркнуть что рассматриваемая как модель данных (МД) КМАС не слабее реляционной МД. В том числе строение таблиц РБД может быть один-к-одному воспроизведено в КМАС. Но это не означает что при построении онтологии следует так поступать. Несколько языков​. Фактически в YAFOLL объединено по крайней мере 3 языка: -ведение КМАС, -запрос к КМАС, -язык ответов. Последний довольно зачаточен, но будет развиваться. Прямые вычисления​. Идея прямых вычислений является фундаментальной и предшествующей идее логического вывода. Подавляющее большинство инженерных расчётов есть в общем случае алгоритмические прямые вычисления. Одна из основных задача проекта в целом - выяснить какие виды прямых вычислений нужны при моделировании предметной области. При этом естественно было начать с языка исчисления предикатов первого порядка (FOL). В область прямых вычислений попадают как формализованные законы предметной области, так и свойства сущих предметной области. Первые накапливаются в виде аксиом, а вторые - формул запросов. В науке, технике, законодательстве если нечто сущее мыслится как система, то оно может быть смоделировано конечной системой. Какими свойствами должна обладать такая система и языки работы с ней и есть предмет сообщения - этого и последующих. Литература  [ASWp] "Алгебраическая система", статья Википедии, ​ссылка [АС] А.И. Мальцев «Алгебраические системы», — М., Наука, 1970 г. [СКпМЛ] Справочная книга по математической логике, в четырёх частях, (ред. Дж. Барвайс), — М., Наука, 1982-1983 г. [ОиП] "Отношение (теория множеств)", статья Википедии, ​ссылка [КоДра] А.Н. Колмогоров, А.Г. Драгалин, Математическая логика. Изд. 3-е, стереотипное. — М.: КомКнига, 2006. (Классический университетский учебник.) [ОБДПр] А.В. Шкотин, В.М. Ряховский, БД Проба. Онтология реляционной базы данных. Промежуточный отчёт. 2008-2015гг. ​ссылка