some formal definitions