User databases are defined in implemented as a dummy type whose only attribute its identifying string. The underlying data is stored in files from which an object can be reconstructed. Examples of databases are: > DBBM := BrandtModuleDatabase(); > DBBM; Brandt module database > DBQA := QuaternionAlgebraDatabase(); > DBQA; Quaternion algebra database > DBMP := ModularPolynomialDatabase(); > DBMP; Modular polynomial database > DBLG := LatticeGeneraDatabase(); > DBLG; Lattice genera database Then an object can be retrieved from the database with a simple function call: > QuaternionIdealClasses(DBQA,10007,1); Left ideal classes of quaternion order of level (10007,1) The interface with the database files is encapsulated in the access functions, while the databases themselves are extensible (to avoid redundant expensive calculations). N.B. If you find an error of the following form: > QuaternionIdealClasses(DBQA,10007,1); >> QuaternionIdealClasses(DBQA,10007,1); ^ Runtime error in 'QuaternionIdealClasses': No data file for this discriminant and level The underlying data is not represented in the database, or (in this case) you need to request it from me. David Kohel