Beispiel #1
0
        protected IEnumerable <Proposition> ConvertFromAST(AST ast, Language.Symbol oper)
        {
            if (ast == null)
            {
                return(null);
            }

            List <Proposition> result = new List <Proposition>();
            string             type   = ast.GetType().Name;

            if (type == "ASTOpBinary")
            {
                ASTOpBinary opBin = ast as ASTOpBinary;
                if (opBin.value == oper)
                {
                    result.AddRange(ConvertFromAST(opBin.left, oper));
                    result.AddRange(ConvertFromAST(opBin.right, oper));
                    return(result);
                }
            }

            // else
            result.Add(Proposition.FromAST(ast));
            return(result);
        }
Beispiel #2
0
 public MultipleOperation(Proposition prop)
 {
     if (prop is BinaryOperation)
     {
         m_props = new List <Proposition>(Plainify(prop));
     }
     else
     {
         m_props.Add(prop);
     }
 }
Beispiel #3
0
        protected IEnumerable <Proposition> Plainify(Proposition prop, string type = null)
        {
            List <Proposition> result = new List <Proposition>();

            if (prop is BinaryOperation)
            {
                if (type == null)
                {
                    type = prop.GetType().Name;
                }

                if (prop.GetType().Name.Equals(type))
                {
                    BinaryOperation binary = prop as BinaryOperation;
                    result.AddRange(Plainify(binary.Left));
                    result.AddRange(Plainify(binary.Right));
                    return(result);
                }
            }

            // else:
            result.Add(prop);
            return(result);
        }
Beispiel #4
0
 /// <summary>
 /// Compare if this proposition negates other.
 /// </summary>
 /// <param name="other">Proposition to compare negation to</param>
 /// <returns>If this proposition negates the other one</returns>
 public virtual bool Negates(Proposition other)
 {
     return(this.Negated().Equals(other));
 }
Beispiel #5
0
 public MultipleDisjunction(Proposition prop) : base(prop)
 {
 }
Beispiel #6
0
 public ExclusiveDisjunctionProposition(Proposition p, Proposition q) : base(p, q)
 {
 }
Beispiel #7
0
 public EquivalentProposition(Proposition p, Proposition q) : base(p, q)
 {
 }
Beispiel #8
0
 public ImpliesProposition(Proposition p, Proposition q) : base(p, q)
 {
 }
Beispiel #9
0
 public DisjunctiveProposition(Proposition p, Proposition q) : base(p, q)
 {
 }
Beispiel #10
0
 // Constructors
 public NegationProposition(Proposition p) : base(p)
 {
 }
Beispiel #11
0
 // transitional constructor
 public BinaryOperation(ASTOpBinary ast)
 {
     Left  = Proposition.FromAST(ast.left);
     Right = Proposition.FromAST(ast.right);
 }
Beispiel #12
0
 public BinaryOperation(Proposition p, Proposition q)
 {
     Left = p; Right = q;
 }
Beispiel #13
0
 // transitional constructor.
 public UnaryOperation(ASTOpUnary ast)
 {
     P = Proposition.FromAST(ast.ast);
 }
Beispiel #14
0
 public UnaryOperation(char letter)
 {
     P = new SingleProposition(letter);
 }
Beispiel #15
0
 // Constructor
 public UnaryOperation(Proposition p)
 {
     P = p;
 }