// **************************************************************************
//                  все, что имеет отношение к ядру
//
// **************************************************************************
// **************************************************************************
//                 фраза с обычным глаголом
// **************************************************************************
@Перевод
{
   @Структура  ядро_повест( см_глагола S1 ) = 
               гр_сущ( &Число, &Лицо ) сказуемое( &S1 ) ;
   @Структура  ядро_повест = 
               гр_сущ( &Число, &Лицо, %И, &Род ) 
               сказуемое( Лицо, Число, Род ) 
               ;
   @Таблица( лицо Лицо = лицо Лицо ) 
   { 1е = 1е ; 
     2е = 2е ; 
     3е = 3е ; 
   }
   @Таблица( число Число = число Число ) 
   { Ед = Ед ; 
     Мн = Мн ; 
   }
}

@Перевод
{
   @Выбор      ядро_вопрос1a( см_глагола S1 ) = 
               ядро_вопрос_модальное( &S1 ) ядро_вопрос( &S1 ) ;
   @Выбор      ядро_вопрос1a = ядро_вопрос_модальное( %Нет ) ядро_вопрос( %Нет ) ;
}

@Перевод
{
   @Структура  ядро_вопрос1( см_глагола S1 ) = 
               Вопрос_к_подлежащему сказуемое( &S1 ) ;
   @Структура  ядро_вопрос1 = 
               Вопрос_к_подлежащему( %И ) сказуемое( %3е, %Ед, %М ) ;
}

@Перевод
{
   @Структура  ядро_вопрос2( см_глагола S1 ) = 
               Вопрос_к_обстоятельству ядро_вопрос1a( &S1 ) ;
   @Структура  ядро_вопрос2 = Вопрос_к_обстоятельству ядро_вопрос1a ;
}

// ---------------- ядро --------------------------------------------------
@Перевод
{
   @Выбор      ядро( см_глагола S1 ) = 
               ядро_модальное( &S1 ) 
               ядро_повест( &S1 ) 
               ядро_вопрос_модальное( &S1 ) 
               ядро_вопрос( &S1 ) 
               ядро_вопрос1( &S1 ) 
               ядро_вопрос2( &S1 ) 
               ядро_повелит( &S1 ) 
               ;
   @Выбор      ядро = 
               ядро_модальное 
               ядро_повест 
               ядро_вопрос_модальное( %Нет ) 
               ядро_вопрос( %Нет ) 
               ядро_вопрос1 
               ядро_вопрос2 
               ядро_повелит 
               ;
}

@Перевод
{
   @Выбор      ядро_прид( см_глагола S1 ) = 
               ядро_повест( &S1 ) ядро_модальное( &S1 ) ;
   @Выбор      ядро_прид = ядро_повест ядро_модальное ;
}

// ----------- фраза обычная ------------------------------
@Перевод
{
   @Структура  фраза_а = ядро( &S1 ) хвост_а ;
   @Структура  фраза_а = ядро хвост_а ;
}

@Перевод
{
   @Структура  фраза_б = ядро( %восприятия ) все_все ;
   @Структура  фраза_б = ядро все_все ;
}

@Перевод
{
   @Структура  фраза_вопрос3 = 
               Вопрос_к_подлежащему ядро_вопрос1a( &S1 ) хвост_а Предлог ;
   @Структура  фраза_вопрос3 = 
               Предлог( &Падеж ) 
               Вопрос_к_подлежащему( Падеж ) 
               ядро_вопрос1a 
               хвост_а 
               ;
}

@Перевод
{
   @Выбор      фраза_0 = фраза_пп фраза_have_пп фраза_а фраза_б фраза_вопрос3 ;
   @Выбор      фраза_0 = фраза_пп фраза_have_пп фраза_а фраза_б фраза_вопрос3 ;
}

@Перевод
{
   @Структура  фраза = _пред_обстоятельство фраза_0 _обстоятельство ;
   @Структура  фраза = _пред_обстоятельство фраза_0 _обстоятельство ;
}

// ---------- фраза придаточная ----------------------------
@Перевод
{
   @Структура  фраза_а_прид = ядро_прид( &S1 ) хвост ;
   @Структура  фраза_а_прид = ядро_прид хвост ;
}

@Перевод
{
   @Структура  фраза_б_прид = ядро_прид( %восприятия ) все_все ;
   @Структура  фраза_б_прид = ядро_прид все_все ;
}

@Перевод
{
   @Выбор      фраза_прид1 = 
               фраза_прид_пп фраза_have_прид_пп фраза_а_прид фраза_б_прид ;
   @Выбор      фраза_прид1 = 
               фраза_прид_пп фраза_have_прид_пп фраза_а_прид фраза_б_прид ;
}

