Российская Академия Наук
Государственный геологический музей им. Вернадского
Алгоритм классификации магматических горных пород
и
формальное определение вида горной породы
Версия 2
Исследовательский отчёт
отдел ГИС, руководитель: В.М. Ряховский
петрология: Д.И. Кудрявцев
математика: А.В. Шкотин
2016
© 2010 - 2011, 2014 Государственный геологический музей им. Вернадского
© 2016 ashkotin@acm.org
Предуведомления.
Главное изменение во второй версии отчёта (2014) - введён оператор VPC и используется идея многосортности языка исчисления предикатов.
Главное изменение в третьей версии (2016) - запись формализации на YAFOLL и включение в отчёт соответсвующей DADA (Declarations Adds Definitions Axioms предложений). Начиная с 30.05.2016 отчёт ведётся в форме google.doc
проект Algor. Отчёт Алгоритм классификации-3 а данная версия замораживается.
ACKNOWLEDGEMENTS
We would like to thank Dr Stephen M. Richard from Arizona Geological Survey for comments on previous versions of the report, helpful discussion and reference to [4];
And Pavel Klinov from the University of Manchester for DL-formula (Pyr-2) for pyroclastic and entailments (Ent-1), (Ent-2).
This report was prepared for RAS use, and is released for information. Comments on its applicability for wider use would be welcome and should be sent to Alex dot Shkotin at gmail dot com.
Initials:
DIK - Dmitry I. Kudryavtsev
SMR - Stephen M. Richard
We use these initials to specify the authors of some parts of the text.
Первоисточником алгоритма является [1]. Алгоритм задан как совокупность функций для каждой из которых дана блок-схема.
В отчёте суммированы идеи и задачи разработки и описаны принятые решения и оставшиеся вопросы к Автору классификации.
Алгоритм и необходимые определения даны для ультрамафических видов плутонических горных пород. Детальное обсуждение и решение оставшихся проблем должно подтвердить правомерность подхода формализации. После чего он может быть распространён на другие разделы первоисточника.
Три основных цели проекта:
- определение алгоритма классифицирующего образец по его характеристикам;
- уточнение правил классификации;
- выявление формальных определений видов горных пород.
Замечание: в отчёте будут использоваться исходные английские термины для обозначения минералов, видов пород и других формализуемых терминов.
Принятые обозначения и термины:
VPC означает Volume Percentage Content - объёмное процентное содержание обычно минерала в образце, известное также как модальное содержание.
sb1:SB (сокращение для solid body 1) - переменная сорта SB (Solid Body - твёрдое тело).
Функцию алгоритма (например, ultramafic_rock_type), которая получает на вход элемент сорта SB (с характеристиками образца породы), а возвращает наименование вида породы этого образца, назовём классифицирующей (образец).
:= означает на блок-схеме действие присваивания переменной значения.
Отношения между числами будут обозначаться так:
> - "больше",
≥ - "больше или равно" (на блок-схемах - «>=»),
< - "меньше",
≤ - "меньше или равно" (на блок-схемах - «<=»).
Функцию, которая возвращает истинностное значение (True, False) будем называть предикат [6], с.44.
Формула вида 0 ≤ VPC(hornblende)(sb1) ≤100 есть сокращение для 0 ≤ VPC(hornblende)(sb1) and VPC(hornblende)(sb1) ≤100
Формально VPC будет обозначать оператор объёмного процентного содержания вещества в твёрдом теле. Получая на вход предикат вещества (обычно минерала) он возвращает функцию, которая в свою очередь возвращает "на твёрдом теле" число - объёмное процентное содержание вещества в данном теле. Так VPC(Ol)(sb1) означает объёмное процентное содержание оливина у образца которому соответствует переменная sb1.
Нам понадобятся предикаты минералов. Например для оливина предикат будет Ol и Ol(sb2)=True означает что образец которому соответствует переменная sb2 целиком состоит из оливина. Полный состав минералов необходимых алгоритму выяснится постепенно. Пока понадобились следующие предикаты одного аргумента:
melilite, kalsilite, leucite, Ol (оливин), hornblende, garnet, spinel, biotite.
И calcite, dolomite, magnesite, siderite, ankerite, aragonite, vaterite, strontianite.
Нам понадобятся также группы минералов Opx, Cpx, Q, A, P, F, M (см. [1] стр. 4, [4] стр. 6).
Которые имеют определения. Определение для M дано ниже.
Существует естественное ограничение на VPC-величины: они должны быть в диапазоне от 0 до 100.
Например, для предиката biotite будем иметь
(∀x:SB 0 ≤ VPC(biotite)(x) ≤ 100)
Считается что эти требования выполнены всегда (являются аксиомами предметной области). Совокупность таких требований назовём VPC-range.
Замечание. Удобство квантора по предикату.
Используя квантор по предикату можно записать единую аксиому формулой второго порядка:
(∀p:(SB:TV)∀x:SB Substance(p) → (0 ≤ VPC(p)(x) ≤ 100)).
В ней
TV - сорт истинностных значений, состоящий из True, False.
p:(SB:TV) означает, что p есть функция из SB в TV, т.е. предикат.
Substance(p) означает что p предикат субстанции. Он удовлетворяет требованию, что если тело Т1 состоит из вещества p, то и любая его часть тоже состоит из вещества p.
Нам понадобятся следующие предикаты для характеристики образца: pyroclastic, kimberlite, lamproite, lamprophyre, charnockite, plutonic, volcanic, clast, volcanic_eruption_result.
Скорее всего эти предикаты имеют определения.
Замечание. может оказаться что предикаты volcanic и volcanic_eruption_result синонимы.
Используя одни функции (предикаты) можно определять другие. Некоторым функциям, которые нам понадобятся определения ещё не даны. Тогда они считаются первичными.
Так в настоящий момент предикаты Q, A, P, F считаются первичными, а предикат M определен далее.
Этот показатель нужен для классификации некоторых плутонических пород.
Definition
Px(x:SB) ≝ Opx(x) or Cpx(sb1).
Замечание: список http://en.wikipedia.org/wiki/Pyroxene#Pyroxene_minerals подтверждает формулу.
Эти определения понадобятся для формализации диаграмм Fig. 2.9. p. 28 [1].
Definition
OOC(sb1:SB) ≝ Ol(sb1) or Opx(sb1) or Cpx(sb1)
Definition
OPH(sb1:SB) ≝ Ol(sb1) or Px(sb1) or hornblende(sb1)
Предикат M объединяет минералы группы M (см. [1] стр. 4, 28, и особенно [4] стр.6).
Следуя прямому указанию в [4] стр. 6:
"M = mafic and related minerals, that is all other minerals
apart from QAPF; this includes all micas (including
muscovite), amphibole, pyroxene, olivine, opaque
minerals, accessory minerals (zircon, apatite, titanite
etc.), epidote, allanite, garnet, melilite, monticellite,
wollastonite, primary carbonate, etc"
(подчёркивание наше) получаем определение
Definition
M(sb1:SB) ≝ not(Q(sb1) or A(sb1) or P(sb1) or F(sb1)).
Теорема
∀sb1:SB VPC(M)(sb1) = 100 - (VPC(Q)(sb1)+VPC(A)(sb1)+VPC(P)(sb1)+VPC(F)(sb1)).
Определение этой группировки из [1] ещё не рассматривалось. Сейчас взято определение SMR. Для нас важно предположение, что существует точный список carbonate minerals.
Стоит также иметь в виду определение из http://en.wikipedia.org/wiki/Carbonate_minerals:
"Carbonate minerals are those minerals containing the carbonate ion: CO32-.".
[SMR] Definition
carbonates(sb1:SB) = calcite(sb1) or dolomite(sb1) or magnesite(sb1) or siderite(sb1) or ankerite(sb1) or aragonite(sb1) or vaterite(sb1) or strontianite(sb1).
Теорема
∀sb1:SB VPC(carbonates)(sb1) = VPC(calcite)(sb1) + VPC(dolomite)(sb1) + VPC(magnesite)(sb1) + VPC(siderite)(sb1) + VPC(ankerite)(sb1) + VPC(aragonite)(sb1) + VPC(vaterite)(sb1) + VPC(strontianite)(sb1).
Мы основываемся в основном на разделе "2.2 PYROCLASTIC ROCKS AND TEPHRA" [1].
Так на странице 7 читаем:
"This classification has been slightly modified
from that given in the 1st edition.
It should be used only if the rock is considered
to have had a pyroclastic origin, i.e. was
formed by fragmentation as a result of explosive
volcanic eruptions or processes. It specifically
excludes rocks formed by the autobrecciation
of lava flows, because the lava flow itself is the
direct result of volcanic action, not its
brecciation."
Предварительное определение предиката после обсуждения с петрологами (SMR, DIK) приведено ниже:
Definition
pyroclastic(x:SB) = clastic(x) and (∀ y:SB clast(y) and (y part_of x) → volcanic_eruption_result(y))
здесь применена обычная инфиксная форма записи бинарных предикатов и функций: (y part_of x) = part_of(y,x)
Представление в виде DL и OWL2 формул
В этом разделе показано какие DL-операции нужны для записи формулы предиката pyroclastic и какие дополнительные предикаты нужны для OWL2.
Формула part_of(x,y) and clast(x) эквивалентна part_of(x,y) and id(clast)(x,y) и далее (part_of ∩id(clast))(x,y).
И мы получаем
pyroclastic ≡ clastic and ∀(part_of∩id(clast))-.volcanic_eruption_result
И окончательно в DL:
pyroclastic ≡ clastic and ∀(part_of-∩id(clast)).volcanic_eruption_result (Pyr-1)
Но в OWL 2 нет операций: r1∩r2, id(c).
Если мы хотим получить pyroclastic в OWL2, то идём далее.
Definition
clast_part_of(x,y) =def part_of(x,y) and clast(x) (CPo-1)
DL: clast_part_of ≡ part_of∩id(clast)
Считая clast_part_of первичным получаем:
pyroclastic ≡ clastic and ∀clast_part_of-.volcanic_eruption_result (Pyr-2)
Ясно что из (CPo-1) следует:
clast_part_of ⊑ part_of. (Ent-1)
∃clast_part_of.⊤ ⊑ clast. (Ent-2)
Эти OWL2-аксиомы следует добавить в теорию (OWL2-онтологию) как ослабление/вместо (CPo-1).
Замечание. Данный раздел написан с помощью/под руководством/лично Павлом Клиновым.
Из параграфа 2.2.1 "PYROCLASTS" заключаем, что
Definition
pyroclast(x:SB) = clast(x) and volcanic_eruption_result(x)
На стр.3, 21 [1] (см. копию в [3]) описаны тонкости отнесения к plutonic и volcanic, а также именования в "пограничном" случае.
Это пока не внесено в алгоритм и может потребовать такой "субъективной" характеристики образца как "глубина формирования".
Предикат plutonic в настоящий момент считается первичным.
Далее части алгоритма приписываются конкретным секциям первоисточника, продолжением текста которых они фактически являются. Таким образом алгоритм является дальнейшей формализацией (и уточнением!) правил классификации первоисточника.
В результате получается описание "сверху-вниз" - от вызывающих к вызываемым функциям.
Блок-схемы. Алгоритм задан совокупностью блок-схем. Блок-схема есть специальный вид правой части определения функции.
В узлах блок-схемы либо действие либо условие (формула возвращающая значение true или false). Узлы-условия легко отличить т.к. из них выходит две стрелки помеченные true и false.
У блок-схемы могут существовать собственные (внутренние) переменные, задаваемые «квантором» Var.
Нам понадобится операция “+” - конкатенация, соединение двух строк. Формулу возвращающую строку будем называть терм.
Нам понадобятся следующие действия:
return <терм>. Значение терма становится значением функции;
abort <строка>. Выполнение алгоритма завершается аварийно и выдаётся сообщение;
<переменная>:=<терм>. Внутренней переменной блок схемы присваивается значение терма.
Замечание. В этой версии отчёта оставлены блок-схемы от предыдущей версии. Они актуальны. Единственные изменения при их чтении:
- везде вместо VPC_<x>, где <x> некоторый идентификатор, следует читать (мысленно подставлять) VPC(<x>);
- внутренние переменные блок-схемы теперь имеют сорт - подразумевается тип String,
- формальный параметр блок-схемы имеет сорт SB.
Алгоритм верхнего уровня задан классифицирующей функцией rock_type.
Именно эту функцию надо вызывать чтобы классифицировать образец.
Далее приводятся предложения первоисточника и их формализация, которая по большей части очевидна, но два случая требуют пояснения и описаны в конце в обсуждении.
За формализацией следует блок схема.
Исходный текст для алгоритма находится на стр.6 первоисточника (см. также [3]). Формализация: для каждой порции исходного текста даётся формальное условие перехода к соответствующей секции.
"(1) if the rock is considered to be of pyroclastic
origin go to section 2.2 “Pyroclastic Rocks
and Tephra” on p.7"
pyroclastic(sb1)
"(2) if the rock contains > 50% of modal car-
bonate rocks go to section 2.3 “Carbonatites” on
p.10"
VPC(carbonates)(sb1)>50
"(3) if the rock contains > 10% of modal melilite
go to section 2.4 “Melilite-bearing Rocks”
on p.11"
VPC(melilite)(sb1)>10
"(4) if the rock contains modal kalsilite go to
section 2.5 “Kalsilite-bearing Rocks” on
p.12"
VPC(kalsilite)(sb1)>0
"(5) check to see if the rock is a kimberlite as
described in section 2.6 on p.13"
kimberlite(sb1)
"(6) check to see if the rock is a lamproite as
described in section 2.7 on p.16"
lamproite(sb1)
"(7) if the rock contains modal leucite go to
section 2.8 “Leucite-bearing Rocks” on p.18"
VPC(leucite)(sb1)>0
"(8) check to see if the rock is a lamprophyre as
described in section 2.9 on p.19. Note ..."
lamprophyre(sb1)
"(9) check to see if the rock is a charnockite as
described in section 2.10 on p.20"
charnockite(sb1)
"(10)if the rock is plutonic, as defined in section
2.1, go to section 2.11 “Plutonic rocks” on
p.21"
plutonic(sb1)
"(11)if the rock is volcanic, as defined in section
2.1, go to section 2.12 “Volcanic rocks” on
p.30"
volcanic(sb1)
"(12)If you get to this point, either the rock is not
igneous or you have made a mistake."
abort("either the rock is not igneous or you have made a mistake")
Замечание: вполне возможно, что когда будут даны определения для предикатов условий приведённых выше окажется, что их объединение будет всегда верно. И наоборот - если это не так, то всегда найдётся (теоретически) сочетание характеристик образца магматической породы, которое приведёт к abort.
"
(1) if M is less than 90% the rock is classified
according to its felsic minerals, using the
now familiar QAPF diagram (Fig. 2.4),
or the QAPF double triangle (section 2.11.1)
VPC(M)(sb1) < 90
(2) if M is greater or equal to 90%, it is an
ultramafic rock and is classified according
to its mafic minerals, as shown in section
2.11.2, p.28"
VPC(M)(sb1) ≥ 90
Fig. 1. Function rock_type
Одноместные предикаты, использованные в формулах, будем называть предикатами верхнего уровня. 4 формулы основаны на модальном минеральном составе образца (они начинаются с VPC).
Определения предикатов верхнего уровня ещё не даны. Но предполагается, что они есть.
Большинство предикатов непосредственно употребляются в тексте первоисточника и так как сам текст написан в стиле алгоритма его формализация выполнена "один к одному".
Но в двух случаях пришлось сделать предположения. Заодно рассмотрим "преобразование" текста в код.
Случай 6-1.
Текст:
"(1) if the rock is considered to be of pyroclastic
origin go to section 2.2 “Pyroclastic Rocks
and Tephra” on p.7
"
Чтобы не вводить предикат "pyroclastic_origin" предположим, что
Предположение 6-1: Tephra является pyroclastic.
И критерий перехода к алгоритму секции 2.2 выглядит так:
pyroclastic(sb1)
Вопрос к Автору: верно ли Предположение 6-1?
SMR: yes.
Случай 6-2.
Текст:
"(7) if the rock contains modal leucite go to
section 2.8 “Leucite-bearing Rocks” on p.18
"
Теоретически "contains" может означать "значительное количество" (например >5%) пока же сделано предположение
Предположение 6-2: "contains" означает ">0".
И критерий перехода к алгоритму секции 2.8 выглядит так:
VPC(leucite)(sb1)>0
Вопрос к Автору: верно ли Предположение 6-2?
SMR: yes.
Алгоритм написан на основе текста параграфа 2.11.2 "ULTRAMAFIC ROCKS (M > 90%)", стр.28-29 (см. [1] или [3]).
Каждая из диаграмм, применяющихся для классификации ультрамафических пород, реализована в виде отдельной классифицирующей функции, которая фактически возвращает наименование зоны треугольника исходя из характеристик образца. Для верхнего треугольника функция названа OOC_diagram_field, для нижнего - OPH_diagram_field.
p.28:
" The Subcommission
(Streckeisen, 1973, 1976) recommended two
diagrams, both of which are shown in Fig. 2.9.
One for the rocks consisting essentially of olivine,
orthopyroxene, and clinopyroxene, and the
other for rocks containing hornblende,
pyroxenes, and olivine.
"
Решение 28-1: как критерий выбора между диаграммами выбрано наличие или отсутствие в образце hornblende:
VPC(hornblende)(sb1) = 0 - для верхней диаграммы
VPC(hornblende)(sb1) > 0 - для нижней.
Вопрос к Автору: верно ли Решение 28-1?
SMR: yes.
Основную часть функции ultramafic_rock_type, составляют инструкции по добавлению квалификационного имени к имени породы в случае, когда образец содержит garnet или spinel.
p.29 "
Ultramafic rocks containing garnet or spinel
should be qualified in the following manner. If
garnet or spinel is less than 5% use garnet-
bearing peridotite, chromite-bearing dunite etc.
If garnet or spinel is greater than 5% use garnet
peridotite, chromite dunite etc.
"
Квалификация для garnet и spinel определяется независимо. При присутствии в образце обоих минералов порядок слов квалификации в термине - по возрастающей концентраций.
Критерий "входа" в квалификацию: VPC(garnet)(sb1) + VPC(spinel)(sb1) > 0
Далее указаны критерии квалификации и соответствующее добавляемое имя:
Вопрос к Автору (терминологический)[DIK]: Почему порода объявляется обогащённой хромитом, на основании высокого содержания шпинели? Более естественным кажется использовать "spinel" вместо "chromite" в квалификации, т.е. "spinel-bearing", "spinel".
Замечание Обсуждение этого вопроса не затрудняет процесса построения алгоритма. Если будет принято решение использовать "spinel" вместо "chromite", то и алгоритм будет изменён соответственно.
Fig. 2. Function ultramafic_rock_type
Две диаграммы Fig.2.9, [1], стр.28 (см. также [3]) формализованы в виде функций: OOC_diagram_field (верхний треугольник), OPH_diagram_field (нижний треугольник).
Формализация диаграмм требует некоторых уточнений:
- вычисления координат точек пересечения некоторых линий. Так линии внутреннего треугольника имеют значение 5, т.к. в его вершинах это значение взятое дважды плюс 90 должно дать 100.
- решения какой из именованных зон диаграммы принадлежит граничная линия ("граница").
Алгоритм классифицирующей функции диаграммы намеренно выполнен как "цепочка" if-узлов каждый из которых "отвечает" за одну конкретную именованную зону диаграммы. Каждое условие представляет собой систему линейных неравенств. Совокупность таких условий обладает важными математическими свойствами:
- каждые два условия не совместны, т.к. соответствующие им зоны не пересекаются.
- объединение всех условий вместе даёт неравенства для треугольника, т.к. условия "накрывают" весь треугольник.
Интересно, что описанные свойства могут быть проверены "автоматически", если определения "загрузить" в машину вывода (МВ), работающую с линейными неравенствами. И такие МВ есть (например, Racer), т.к. запись линейных неравенств возможна используя расширение OWL 2[2].
Вопрос к Автору: число 10 на обоих диаграммах - скорее всего опечатка, т.к. оно приписано линии для Opx и должно быть 90?
SMR: yes.
Fig. 3. Function OOC_diagram_field
Fig. 4. Function OPH_diagram_field
Вопрос к Автору: верны ли неравенства блок-схем?
Создание алгоритма потребовало уточнения текста [1], т.е. текст содержит не достаточно информации и приходится делать предположения, которые конечно должны быть подтверждены Автором. Так же как и правомерность самого подхода.
Если подход правилен, то он может быть распространён на все варианты классификации. Кроме того продолжая работы надо дать определения предикатов верхнего уровня (plutonic...).
В идеале блок-схемы и определения функций должны стать частью документа [1].
Важным результатом алгоритмизации является выявление первичных предикатов и функций, которые используются в определениях других, именно они будут "символами теории" при построении теории исчисления предикатов первого порядка для предметной области магматических горных пород.
Алгоритм классификации содержит в неявном виде определения всех видов магматических горных пород.
Из него можно получить определения в виде формул, которые оказываются формулами с одной свободной переменной исчисления предикатов первого порядка с числами.
Сама формула того или иного вида говорит о "сложности" понятия, стоящего за термином, а также указывает все понятия на которые опирается данное. Что чрезвычайно важно для поиска первичных понятий.
Замечание: когда определений много становится естественно классифицировать и характеризовать сами определения и определяемые термины. Так определение для harzburgite есть определение вида горной породы.
Интересно, что формально мы должны ввести предикат rock_type(x), аргументом которого будут унарные (с одним аргументом) предикаты, т.е. выйти за пределы исчисления предикатов первого порядка.
Получим для примера формулы для harzburgite и dunite.
Нам понадобится вспомогательный предикат:
Definition:
not_first_9(sb1:SB) = not pyroclastic(sb1) and not VPC(carbonates)(sb1)>50 and not VPC(melilite)(sb1)>10 and not VPC(kalsilite)(sb1)>0 and not kimberlite(sb1) and not lamproite(sb1) and not VPC(leucite)(sb1)>0 and not lamprophyre(sb1) and not charnockite(sb1)
который верен в том случае, если образец не удовлетворяет первым 9-ти условиям верхнего уровня.
Преобразуем формулу справа применив отрицания:
not pyroclastic(sb1) and VPC(carbonates)(sb1)≤50 and VPC(melilite)(sb1)≤10 and VPC(kalsilite)(sb1)=0 and not kimberlite(sb1) and not lamproite(sb1) and VPC(leucite)(sb1)=0 and not lamprophyre(sb1) and not charnockite(sb1)
Перегруппируем and-члены:
not pyroclastic(sb1) and not kimberlite(sb1) and not lamproite(sb1) and not lamprophyre(sb1) and not charnockite(sb1)
and VPC(carbonates)(sb1)≤50 and VPC(melilite)(sb1)≤10 and VPC(kalsilite)(sb1)=0 and VPC(leucite)(sb1)=0
Вынесём not за скобки:
Definition
nf9(sb1:SB) =
not (pyroclastic(sb1) or kimberlite(sb1) or lamproite(sb1) or lamprophyre(sb1)
or charnockite(sb1))
and VPC(carbonates)(sb1)≤50 and VPC(melilite)(sb1)≤10
and VPC(kalsilite)(sb1)=0 and VPC(leucite)(sb1)=0
Рассмотрим ситуацию на примере породы harzburgite. Предикат harzburgite() будучи применён к элементу сорта SB должен давать true если образец является harzburgite, а в противном случае - false.
Чтобы получить предикат надо пройти по блок-схемам сверху вниз и собрать условия приводящие к узлу на блок-схеме OOC_diagram_field выдающему значение «harzburgite». Эти условия надо соединить логической операцией «and».
Получится следующая формула
nf9(sb1) and plutonic(sb1) and VPC(M)(sb1) ≥ 90 and VPC(hornblende)(sb1)=0 and
(0.4*VPC(OOC)(sb1) ≤ VPC(Ol)(sb1)) and (VPC(Ol)(sb1) ≤ 0.9*VPC(OOC)(sb1)) and (0 ≤ VPC(Cpx)(sb1)) and (VPC(Cpx)(sb1) < 0.05*VPC(OOC)(sb1))
Подставим формулу nf9 и перегруппируем and-члены:
Definition
harzburgite(sb1:SB) =
plutonic(sb1) and not (pyroclastic(sb1) or kimberlite(sb1) or lamproite(sb1) or lamprophyre(sb1) or charnockite(sb1))
and VPC(carbonates)(sb1)≤50 and VPC(melilite)(sb1)≤10 and VPC(M)(sb1) ≥ 90
and VPC(kalsilite)(sb1)=0 and VPC(leucite)(sb1)=0 and VPC(hornblende)(sb1)=0
and 0.4*VPC(OOC)(sb1)≤VPC(Ol)(sb1)≤0.9*VPC(OOC)(sb1) and VPC(Cpx)(sb1)<0.05*VPC(OOC)(sb1)
где (см. «Определения»)
OOC(sb1:SB) = Ol(sb1) or Opx(sb1) or Cpx(sb1).
Кроме того считаются выполненными требования VPC-range, что дало возможность убрать из второй строки определения "and 0≤VPC_Cpx(sb1)".
Таким образом точное определение вида магматической горной породы harzburgite состоит из трёх частей:
1. качественные характеристики (первая строка);
2. абсолютные ограничения на модальный состав (вторая и третья строки);
3. относительные ограничения на модальный состав (четвёртая строка).
Вопрос к Автору harzburgite-1. В формуле нигде не сказано, что Ol, Opx, Cpx должны составлять основную массу образца. Можно представить образец, состоящий в основном (например, на 70%) их anthophyllite, который судя по всему есть минерал группы M (см. стр.4 [1]), а ещё на 25% из Ol, Cpx, Opx. Такой образец тоже будет классифицирован как harzburgite при попадании в границы относительных пропорций?
Question to Author harzburgite-1. The formula is nowhere mentioned that Ol, Opx, Cpx should form the bulk of the sample. Let's consider a sample consisting mostly (for example, 70%) of anthophyllite (or any other mafic mineral, but Ol, Opx, Cpx), which apparently is a mineral group M (see page 4 [1]), and another 30% of Ol, Cpx, Opx. Hence this sample is an ultramafic one.
Relative proportions of Ol, Cpx, Opx may get such sample to be classified as harzburgite. Is this correct?
SMR: yes.
Формула для dunite интересна тем, что сам он упоминается на двух диаграммах поэтому (редкий случай!) она содержит "or":
Definition
dunite(sb1:SB) =
nf9(sb1) and plutonic(sb1) and VPC(M)(sb1) ≥ 90 and VPC(hornblende)(sb1)=0 and (0.9*VPC(OOC)(sb1) < VPC(Ol)(sb1)) and (0 ≤ VPC(Opx)(sb1)) and (0 ≤ VPC(Cpx)(sb1))
or
nf9(sb1) and plutonic(sb1) and VPC(M)(sb1) ≥ 90 and VPC(hornblende)(sb1)>0 and (0.9*VPC(OPH)(sb1) < VPC(Ol)(sb1)) and (0 ≤ VPC(Px)(sb1)) and (0 ≤ VPC(hornblende)(sb1))
Пусть элемент sb1 сорта SB содержит сведения об образце. Тогда алгоритм классификации отвечает на вопрос «Каков вид породы у sb1?». Формула предиката вида горной породы (например, harzburgite) отвечает на вопрос «sb1 есть harzburgite?».
Но, что более важно, сама формула отвечает на вопрос «что такое harzburgite?», т.к. содержит его определение.
Таким образом получено первое приближение формального определения вида магматической горной породы, которое пока оказалось системой линейных неравенств.
А для них существуют эффективные машины вывода. Что даёт возможность применять формулы для автоматической классификации образцов, а также анализировать всю совокупность определений математическими методами.
Развиваемый подход укладывается в рамки направления описанного в [5].
- согласовать с Автором [1] предположения использованные при написании алгоритма.
- продолжить работу с определениями предикатов и функций.
-- наиболее интересными и важными являются определения предикатов верхнего уровня алгоритма, т.к. на уровне диаграмм "правит" модальность.
- полная алгоритмизации всех вариантов классификации.
- автоматическое построение определений по алгоритму.
- создание теории исчисления предикатов первого порядка, содержащей определения всех терминов для видов магматических горных пород и их группировок.
- загрузка определений в машину вывода (например, Racer) для автоматического построения иерархии терминов, анализа свойств системы определений и классификации образцов.
1. Le Maitre, L.E., ed. 2002. Igneous Rocks: A Classification and Glossary of Terms 2nd edition, Cambridge.
http://www.cambridge.org/gb/knowledge/isbn/item1109607/ или http://amigoreader.com/book/?b=29372
2. OWL 2 Web Ontology Language. Data Range Extension: Linear Equations. http://www.w3.org/TR/2009/NOTE-owl2-dr-linear-20091027/
3. копии цитируемых страниц первоисточника прикреплены к июньскому отчёту. см. http://sites.google.com/site/alex0shkotin/formal-geology/iugs-igneous-rocks-classification-algorithm
4. Gillespie, M R, and Styles, M T. 1999. BGS Rock Classification Scheme, Volume 1, Classification of igneous rocks. British Geological Survey Research Report, (2nd edition), RR 99–06.
see http://www.bgs.ac.uk/bgsrcs/
5. Ernest Davis, Representations of commonsense knowledge, Morgan Kaufmann, 1990
6. Мальцев А.И., Алгебраические системы, М., "Наука", 1970