Denotational semantics are abstract functions that give meaning to statements of a programming language. They accept an expression and return a value.
But how do you define denotational semantics for languages that define, for example, functions (and later use these functions), or global variables, and change some global state of the program?
I think the simplest way to do it would be to define the semantics function so that it returns a pair of values and a "global state" instead of just a value.
But is there a place I can read about it some more? I am sure someone have done something like that. For example, is there denotational semantics for languages like Java or C?
It would be nice to find a book that focuses on denotational semantics for programming languages which are not necessarily purely functional (though I think functional languages, like LISP, can also change a global state).