Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
i7
peregrine
Commits
430f9c2e
Commit
430f9c2e
authored
May 02, 2017
by
Philipp Meyer
Browse files
Rename yes and no states to true and false states
parent
4cdc7a42
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
examples/broadcast.pp
View file @
430f9c2e
population
protocol
"Broadcast Protocol"
{
states
{
true
false
}
states
{
_
true
_
false
}
transitions
{
x_false_true
}
arcs
{
{
false
,
true
}
->
x_false_true
->
{
true
,
true
}
{
_
false
,
_
true
}
->
x_false_true
->
{
_
true
,
_
true
}
}
initial
{
true
false
}
yes
{
true
}
no
{
false
}
initial
{
_
true
_
false
}
true
{
_
true
}
false
{
_
false
}
}
examples/majority.pp
View file @
430f9c2e
...
...
@@ -8,6 +8,6 @@ population protocol "Majority Protocol" {
{
neutral
,
mildlybad
}
->
x_neutral_mildlybad
->
{
mildlybad
,
mildlybad
}
}
initial
{
good
bad
}
yes
{
good
neutral
}
no
{
bad
mildlybad
}
true
{
good
neutral
}
false
{
bad
mildlybad
}
}
examples/threshold_l3_c1.pnet
0 → 100644
View file @
430f9c2e
This diff is collapsed.
Click to expand it.
src/Main.hs
View file @
430f9c2e
...
...
@@ -38,8 +38,8 @@ structuralAnalysis pp = do
verbosePut
0
$
"States : "
++
show
(
length
(
states
pp
))
verbosePut
0
$
"Transitions : "
++
show
(
length
(
transitions
pp
))
verbosePut
0
$
"Initial states : "
++
show
(
length
(
initialStates
pp
))
verbosePut
0
$
"Yes states : "
++
show
(
length
(
yes
States
pp
))
verbosePut
0
$
"No states : "
++
show
(
length
(
no
States
pp
))
verbosePut
0
$
"Yes states : "
++
show
(
length
(
true
States
pp
))
verbosePut
0
$
"No states : "
++
show
(
length
(
false
States
pp
))
checkFile
::
String
->
OptIO
PropResult
checkFile
file
=
do
...
...
src/Parser/PP.hs
View file @
430f9c2e
...
...
@@ -77,11 +77,11 @@ transitions = reserved "transitions" *> identList
initial
::
Parser
[
String
]
initial
=
reserved
"initial"
*>
identList
yes
States
::
Parser
[
String
]
yes
States
=
reserved
"
yes
"
*>
identList
true
States
::
Parser
[
String
]
true
States
=
reserved
"
true
"
*>
identList
no
States
::
Parser
[
String
]
no
States
=
reserved
"
no
"
*>
identList
false
States
::
Parser
[
String
]
false
States
=
reserved
"
false
"
*>
identList
arc
::
Parser
[(
String
,
String
,
Integer
)]
arc
=
do
...
...
@@ -105,8 +105,8 @@ arcs = do
data
Statement
=
States
[
String
]
|
Transitions
[
String
]
|
Initial
[
String
]
|
Yes
Statement
[
String
]
|
No
Statement
[
String
]
|
True
Statement
[
String
]
|
False
Statement
[
String
]
|
Arcs
[(
String
,
String
,
Integer
)]
statement
::
Parser
Statement
...
...
@@ -114,8 +114,8 @@ statement = States <$> states <|>
Transitions
<$>
transitions
<|>
Arcs
<$>
arcs
<|>
Initial
<$>
initial
<|>
Yes
Statement
<$>
yes
States
<|>
No
Statement
<$>
no
States
True
Statement
<$>
true
States
<|>
False
Statement
<$>
false
States
populationProtocol
::
Parser
PopulationProtocol
populationProtocol
=
do
...
...
@@ -123,16 +123,16 @@ populationProtocol = do
reserved
"protocol"
name
<-
option
""
ident
statements
<-
braces
(
many
statement
)
let
(
qs
,
ts
,
is
,
ys
,
ns
,
as
)
=
foldl
splitStatement
(
[]
,
[]
,
[]
,
[]
,
[]
,
[]
)
statements
return
$
makePopulationProtocolFromStrings
name
qs
ts
is
ys
ns
as
let
(
qs
,
ts
,
qinitial
,
qtrue
,
qfalse
,
as
)
=
foldl
splitStatement
(
[]
,
[]
,
[]
,
[]
,
[]
,
[]
)
statements
return
$
makePopulationProtocolFromStrings
name
qs
ts
qinitial
qtrue
qfalse
as
where
splitStatement
(
qs
,
ts
,
is
,
ys
,
ns
,
as
)
stmnt
=
case
stmnt
of
States
q
->
(
q
++
qs
,
ts
,
is
,
ys
,
ns
,
as
)
Transitions
t
->
(
qs
,
t
++
ts
,
is
,
ys
,
ns
,
as
)
Initial
i
->
(
qs
,
ts
,
i
++
is
,
ys
,
ns
,
as
)
Yes
Statement
y
->
(
qs
,
ts
,
is
,
y
++
ys
,
ns
,
as
)
No
Statement
n
->
(
qs
,
ts
,
is
,
ys
,
n
++
ns
,
as
)
Arcs
a
->
(
qs
,
ts
,
is
,
ys
,
ns
,
a
++
as
)
splitStatement
(
qs
,
ts
,
qinitial
,
qtrue
,
qfalse
,
as
)
stmnt
=
case
stmnt
of
States
q
->
(
q
++
qs
,
ts
,
qinitial
,
qtrue
,
qfalse
,
as
)
Transitions
t
->
(
qs
,
t
++
ts
,
qinitial
,
qtrue
,
qfalse
,
as
)
Initial
q
->
(
qs
,
ts
,
q
++
qinitial
,
qtrue
,
qfalse
,
as
)
True
Statement
q
->
(
qs
,
ts
,
qinitial
,
q
++
qtrue
,
qfalse
,
as
)
False
Statement
q
->
(
qs
,
ts
,
qinitial
,
qtrue
,
q
++
qfalse
,
as
)
Arcs
a
->
(
qs
,
ts
,
qinitial
,
qtrue
,
qfalse
,
a
++
as
)
binary
::
String
->
(
a
->
a
->
a
)
->
Assoc
->
Operator
String
()
Identity
a
binary
name
fun
=
Infix
(
reservedOp
name
*>
return
fun
)
...
...
src/PopulationProtocol.hs
View file @
430f9c2e
...
...
@@ -5,7 +5,7 @@ module PopulationProtocol
(
PopulationProtocol
,
State
(
..
),
Transition
(
..
),
Configuration
,
FlowVector
,
RConfiguration
,
RFlowVector
,
renameState
,
renameTransition
,
renameStatesAndTransitions
,
name
,
showNetName
,
states
,
transitions
,
initialStates
,
yes
States
,
no
States
,
name
,
showNetName
,
states
,
transitions
,
initialStates
,
true
States
,
false
States
,
pre
,
lpre
,
post
,
lpost
,
mpre
,
mpost
,
context
,
makePopulationProtocol
,
makePopulationProtocolWithTrans
,
makePopulationProtocolFromStrings
,
makePopulationProtocolWithTransFromStrings
,
...
...
@@ -72,8 +72,8 @@ data PopulationProtocol = PopulationProtocol {
states
::
[
State
],
transitions
::
[
Transition
],
initialStates
::
[
State
],
yes
States
::
[
State
],
no
States
::
[
State
],
true
States
::
[
State
],
false
States
::
[
State
],
adjacencyQ
::
M
.
Map
State
([(
Transition
,
Integer
)],
[(
Transition
,
Integer
)]),
adjacencyT
::
M
.
Map
Transition
([(
State
,
Integer
)],
[(
State
,
Integer
)])
}
...
...
@@ -84,12 +84,12 @@ showNetName pp = "Population protocol" ++
instance
Show
PopulationProtocol
where
show
pp
=
showNetName
pp
++
"
\n
States: "
++
show
(
states
pp
)
++
"
\n
Transitions: "
++
show
(
transitions
pp
)
++
"
\n
Initial states: "
++
show
(
initialStates
pp
)
++
"
\n
Yes
states: "
++
show
(
yes
States
pp
)
++
"
\n
No
states: "
++
show
(
no
States
pp
)
++
"
\n
State arcs:
\n
"
++
unlines
"
\n
States
: "
++
show
(
states
pp
)
++
"
\n
Transitions
: "
++
show
(
transitions
pp
)
++
"
\n
Initial states
: "
++
show
(
initialStates
pp
)
++
"
\n
True
states
: "
++
show
(
true
States
pp
)
++
"
\n
False
states
: "
++
show
(
false
States
pp
)
++
"
\n
State arcs
:
\n
"
++
unlines
(
map
showContext
(
M
.
toList
(
adjacencyQ
pp
)))
++
"
\n
Transition arcs:
\n
"
++
unlines
(
map
showContext
(
M
.
toList
(
adjacencyT
pp
)))
...
...
@@ -112,10 +112,10 @@ renameStatesAndTransitions f pp =
listSet
$
map
(
renameTransition
f
)
$
transitions
pp
,
initialStates
=
listSet
$
map
(
renameState
f
)
$
initialStates
pp
,
yes
States
=
listSet
$
map
(
renameState
f
)
$
yes
States
pp
,
no
States
=
listSet
$
map
(
renameState
f
)
$
no
States
pp
,
true
States
=
listSet
$
map
(
renameState
f
)
$
true
States
pp
,
false
States
=
listSet
$
map
(
renameState
f
)
$
false
States
pp
,
adjacencyQ
=
mapAdjacency
(
renameState
f
)
(
renameTransition
f
)
$
adjacencyQ
pp
,
adjacencyT
=
mapAdjacency
(
renameTransition
f
)
(
renameState
f
)
$
...
...
@@ -129,14 +129,14 @@ makePopulationProtocol :: String -> [State] -> [Transition] ->
[
State
]
->
[
State
]
->
[
State
]
->
[
Either
(
Transition
,
State
,
Integer
)
(
State
,
Transition
,
Integer
)]
->
PopulationProtocol
makePopulationProtocol
name
states
transitions
initialStates
yes
States
no
States
arcs
=
makePopulationProtocol
name
states
transitions
initialStates
true
States
false
States
arcs
=
PopulationProtocol
{
name
=
name
,
states
=
listSet
states
,
transitions
=
listSet
transitions
,
initialStates
=
listSet
initialStates
,
yes
States
=
listSet
yes
States
,
no
States
=
listSet
no
States
,
true
States
=
listSet
true
States
,
false
States
=
listSet
false
States
,
adjacencyQ
=
M
.
map
(
listMap
***
listMap
)
adQ
,
adjacencyT
=
M
.
map
(
listMap
***
listMap
)
adT
}
...
...
@@ -160,14 +160,14 @@ makePopulationProtocol name states transitions initialStates yesStates noStates
makePopulationProtocolFromStrings
::
String
->
[
String
]
->
[
String
]
->
[
String
]
->
[
String
]
->
[
String
]
->
[(
String
,
String
,
Integer
)]
->
PopulationProtocol
makePopulationProtocolFromStrings
name
states
transitions
initialStates
yes
States
no
States
arcs
=
makePopulationProtocolFromStrings
name
states
transitions
initialStates
true
States
false
States
arcs
=
makePopulationProtocol
name
(
map
State
(
S
.
toAscList
stateSet
))
(
map
Transition
(
S
.
toAscList
transitionSet
))
(
map
State
initialStates
)
(
map
State
yes
States
)
(
map
State
no
States
)
(
map
State
true
States
)
(
map
State
false
States
)
(
map
toEitherArc
arcs
)
where
stateSet
=
S
.
fromList
states
...
...
@@ -194,8 +194,8 @@ makePopulationProtocolFromStrings name states transitions initialStates yesState
makePopulationProtocolWithTrans
::
String
->
[
State
]
->
[
State
]
->
[
State
]
->
[
State
]
->
[(
Transition
,
([(
State
,
Integer
)],
[(
State
,
Integer
)]))]
->
PopulationProtocol
makePopulationProtocolWithTrans
name
states
initialStates
yes
States
no
States
ts
=
makePopulationProtocol
name
states
(
map
fst
ts
)
initialStates
yes
States
no
States
arcs
makePopulationProtocolWithTrans
name
states
initialStates
true
States
false
States
ts
=
makePopulationProtocol
name
states
(
map
fst
ts
)
initialStates
true
States
false
States
arcs
where
arcs
=
[
Right
(
q
,
t
,
w
)
|
(
t
,(
is
,
_
))
<-
ts
,
(
q
,
w
)
<-
is
]
++
[
Left
(
t
,
q
,
w
)
|
(
t
,(
_
,
os
))
<-
ts
,
(
q
,
w
)
<-
os
]
...
...
@@ -203,13 +203,13 @@ makePopulationProtocolWithTrans name states initialStates yesStates noStates ts
makePopulationProtocolWithTransFromStrings
::
String
->
[
String
]
->
[
String
]
->
[
String
]
->
[
String
]
->
[(
String
,
([(
String
,
Integer
)],
[(
String
,
Integer
)]))]
->
PopulationProtocol
makePopulationProtocolWithTransFromStrings
name
states
initialStates
yes
States
no
States
arcs
=
makePopulationProtocolWithTransFromStrings
name
states
initialStates
true
States
false
States
arcs
=
makePopulationProtocolWithTrans
name
(
map
State
states
)
(
map
State
initialStates
)
(
map
State
yes
States
)
(
map
State
no
States
)
(
map
State
true
States
)
(
map
State
false
States
)
(
map
toTArc
arcs
)
where
toTArc
(
t
,
(
iq
,
oq
))
=
...
...
src/Solver/StrongConsensus.hs
View file @
430f9c2e
...
...
@@ -49,7 +49,7 @@ initialConfiguration pp m0 =
differentConsensusConstraints
::
PopulationProtocol
->
SIMap
State
->
SIMap
State
->
SBool
differentConsensusConstraints
pp
m1
m2
=
(
sum
(
mval
m1
(
yes
States
pp
))
.>
0
&&&
sum
(
mval
m2
(
no
States
pp
))
.>
0
)
(
sum
(
mval
m1
(
true
States
pp
))
.>
0
&&&
sum
(
mval
m2
(
false
States
pp
))
.>
0
)
unmarkedByConfiguration
::
[
State
]
->
SIMap
State
->
SBool
unmarkedByConfiguration
r
m
=
sum
(
mval
m
r
)
.==
0
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment