Ejemplo n.º 1
0
        public IAbstractDomain Meet(IAbstractDomain a)
        {
            IAbstractDomain result;

            if (AbstractDomainsHelper.TryTrivialMeet(this, a, out result))
            {
                return(result);
            }

            BoundedDisjunction <Variable, Expression> asDisjunctionDomain = a as  BoundedDisjunction <Variable, Expression>;

            Debug.Assert(asDisjunctionDomain != null);

            INumericalAbstractDomain <Variable, Expression> left  = SmashTogether(this.disjuncts);
            INumericalAbstractDomain <Variable, Expression> right = SmashTogether(asDisjunctionDomain.disjuncts);

            return(new  BoundedDisjunction <Variable, Expression>((INumericalAbstractDomain <Variable, Expression>)left.Meet(right)));
        }