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

[PVS-Help] nested recusive data types



Hi,

I've the defined the following data type:

TERMS [V,S:TYPE]: DATATYPE
BEGIN
    tvar(id:V): tvar?
    tapp (symb:S,args:list[TERMS]): tapp?
END TERMS

This will cause PVS to generate an TERMS_adt file containing, among other 
things, a map function. If copy this function into my own theory, i'm not 
able to prove the generated termination TCC. The MEASURE of my own map 
function is the standard ordering on terms given by <<. The complete 
definition is

map(f:[V -> W]) (t:TERMS[V,S]) : RECURSIVE TERMS[W,S] =
      CASES t
        OF tvar(tvar1_var): tvar(f(tvar1_var)),
           tapp(tapp1_var, tapp2_var):
             tapp(tapp1_var,
                  map[TERMS[V, S], TERMS[W, S]](map(f), tapp2_var))
        ENDCASES
  MEASURE t BY <<


What do I have to do to get rid of this TCC? Do i really need a specific 
property of the map function for lists? 

Regards,

Sjaak