# "featureName" property - name of the feature
featureName=PTP Graphical Explorer of MPI Programs (GEM)

# "providerName" property - name of the company that provides the feature
featureProvider=Eclipse PTP

# "description" property - description of the feature
description=GEM is a tool for deadlock detection and other formal analyses in MPI C/C++ applications. \n
GEM serves as a graphical front end for In-situ Partial Order (ISP), \n\
a dynamic formal verification tool for MPI developed at the School of Computing, University of Utah. \n\
Whether you are new to MPI or are an advanced user, GEM will help you debug your MPI programs, \n\
and graphically show many valuable facts, including all the possible send/receive matches, \n\
and synchronizations. GEM also includes features to help users understand and debug the program across \n\
all platforms on which it may be run (e.g. highlighting deadlocks that may occur due to differing \n\
communication buffer allocations). For a given test harness, GEM  will allow you to explore only \n\
the relevant process interleavings, which are much smaller than the number of total feasible interleavings. \n
GEM also guarantees to discover and explore all non-deterministic matches at runtime.

# copyright
copyright=\
Copyright (c) 2009 University of Utah School of Computing\
50 S Central Campus Dr. 3190 Salt Lake City, UT 84112\
http://www.cs.utah.edu/formal_verification/\
\n\
All rights reserved. This program and the accompanying materials\n\
are made available under the terms of the Eclipse Public License v1.0\n\
which accompanies this distribution, and is available at\n\
http://www.eclipse.org/legal/epl-v10.html\n
