예제 #1
0
        public IArrayAbstraction <Variable, Expression> ArrayUnknown(Set <int> dimensions, ExpressionType type)
        {
            var result = new SimpleArrayAbstraction <Variable, Expression>(this.encoder, this.decoder);
            IAbstractDomainForEnvironments <Variable, Expression> topProperty;

            switch (type)
            {
            case ExpressionType.Int8:
            case ExpressionType.Int16:
            case ExpressionType.Int32:
            case ExpressionType.Int64:
            case ExpressionType.UInt8:
            case ExpressionType.UInt16:
            case ExpressionType.UInt32:
                topProperty = new OctagonEnvironment <Variable, Expression>(this.decoder, this.encoder, OctagonEnvironment <Variable, Expression> .OctagonPrecision.FullPrecision);
                break;

            default:
                topProperty = new FakeAbstractDomain <Variable, Expression>(this.decoder);
                break;
            }

            foreach (var dim in dimensions)
            {
                result.content.Add(dim, (IAbstractDomainForEnvironments <Variable, Expression>)topProperty.Clone());
            }

            return((IArrayAbstraction <Variable, Expression>)result);
        }
예제 #2
0
 public FakeAbstractDomain(FakeAbstractDomain <Variable, Expression> source)
 {
     this.decoder = source.decoder;
     this.state   = source.state;
 }