(

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

)

( 

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

 )

( 

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

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

    "side_1=OBJ_8"    "side_2=OBJ_11" "side_3=OBJ_14"

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

 )

 

( 

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

    "name=A"  "part_of=OBJ_2" 

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

 )

 

( 

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

    "name=B"  "part_of=OBJ_2"

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

 )

 

( 

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

    "name=C"   "part_of=OBJ_2"

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

 )

 

( 

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

    "point_1=OBJ_3"    "point_2=OBJ_7"

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

)

 

( 

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

    "name=A1"

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

)

 

(

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

   "point=OBJ_7"

   "segment=OBJ_8"

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

)

 

 

( 

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

    "point_1=OBJ_4"    "point_2=OBJ_5"

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

)

 

(

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

   "segment_1=OBJ_6"

   "segment_2=OBJ_8"

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

)

 

( 

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

    "point_1=OBJ_4"    "point_2=OBJ_10"

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

)

 

( 

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

    "name=B1"

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

)

 

(

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

   "point=OBJ_10"

   "segment=OBJ_11"

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

)

 

( 

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

    "point_1=OBJ_3"    "point_2=OBJ_5"

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

)

 

(

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

   "segment_1=OBJ_9"

   "segment_2=OBJ_11"

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

)

 

( 

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

    "point_1=OBJ_5"    "point_2=OBJ_13"

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

)

 

( 

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

    "name=C1"

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

)

 

 

 

 

 

(

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

   "point=OBJ_13"

   "segment=OBJ_14"

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

)

 

( 

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

    "point_1=OBJ_3"    "point_2=OBJ_4"

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

)

 

(

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

   "segment_1=OBJ_12"

   "segment_2=OBJ_14"

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

)

 

( 

  "OBJ_15"  "треугольник_2"   "?"   "?"  "OBJ_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"   "?"   "?"  "OBJ_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"   "?"   "?"  "OBJ_1"   "?"

    "point_1=OBJ_10"    "point_2=OBJ_5"

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

)

 

( 

  "OBJ_18"  "угол_1"   "?"   "?"  "OBJ_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"   "?"   "?"  "OBJ_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"   "?"   "?"  "OBJ_1"   "?"

    "point_1=OBJ_10"    "point_2=OBJ_5"

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

)

 

(

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

   "src=RULE_1"

   "status=верно"

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

 )

 

(

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

   "corner_1=OBJ_18"

   "corner_2=OBJ_19"

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

 )

 

(

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

   "src=RULE_2"

   "status=верно"

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

 )

 

(

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

   "triangle_1=OBJ_15"

   "triangle_2=OBJ_16"

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

 )

 

(

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

   "src=RULE_3"

   "proportion=OBJ_ / OBJ_ = OBJ_ / OBJ_ "

   "status=верно"

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

   "formula=A1_C / A_C = B1_C / B_C"

 )

 

 (

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

   "side_1=OBJ_"

   "side_2=OBJ_"

   "side_3=OBJ_"

   "side_4=OBJ_"

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

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

 )

 

(

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

   "src=REL_9"

   "proportion=OBJ_ / OBJ_ = OBJ_ / OBJ_ "

   "status=верно"

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

   "formula=A1_C / B1_C = A_C / B_C"

 )

 

(

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

   "src=RULE_4"

   "status=верно"

   "conform=REL_13"

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

 )

 

 (

 "REL_13"  "соответствие_1" "?"   "?"  "OBJ_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" "?"  "?"  "OBJ_1"  "?"

   "side_1=OBJ_"

   "side_2=OBJ_"

   "side_3=OBJ_"

   "side_4=OBJ_"

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

   "comm="

 )

 

 ( 

  "OBJ_20"  "угол_3"   "?"   "?"  "OBJ_1"   "?"

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

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

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

 )

 

( 

  "OBJ_21"  "угол_4"   "?"   "?"  "OBJ_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" "?"   "?"  "OBJ_1"   "?"

   "src=RULE_5"

   "status=верно"

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

 )

 

