Dear Maude Abusers, A new alpha release can be accessed at SRI-CSL in: ~eker/public_html/Maude/Alpha112b/ or downloaded from: http://www.csl.sri.com/~eker/Maude/Alpha112b/ Alpha release site authentication: User Name: maudeabuser Password: bughunter This is an urgent bug fix release. Bug fixes ========== (1) A bug introduced by some optimizations on AU instantiation that I added in alpha111b. Provoked by this example from Santiago: red in META-LEVEL : metaVariantUnify(mod 'LIST-VENDING is nil sorts 'Bool ; 'Coin ; 'CoinList ; 'Item ; 'Items ; 'State ; 'Universal . subsort 'Coin < 'CoinList . subsort 'Item < 'Items . op '$ : nil -> 'Coin [none] . op '<_|_> : 'CoinList 'Items -> 'State [none] . op '_._ : 'CoinList 'CoinList -> 'CoinList [assoc] . op '_=/=_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'false.Bool) term-hook('notEqualTerm, 'true.Bool))] . op '_==_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'true.Bool) term-hook('notEqualTerm, 'false.Bool))] . op '__ : 'Items 'Items -> 'Items [assoc comm id('mt.Items)] . op '_and_ : 'Bool 'Bool -> 'Bool [assoc comm prec(55)] . op '_implies_ : 'Bool 'Bool -> 'Bool [prec(61) gather('e 'E)] . op '_or_ : 'Bool 'Bool -> 'Bool [assoc comm prec(59)] . op '_xor_ : 'Bool 'Bool -> 'Bool [assoc comm prec(57)] . op 'a : nil -> 'Item [none] . op 'c : nil -> 'Item [none] . op 'false : nil -> 'Bool [ctor special( id-hook('SystemFalse, nil))] . op 'if_then_else_fi : 'Bool 'Universal 'Universal -> 'Universal [poly(2 3 0) special( id-hook('BranchSymbol, nil) term-hook('1, 'true.Bool) term-hook('2, 'false.Bool))] . op 'mt : nil -> 'Items [none] . op 'nil : nil -> 'CoinList [none] . op 'not_ : 'Bool -> 'Bool [prec(53)] . op 'q : nil -> 'Coin [none] . op 'true : nil -> 'Bool [ctor special( id-hook('SystemTrue, nil))] . none eq '$.Coin = '_._['q.Coin,'q.Coin,'q.Coin,'q.Coin] [variant] . eq '_._['CL:CoinList,'nil.CoinList] = 'CL:CoinList [variant] . eq '_._['nil.CoinList,'CL:CoinList] = 'CL:CoinList [variant] . eq '_._['CL:CoinList,'nil.CoinList,'Y@@@:`[CoinList`]] = '_._['CL:CoinList,'Y@@@:`[CoinList`]] [variant] . eq '_._['X@@@:`[CoinList`],'CL:CoinList,'nil.CoinList] = '_._['X@@@:`[CoinList`],'CL:CoinList] [variant] . eq '_._['X@@@:`[CoinList`],'nil.CoinList,'CL:CoinList] = '_._['X@@@:`[CoinList`],'CL:CoinList] [variant] . eq '_._['nil.CoinList,'CL:CoinList,'Y@@@:`[CoinList`]] = '_._['CL:CoinList,'Y@@@:`[CoinList`]] [variant] . eq '_._['X@@@:`[CoinList`],'CL:CoinList,'nil.CoinList,'Y@@@:`[CoinList`]] = '_._['X@@@:`[CoinList`],'CL:CoinList,'Y@@@:`[CoinList`]] [variant] . eq '_._['X@@@:`[CoinList`],'nil.CoinList,'CL:CoinList,'Y@@@:`[CoinList`]] = '_._['X@@@:`[CoinList`],'CL:CoinList,'Y@@@:`[CoinList`]] [variant] . rl '<_|_>['_._['CL1:CoinList,'$.Coin,'CL2:CoinList],'I:Items] => '<_|_>['_._['CL1:CoinList,'CL2:CoinList],'__['c.Item,'I:Items]] [none] . rl '<_|_>['_._['CL1:CoinList,'q.Coin,'CL2:CoinList,'q.Coin,'CL3:CoinList,'q.Coin,'CL4:CoinList],'I:Items] => '<_|_>['_._['CL1:CoinList,'CL2:CoinList,'CL3:CoinList,'CL4:CoinList],'__['a.Item,'I:Items]] [none] . endm, '<_|_>['_._['#1:CoinList,'_._['#2:CoinList,'_._['#3:CoinList,'#4:CoinList]]],'a.Item] =? '<_|_>['_._['#11:CoinList,'_._['$.Coin,'#12:CoinList]],'#13:Items], (empty).EmptyCommaList, 14, 143) . (2) A bug where the garbage collector unexpectedly runs during the initialization of a VariantUnificationProblem object causing memory corruption. Provoked by this example from Santiago: mod NARROWING-VENDING-MACHINE is sorts Coin Item Marking Money State . subsort Coin < Money . op empty : -> Money . op __ : Money Money -> Money [assoc comm id: empty] . subsort Money Item < Marking . op __ : Marking Marking -> Marking [assoc comm id: empty] . op <_> : Marking -> State . ops $ q : -> Coin . ops a c : -> Item . var M : Marking . rl [narrow] : < M $ > => < M c > . rl [narrow] : < M $ > => < M a q > . eq [change] : q q q q = $ [variant] . endm vu-narrow [,5] < C1:Coin C2:Coin C3:Coin C4:Coin > =>! < M:Money a c > . Steven