In most programming languages, mentioning an object inside it's definition can cause a lot of trouble at compile time because what's being mentioned doesn't technically exist yet. But in mathematics is "forward referencing" allowed? Can I, for instance, define a set and use the set being defined in the definition?? For example, using set builder notation: S = {x in X : P(x)}. Where the formula P makes mention of S? Like, S = {(a,b) in AxB : for all b' [((a,b) in S and (a,b') in S) => (b = b')]}. Is that allowed in mathematics? If not, is there always a way to define things not mentioning them? In the case of the functional relation above, how would I do it?
Unless B is either empty or a singleton your definition of S makes no sense anyway. So I would work on fixing that first before worrying about the whole "forward referencing" issue.
My second definition of S does not matter, it was just an example.. You can forget about it completely if it helps. The actual question has to do with referencing objects within their definition. I'm just wondering if that is allowed or if it raises some contradiction.
If people are careless with their writing, then it happens sometimes. In principle one should be able to avoid this however.
I don't see any reason why you can't make a valid recursive definition, in a similar way to defining a recursive function in a programming language. But you need at least one alternative in the definition that is not recursive. But be careful - if you try to define "the set of all sets that are not members of themselves", bad stuff happens