Otter and MACE Legal Information

November 21, 2001.

This information refers to the Otter and MACE automated deduction
software, created at Argonne National Laboratory.

Copyrights

The University of Chicago has declined to assert its
copyrights in this software.  It may be used by the public without
restriction and is available by download at www.mcs.anl.gov/AR/otter/.

License

This material resulted from work developed under a U.S. Government contract 
and is subject to the following license: the Government is granted for 
itself and the public a paid-up, nonexclusive, irrevocable worldwide 
license in this material to reproduce, prepare derivative works, distribute 
copies to the public, and perform publicly and display publicly.

Disclaimer

NEITHER THE UNITED STATES GOVERNMENT NOR ANY AGENCY THEREOF, NOR ANY OF 
THEIR EMPLOYEES OR OFFICERS, MAKES ANY  WARRANTY, EXPRESS OR IMPLIED, OR 
ASSUMES ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, 
COMPLETENESS, OR USEFULNESS OF ANY INFORMATION, APPARATUS, PRODUCT, OR 
PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT INFRINGE PRIVATELY 
OWNED RIGHTS.

