Текущие знания о задаче заносятся во временную структуру, внешнее представление которой имеет вид, аналогичный нижеприведенному фрагменту. В броузере знаний можно выполнять просмотр структуры  (рис. 1.). Априорные знания организованы аналогично.

 

(

 "REL_6"  "отрезки перпендикулярны_1" "?"   "?"  "FRG_1"   "?"

   "segment_1=FRG_12"

   "segment_2=FRG_14"

   "comm=высота C_C1 перпендикулярна стороне A_B"

)

 

( 

  "OBJ_15"  "треугольник_2"   "?"   "?"  "FRG_1"   "?"

    "point_1=OBJ_3"    "point_2=OBJ_7" "point_3=OBJ_5"

    "comm=треугольник A_A1_C"  "tip=прямоугольный"

    "why=REL_2"

    "reason=сгенерирован"

 )

 

( 

  "OBJ_16"  "треугольник_3"   "?"   "?"  "FRG_1"   "?"

    "point_1=OBJ_4"    "point_2=OBJ_5" "point_3=OBJ_10"

    "comm=треугольник B_C_B1"  "tip=прямоугольный"

    "why=REL_2"

    "reason=сгенерирован"

 )

   Фрагмент текста на ЯПЗ и его представление в редакторе знаний (полный текст см. ниже).

 

            Рис. 1. Броузер текущих знаний.


Полный текст на ЯПЗ для задачи  типа “треугольник”.

(

  "FRG_0" "иерархия" "?"  "?"  "?"  "?"

)

( 

  "FRG_1"  "фрагмент_0"   "?"   "?"  "0"   "?"

 )

( 

  "OBJ_2"  "треугольник_1"   "?"   "?"  "FRG_1"   "?"

    "point_1=OBJ_3"    "point_2=OBJ_4" "point_3=OBJ_5"

    "side_1=OBJ_8"    "side_2=FRG_11" "side_3=FRG_14"

     "comm=треугольник A_B_C"

 )

 

( 

  "OBJ_3"  "точка_1"   "?"   "?"  "FRG_1"   "?"

    "name=A"  "part_of=OBJ_2" 

    "comm=вершина A треугольника A_B_C"

 )

 

( 

  "OBJ_4"  "точка_2"   "?"   "?"  "FRG_1"   "?"

    "name=B"  "part_of=OBJ_2"

    "comm=вершина B треугольника A_B_C"

 )

 

( 

  "OBJ_5"  "точка_3"   "?"   "?"  "FRG_1"   "?"

    "name=C"   "part_of=OBJ_2"

    "comm=вершина C треугольника A_B_C"

 )

 

( 

  "OBJ_6"  "отрезок_1"   "?"   "?"  "FRG_1"   "?"

    "point_1=OBJ_3"    "point_2=OBJ_7"

    "comm=высота A_A1 треугольника A_B_C""

)

 

( 

  "OBJ_7"  "точка_4"   "?"   "?"  "FRG_1"   "?"

    "name=A1"

    "comm=основание высоты A_A1 треугольника A_B_C"

)

 

(

 "REL_1"  "точка принадлежит отрезку_1" "?"   "?"  "FRG_1"   "?"

   "point=OBJ_7"

   "segment=OBJ_8"

   "comm=основание высоты A_A1 принадлежит стороне B_C"

)

 

( 

  "OBJ_8"  "отрезок_2"   "?"   "?"  "FRG_1"   "?"

    "point_1=OBJ_4"    "point_2=OBJ_5"

    "comm=сторона B_C треугольника A_B_C"

)

 

(

 "REL_2"  "отрезки перпендикулярны_1" "?"   "?"  "FRG_1"   "?"

   "segment_1=OBJ_6"

   "segment_2=OBJ_8"

   "comm=высота A_A1 перпендикулярна стороне B_C"

)

 

( 

  "OBJ_9"  "отрезок_3"   "?"   "?"  "FRG_1"   "?"

    "point_1=OBJ_4"    "point_2=FRG_10"

    "comm=высота B_B1 треугольника A_B_C""

)

 

( 

  "OBJ_10"  "точка_4"   "?"   "?"  "FRG_1"   "?"

    "name=B1"

    "comm=основание высоты B_B1 треугольника A_B_C"

)

 

