Esempio n. 1
0
        public ISolverStatement MakeNegation(ISolverStatement innerStatement)
        {
            //Variables
            ISolverStatement finalStatement = null;
            Term term = ((Z3Statement)innerStatement).Term;

            //
            finalStatement = new Z3Statement(_context.MkNot(term));
            return finalStatement;
        }
Esempio n. 2
0
        public ISolverStatement MakeOr(ISolverStatement leftStatement, ISolverStatement rightStatement)
        {
            //Variables
            ISolverStatement finalStatement = null;
            List<Term> terms = new List<Term>();
            terms.Add(((Z3Statement)leftStatement).Term);
            terms.Add(((Z3Statement)rightStatement).Term);

            //
            finalStatement = MakeOr(terms);
            return finalStatement;
        }
Esempio n. 3
0
        public ISolverStatement MakeLowerOrEqual(ISolverStatement leftStatement, ISolverStatement rightStatement)
        {
            //Variables
            ISolverStatement finalStatement = null;
            Term leftTerm = ((Z3Statement)leftStatement).Term;
            Term rightTerm = ((Z3Statement)rightStatement).Term;

            //
            finalStatement = new Z3Statement(_context.MkLe(leftTerm, rightTerm));
            return finalStatement;
        }
Esempio n. 4
0
        public ISolverStatement MakeImplies(string leftVarID, ISolverStatement rightStatement)
        {
            //Variables
            ISolverStatement finalStatement = null;
            Term leftTerm = _variables[leftVarID].Term;
            Term rightTerm = ((Z3Statement)rightStatement).Term;

            //
            finalStatement = new Z3Statement(_context.MkImplies(leftTerm, rightTerm));
            return finalStatement;
        }
Esempio n. 5
0
        public ISolverStatement MakeExcludes(ISolverStatement leftStatement, ISolverStatement rightStatement)
        {
            //Variables
            ISolverStatement finalStatement = null;
            Term leftTerm = ((Z3Statement)leftStatement).Term;
            Term rightTerm = ((Z3Statement)rightStatement).Term;

            //
            finalStatement = new Z3Statement(_context.MkNot(_context.MkAnd(leftTerm, rightTerm)));
            return finalStatement;
        }
Esempio n. 6
0
        public ISolverStatement MakeEquivalence(string leftVarID, ISolverStatement rightStatement)
        {
            //Variables
            ISolverStatement finalStatement = null;
            Term leftTerm = _variables[leftVarID].Term;
            Term rightTerm = ((Z3Statement)rightStatement).Term;

            //
            Z3Statement substatement1 = new Z3Statement(_context.MkImplies(leftTerm, rightTerm));
            Z3Statement substatement2 = new Z3Statement(_context.MkImplies(rightTerm, leftTerm));
            finalStatement = new Z3Statement(_context.MkAnd(substatement1.Term, substatement2.Term));
            return finalStatement;
        }
Esempio n. 7
0
        public ISolverStatement MakeAdd(ISolverStatement[] innerStatements)
        {
            //Variables
            ISolverStatement finalStatement = null;
            List<Term> terms = new List<Term>();
            foreach (ISolverStatement innerStatement in innerStatements)
            {
                terms.Add(((Z3Statement)innerStatement).Term);
            }

            //
            finalStatement = new Z3Statement(_context.MkAdd(terms.ToArray()));
            return finalStatement;
        }