示例#1
0
        public override IAbstractDomain Widening(IAbstractDomain prev)
        {
            var previous     = (SimpleArrayAbstractDomain <Variable, Expression>)prev;
            var leftWidened  = (INumericalAbstractDomain <Variable, Expression>) this.Left.Widening(previous.Left);
            var rightWidened = (SimpleArrayPropertiesAbstractDomain <Variable, Expression>) this.Right.Widening(previous.Right);

            var widened = new SimpleArrayAbstractDomain <Variable, Expression>(leftWidened, rightWidened);

            return((IAbstractDomain)widened);
        }
示例#2
0
        public SimpleArrayAbstractDomain <Variable, Expression> Join(SimpleArrayAbstractDomain <Variable, Expression> a, Set <Variable> keep)
        {
            SimpleArrayAbstractDomain <Variable, Expression> result;

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

            var joinLeftPart  = (INumericalAbstractDomain <Variable, Expression>) this.Left.Join(a.Left);
            var joinRightPart = this.Right.Join(a.Right, keep);

            return((SimpleArrayAbstractDomain <Variable, Expression>) this.Reduce(joinLeftPart, joinRightPart));
        }