(

 "REL_3"  "точка принадлежит отрезку_1" "?"   "?"  "FRG_1"   "?"

   "point=FRG_10"

   "segment=FRG_11"

   "comm=основание высоты B_B1 принадлежит стороне A_C"

)

 

( 

  "OBJ_11"  "отрезок_4"   "?"   "?"  "FRG_1"   "?"

    "point_1=OBJ_3"    "point_2=OBJ_5"

    "comm=сторона A_C треугольника A_B_C"

)

 

(

 "REL_4"  "отрезки перпендикулярны_1" "?"   "?"  "FRG_1"   "?"

   "segment_1=OBJ_9"

   "segment_2=FRG_11"

   "comm=высота B_B1 перпендикулярна стороне A_C"

)

 

( 

  "OBJ_12"  "отрезок_5"   "?"   "?"  "FRG_1"   "?"

    "point_1=OBJ_5"    "point_2=FRG_13"

    "comm=высота C_C1 треугольника A_B_C""

)

 

( 

  "OBJ_13"  "точка_4"   "?"   "?"  "FRG_1"   "?"

    "name=C1"

    "comm=основание высоты C_C1 треугольника A_B_C"

)

 

(

 "REL_5"  "точка принадлежит отрезку_1" "?"   "?"  "FRG_1"   "?"

   "point=FRG_13"

   "segment=FRG_14"

   "comm=основание высоты C_C1 принадлежит стороне A_B"

)

 

( 

  "OBJ_14"  "отрезок_6"   "?"   "?"  "FRG_1"   "?"

    "point_1=OBJ_3"    "point_2=OBJ_4"

    "comm=сторона A_B треугольника A_B_C"

)

 

(

 "REL_6"  "отрезки перпендикулярны_1" "?"   "?"  "FRG_1"   "?"

   "segment_1=FRG_12"

   "segment_2=FRG_14"

   "comm=высота C_C1 перпендикулярна стороне A_B"

)

 

( 

  "OBJ_15"  "треугольник_2"   "?"   "?"  "FRG_1"   "?"

    "point_1=OBJ_3"    "point_2=OBJ_7" "point_3=OBJ_5"

    "comm=треугольник A_A1_C"  "tip=прямоугольный"

    "why=REL_2"

    "reason=сгенерирован"

 )

 

( 

  "OBJ_16"  "треугольник_3"   "?"   "?"  "FRG_1"   "?"

    "point_1=OBJ_4"    "point_2=OBJ_5" "point_3=OBJ_10"

    "comm=треугольник B_C_B1"  "tip=прямоугольный"

    "why=REL_2"

    "reason=сгенерирован"

 )

 

( 

  "OBJ_17"  "отрезок_7"   "?"   "?"  "FRG_1"   "?"

    "point_1=FRG_10"    "point_2=OBJ_5"

    "comm=сторона B1_C треугольника B_C_B1"

)

 

( 

  "OBJ_18"  "угол_1"   "?"   "?"  "FRG_1"   "?"

    "point_1=OBJ_3"    "point_2=OBJ_5" "point_3=OBJ_7"

    "comm=угол треугольника A_A1_C между сторонами A1_C и C_A" 

    "reason=сгенерирован"

 )

 

( 

  "OBJ_19"  "угол_2"   "?"   "?"  "FRG_1"   "?"

   "point_1=OBJ_4"    "point_2=OBJ_5" "point_3=OBJ_10"

   "comm=угол треугольника B_C_B1 между сторонами B_C и C_B1" 

   "reason=сгенерирован"

 )

 

( 

  "OBJ_20"  "отрезок_7"   "?"   "?"  "FRG_1"   "?"

    "point_1=OBJ_10"    "point_2=OBJ_5"

    "comm=сторона B1_C треугольника B_C_B1"

)

 

(

 "REL_7"  "углы равны_1" "?"   "?"  "FRG_1"   "?"

   "src=RULE_1"

   "status=верно"

   "comm=общий угол треугольников"

 )

 

(

 "RULE_1"  "равенство углов_1" "?"   "?"  "FRG_1"   "?"

   "corner_1=OBJ_18"

   "corner_2=OBJ_19"

   "comm=углы равны, если составляющие их отрезки находятся в отношении <часть-целое>"

 )

 

(

 "REL_8"  "треугольники подобны_1" "?"   "?"  "FRG_1"   "?"

   "src=RULE_2"

   "status=верно"

   "comm=прямоугольные треугольники с равным острым углом подобны"

 )

 