// **************************************************************************
//            фраза с глаголом have
// **************************************************************************
@Перевод
{
   @Выбор      ядро_have = 
               ядро_have_модальное 
               ядро_have_вопрос_модальное 
               ядро_повест_have 
               ядро_вопрос_have 
               ядро_вопрос_have1 
               ;
   @Выбор      ядро_have( число &Число, род &Род, падеж Падеж ) = 
               ядро_have_модальное( Число, Род, &Падеж ) 
               ядро_have_вопрос_модальное( %Нет ) 
               ядро_повест_have( Число, Род, &Падеж ) 
               ядро_вопрос_have 
               ядро_вопрос_have1( Число, Род, &Падеж ) 
               ;
}

@Перевод
{
   @Выбор      ядро_have_прид = ядро_повест_have ;
   @Выбор      ядро_have_прид( число &Число, род &Род, падеж Падеж ) = 
               ядро_повест_have( Число, Род, &Падеж ) ;
}

@Перевод
{
   @Структура  фраза_have1 = _пред_обстоятельство ядро_have хвост_have ;
   @Структура  фраза_have1 = 
               _пред_обстоятельство 
               ядро_have( Число, Род, &Падеж ) 
               хвост_have( &Число, Падеж, &Род ) 
               ;
}

@Перевод
{
   @Выбор      фраза_have = фраза_have1 фраза_вопрос_have2 ;
   @Выбор      фраза_have = фраза_have1 фраза_вопрос_have2 ;
}

@Перевод
{
   @Структура  фраза_have_прид = ядро_have_прид хвост_have ;
   @Структура  фраза_have_прид = 
               ядро_have_прид( Число, Род, &Падеж ) 
               хвост_have( &Число, Падеж, &Род ) 
               ;
}

// **************************************************************************
//                 фраза с глаголом be
// **************************************************************************
@Перевод
{
   @Структура  ядро_be_прид = гр_сущ( &Число, &Лицо ) сказуемое_be0 ;
   @Структура  ядро_be_прид( число Число, род Род ) = 
               гр_сущ( &Число, &Лицо, %И, &Род ) 
               сказуемое_be0( Лицо, Число, Род ) 
               ;
   @Таблица( лицо Лицо = лицо Лицо ) 
   { 1е = 1е ; 
     2е = 2е ; 
     3е = 3е ; 
   }
   @Таблица( число Число = число Число ) 
   { Ед = Ед ; 
     Мн = Мн ; 
   }
}

@Перевод
{
   @Структура  ядро_вопрос_be1 = Вопрос_к_подлежащему сказуемое_be0 ;
   @Структура  ядро_вопрос_be1 = 
               Вопрос_к_подлежащему( %И ) сказуемое_be0( %3е, %Ед, %М ) ;
}

@Перевод
{
   @Структура  ядро_вопрос_be2 = Вопрос_к_обстоятельству ядро_вопрос_be ;
   @Структура  ядро_вопрос_be2 = Вопрос_к_обстоятельству ядро_вопрос_be( %Нет ) ;
}

// ---------------- ядро be ----------------------------------------------
@Перевод
{
   @Выбор      ядро_be = 
               ядро_be_модальное 
               ядро_be_прид 
               ядро_вопрос_be_модальное 
               ядро_вопрос_be 
               ядро_вопрос_be1 
               ядро_вопрос_be2 
               ядро_повелит_be 
               ;
   @Выбор      ядро_be( число Число, род Род ) = 
               ядро_be_модальное 
               ядро_be_прид( &Число, &Род ) 
               ядро_вопрос_be_модальное( %Да ) 
               ядро_вопрос_be( %Да ) 
               ядро_вопрос_be1 
               ядро_вопрос_be2 
               ядро_повелит_be 
               ;
}

@Перевод
{
   @Структура1 фраза_be_пп = ядро_be хвост_be_a ;
   @Структура1 фраза_be_пп = 
               ядро_be( &Число, &Род ) хвост_be_a( Число, Род, %Н, %И ) ;
   @Таблица( @Выбор = число Число )
   { @0 = Ед ; }
   @Таблица( @Выбор = род Род )
   { @0 = М ; }
}

@Перевод
{
   @Структура1 фраза_be_прид_пп = ядро_be_прид хвост_be_a ;
   @Структура1 фраза_be_прид_пп = 
               ядро_be_прид( &Число, &Род ) хвост_be_a( Число, Род, %Н, %И ) ;
   @Таблица( @Выбор = число Число )
   { @0 = Ед ; }
   @Таблица( @Выбор = род Род )
   { @0 = М ; }
}

@Перевод
{
   @Структура1 фраза_be_whether_пп = ядро_be_whether хвост_be_a ;
   @Структура1 фраза_be_whether_пп = 
               ядро_be_whether( &Число, &Род ) 
               хвост_be_a( Число, Род, %Н, %И ) 
               ;
   @Таблица( @Выбор = число Число )
   { @0 = Ед ; }
   @Таблица( @Выбор = род Род )
   { @0 = М ; }
}

// ------ фраза be+constant ------------------------------------
@Перевод
{
   @Структура2 фраза_be1_пп;
   @Структура2 фраза_be1_пп;
}

@Перевод
{
   @Структура2 фраза_be1_прид_пп;
   @Структура2 фраза_be1_прид_пп;
}

