Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
TTool
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
mbe-tools
TTool
Commits
34528859
Commit
34528859
authored
4 years ago
by
tempiaa
Browse files
Options
Downloads
Patches
Plain Diff
Added re-initialization check property in avatar model-checker
parent
8f1a5aee
No related branches found
Branches containing commit
No related tags found
1 merge request
!330
Model-checker upgrades
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/main/java/avatartranslator/modelchecker/AvatarModelChecker.java
+52
-7
52 additions, 7 deletions
...ava/avatartranslator/modelchecker/AvatarModelChecker.java
src/main/java/ui/window/JDialogAvatarModelChecker.java
+18
-1
18 additions, 1 deletion
src/main/java/ui/window/JDialogAvatarModelChecker.java
with
70 additions
and
8 deletions
src/main/java/avatartranslator/modelchecker/AvatarModelChecker.java
+
52
−
7
View file @
34528859
...
@@ -135,6 +135,7 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
...
@@ -135,6 +135,7 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
checkNoDeadlocks
=
false
;
checkNoDeadlocks
=
false
;
deadlockStop
=
false
;
deadlockStop
=
false
;
studyReachability
=
false
;
studyReachability
=
false
;
studyReinit
=
false
;
computeRG
=
false
;
computeRG
=
false
;
stateLimitRG
=
false
;
//No state limit in RG computation
stateLimitRG
=
false
;
//No state limit in RG computation
timeLimitRG
=
false
;
timeLimitRG
=
false
;
...
@@ -326,13 +327,13 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
...
@@ -326,13 +327,13 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
}
}
public
void
setReinitAnaly
z
is
(
boolean
studyReinit
)
{
public
void
setReinitAnaly
s
is
(
boolean
studyReinit
)
{
this
.
studyReinit
=
studyReinit
;
this
.
studyReinit
=
studyReinit
;
}
}
public
boolean
getReinitResult
()
{
public
boolean
getReinitResult
()
{
if
(
initState
!=
null
)
{
if
(
studyReinit
&&
initState
!=
null
)
{
return
initState
.
getResult
();
return
initState
.
getResult
();
}
}
return
false
;
return
false
;
...
@@ -363,7 +364,7 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
...
@@ -363,7 +364,7 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
}*/
}*/
public
boolean
startModelCheckingProperties
()
{
public
boolean
startModelCheckingProperties
()
{
boolean
studyS
,
studyL
,
studyR
,
genRG
;
boolean
studyS
,
studyL
,
studyR
,
studyRI
,
genRG
;
long
deadlocks
=
0
;
long
deadlocks
=
0
;
if
(
spec
==
null
)
{
if
(
spec
==
null
)
{
...
@@ -382,6 +383,7 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
...
@@ -382,6 +383,7 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
studyR
=
studyReachability
;
studyR
=
studyReachability
;
studyL
=
studyLiveness
;
studyL
=
studyLiveness
;
studyS
=
studySafety
;
studyS
=
studySafety
;
studyRI
=
studyReinit
;
genRG
=
computeRG
;
genRG
=
computeRG
;
//then compute livenesses
//then compute livenesses
...
@@ -390,15 +392,16 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
...
@@ -390,15 +392,16 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
studySafety
=
false
;
studySafety
=
false
;
studyLiveness
=
false
;
studyLiveness
=
false
;
studyReachability
=
false
;
studyReachability
=
false
;
studyReinit
=
false
;
if
(
studyL
)
{
if
(
studyL
)
{
studySafety
=
true
;
studySafety
=
true
;
for
(
SafetyProperty
sp
:
livenesses
)
{
for
(
SafetyProperty
sp
:
livenesses
)
{
safety
=
sp
;
safety
=
sp
;
startModelChecking
(
nbOfThreads
);
startModelChecking
(
nbOfThreads
);
deadlocks
+=
nbOfDeadlocks
;
resetModelChecking
();
resetModelChecking
();
safety
.
setComputed
();
safety
.
setComputed
();
deadlocks
+=
nbOfDeadlocks
;
}
}
studySafety
=
false
;
studySafety
=
false
;
}
}
...
@@ -426,12 +429,20 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
...
@@ -426,12 +429,20 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
safetyLeadStates
=
null
;
safetyLeadStates
=
null
;
}
}
safety
.
setComputed
();
safety
.
setComputed
();
resetModelChecking
();
deadlocks
+=
nbOfDeadlocks
;
deadlocks
+=
nbOfDeadlocks
;
resetModelChecking
();
}
}
studySafety
=
false
;
studySafety
=
false
;
}
}
if
(
studyRI
)
{
studyReinit
=
true
;
startModelChecking
(
nbOfThreads
);
deadlocks
+=
nbOfDeadlocks
;
resetModelChecking
();
studyReinit
=
false
;
}
if
(
studyR
||
genRG
)
{
if
(
studyR
||
genRG
)
{
if
(
genRG
)
{
if
(
genRG
)
{
deadlocks
=
0
;
deadlocks
=
0
;
...
@@ -462,6 +473,7 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
...
@@ -462,6 +473,7 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
studyLiveness
=
studyL
;
studyLiveness
=
studyL
;
studySafety
=
studyS
;
studySafety
=
studyS
;
studyReachability
=
studyR
;
studyReachability
=
studyR
;
studyReinit
=
studyRI
;
TraceManager
.
addDev
(
"Model checking done"
);
TraceManager
.
addDev
(
"Model checking done"
);
return
true
;
return
true
;
...
@@ -538,6 +550,11 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
...
@@ -538,6 +550,11 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
}
else
{
}
else
{
pendingStates
.
add
(
initialState
);
pendingStates
.
add
(
initialState
);
}
}
if
(
studyReinit
)
{
initState
=
new
SpecificationReinit
(
initialState
);
}
//states.put(initialState.hashValue, initialState);
//states.put(initialState.hashValue, initialState);
//statesByID.put(initialState.id, initialState);
//statesByID.put(initialState.id, initialState);
nbOfCurrentComputations
=
0
;
nbOfCurrentComputations
=
0
;
...
@@ -1858,18 +1875,29 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
...
@@ -1858,18 +1875,29 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
}
}
}
}
}
}
if
(
studyReinit
&&
similar
!=
null
)
{
if
(
similar
!=
initState
.
initState
&&
stateIsReachableFromState
(
similar
,
_ss
))
{
propertyDone
=
true
;
initState
.
setResult
(
false
);
}
}
}
}
private
void
checkPropertyOnDeadlock
(
SpecificationState
ss
)
{
private
void
checkPropertyOnDeadlock
(
SpecificationState
ss
)
{
if
(
studySafety
)
{
if
(
studySafety
)
{
if
(
safety
.
safetyType
==
SafetyProperty
.
ALLTRACES_ONESTATE
&&
ss
.
property
==
false
)
{
if
(
safety
.
safetyType
==
SafetyProperty
.
ALLTRACES_ONESTATE
&&
ss
.
property
==
false
)
{
safety
.
result
=
false
;
propertyDone
=
true
;
propertyDone
=
true
;
safety
.
result
=
false
;
}
else
if
(
safety
.
safetyType
==
SafetyProperty
.
ONETRACE_ALLSTATES
&&
ss
.
property
==
false
)
{
}
else
if
(
safety
.
safetyType
==
SafetyProperty
.
ONETRACE_ALLSTATES
&&
ss
.
property
==
false
)
{
safety
.
result
=
true
;
propertyDone
=
true
;
propertyDone
=
true
;
safety
.
result
=
true
;
}
}
}
}
if
(
studyReinit
)
{
propertyDone
=
true
;
initState
.
setResult
(
false
);
}
}
}
...
@@ -2092,6 +2120,23 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
...
@@ -2092,6 +2120,23 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
}
}
return
ret
.
toString
();
return
ret
.
toString
();
}
}
public
String
reinitToString
()
{
if
(!
studyReinit
||
initState
==
null
)
{
return
"Reinitialization check not activeted\n"
;
}
String
ret
;
if
(
initState
.
getResult
())
{
ret
=
"property is satisfied\n"
;
}
else
{
ret
=
"property is NOT satisfied\n"
;
}
return
ret
;
}
// Do not free the RG
// Do not free the RG
public
void
freeUselessAllocations
()
{
public
void
freeUselessAllocations
()
{
...
...
This diff is collapsed.
Click to expand it.
src/main/java/ui/window/JDialogAvatarModelChecker.java
+
18
−
1
View file @
34528859
...
@@ -101,6 +101,7 @@ public class JDialogAvatarModelChecker extends javax.swing.JFrame implements Act
...
@@ -101,6 +101,7 @@ public class JDialogAvatarModelChecker extends javax.swing.JFrame implements Act
protected
static
int
livenessSelected
=
LIVENESS_NONE
;
protected
static
int
livenessSelected
=
LIVENESS_NONE
;
protected
static
boolean
safetySelected
=
false
;
protected
static
boolean
safetySelected
=
false
;
protected
static
boolean
checkNoDeadSelected
=
false
;
protected
static
boolean
checkNoDeadSelected
=
false
;
protected
static
boolean
checkReinitSelected
=
false
;
protected
static
boolean
limitStatesSelected
=
false
;
protected
static
boolean
limitStatesSelected
=
false
;
protected
static
String
stateLimitValue
;
protected
static
String
stateLimitValue
;
protected
static
boolean
limitTimeSelected
=
false
;
protected
static
boolean
limitTimeSelected
=
false
;
...
@@ -151,6 +152,7 @@ public class JDialogAvatarModelChecker extends javax.swing.JFrame implements Act
...
@@ -151,6 +152,7 @@ public class JDialogAvatarModelChecker extends javax.swing.JFrame implements Act
protected
JCheckBox
timeLimit
;
protected
JCheckBox
timeLimit
;
protected
JTextField
timeLimitField
;
protected
JTextField
timeLimitField
;
protected
JCheckBox
noDeadlocks
;
protected
JCheckBox
noDeadlocks
;
protected
JCheckBox
reinit
;
protected
JCheckBox
safety
;
protected
JCheckBox
safety
;
protected
JButton
checkUncheckAllPragmas
;
protected
JButton
checkUncheckAllPragmas
;
protected
java
.
util
.
List
<
JCheckBox
>
customChecks
;
protected
java
.
util
.
List
<
JCheckBox
>
customChecks
;
...
@@ -302,9 +304,17 @@ public class JDialogAvatarModelChecker extends javax.swing.JFrame implements Act
...
@@ -302,9 +304,17 @@ public class JDialogAvatarModelChecker extends javax.swing.JFrame implements Act
// Deadlocks
// Deadlocks
cbasic
.
gridwidth
=
1
;
noDeadlocks
=
new
JCheckBox
(
"No deadlocks?"
,
checkNoDeadSelected
);
noDeadlocks
=
new
JCheckBox
(
"No deadlocks?"
,
checkNoDeadSelected
);
noDeadlocks
.
addActionListener
(
this
);
noDeadlocks
.
addActionListener
(
this
);
jpbasic
.
add
(
noDeadlocks
,
cbasic
);
jpbasic
.
add
(
noDeadlocks
,
cbasic
);
// Reinit
cbasic
.
gridwidth
=
GridBagConstraints
.
REMAINDER
;
reinit
=
new
JCheckBox
(
"Reinitialization?"
,
checkReinitSelected
);
reinit
.
addActionListener
(
this
);
jpbasic
.
add
(
reinit
,
cbasic
);
// Reachability
// Reachability
...
@@ -699,6 +709,7 @@ public class JDialogAvatarModelChecker extends javax.swing.JFrame implements Act
...
@@ -699,6 +709,7 @@ public class JDialogAvatarModelChecker extends javax.swing.JFrame implements Act
amc
.
setIgnoreConcurrenceBetweenInternalActions
(
ignoreConcurrenceBetweenInternalActionsSelected
);
amc
.
setIgnoreConcurrenceBetweenInternalActions
(
ignoreConcurrenceBetweenInternalActionsSelected
);
amc
.
setIgnoreInternalStates
(
ignoreInternalStatesSelected
);
amc
.
setIgnoreInternalStates
(
ignoreInternalStatesSelected
);
amc
.
setCheckNoDeadlocks
(
checkNoDeadSelected
);
amc
.
setCheckNoDeadlocks
(
checkNoDeadSelected
);
amc
.
setReinitAnalysis
(
checkReinitSelected
);
// Reachability
// Reachability
int
res
;
int
res
;
...
@@ -824,9 +835,14 @@ public class JDialogAvatarModelChecker extends javax.swing.JFrame implements Act
...
@@ -824,9 +835,14 @@ public class JDialogAvatarModelChecker extends javax.swing.JFrame implements Act
jta
.
append
(
"\n\nModel checking done\n"
);
jta
.
append
(
"\n\nModel checking done\n"
);
jta
.
append
(
"Nb of states:"
+
amc
.
getNbOfStates
()
+
"\n"
);
jta
.
append
(
"Nb of states:"
+
amc
.
getNbOfStates
()
+
"\n"
);
jta
.
append
(
"Nb of links:"
+
amc
.
getNbOfLinks
()
+
"\n"
);
jta
.
append
(
"Nb of links:"
+
amc
.
getNbOfLinks
()
+
"\n"
);
if
(
checkNoDeadSelected
)
{
if
(
checkNoDeadSelected
)
{
jta
.
append
(
"\nNo deadlocks?\n"
+
"-> "
+
amc
.
deadlockToString
()
+
"\n"
);
jta
.
append
(
"\nNo deadlocks?\n"
+
"-> "
+
amc
.
deadlockToString
()
+
"\n"
);
}
}
if
(
checkReinitSelected
)
{
jta
.
append
(
"\nReinitialization?\n"
+
"-> "
+
amc
.
reinitToString
()
+
"\n"
);
}
if
((
reachabilitySelected
==
REACHABILITY_SELECTED
)
||
(
reachabilitySelected
==
REACHABILITY_ALL
))
{
if
((
reachabilitySelected
==
REACHABILITY_SELECTED
)
||
(
reachabilitySelected
==
REACHABILITY_ALL
))
{
jta
.
append
(
"\nReachabilities found:\n"
);
jta
.
append
(
"\nReachabilities found:\n"
);
...
@@ -1002,6 +1018,7 @@ public class JDialogAvatarModelChecker extends javax.swing.JFrame implements Act
...
@@ -1002,6 +1018,7 @@ public class JDialogAvatarModelChecker extends javax.swing.JFrame implements Act
ignoreConcurrenceBetweenInternalActionsSelected
=
ignoreConcurrenceBetweenInternalActions
.
isSelected
();
ignoreConcurrenceBetweenInternalActionsSelected
=
ignoreConcurrenceBetweenInternalActions
.
isSelected
();
ignoreInternalStatesSelected
=
ignoreInternalStates
.
isSelected
();
ignoreInternalStatesSelected
=
ignoreInternalStates
.
isSelected
();
checkNoDeadSelected
=
noDeadlocks
.
isSelected
();
checkNoDeadSelected
=
noDeadlocks
.
isSelected
();
checkReinitSelected
=
reinit
.
isSelected
();
if
(
noReachability
.
isSelected
())
{
if
(
noReachability
.
isSelected
())
{
reachabilitySelected
=
REACHABILITY_NONE
;
reachabilitySelected
=
REACHABILITY_NONE
;
...
@@ -1034,7 +1051,7 @@ public class JDialogAvatarModelChecker extends javax.swing.JFrame implements Act
...
@@ -1034,7 +1051,7 @@ public class JDialogAvatarModelChecker extends javax.swing.JFrame implements Act
switch
(
mode
)
{
switch
(
mode
)
{
case
NOT_STARTED:
case
NOT_STARTED:
if
((
reachabilitySelected
==
REACHABILITY_SELECTED
)
||
(
reachabilitySelected
==
REACHABILITY_ALL
)
||
(
livenessSelected
==
LIVENESS_SELECTED
)
||
(
livenessSelected
==
LIVENESS_ALL
)
||
checkNoDeadSelected
||
graphSelected
||
graphSelectedDot
)
{
if
((
reachabilitySelected
==
REACHABILITY_SELECTED
)
||
(
reachabilitySelected
==
REACHABILITY_ALL
)
||
(
livenessSelected
==
LIVENESS_SELECTED
)
||
(
livenessSelected
==
LIVENESS_ALL
)
||
checkNoDeadSelected
||
checkReinitSelected
||
graphSelected
||
graphSelectedDot
)
{
start
.
setEnabled
(
true
);
start
.
setEnabled
(
true
);
}
else
{
}
else
{
if
(
safetySelected
)
{
if
(
safetySelected
)
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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!
Save comment
Cancel
Please
register
or
sign in
to comment