示例#1
0
        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));
        }
示例#2
0
        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());
        }