public override StateFormula existentialNormalForm() { // AG phi = NOT EF (NOT phi) = NOT E (true U (NOT phi)) StateFormula e_operand = operand.existentialNormalForm(); StateFormula not_phi = new SNot(e_operand); StateFormula true_state = new SBoolean(true); StateFormula exists_until = new SEUntil(true_state, not_phi); return(new SNot(exists_until)); }
public override StateFormula existentialNormalForm() { // E(p W w) = NE((Nw) U (Np AND Nw)) StateFormula not_right1 = new SNot(right); StateFormula not_right2 = new SNot(right); StateFormula not_left = new SNot(left); StateFormula and = new SAnd(not_left, not_right2); StateFormula exists_until = new SEUntil(not_right1, and); StateFormula not_exists_until = new SNot(exists_until); return(not_exists_until.existentialNormalForm()); }
public override StateFormula existentialNormalForm() { // A(p U w) = NOT E(NOT w U (NOT p AND NOT w)) AND NOT EG NOT w StateFormula not_right1 = new SNot(right); StateFormula not_right2 = new SNot(right); StateFormula not_right3 = new SNot(right); StateFormula not_left = new SNot(left); StateFormula inner_and = new SAnd(not_left, not_right2); StateFormula exists_until = new SEUntil(not_right1, inner_and); StateFormula not_exists_left = new SNot(exists_until); StateFormula exists_always = new SEAlways(not_right3); StateFormula not_exists_right = new SNot(exists_always); StateFormula outer_and = new SAnd(not_exists_left, not_exists_right); return(outer_and.existentialNormalForm()); }