(

 "RULE_2"  "подобие треугольников_1" "?"   "?"  "FRG_1"   "?"

   "triangle_1=OBJ_15"

   "triangle_2=OBJ_16"

   "comm=прямоугольные треугольники подобны, если у них есть одинаковый острый угол"

 )

 

(

 "REL_9"  "пропорция отрезков_1" "?"   "?"  "FRG_1"   "?"

   "src=RULE_3"

   "proportion=OBJ_ / OBJ_ = OBJ_ / OBJ_ "

   "status=верно"

   "comm=пропорциональность сторон, содержащих равный угол (у подобных треугольников)"

   "formula=A1_C / A_C = B1_C / B_C"

 )

 

 (

 "RULE_3"  "пропорция сторон подобных треугольников_1" "?"  "?"  "FRG_1"  "?"

   "side_1=OBJ_"

   "side_2=OBJ_"

   "side_3=OBJ_"

   "side_4=OBJ_"

   "direct=пропорциональность следует из подобия"

   "comm=отношения сторон, содержащих равный угол, равны"

 )

 

(

 "REL_10"  "пропорция отрезков_1" "?"   "?"  "FRG_1"   "?"

   "src=REL_9"

   "proportion=OBJ_ / OBJ_ = OBJ_ / OBJ_ "

   "status=верно"

   "comm=следствие свойства пропорции"

   "formula=A1_C / B1_C = A_C / B_C"

 )

 

(

 "REL_11"  "треугольники подобны_1" "?"   "?"  "FRG_1"   "?"

   "src=RULE_4"

   "status=верно"

   "conform=REL_13"

   "comm=треугольники с равным острым углом и пропорциональными сторонами подобны"

 )

 

 (

 "REL_13"  "соответствие_1" "?"   "?"  "FRG_1"   "?"

   "src=RULE_4"

   "status=верно"

   "assoc=REL_11"

   "conform_1=OBJ_ соответствует OBJ_"

   "conform_2=OBJ_ соответствует OBJ_"

   "conform_3=OBJ_ соответствует OBJ_"

   "conform_4=OBJ_ соответствует OBJ_"

   "conform_5=OBJ_ соответствует OBJ_"

   "conform_6=OBJ_ соответствует OBJ_"

   "comm=соответствие сторон и углов подобных треугольников"

 )

 

 (

 "RULE_4"  "подобие треугольников с пропорциональными сторонами_1" "?"  "?"  "FRG_1"  "?"

   "side_1=OBJ_"

   "side_2=OBJ_"

   "side_3=OBJ_"

   "side_4=OBJ_"

   "direct=подобие следует из пропорциональности"

   "comm="

 )

 

 ( 

  "OBJ_21"  "угол_3"   "?"   "?"  "FRG_1"   "?"

   "point_1=OBJ_7"    "point_2=OBJ_10" "point_3=OBJ_5"

   "comm=угол треугольника B1_A1_C между сторонами A1_B1 и C_B1" 

   "reason=сгенерирован"

 )

 

( 

  "OBJ_22"  "угол_4"   "?"   "?"  "FRG_1"   "?"

   "point_1=OBJ_3"   "point_2=OBJ_5" "point_3=OBJ_4"

   "comm=угол треугольника A_B_C между сторонами A_C и B_C" 

   "reason=сгенерирован"

 )

 

(

 "REL_12"  "углы равны_1" "?"   "?"  "FRG_1"   "?"

   "src=RULE_5"

   "status=верно"

   "comm=равенство углов подобных треугольников"

 )

 

(

 "RULE_5"  "равенство углов в подобных треугольниках_1" "?"  "?"  "FRG_1"  "?"

   "src=REL_11"

   "corner_1=OBJ_20"

   "corner_2=OBJ_21"

   "comm=углы равны, если есть соответствие в утверждении о подобии"

 )

 

 

 

Примерный текст на ЯПЗ для задачи  типа “вложенные фрагменты”.

 

(

  "FRG_0" "иерархия" "?"  "?"  "?"  "?"

)

( 

  "FRG_1"  "фрагмент_0"   "?"   "?"  "0"   "?"

 )

( 

  "FRG_2"  "фрагмент_1"   "?"   "?"  "0"   "?"

 )

