[isabelle-dev] Problem with type inference in locale expressions

Florian Haftmann florian.haftmann at informatik.tu-muenchen.de
Thu Sep 11 09:32:43 CEST 2014


See now http://isabelle.in.tum.de/reports/Isabelle/rev/7f990b3d5189
which seems to do the job.  There a still dark corners wrt. to base sort
inference which maybe one day will lift its ugly head but for the moment
it is OK.

	Florian

On 10.09.2014 10:35, Florian Haftmann wrote:
> Hi Clemens,
> 
>> This is what I expected.  Type inference of locale expressions is
> inherently heuristic and probably you are hitting this.  (This could be
> verified further with a stack trace).  For more background, see also
> this earlier message:
> https://mailmanbroy.informatik.tu-muenchen.de/pipermail/isabelle-dev/2013-February/003821.html
> 
> thanks for that hint.
> 
> The problem the class target faces is to determine the so called base
> sort of the class specification, i.e. the sort that is inferred for the
> type parameter 'a from the import *and* the fixes/assumes as given by
> the user.  For this I cannot fix 'a in the first place.
> 
> I think I can circumvent this problem by adding a suitable plugin to the
> term/type check phase.  Let's seeā€¦
> 
> Best,
> 	Florian
> 
>>
>> Clemens
>>
>>
>> On 05 September, 2014 20:12 CEST, Florian Haftmann <florian.haftmann at informatik.tu-muenchen.de> wrote: 
>>  
>>>> Is this a regression in the type inference of locale expressions, or has it always (i.e. since 2009) been like this?
>>>
>>> Using the attached retrofitted theory, the same behaviour occurs:
>>>
>>>> $ /opt/Isabelle2009/Isabelle2009/bin/isabelle tty
>>>>> val it = () : unit
>>>> val commit = fn : unit -> bool
>>>> Welcome to Isabelle/HOL (Isabelle2009: April 2009)
>>>>> theory Foo imports Class_Clash begin
>>>> Loading theory "Class_Clash"
>>>> parameters
>>>>   f :: "'a => 'a => 'a"
>>>> constants
>>>>   F :: "'a => 'a => 'a"
>>>> parameters
>>>>   f :: "'a => 'a => 'a"
>>>> constants
>>>>   F :: "'a => 'a => 'a"
>>>> "plus"
>>>>   :: "'a => 'a => 'a"
>>>> "inf"
>>>>   :: "'b => 'b => 'b"
>>>> "plus"
>>>>   :: "'a => 'a => 'a"
>>>> "inf"
>>>>   :: "'a => 'a => 'a"
>>>> "plus"
>>>>   :: "'a => 'a => 'a"
>>>> "inf"
>>>>   :: "'a => 'a => 'a"
>>>> *** Type unification failed
>>>> *** Type error in application: Incompatible operand type
>>>> *** 
>>>> *** Operator:  op = inf :: ('b => 'b => 'b) => bool
>>>> *** Operand:   plus :: 'a => 'a => 'a
>>>> *** 
>>>> *** At command "locale" (line 64 of "/data/tum/drawer/thy/Class_Clash.thy").
>>>>> Error - Database is not opened for writing.
>>>>> val it = () : unit
>>>
>>> There is strong evidence that it has always been like this.
>>>
>>> Shall I just chance my luck and dive into the sources?
>>>
>>> Cheers,
>>> 	Florian
>>>
>>>
>>>>  
>>>> On 04 September, 2014 09:21 CEST, Florian Haftmann <florian.haftmann at informatik.tu-muenchen.de> wrote: 
>>>>  
>>>>> At d6a2e3567f95, I am currently analysing a problem with type inference
>>>>> in locale expressions: when leaving types implicit, imported parameters
>>>>> are given disjoint types despite they could be unified, and are so if
>>>>> given explicit type annotations.  The problem occurs if the imported
>>>>> locales themselves have dependencies on other locales containing a
>>>>> definition.
>>>>>
>>>>> The reason why this is really annyoing is that it breaks certain class>> specifications to typecheck and currently effectively prevents me from>> adding such a simple thing as product over lists.
>>>>>
>>>>> See attached theory for quite minimal examples.
>>>>>
>>>>> I will have to investigate this further.
>>>>>
>>>>> 	Florian
>>>>>
>>>>> -- 
>>>>>
>>>>> PGP available:
>>>>> http://home.informatik.tu-muenchen.de/haftmann/pgp/florian_haftmann_at_informatik_tu_muenchen_de
>>>>  
>>>>  
>>>>  
>>>>  
>>>>
>>>> _______________________________________________
>>>> isabelle-dev mailing list
>>>> isabelle-dev at in.tum.de
>>>> https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev
>>>>
>>>
>>> -- 
>>>
>>> PGP available:
>>> http://home.informatik.tu-muenchen.de/haftmann/pgp/florian_haftmann_at_informatik_tu_muenchen_de
>>  
>>  
>>  
>>  
>>
>> _______________________________________________
>> isabelle-dev mailing list
>> isabelle-dev at in.tum.de
>> https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev
>>
> 
> 
> 
> _______________________________________________
> isabelle-dev mailing list
> isabelle-dev at in.tum.de
> https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev
> 

-- 

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: 181 bytes
Desc: OpenPGP digital signature
URL: <https://mailman46.in.tum.de/pipermail/isabelle-dev/attachments/20140911/c6dd06f8/attachment.sig>


More information about the isabelle-dev mailing list