On Sep 30, 2010, at 1:39 AM, Patrick Browne wrote:
I think my original question can be rephrased as:
Can type classes preserve satisfaction under the the expansion sentences
(signature/theory morphisms inducing a model morphism).
According to [1] expansion requires further measures (programming?)
which you demonstrated. But this raises are further question. Does
Haskell’s multiple inheritance represent a model expansion where the
classes in the context of an instance are combined in the new bigger model?
In principle, the answer is yes (I think). But I kept running into walls when I tried. It is almost as if there is "too big" a gap to be filled between compile-time and run-time. At least for the approaches I tried.
I have two suggestions though. First, monadism is a great way to approach this problem from a run-time level. Indeed, a monad is an interpreter, which comes with the associated notions of a free algebra/model and the like. Injecting a new axiom amounts to creating a new monadic action. Monad transformers can do lifting and lowering in a fairly straight forward way.
Another suggestion is to check out the OOHaskell paper. I know they use type level forcing to get stuff done, but I guess they used a different cluster of extensions than I tried.
http://homepages.cwi.nl/~ralf/OOHaskell/
Sorry for the delay in responding.
-Alex