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

[PVS-Help] Simple (?) question on PVS - constants of functions ofother constants



Hi - I'm a new PVS user, and I'm trying to translate a hand-created proof into PVS.  But almost immediately I'm running into trouble; I can't seem to define constants that are the results of functions on other constants.  Instead I get "No resolution for comp with arguments of possible types..." error messages.

What's wrong in the tiny snippet below?  I presume it's really obvious, but I don't know what it is.

I'm basically trying to prove some assertions related to compiling code.  I do NOT want to define the specific compilation function. Instead, I need to make general assertions like "if a function that compiles something meets properties <P>, then claims <C> will be true."

Thanks.

--- David A. Wheeler

================================================

problem: THEORY
 BEGIN
  SRC: TYPE % Any Source code has this type
  CIO: TYPE % Any input/output of a compilation other than SRC

  % A compilation step is a function that accepts a CIO (the compiler)
  % and SRC (the source code), and produces a CIO (the compiled result)
  comp: TYPE = [Compiler: CIO, Source: SRC -> CIO]

  sA: SRC
  T: CIO  % T is a compiler

  Stage1: CIO = comp(T, sA)
  % This will produce this error message:
  % Expecting an expression
  % No resolution for comp with arguments of possible types: 
  %  T : CIO
  %  sA : SRC

  % This doesn't work either:
  Stage1: CIO
  Stage1_is: AXIOM Stage1 = comp(T, sA)
  % This will produce this error message:
  % Expecting an expression
  % No resolution for comp with arguments of possible types: 
  %  T : CIO
  %  sA : SRC

END problem