Mathematical rigour added