Ejemplo n.º 1
0
        private static AST <UnnDecl> MkDecl(BaseSortSymb sort, Span span)
        {
            string name;
            var    result = API.ASTQueries.ASTSchema.Instance.TryGetSortName(sort.SortKind, out name);

            Contract.Assert(result);
            return(Factory.Instance.MkUnnDecl(name, Factory.Instance.MkId(name, span), span));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Returns true if this union accepts all the constants
        /// contains in the base sort
        /// </summary>
        internal bool AcceptsConstants(BaseSortSymb symbol)
        {
            Contract.Requires(symbol != null);

            if (!ContainsConstants)
            {
                return(false);
            }
            else if (elements.Contains(symbol))
            {
                return(true);
            }

            switch (symbol.SortKind)
            {
            case BaseSortKind.String:
            case BaseSortKind.Real:
                return(false);

            case BaseSortKind.Integer:
                return(elements.Contains(table.GetSortSymbol(BaseSortKind.Real)));

            case BaseSortKind.Natural:
            case BaseSortKind.NegInteger:
                return(elements.Contains(table.GetSortSymbol(BaseSortKind.Real)) ||
                       elements.Contains(table.GetSortSymbol(BaseSortKind.Integer)));

            case BaseSortKind.PosInteger:
                return(elements.Contains(table.GetSortSymbol(BaseSortKind.Real)) ||
                       elements.Contains(table.GetSortSymbol(BaseSortKind.Integer)) ||
                       elements.Contains(table.GetSortSymbol(BaseSortKind.Natural)));

            default:
                throw new NotImplementedException();
            }
        }
Ejemplo n.º 3
0
 internal UnnSortSymb(Namespace space, Span span, BaseSortSymb sort)
     : base(space, MkDecl(sort, span), true)
 {
     Sort = sort;
 }