(

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

   "src=REL_11"

   "corner_1=OBJ_20"

   "corner_2=OBJ_21"

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

 )

 

 

/***

  Что означает - "Найти все подобные треугольники? (или некоторые)"

     Есть правила, определяющие подобие (в частности прямоугольные треугольники

     с общим острым углом подобны)

     Во фрагмент "правила" записываются активированные экземпляры правил с означенными переменными (переменные должны быть означены объектами).      Результатом применения правила в данном случае будет (в первом приближении)

     отношение "подобны" для объектов, являющихся треугольниками.

 

     Есть правило, определяющие для подобных треугольников пропорциональность      сторон, содержащих общий угол. 

 

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

       

     Есть правило, определяющие новую пропорцию как следствие существующей. 

     

     1. Оценка мощности множества всех треугольников (в данном случае тругольник

        определяется тремя точками, всех точек 6, т.е. количество всех теоретически

        возможных треугольников равно C из 6 по 3 = 20.

              

     2. Генерация множества треугольников для определения подобия (исходный уже есть,

        формируем новые по точкам, не лежащим на одной прямой ...)           

        Для этого множества важно иметь дескриптор, определяющий макс. число элементов

         и дескриптор, задающий текущее число элементов.

         Их отношение определяет         полноту генерации.

        Свойства треугольников естественно задать при генерации (прямоугольный).  

          

     3. Перебор пар треугольников для проверки на подобие.

        Генерация множества подобных треугольников.

        Глубина вывода = 1, 2, 3, ...

             1 - пары прямоугольных треугольников

             2 - первоначальные пропорции (из подобия)

             3 - выводимые пропорции (из других пропорций)

             4 - пары треугольников по пропорциям (и общему углу)

 

     

 

 

 

Новое!

       Следствия из равных углов, имеющих общую вершину:

         Если есть два равных угла, содержащих равные же угла как части,

         то другие части первых углов также равны.

       

      

     Комментарий: правила (rule) вероятно лучше организовать в другом фрагменте.

                  Правила вызываются неявно, их переменные означиваются и в структуру

                  включается экземпляр правила. В результате выполнения правила

                  формируется отношение (REL)с пометкой status = верно/неверно     

      

       Считывание идет как минимум в два прохода:

               1)считывание отдельных элементов и первоначальная проверка синтаксиса

               2)организация структур и семантическая проверка

               3)"понимание" включает знание типов (OBJ,REL ...),

                 знание системной иерархии, знание свойств (наследуемых по иерархиям)

                 и согласованность значений свойств...

               

       Интересно было бы организовать ЕЯ-ввод в диалоге и отображение структур

       по результатам такого ввода. Как для геометрии, так и по формулам!       

 

 

       После выводов (строгих "proof=строгое" в правиле)хорошо бы иметь правило с

       "proof=аналогия".

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

          В текущей структуре знаний находим структуры, связанные отношением

          типа "выводимость" (или "следование" или ... ЕЯ-описание этого

          отношения должно сопоставляться с описанием выводимости).

          Для этих структур в текущей структуре знаний находим MATCH-структуры.       

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

          как "вывод по аналогии".

 

      Соответствие - conform - сторон и углов подобных треугольников здесь записано

      непосредственно в структуру объекта как свойства. Текст при этом более нагляден,

      но "чище" организовать это соответствие через отношения (REL). Хорошо бы иметь

      общие механизмы работы с правилами, объектами, свойствами и т.д., результат

      работы которых не зависел бы в определенном смысле от выбора представления знаний.

 

      Независимость заключается в том, допускается для наглядности и удобства обработки

      организовать представление с помощью свойств, но в комментариях должно быть

      отражено эквивалентное представление в базовых структурах системы (через REL).

 

      Свойство "accoc" вспомогательное. М.б. и его лучше предсталять через REL.

  

      Каждый компонент знания стандартно должен содержать в начале информацию о

      месте данного компонента в общей базе знаний и возможно информацию, помогающую

      собственной интерпретации (например, в какой кодировке и т.п.).

 

***/