[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PVS-Help] Typechecking problem



Hi Aditya,

The problem here is that in your importing, you are asking for a
set of lists of reals, so "(: 1 :)" is converted to a set of
lists by using the singleton conversion, but there is no
conversion that will work for the b assignment.

What you want is to import T1[real], and then the conversions
work as you expect.

Regards,
Sam

Aditya Kanade <aditya@cse.iitb.ac.in> wrote:

> hi,
> 
> I'm getting a typechecking error where I atmost expect a
> TCC. Following is the scenario:
> 
> T1[t:type+]:theory
> begin
>   t1:type = [# a: set[t], b:set[[(a),(a)]] #]
> end T1
> 
> T2:theory
> begin
>   importing T1[list[real]]
> 
>   e:t1 = (# a := (: 1 :), b := (: (1,1) :) #)
> end T2
> 
> The typechecking error is:
> 
> Incompatible types for (: (1, 1) :)
>      Found: (list_adt[[real, real]].cons?)
>   Expected: sets
>                 [[(singleton[(cons?[real])]((: 1 :))),
>                   (singleton[(cons?[real])]((: 1 :)))]].set
> 
> Now, AFAIK, PVS should have applied the list2set conversion to 
> the list (: (1,1) :). I think it does that for a := (: 1 :). If I
> explicitly write list2set((: (1,1) :)), then it gives the same error,
> this time for the list2set conversion!
> 
> At least conceptually, what I'm trying to do should work. Can anyone
> please explain the problem? And any solution to this?
> 
> Regards,
> Aditya.