give me a formal definition