( 

  "FRG_4"  "фрагмент_3"   "?"   "?"  "FRG_7"   "?"

 )

( 

  "OBJ_1"   "фраза_1"   "а, первая буква алфавитов на русской и латинской основе."

  "set фраза_1"   "FRG_7"   "0" "src = <БСЭ 1> "

)

( 

  "OBJ_19"   "слово_1"   "а"   "set слово_1"  "FRG_7"   "0"

  "src = OBJ_1"    "poz_beg = 1"   "poz_end = 1" 

)

( 

  "FRG_5"  "фрагмент_4"   "?"   "?"  "FRG_7"   "?"

 )

( 

  "FRG_6"  "фрагмент_5"   "?"   "?"  "FRG_7"   "?"

)

( 

  "FRG_7"  "фрагмент_6"   "?"   "?"  "FRG_9"   "?"

)

( 

  "FRG_8"  "фрагмент_7"   "?"   "?"  "FRG_9"   "?"

)

( 

  "FRG_9"  "фрагмент_8"   "?"   "?"  "FRG_15"   "?"

)

( 

  "FRG_10"  "фрагмент_9"   "?"   "?"  "FRG_15"   "?"

)

( 

  "FRG_11"  "фрагмент_10"   "?"   "?"  "FRG_15"   "?"

)

( 

  "FRG_12"  "фрагмент_11"   "?"   "?"  "FRG_14"   "?"

)

( 

  "FRG_13"  "фрагмент_12"   "?"   "?"  "FRG_14"   "?"

)

( 

  "FRG_14"  "фрагмент_13"   "?"   "?"  "FRG_15"   "?"

)

( 

  "FRG_15"  "фрагмент_14"   "?"   "?"  "FRG_1"   "?"

)

( 

  "FRG_16"  "фрагмент_15"   "?"   "?"  "FRG_8"   "?"

)

( 

  "FRG_17"  "фрагмент_16"   "?"   "?"  "FRG_16"   "?"

)

( 

  "FRG_18"  "фрагмент_17"   "?"   "?"  "FRG_16"   "?"

)

 

            Рис. 2.  Часть дерева для задачи “вложенные фрагменты”

 

/****  

  фрагменты, задающие структуру в "чистом" виде! (типа чистых множеств)

 

   ( ( ( f3 f4 f5)  f7 )  f9  f10  ( f11 f12 ) )

   | | |____f6___|     |           |__f13____| |

   | |____f8___________|                       |

   |_____________________f14___________________|

 

 Наполнение фрагментов объектами м.б. произвольным.

 Резерв может задавать тип фрагмента, определяющий операции над принадлежащими

 фрагменту объектами (множество, упорядоченное множество и т.п.).

 Отношение вхождения фрагмента во фрагмент неявно (по умолчанию)

 Другие отношения зависят от наполнения, например, эквиваленты для формул!

***/

 

Примерный текст на ЯПЗ для задачи  типа “фраза на естественном языке”.

(

  "OBJ_0" "иерархия" "?"  "?"  "?"  "?"

)

 

 

( 

  "OBJ_1"   "фраза_1"   "а, первая буква алфавитов на русской и латинской основе."

  "set фраза_1"   "OBJ_21"   "0" "src = <БСЭ 1> "

)

 

