001/** 002 * Domain.java 003 * 004 * Copyright (c) 2004-2012, Nicole C. Tedesco. All rights reserved. 005 * 006 * Licensed under the Apache License, Version 2.0 (the "License"); 007 * you may not use this file except in compliance with the License. 008 * You may obtain a copy of the License at: 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 019package net.sf.jaccumulator; 020 021import net.sf.jaccumulator.scalars.NumericProperties; 022 023/** 024 * Lemma for data domain specifications for specific implementation strategies. 025 * Singleton lemma such as this do not make perfect numeric 026 * {@link NumericProperties property} predicates. For instance, an object's 027 * implementation may manipulate {@link #MODULO} values, but those values are 028 * also numerically {@link #REAL} or {@link #IMAGINARY}. Instead, these lemma 029 * are hints regarding the general domain of values produced by specific 030 * implementation strategies, such as real number vectors, {@link #FUNCTION 031 * functions}, or more amorphous {@link #ALGEBRAIC algebraic} structures. 032 * 033 * @since JAccumulator 4.0 034 * @author Nicole Tedesco (<a 035 * href="mailto:Nicole@NicoleTedesco.com">Nicole@NicoleTedesco.com</a>) 036 */ 037public enum Domain 038{ 039 /** 040 * An abstract, algebraic structure with no additional known properties 041 */ 042 ALGEBRAIC, 043 044 /** 045 * A tuple consisting of both a {@link #REAL} and an {@link #IMAGINARY} 046 * vector 047 */ 048 COMPLEX, 049 050 /** 051 * The empty set, {@code null} or {@code void}. Not that the empty set is a 052 * member of <i>every</i> domain category. 053 */ 054 EMPTY, 055 056 /** 057 * A domain of functions 058 */ 059 FUNCTION, 060 061 /** 062 * A vector into the set of imaginary numbers 063 */ 064 IMAGINARY, 065 066 /** 067 * A modulo, or finite ring of real numbers 068 */ 069 MODULO, 070 071 /** 072 * A vector into the set of real numbers 073 */ 074 REAL, 075 076 /** 077 * A character tuple 078 */ 079 TEXT, 080 081 /** 082 * Not enough is known about this domain 083 */ 084 UNKNOWN, 085 086 ; 087}