public override StateFormula existentialNormalForm()
        {
            // AG phi = NOT EG (NOT phi)
            StateFormula e_operand = operand.existentialNormalForm();
            StateFormula not_phi   = new SNot(e_operand);

            StateFormula exists_always = new SEAlways(not_phi);

            return(new SNot(exists_always));
        }
예제 #2
0
        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());
        }