( 

  "OBJ_2"   "слово_1"   "а"   "set слово_1"  "OBJ_21"   "0"

  "src = OBJ_1"    "poz_beg = 1"   "poz_end = 1" 

)

 

 ( 

     "OBJ_3"   "знак препинания_1"   ","   "set слово_1"   "OBJ_21"   "0"

     "src = OBJ_1"    "poz_beg = 2"  "poz_end = 2" 

 )

 

 ( 

     "OBJ_4"   "разделитель_1"   " "   "set слово_1"  "OBJ_21"   "0" 

     "src = OBJ_1"    "poz_beg = 3" 

     "poz_end = 3"   

 )

 

 ( 

     "OBJ_5"   "слово_2"   "первая"   "set слово_1"   "OBJ_21"   "0" 

     "src = OBJ_1"    "poz_beg = 4"    "poz_end = 9" 

  )

 

  ( 

     "OBJ_6"   "разделитель_2"   " "   "set слово_1"    "OBJ_21"   "0"

     "src = OBJ_1"    "poz_beg = 10"      "poz_end = 10" 

  )

 

 ( 

     "OBJ_7"   "слово_3"   "буква"   "set слово_1"    "OBJ_21"   "0"

     "src = OBJ_1"    "poz_beg = 11"     "poz_end = 15" 

  )

 

 ( 

     "OBJ_8"   "разделитель_3"   " "   "set слово_1"    "OBJ_21"   "0"

     "src = OBJ_1"    "poz_beg = 16"    "poz_end = 16" 

  )

 

 ( 

     "OBJ_9"   "слово_4"   "алфавитов"   "set слово_1"    "OBJ_21"   "0"

     "src = OBJ_1"    "poz_beg = 17"    "poz_end = 25" 

  )

 

  ( 

     "OBJ_10"   "разделитель_4"   " "   "set слово_1"    "OBJ_21"   "0"

     "src = OBJ_1"    "poz_beg = 26"  "poz_end = 26" 

  )

 

 ( 

     "OBJ_11"   "слово_5"   "на"   "set слово_1"    "OBJ_21"   "0"

     "src = OBJ_1"    "poz_beg = 27"   "poz_end = 28" 

  )

 

  ( 

     "OBJ_12"   "разделитель_5"   " "   "set слово_1"    "OBJ_21"   "0"

     "src = OBJ_1"    "poz_beg = 29"  "poz_end = 29" 

  )

 

 ( 

     "OBJ_13"   "слово_6"   "русской"   "set слово_1"    "OBJ_21"   "0"

     "src = OBJ_1"    "poz_beg = 30"  "poz_end = 36" 

  )

 

 

 ( 

     "OBJ_14"   "разделитель_6"   " "   "set слово_1"    "OBJ_21"   "0"

     "src = OBJ_1"    "poz_beg = 37"  "poz_end = 37" 

  )

 

 ( 

     "OBJ_15"   "слово_7"   "и"   "set слово_1"    "OBJ_21"   "0"

     "src = OBJ_1"    "poz_beg = 38"  "poz_end = 38" 

  )

  

 ( 

     "OBJ_16"   "разделитель_7"   " "   "set слово_1"    "OBJ_21"   "0"

     "src = OBJ_1"   "poz_beg = 39"   "poz_end = 39"  

  )

 

 ( 

     "OBJ_17"   "слово_8"   "латинской"   "set слово_1"    "OBJ_21"   "0"

     "src = OBJ_1"    "poz_beg = 40"  "poz_end = 48" 

  )

 

  ( 

     "OBJ_18"   "разделитель_8"   " "   "set слово_1"    "OBJ_21"   "0"

     "src = OBJ_1"    "poz_beg = 49"  "poz_end = 49" 

  )

 

 ( 

     "OBJ_19"   "слово_8"   "основе"   "set слово_1"    "OBJ_21"   "0"

     "src = OBJ_1"    "poz_beg = 50"  "poz_end = 50" 

  )

 

  ( 

     "OBJ_20"   "разделитель_9"   "."   "set слово_1"    "OBJ_21"   "0"

     "src = OBJ_1"    "poz_beg = 51"   "poz_end = 51" 

  )

 

 ( 

  "OBJ_21"  "фрагмент_1"   "?"   "?"  "0"   "?"

  

 )

 

 ( 

  "OBJ_22"  "фрагмент_2"   "?"   "?"  "0"   "?"

  

 )

 

 

 (

   "OBJ_100" "последовательность_1"  "алфавитов"   "OBJ_101"  "OBJ_22"  "0"

      "src =OBJ_9" 

      "reason src={сопоставление  <алфавитов> и Ея-описания последоват.}"

 )

  

 (

   "OBJ_101" "string_1"  "?"   "aбвгдежзийклмнопростуфхцчшщъыьэюя"

     "OBJ_21" "0"

     "src =(наследование OBJ_100)" 

 )

 

 (

  "ACT_1"  "действие_1"  "элемент последовательности по номеру"  "???" "OBJ_22" "0"

     "src=OBJ_100"

     "reason src={сопоставление  <первая буква алфавитов> и  Ея-описания <n-ый элемент последовательности> }"   

     "arg1=1"

     "reason arg1={сопоставление <первая>  и Ея-описания 1}"

     "arg2=<абвгдЕ>"

     "reason arg2={наследование val  последовательность_1}"

     "rezult=<а>"

     "fun=<entry(1, <абвгдЕ>)>"

 )