/// <summary> /// Visits the <paramref name="formula." /> /// </summary> public override void VisitUnaryFormula(UnaryFormula formula) { if (formula.Operator == UnaryOperator.All || formula.Operator == UnaryOperator.Exists) { _containsInvalidOperators = true; } else { Visit(formula.Operand); } }
/// <summary> /// Visits the <paramref name="formula." /> /// </summary> public override void VisitUnaryFormula(UnaryFormula formula) { switch (formula.Operator) { case UnaryOperator.Not: Visit(formula.Operand); _expression = Expression.Not(_expression); break; default: throw new InvalidOperationException("Only state formulas can be evaluated."); } }
public bool IsCompilable; //information propagated from children to parents /// <summary> /// Visits the <paramref name="formula." /> /// </summary> public override void VisitUnaryFormula(UnaryFormula formula) { switch (formula.Operator) { case UnaryOperator.Not: Visit(formula.Operand); break; default: // formula itself is not compilable, so add child if possible Visit(formula.Operand); if (IsCompilable) { MaximalCompilableFormulas.Add(formula.Operand); } IsCompilable = false; break; } }
/// <summary> /// Visits the <paramref name="formula." /> /// </summary> public override void VisitUnaryFormula(UnaryFormula formula) { _builder.Append("("); switch (formula.Operator) { case UnaryOperator.Next: _builder.Append(" X "); break; case UnaryOperator.Finally: _builder.Append(" F "); break; case UnaryOperator.Globally: _builder.Append(" G "); break; case UnaryOperator.Not: _builder.Append(" ! "); break; case UnaryOperator.All: _builder.Append(" A "); break; case UnaryOperator.Exists: _builder.Append(" E "); break; case UnaryOperator.Once: _builder.Append(" Once "); break; default: Assert.NotReached($"Unknown or unsupported unary operator '{formula.Operator}'."); break; } Visit(formula.Operand); _builder.Append(")"); }
/// <summary> /// Visits the <paramref name="formula." /> /// </summary> public override void VisitUnaryFormula(UnaryFormula formula) { var referenceFormula = _referenceFormula as UnaryFormula; if (referenceFormula == null) { IsEqual = false; } else { if (formula.Operator != referenceFormula.Operator) { IsEqual = false; } else { _referenceFormula = referenceFormula.Operand; Visit(formula.Operand); } } }
/// <summary> /// Visits the <paramref name="formula." /> /// </summary> public override void VisitUnaryFormula(UnaryFormula formula) { IsFormulaReturningBoolValue = true; }
/// <summary> /// Visits the <paramref name="formula." /> /// </summary> public override void VisitUnaryFormula(UnaryFormula formula) { Visit(formula.Operand); }
/// <summary> /// Visits the <paramref name="formula." /> /// </summary> public override void VisitUnaryFormula(UnaryFormula formula) { IsReturningRewardResult = false; }
/// <summary> /// Visits the <paramref name="formula." /> /// </summary> public override void VisitUnaryFormula(UnaryFormula formula) { Visit(formula.Operand); CurrentFormula = new UnaryFormula(CurrentFormula, formula.Operator); }