[isabelle-dev] type errors when defining subclasses of HOLCF type classes

Florian Haftmann florian.haftmann at informatik.tu-muenchen.de
Tue Oct 26 15:18:57 CEST 2010


Hi Brian,

first of all, your report has indeed exposed a flaw in the processing of
class declarations which has been corrected in
http://isabelle.in.tum.de/repos/isabelle/rev/eddda8e38360,

Unfortunately, the processing of class declarations is notoriously
difficult, especially if the infamous "base sort" is something else than
{type}.

> class foo = cpo +
>   fixes foo :: "'a → 'a"
> 
> class bar = foo + pcpo +
>   assumes "foo⋅⊥ = ⊥"

The main issue is that ⊥ is just "global" as ⊥::pcpo;  for be able to
cope with such class specification may feature a specific "base sort":

> class foo =
>   fixes foo :: "'a → 'a"
> 
> class bar =
>   assumes "foo⋅⊥ = (⊥::'a::{foo, pcpo})"

But is extremely difficult if not impossible to mix base-sort-based
inheritance with the regular class inheritance.  If ⊥ would exist in a
local variant in class pcpo, you would just write:

> class foo = cpo +
>   fixes foo :: "'a::type → 'a"
>
> class bar = foo + pcpo +
>   assumes "foo⋅(⊥'a::::type) = ⊥"

I admit that the class command comes with a strong assumption that users
develop their specifications locally if they want refer to them in class
specifications and if not the old-style axclass sometimes appeared more
leigthweight.  However additional options etc. emulating this old
behaviour complicate the whole matter notoriously.

	Florian

-- 

Home:
http://www.in.tum.de/~haftmann

PGP available:
http://home.informatik.tu-muenchen.de/haftmann/pgp/florian_haftmann_at_informatik_tu_muenchen_de

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 262 bytes
Desc: OpenPGP digital signature
URL: <https://mailmanbroy.informatik.tu-muenchen.de/pipermail/isabelle-dev/attachments/20101026/a95f47ed/attachment.asc>


More information about the isabelle-dev mailing list