public override Operator toExplicit() { if (m_domain == null || m_domain.Count == 0) { return null; } BinaryOperator bo = new OperatorOr(); bool first = true; foreach (Atom a in m_domain) { Operator o = m_operand.evaluate(m_quantifiedVariable, a); if (m_domain.Count == 1) { return o; } if (first) { first = false; bo.setLeftOperand(o); continue; } if (bo.getRightOperand() == null) { bo.setRightOperand(o); } else { BinaryOperator newbo = new OperatorOr(); newbo.setLeftOperand(bo); newbo.setRightOperand(o); bo = newbo; } } return bo; }
public HashSet<GeneratorNode> spawn(OperatorOr op) { HashSet<GeneratorNode> spawnedSet, outSet = new HashSet<GeneratorNode>(); // Do for left operand GeneratorNode wn = new GeneratorNode(this); Operator o2 = op.getLeftOperand(); wn.addToGamma(o2); spawnedSet = wn.spawn(); foreach (GeneratorNode gn in spawnedSet) { outSet.Add(gn); } // Do for right operand wn = new GeneratorNode(this); o2 = op.getRightOperand(); wn.addToGamma(o2); spawnedSet = wn.spawn(); if (spawnedSet != null) { foreach (GeneratorNode gn in spawnedSet) { outSet.Add(gn); } } return outSet; }