@Перевод
{
   @Структура2 фраза_be1_whether_пп;
   @Структура2 фраза_be1_whether_пп;
}

// --------------------------------------------------------------
@Перевод
{
   @Выбор      фраза_be_а = фраза_be_пп фраза_be1_пп ;
   @Выбор      фраза_be_а = фраза_be_пп фраза_be1_пп ;
}

@Перевод
{
   @Структура  фраза_be = _пред_обстоятельство фраза_be_а _обстоятельство ;
   @Структура  фраза_be = _пред_обстоятельство фраза_be_а _обстоятельство ;
}

@Перевод
{
   @Структура  фраза_be_предлог = 
               гр_сущ( &Число, &Лицо ) 
               сказуемое_be0 
               гр_квази_наречия 
               _хвост_квази_наречия 
               _обстоятельство 
               Предлог 
               ;
   @Структура  фраза_be_предлог = 
               Предлог( &П ) 
               гр_сущ( &Число, &Лицо, П, &Род ) 
               сказуемое_be0( Лицо, Число, Род ) 
               гр_квази_наречия 
               _хвост_квази_наречия 
               _обстоятельство 
               ;
}

// **************************************************************************
//                 фраза с there_is
// **************************************************************************
@Перевод
{
   @Структура  ядро_вопрос_there2 = Вопрос_к_обстоятельству ядро_вопрос_there ;
   @Структура  ядро_вопрос_there2( число &Число, род &Род ) = 
               Вопрос_к_обстоятельству ядро_вопрос_there( Число, Род, %Нет ) ;
}

@Перевод
{
   @Выбор      ядро_there = ядро_повест_there ядро_вопрос_there ядро_вопрос_there2 ;
   @Выбор      ядро_there( число &Число, род &Род, падеж Падеж ) = 
               ядро_повест_there( Число, Род, &Падеж, %Нет ) 
               ядро_вопрос_there( Число, Род, %Нет ) 
               ядро_вопрос_there2( Число, Род ) 
               ;
}

@Перевод
{
   @Структура  фраза_there = 
               _пред_обстоятельство ядро_there хвост_there_a _обстоятельство ;
   @Структура  фраза_there = 
               _пред_обстоятельство 
               ядро_there( Число, Род, &Падеж ) 
               хвост_there_a( &Число, Падеж, &Род ) 
               _обстоятельство 
               ;
// ------- грубое хакерство -----------
   @Таблица( @Выбор = падеж Падеж )
   { @0 = И ;
   }
}

@Перевод
{
   @Структура  фраза_there_прид = ядро_повест_there хвост_there_a _обстоятельство ;
   @Структура  фраза_there_прид = 
               ядро_повест_there( Число, Род, &Падеж, %Нет ) 
               хвост_there_a( &Число, Падеж, &Род ) 
               _обстоятельство 
               ;
// ------- грубое хакерство -----------
   @Таблица( @Выбор = падеж Падеж )
   { @0 = И ;
   }
}

// **************************************************************************
//                 фраза It is квазинаречие + that_фраза
// **************************************************************************
@Перевод
{
   @Структура  фраза_квазинаречие = 
               @0[it] 
               сказуемое_be 
               _No 
               гр_квази_наречия 
               _хвост_квази_наречия 
               _обстоятельство 
               ;
   @Структура  фраза_квазинаречие = 
               сказуемое_be( %3е, %Ед, %С ) 
               _No 
               гр_квази_наречия 
               _хвост_квази_наречия 
               _обстоятельство 
               ;
}

// -------------------------------------------------------------------------
@Перевод
{
// на самом деле придаточная
   @Выбор      фраза_повест = 
               фраза_прид1 
               фраза_have_прид 
               фраза_there_прид 
               фраза_прид_пп 
               фраза_be_прид_пп 
               фраза_be1_прид_пп 
               фраза_have_прид_пп 
               ;
   @Выбор      фраза_повест = 
               фраза_прид1 
               фраза_have_прид 
               фраза_there_прид 
               фраза_прид_пп 
               фраза_be_прид_пп 
               фраза_be1_прид_пп 
               фраза_have_прид_пп 
               ;
}

@Перевод
{
   @Структура  понять_значит_упростить = 
               _пред_обстоятельство to_inf( &S1 ) @0[is] to_inf( &S2 ) ;
   @Структура  понять_значит_упростить = 
               _пред_обстоятельство 
               to_inf( %Ед, %М ) 
               @0[значит] 
               to_inf( %Ед, %М ) 
               ;
}

@Перевод
{
   @Структура  понять_значит_упростить2 = 
               _пред_обстоятельство 
               глагол( &S1, %Ing ) 
               @0[is] 
               глагол( &S2, %Ing ) 
               ;
   @Структура  понять_значит_упростить2 = 
               _пред_обстоятельство 
               глагол( %Сов, %Inf, @0, @0, @0, @0, %Актив, @0 ) 
               @0[значит] 
               глагол( %Сов, %Inf, @0, @0, @0, @0, %Актив, @0 ) 
               ;
}