+ mcrl2 files
This commit is contained in:
parent
bf24d0aa0f
commit
b79d5358b2
BIN
mCRL2/TrafiicLights/TrafficLights v1_spec.lts
Normal file
BIN
mCRL2/TrafiicLights/TrafficLights v1_spec.lts
Normal file
Binary file not shown.
BIN
mCRL2/TrafiicLights/TrafficLights v2_spec.lts
Normal file
BIN
mCRL2/TrafiicLights/TrafficLights v2_spec.lts
Normal file
Binary file not shown.
BIN
mCRL2/TrafiicLights/TrafficLights v3_spec.lts
Normal file
BIN
mCRL2/TrafiicLights/TrafficLights v3_spec.lts
Normal file
Binary file not shown.
BIN
mCRL2/TrafiicLights/TrafficLights v4_spec.lts
Normal file
BIN
mCRL2/TrafiicLights/TrafficLights v4_spec.lts
Normal file
Binary file not shown.
BIN
mCRL2/TrafiicLights/TrafficLights v4_spec_bb.lts
Normal file
BIN
mCRL2/TrafiicLights/TrafficLights v4_spec_bb.lts
Normal file
Binary file not shown.
BIN
mCRL2/VendingMachine/02_VM bounded.lps
Normal file
BIN
mCRL2/VendingMachine/02_VM bounded.lps
Normal file
Binary file not shown.
BIN
mCRL2/VendingMachine/02_VM bounded.lts
Normal file
BIN
mCRL2/VendingMachine/02_VM bounded.lts
Normal file
Binary file not shown.
4
mCRL2/VendingMachine/VendingMachine.mcrl2proj
Normal file
4
mCRL2/VendingMachine/VendingMachine.mcrl2proj
Normal file
@ -0,0 +1,4 @@
|
||||
<root>
|
||||
<spec>VendingMachine_spec.mcrl2</spec>
|
||||
<properties/>
|
||||
</root>
|
80
mCRL2/VendingMachine/VendingMachine_spec.mcrl2
Normal file
80
mCRL2/VendingMachine/VendingMachine_spec.mcrl2
Normal file
@ -0,0 +1,80 @@
|
||||
%
|
||||
% VM.mcrl2
|
||||
%
|
||||
% A Simple Vending Machine.
|
||||
%
|
||||
% Copyright (c) 2019-2019 HS Emden-Leer
|
||||
% All Rights Reserved.
|
||||
%
|
||||
% @version 1.00 - 01 Apr 2019 - GJV - initial version
|
||||
%
|
||||
|
||||
% -----------------------------------------------------------------------------------------------------------------------
|
||||
%
|
||||
% Definition of the coins
|
||||
%
|
||||
sort
|
||||
Coin = struct _5c | _10c | _20c | _50c | Euro;
|
||||
|
||||
map
|
||||
value: Coin -> Int; % the value of a coin as an integer
|
||||
|
||||
eqn
|
||||
value(_5c) = 5;
|
||||
value(_10c) = 10;
|
||||
value(_20c) = 20;
|
||||
value(_50c) = 50;
|
||||
value(Euro) = 100;
|
||||
|
||||
|
||||
% -----------------------------------------------------------------------------------------------------------------------
|
||||
%
|
||||
% Definition of the products
|
||||
%
|
||||
sort
|
||||
Product = struct tea | coffee | cake | apple;
|
||||
|
||||
map
|
||||
price: Product -> Int; % the price of a product as an integer
|
||||
|
||||
eqn
|
||||
value(tea) = 10;
|
||||
value(coffee) = 25;
|
||||
value(cake) = 60;
|
||||
value(apple) = 80;
|
||||
|
||||
% -----------------------------------------------------------------------------------------------------------------------
|
||||
%
|
||||
% Definition of the actions
|
||||
%
|
||||
act
|
||||
accept: Coin; % accept a coin inserted into the machine
|
||||
return: Coin; % returns change
|
||||
offer: Product; % offer the possibility to order a certain product
|
||||
serve: Product; % serve a certain product
|
||||
returnChange: Int; % request to return the current credit as change
|
||||
|
||||
%
|
||||
% Definition of the processes
|
||||
%
|
||||
proc
|
||||
VendingMachine = VM(0);
|
||||
|
||||
VM(credit : Int) =
|
||||
(credit < 200) -> sum c : Coin.accept(c).VM(credit + value(c))
|
||||
+ sum p : Product.(
|
||||
(credit > 0) -> returnChange(credit).ReturnChange(credit + price(p))
|
||||
)
|
||||
+ (credit > 0) -> returnChange(credit).ReturnChange(credit);
|
||||
|
||||
|
||||
ReturnChange(credit : Int) =
|
||||
sum c : Coin.((credit >= value(c) && credit < next(c)) -> return(c).(
|
||||
((credit - value(c)) >0) -> ReturnChange(credit - value(c)) <> VM(credit - value(c))
|
||||
));
|
||||
|
||||
% -----------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
init
|
||||
VendingMachine
|
||||
;
|
Loading…
Reference in New Issue
Block a user