Originally posted by: nortexoid
There really isn't anything inaccurate in what I wrote. To be clearer, 'denumerable' means countable and 'nondenumerable' means uncountable. If I do not specify being infinite or not, as in "denumerably many symbols", then I am implying the possibility that there be infinitely many (but at most denumerably many). When I say nondenumerable, I just mean having the same cardinality as the set of real numbers.
I didn't say it was inaccurate, just confusing.
😛
Why not just call them 'countably infinite' and 'uncountably infinite' like the rest of the world?
😕
The symbols I am talking about are the symbols of the language, which include as subsets...
Okay, so by 'symbols' you meant 'predicates' or 'any logical construct in the language'. The sentence was vague (so I wasn't sure if you were referring to just variables/constants, or any 'symbols').
Your comment "If you have a finite number of rules/symbols, but your inputs are of an arbitrary (and potentially infinite) length, then yes, you should be able to guarantee solvability/decidability (at least for languages in the Chomsky Language Hierarchy)" seems incorrect, depending on what you mean by the parenthetical remark. We know that classical first-order predicate logic with predicates of arity n>1 is undecidable. Specifically, it is only semidecidable (i.e. the decision problem for validity is semidecidable.)
Hmm... good point. If you're allowing arbitrarily complex predicates, that does screw with things. I guess I was thinking more in terms of semidecidability/provability than true decidability, since looking at it again, it's definitely not going to work for all rulesets.
If your input length is potentially unbounded, you
definitely cannot guarantee a bounded decidability runtime on a Turing Machine (or computation equivalent), even if you can guarantee decidability. The only way you could is if your runtime was constant (which would require that the rules not actually depend on the input).
Also, looking at your OP again, I'm *really* not sure how you would define a predicate with infinite arity and not have *that* take an unbounded amount of time to compute (unless it is a fairly trivial predicate, or you assume that they can all be computed in constant time or something).
I get the bounded runtime part, but how does that reduce to solving the halting problem (which is unsolvable)?
Basically, if you had a machine/algorithm that could decide on such languages in bounded time, you could solve the halting problem. At least, IIRC and I'm not screwing up. It's been a while since I've had to do anything this stupidly theoretical involving computational complexity, and computational theory was never my strong suit.
😛