public Universal(string name, PredicateVariable variable) : base(name, variable) { }
public Quantifier(string name, PredicateVariable variable) : base(name) { this._subtitution = false; this._variable = variable; }
public Existential(string name, PredicateVariable variable) : base(name, variable) { }
// help with creating binary tree private void InsertTreeHelper(ref Node n, string c) { switch (c) { case "&": n = new AndOperator(c); n.LeftNode = this._myStack.Pop(); n.RightNode = this._myStack.Pop(); this._myStack.Push(n); break; case "|": n = new OrOperator(c); n.LeftNode = this._myStack.Pop(); n.RightNode = this._myStack.Pop(); this._myStack.Push(n); break; case ">": n = new Implication(c); n.LeftNode = this._myStack.Pop(); n.RightNode = this._myStack.Pop(); this._myStack.Push(n); break; case "~": n = new Negation(c); n.RightNode = this._myStack.Pop(); this._myStack.Push(n); break; case "=": n = new BiImplication(c); n.LeftNode = this._myStack.Pop(); n.RightNode = this._myStack.Pop(); this._myStack.Push(n); break; case "%": n = new NANDOperator(c); n.LeftNode = this._myStack.Pop(); n.RightNode = this._myStack.Pop(); this._myStack.Push(n); break; case "!": n = new Existential(c, new PredicateVariable(this._myStack.Pop().ToString())); n.RightNode = this._myStack.Pop(); this._myStack.Push(n); break; case "@": n = new Universal(c, new PredicateVariable(this._myStack.Pop().ToString())); n.RightNode = this._myStack.Pop(); this._myStack.Push(n); break; default: if (char.IsLower(char.Parse(c))) { n = new PredicateVariable(c); this._myStack.Push(n); } else { n = new Variable(c); int total = this._myStack.Count; for (int i = 0; i < total; i++) { if (_myStack.Peek() is PredicateVariable p) { n.AddVariable(p); _myStack.Pop(); } } this._myStack.Push(n); } break; } }
public override void ChangeVariable(PredicateVariable p) { this._subtitution = true; this._name = p.ToString(); }
public virtual void AddVariable(PredicateVariable p) { }
public virtual void ChangeVariable(PredicateVariable p) { }