/*******************************************************************************
 * Copyright (c) 2004-2008 Andras Schmidt, Andras Balogh, Istvan Rath and Daniel Varro
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Andras Schmidt, Andras Balogh, Istvan Rath - initial API and implementation
 *******************************************************************************/

package org.eclipse.viatra2.modelChecker;

public enum EProblemType {
	/**
	 * The source end of the relation is not properly typed
	 */
	INVALID_RELATION_SOURCE_TYPE,
	/**
	 * The target end of the relation is not properly typed
	 */
	INVALID_RELATION_TARGET_TYPE,
	/**
	 * Relation is an aggregation relation but the source is not parent of
	 * target.
	 */
	AGGREGATION_INVALID,

	/**
	 * The source end of the relation is invalid
	 */
	INVALID_RELATION_SOURCE,

	/**
	 * The target end of the relation is invalid
	 */
	INVALID_RELATION_TARGET,

	/**
	 * Multiplicity refinement is invalid
	 */
	MULTIPLICITY_REFINEMENT_INVALID,
	/**
	 * Aggregation refinement is invalid
	 */
	AGGREGATION_REFINEMENT_INVALID,
	/**
	 * Multiplicity constraint of the relation is violated by outgoing relations
	 */
	OUTGOING_MULTIPLICITY_CONSTRAINT_VIOLATED,
	/**
	 * Multiplicity constraint of the relation is violated by incoming relations
	 */
	INCOMING_MULTIPLICITY_CONSTRAINT_VIOLATED,

	/**
	 * An invalid refinement between a relation and an entity
	 */
	INVALID_REFINEMENT,	
	/**
	 * The source end of a relation is not properly refined
	 */
	INVALID_REFINEMENT_SOURCE_TYPE,
	/**
	 * The target end of a relation is not properly refined
	 */
	INVALID_REFINEMENT_TARGET_TYPE,

}
