Lisp has been criticized as a language that cannot handle all of the
type classes.<p>The essential claim, as I understand it, is that Lisp could
not handle type union, intersection, and negation. I've been slowly
working to better understand that criticism.<p>In this paper (p3) the author writes
( https://www.irif.fr/~gc/papers/set-theoretic-types-2022.pdf )
The more precise is a type the fewer functions
it types, the most precise type being one that, as
(¬false→false)&(false→true)
completely defines the semantics of a function.<p>While I agree with the first half of the sentence about
the precision of a type, it seems to me that "type" and
"semantics" are categorically different.<p>Trying to claim that types capture semantics seems to
extend an essentially mechanical process (typing) to an
essentially philosophical one (semantics).<p>So my question is, "Am I incorrect in claiming that types
and semantics are categorically different"? This matters
in the kind (pun) of work I'm trying to do, especially in
the struggle of defining specifications.<p>Like Godel, I keep struggling with self-referential and
self-modifying systems (self-reproducing robots being my
actual domain of research). Systems with these properties
have types and semantics that can "move" over time.<p>A self-modifying system (e.g a neural network) could start out
properly classifying inputs (e.g. cat vs dog) but over time add a
third "type" of "don't know" as more training occurs. That isn't a
temporal logic or fuzzy logic but more of a "morphing(?) logic".
Here time is not the subject of logic reasoning but the essence of the
mechanism of reasoning.<p>The game gets even worse as my neural nets can change
structure, get feedback from their own output as input,
split into and/or join with other nets, and accept their own
structure as input and output (similar to genetic algorithms).
The physical model is closer to yeast cells than neural nets.
( https://www.wiley.com/en-us/Yeast%3A+Molecular+and+Cell+Biology%2C+2nd+Edition-p-9783527332526 )
(Lest you think I'm joking, yeast can find optimal paths in graphs and
optimally solve mazes.)
All of this nonsense sits on self-modifying hardware (FPGAs).<p>Godel considered self-reference but not self-modification.
Might a system that can't currently solve a problem slowly
self-modify into one that could?