[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PVS-Help] Finding Variables
Erika,
If I understood correctly, this strategy
(defstrat if-store (&optional (fnum 1) (step1 (skip)) (step2 (skip)))
(let ((form (extra-get-formula fnum)))
(if (forall-expr? form)
(let ((vars (remove-if-not
#'(lambda (v)
(and (type-name? (type v))
(equal (id (type v)) '|Store|)))
(bindings form)))
(varstr (format nil "Variables of type Store: ~a" vars)))
(if vars
(then (skip-msg varstr t)
step1)
step2))
(skip)))
"Applies STEP1 if formula in FNUM is a quantifier over Store. Otherwise
applies STEP2"
"Applying if-store to ~A"
)
implements the functionality you need.
Assuming:
test : THEORY
BEGIN
Store : TYPE
s1,s2 : VAR Store
x1,x2 : VAR real
store : LEMMA
forall(s1,x1,s2,x2):1=0
END test
then
store :
|-------
{1} FORALL (s1, x1, s2, x2): 1 = 0
Rule? (if-store 1 (skip-msg "YES" t) (skip-msg "NO" t))
Variables of type Store: (s1 s2)
No change on: (skip)
store :
|-------
[1] FORALL (s1, x1, s2, x2): 1 = 0
YES
No change on: (skip)
You probably have to modify the test "(equal (id (type v)) '|Store|)" as
PVS supports sub-typing and, depending on your definition of Store, you
may have to dig a little bit more on the structure of the expression.
In addition to the PVS reference manual, some papers in these
proceedings may be useful if you are writing strategies:
http://techreports.larc.nasa.gov/ltrs/dublincore/2003/cp/NASA-2003-cp212448.html
Hope that it helps,
Cesar
On Mon, 2005-04-18 at 18:19, Erika Rice wrote:
> Hello,
>
> I am writing a strategy and have found myself in the
> following situation. I have a store type and the guarantee
> that variables of type store will always be quantified at
> this point, and I want to do something like this
>
> (if <formula mentions variable with of type store>
> step1
> step2)
>
> The challenge is the bit in angle brackets. Is there a way
> of determining whether or not a formula makes any mention
> of a variable of a certain type?
>
> If that is too vague of a question, please give me
> information about any of the following: comparing variable
> types, peeling apart the structure of a formula, finding the
> types of all quantified variables, or anything else that
> seems vaguely related.
>
> Thank you,
>
> Erika Rice
> University of Washington
--
Cesar A. Munoz H., Senior Staff Scientist mailto:munoz@nianet.org
National Institute of Aerospace mailto://C.A.Munoz@larc.nasa.gov
144 Research Drive http://research.nianet.org/~munoz
Hampton, VA 23666, USA Tel. +1 (757) 766 1539 Fax +1 (757) 766 1855