Beispiel #1
0
 private LTLFormula(LTLFormula left, LTLFormula right, LTLOperator op, string atom)
 {
     this.Left = left;
     this.Right = right;
     this.Operator = op;
     this.Atomic = atom;
 }
Beispiel #2
0
 private bool Equals(LTLFormula other)
 {
     if (ReferenceEquals (null, other))
         return false;
     if (ReferenceEquals (this, other))
         return true;
     return Equals (other.Left, this.Left) && Equals (other.Right, this.Right) &&
            Equals (other.Operator, this.Operator) && Equals (other.Atomic, this.Atomic);
 }
Beispiel #3
0
        /// <summary>
        ///   Возвращает формулу "X <paramref name = "formula" />".
        /// </summary>
        /// <param name = "formula">Операнд.</param>
        /// <exception cref = "ArgumentNullException"><paramref name = "formula" /> является <c>null</c>.</exception>
        /// <returns>Темпоральный "сдвиг по времени" формулы.</returns>
        public static LTLFormula X(LTLFormula formula)
        {
            if (formula == null)
                throw new ArgumentNullException ("formula");

            return new LTLFormula (formula, null, LTLOperator.LTL_X, null);
        }
Beispiel #4
0
        /// <summary>
        ///   Возвращает формулу "<paramref name = "left" /> U <paramref name = "right" />".
        /// </summary>
        /// <param name = "left">Левый операнд.</param>
        /// <param name = "right">Правый операнд.</param>
        /// <exception cref = "ArgumentNullException"><paramref name = "left" /> является <c>null</c>.</exception>
        /// <exception cref = "ArgumentNullException"><paramref name = "right" /> является <c>null</c>.</exception>
        /// <returns>Темпоральное "условное ожидание" формул.</returns>
        public static LTLFormula U(LTLFormula left, LTLFormula right)
        {
            if (left == null)
                throw new ArgumentNullException ("left");

            if (right == null)
                throw new ArgumentNullException ("right");

            return new LTLFormula (left, right, LTLOperator.LTL_U, null);
        }
Beispiel #5
0
 /// <summary>
 ///   Возвращает формулу "<paramref name = "left" /> R <paramref name = "right" />".
 /// </summary>
 /// <remarks>
 ///   Темпоральная формула "f R g" будет представлена в виде "NOT ((NOT f) U (NOT g))".
 /// </remarks>
 /// <param name = "left">Левый операнд.</param>
 /// <param name = "right">Правый операнд.</param>
 /// <exception cref = "ArgumentNullException"><paramref name = "left" /> является <c>null</c>.</exception>
 /// <exception cref = "ArgumentNullException"><paramref name = "right" /> является <c>null</c>.</exception>
 /// <see cref = "U" />
 /// <see cref = "Not" />
 /// <returns>Темпоральная "разблокировка" формул.</returns>
 public static LTLFormula R(LTLFormula left, LTLFormula right)
 {
     return !(U (!left, !right));
 }
Beispiel #6
0
 /// <summary>
 ///   Возвращает формулу "G <paramref name = "formula" />".
 /// </summary>
 /// <remarks>
 ///   Темпоральная формула "G f" будет представлена в виде "NOT (F (NOT f))".
 /// </remarks>
 /// <param name = "formula">Операнд.</param>
 /// <exception cref = "ArgumentNullException"><paramref name = "formula" /> является <c>null</c>.</exception>
 /// <see cref = "F" />
 /// <see cref = "Not" />
 /// <returns>Темпоральный "оператор инвариантности" формулы.</returns>
 public static LTLFormula G(LTLFormula formula)
 {
     return !F (!formula);
 }
Beispiel #7
0
 /// <summary>
 ///   Возвращает формулу "F <paramref name = "formula" />".
 /// </summary>
 /// <remarks>
 ///   Темпоральная формула "F f" будет представлена в виде "TRUE U f".
 /// </remarks>
 /// <param name = "formula">Операнд.</param>
 /// <exception cref = "ArgumentNullException"><paramref name = "formula" /> является <c>null</c>.</exception>
 /// <seealso cref = "U" />
 /// <seealso cref = "TRUE" />
 /// <returns>Темпоральный "оператор происшествия" формулы.</returns>
 public static LTLFormula F(LTLFormula formula)
 {
     return U (TRUE, formula);
 }