maude-help AT lists.siebelschool.illinois.edu
Subject: Maude-help mailing list
List archive
- From: Francisco Durán <duran AT lcc.uma.es>
- To: rusu AT irisa.fr
- Cc: maude-help AT cs.uiuc.edu
- Subject: Re: [Maude-help] puzzled by matching modulo and [owise]
- Date: Sat, 2 Jan 2010 00:52:58 +0100
- List-archive: <http://lists.cs.uiuc.edu/mailman/private/maude-help>
- List-id: <maude-help.cs.uiuc.edu>
Hi Vlad,
I guess you have just a parsing problem. I however get some results different. Please, confirm.
1st issue:
I would expect
red < s1, eps > = a=> .
to return < s1, a > < s2, a >
but all I get is < s1, eps >,
and setting trace on confirms that the first [owise] equation applied.
So, it must be that matching did not work? But then, the match command
for the lhs of the first equation
match < s1, tr > sts <=? < s1, eps > .
returns
Solution 1
sts --> empty
tr --> eps
so the first equation should have applied ? Why didn't it?
Notice however that
match < s1, tr > sts =a=> <=? < s1, eps > =a=> .
match in AUTOMATA-WITH-EQUATIONS : sts =a=> < s1,tr > <=? < s1,eps > =a=> .
Decision time: 0ms cpu (0ms real)
No match.
By default, operators __ and _=a=> get precedences 41 and 15, respectively, and gathering patterns e E and E. Notice that the parsing used is (sts =a=>) < s1,tr >.
You can easily fix it with parentheses.
match (< s1, tr > sts) =a=> <=? < s1, eps > =a=> .
match in AUTOMATA-WITH-EQUATIONS : (sts < s1,tr >) =a=> <=? < s1,eps > =a=> .
Decision time: 0ms cpu (0ms real)
Solution 1
sts --> empty
tr --> eps
2nd issue:
Next, I tried removing the first [owise] equation and reducing
red < s1, eps > empty =a=> .
(note the additonal "empty")
and got the "expected" result StateSet: < s1,a > < s2,a > .
Why did the first equation apply now? I only "added" empty in my term.
Since empty is the identity element, why did it make a difference?
This term parses as < s1, eps > (empty =a=>), which matches the equation's LHS.
3rd issue:
I now put back in the [owise] equation I had commented out, and for
red < s1, eps > empty = a=> .
I get again < s1, eps > .
So, the [owise] equation "took precedence over" the first equation? I
thought the [owise] attibute was designed to avoid just that?
I don't understand this. It works for me.
You can fix your spec in two ways. You can either write parentheses in your equations
eq (< s1, tr > sts) =a=> = < s1, tr a > < s2, tr a > sts .
eq (< s2, tr > sts) =b=> = < s2, tr b > sts .
Or you can assign explicit precedences to the operators involved. E.g.:
op __ : StateSet StateSet -> StateSet [prec 10 assoc comm id: empty] .
ops _=a=> _=b=> : StateSet -> StateSet [prec 15] .
Cheers,
Paco
- Re: [Maude-help] puzzled by matching modulo and [owise], Francisco Durán, 01/01/2010
- Re: [Maude-help] puzzled by matching modulo and [owise], rusu, 01/02/2010
Archive powered by MHonArc 2.6.16.