umaudemc 0.12.1__py3-none-any.whl → 0.13.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- umaudemc/__init__.py +1 -1
- umaudemc/__main__.py +7 -1
- umaudemc/api.py +3 -3
- umaudemc/backend/_spot.py +7 -8
- umaudemc/backend/bmcalc.py +8 -8
- umaudemc/backend/ltsmin.py +1 -1
- umaudemc/backend/nusmv.py +1 -1
- umaudemc/backend/prism.py +3 -3
- umaudemc/backend/spin.py +1 -1
- umaudemc/command/acheck.py +21 -0
- umaudemc/command/graph.py +31 -3
- umaudemc/command/scheck.py +1 -1
- umaudemc/command/test.py +28 -10
- umaudemc/common.py +0 -24
- umaudemc/counterprint.py +12 -4
- umaudemc/data/smcgraph.js +3 -0
- umaudemc/data/smcview.js +42 -29
- umaudemc/formatter.py +20 -25
- umaudemc/formulae.py +4 -4
- umaudemc/grapher.py +6 -5
- umaudemc/gtk.py +88 -499
- umaudemc/kleene.py +156 -0
- umaudemc/mproc.py +1 -1
- umaudemc/opsem.py +1 -1
- umaudemc/probabilistic.py +13 -10
- umaudemc/pyslang.py +320 -186
- umaudemc/quatex.py +3 -3
- umaudemc/resources.py +25 -9
- umaudemc/webui.py +37 -34
- umaudemc/wrappers.py +44 -2
- {umaudemc-0.12.1.dist-info → umaudemc-0.13.0.dist-info}/METADATA +6 -7
- umaudemc-0.13.0.dist-info/RECORD +59 -0
- {umaudemc-0.12.1.dist-info → umaudemc-0.13.0.dist-info}/WHEEL +1 -1
- umaudemc-0.12.1.dist-info/RECORD +0 -57
- {umaudemc-0.12.1.dist-info → umaudemc-0.13.0.dist-info}/LICENSE +0 -0
- {umaudemc-0.12.1.dist-info → umaudemc-0.13.0.dist-info}/entry_points.txt +0 -0
- {umaudemc-0.12.1.dist-info → umaudemc-0.13.0.dist-info}/top_level.txt +0 -0
umaudemc/quatex.py
CHANGED
|
@@ -459,7 +459,7 @@ class QuaTExParser:
|
|
|
459
459
|
|
|
460
460
|
slot = self.fslots.setdefault(call_name, len(self.fslots))
|
|
461
461
|
current = ast.Tuple([ast.Constant(inside_next), ast.Constant(slot), *args],
|
|
462
|
-
ast.Load(),
|
|
462
|
+
ast.Load(), custom_loc=(call_line, call_column))
|
|
463
463
|
self.calls.append((call_name, call_line, call_column, len(args)))
|
|
464
464
|
inside_next = False
|
|
465
465
|
call_name = None
|
|
@@ -698,7 +698,7 @@ class QuaTExParser:
|
|
|
698
698
|
|
|
699
699
|
if isinstance(expr, ast.Tuple) and not tail_pos:
|
|
700
700
|
self._eprint('non-tail calls are not allowed.',
|
|
701
|
-
line=expr.
|
|
701
|
+
line=expr.custom_loc[0], column=expr.custom_loc[1])
|
|
702
702
|
return False
|
|
703
703
|
|
|
704
704
|
elif isinstance(expr, ast.UnaryOp):
|
|
@@ -732,7 +732,7 @@ class QuaTExParser:
|
|
|
732
732
|
else:
|
|
733
733
|
arities[name] = len(args)
|
|
734
734
|
|
|
735
|
-
# Check whether all called are well
|
|
735
|
+
# Check whether all called are well-defined
|
|
736
736
|
for name, line, column, arity in self.calls:
|
|
737
737
|
def_arity = arities.get(name)
|
|
738
738
|
|
umaudemc/resources.py
CHANGED
|
@@ -7,26 +7,42 @@
|
|
|
7
7
|
# importlib_resources in previous versions.
|
|
8
8
|
#
|
|
9
9
|
|
|
10
|
+
import sys
|
|
10
11
|
import importlib.resources as pkg_resources
|
|
11
12
|
|
|
12
13
|
from . import data # Import the data directory as a package
|
|
13
14
|
|
|
15
|
+
# To avoid deprecation warnings in Python 3.11 and above
|
|
16
|
+
if sys.version_info >= (3, 9):
|
|
17
|
+
|
|
18
|
+
def get_resource_path(name):
|
|
19
|
+
"""Get a temporary filename for a given named resource"""
|
|
20
|
+
return pkg_resources.as_file(pkg_resources.files(data) / name)
|
|
14
21
|
|
|
15
|
-
def
|
|
16
|
-
|
|
17
|
-
|
|
22
|
+
def get_resource_content(name):
|
|
23
|
+
"""Get the string content of a given named resource"""
|
|
24
|
+
return (pkg_resources.files(data) / name).read_text()
|
|
18
25
|
|
|
26
|
+
def get_resource_binary(name):
|
|
27
|
+
"""Get the string content of a given named resource"""
|
|
28
|
+
return (pkg_resources.files(data) / name).read_bytes()
|
|
19
29
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
30
|
+
# For compatibility with Python 3.8
|
|
31
|
+
else:
|
|
32
|
+
def get_resource_path(name):
|
|
33
|
+
"""Get a temporary filename for a given named resource"""
|
|
34
|
+
return pkg_resources.path(data, name)
|
|
23
35
|
|
|
24
36
|
|
|
25
|
-
def
|
|
26
|
-
|
|
27
|
-
|
|
37
|
+
def get_resource_content(name):
|
|
38
|
+
"""Get the string content of a given named resource"""
|
|
39
|
+
return pkg_resources.read_text(data, name)
|
|
28
40
|
|
|
29
41
|
|
|
42
|
+
def get_resource_binary(name):
|
|
43
|
+
"""Get the string content of a given named resource"""
|
|
44
|
+
return pkg_resources.read_binary(data, name)
|
|
45
|
+
|
|
30
46
|
def get_templog():
|
|
31
47
|
"""Get a temporary filename for the templog Maude file"""
|
|
32
48
|
return get_resource_path('templog.maude')
|
umaudemc/webui.py
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
# Web-based user interface
|
|
3
3
|
#
|
|
4
4
|
|
|
5
|
-
import cgi
|
|
6
5
|
import http.server
|
|
7
6
|
import json
|
|
7
|
+
import math
|
|
8
8
|
import os
|
|
9
9
|
import pathlib
|
|
10
10
|
import re
|
|
@@ -74,7 +74,7 @@ class PathHandler:
|
|
|
74
74
|
full_path = pathlib.Path(path).resolve()
|
|
75
75
|
relative_path = full_path
|
|
76
76
|
|
|
77
|
-
# With
|
|
77
|
+
# With an explicit root, paths are given relative to it
|
|
78
78
|
else:
|
|
79
79
|
full_path = (self.root / path.lstrip('/')).resolve()
|
|
80
80
|
|
|
@@ -155,10 +155,10 @@ class RequestHandler(http.server.BaseHTTPRequestHandler):
|
|
|
155
155
|
"""Object charged of handling the requests"""
|
|
156
156
|
|
|
157
157
|
STATIC_FILES = {
|
|
158
|
-
'/'
|
|
159
|
-
'/smcview.css'
|
|
160
|
-
'/smcview.js'
|
|
161
|
-
'/smcgraph.js'
|
|
158
|
+
'/' : ('select.htm', 'text/html; charset=utf-8'),
|
|
159
|
+
'/smcview.css' : ('smcview.css', 'text/css; charset=utf-8'),
|
|
160
|
+
'/smcview.js' : ('smcview.js', 'text/javascript; charset=utf-8'),
|
|
161
|
+
'/smcgraph.js' : ('smcgraph.js', 'text/javascript; charset=utf-8'),
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
def do_GET(self):
|
|
@@ -175,12 +175,11 @@ class RequestHandler(http.server.BaseHTTPRequestHandler):
|
|
|
175
175
|
self.send_error(404)
|
|
176
176
|
|
|
177
177
|
def do_POST(self):
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
'CONTENT_TYPE': self.headers['Content-Type']})
|
|
178
|
+
# Read the JSON body of the request
|
|
179
|
+
form = json.loads(self.rfile.read(int(self.headers['Content-Length'])))
|
|
181
180
|
|
|
182
|
-
question = form.
|
|
183
|
-
url = form.
|
|
181
|
+
question = form.get('question')
|
|
182
|
+
url = form.get('url', None)
|
|
184
183
|
|
|
185
184
|
if question == 'ls':
|
|
186
185
|
base, parent, dirs, files = self.server.info.path_handler.browse_dir(url)
|
|
@@ -193,10 +192,10 @@ class RequestHandler(http.server.BaseHTTPRequestHandler):
|
|
|
193
192
|
self.end_headers()
|
|
194
193
|
|
|
195
194
|
response = {
|
|
196
|
-
'base'
|
|
197
|
-
'parent'
|
|
198
|
-
'dirs'
|
|
199
|
-
'files'
|
|
195
|
+
'base' : base,
|
|
196
|
+
'parent' : parent,
|
|
197
|
+
'dirs' : dirs,
|
|
198
|
+
'files' : files
|
|
200
199
|
}
|
|
201
200
|
self.wfile.write(json.dumps(response).encode('utf-8'))
|
|
202
201
|
elif question == 'sourceinfo':
|
|
@@ -216,16 +215,16 @@ class RequestHandler(http.server.BaseHTTPRequestHandler):
|
|
|
216
215
|
self.send_response(200)
|
|
217
216
|
self.send_header('Content-Type', 'text/json; charset=utf-8')
|
|
218
217
|
self.end_headers()
|
|
219
|
-
mod = form.
|
|
218
|
+
mod = form.get('mod')
|
|
220
219
|
minfo = self.server.info.remote.getModuleInfo(mod)
|
|
221
220
|
response = {
|
|
222
|
-
'name'
|
|
223
|
-
'type'
|
|
224
|
-
'params'
|
|
225
|
-
'valid'
|
|
226
|
-
'stateSorts'
|
|
227
|
-
'strategies'
|
|
228
|
-
'props'
|
|
221
|
+
'name' : mod,
|
|
222
|
+
'type' : minfo['type'],
|
|
223
|
+
'params' : [],
|
|
224
|
+
'valid' : minfo['valid'],
|
|
225
|
+
'stateSorts' : minfo.get('state', []),
|
|
226
|
+
'strategies' : [self.make_signature(signat) for signat in minfo.get('strat', ())],
|
|
227
|
+
'props' : [self.make_signature(signat) for signat in minfo.get('prop', ())]
|
|
229
228
|
}
|
|
230
229
|
self.wfile.write(json.dumps(response).encode('utf-8'))
|
|
231
230
|
elif question == 'modelcheck':
|
|
@@ -233,13 +232,13 @@ class RequestHandler(http.server.BaseHTTPRequestHandler):
|
|
|
233
232
|
self.send_header('Content-Type', 'text/json; charset=utf-8')
|
|
234
233
|
self.end_headers()
|
|
235
234
|
data = {
|
|
236
|
-
'module': form.
|
|
237
|
-
'initial': form.
|
|
238
|
-
'formula': form.
|
|
239
|
-
'strat': form.
|
|
240
|
-
'opaques': form.
|
|
241
|
-
'passign': self.make_passign(form),
|
|
242
|
-
'reward': form.
|
|
235
|
+
'module' : form.get('mod'),
|
|
236
|
+
'initial' : form.get('initial'),
|
|
237
|
+
'formula' : form.get('formula'),
|
|
238
|
+
'strat' : form.get('strategy'),
|
|
239
|
+
'opaques' : form.get('opaques'),
|
|
240
|
+
'passign' : self.make_passign(form),
|
|
241
|
+
'reward' : form.get('reward', None),
|
|
243
242
|
}
|
|
244
243
|
result = self.server.info.remote.modelCheck(data)
|
|
245
244
|
response = {
|
|
@@ -266,7 +265,7 @@ class RequestHandler(http.server.BaseHTTPRequestHandler):
|
|
|
266
265
|
|
|
267
266
|
self.wfile.write(json.dumps(response).encode('utf-8'))
|
|
268
267
|
elif question == 'wait':
|
|
269
|
-
mcref = int(form.
|
|
268
|
+
mcref = int(form.get('mcref'))
|
|
270
269
|
|
|
271
270
|
# Model checking is actually done here
|
|
272
271
|
result = self.server.info.remote.get_result(mcref)
|
|
@@ -282,6 +281,10 @@ class RequestHandler(http.server.BaseHTTPRequestHandler):
|
|
|
282
281
|
self.send_header('Content-Type', 'text/json; charset=utf-8')
|
|
283
282
|
self.end_headers()
|
|
284
283
|
|
|
284
|
+
# JSON does not support infinity, so we translate it here
|
|
285
|
+
if result['rtype'] == 'n' and math.isinf(result['result']):
|
|
286
|
+
result['result'] = '∞'
|
|
287
|
+
|
|
285
288
|
response = {
|
|
286
289
|
'hasCounterexample': result['hasCounterexample'],
|
|
287
290
|
'formula' : data['formula'],
|
|
@@ -322,16 +325,16 @@ class RequestHandler(http.server.BaseHTTPRequestHandler):
|
|
|
322
325
|
def make_passign(form):
|
|
323
326
|
"""Build a passign term from its name and argument"""
|
|
324
327
|
|
|
325
|
-
name = form.
|
|
328
|
+
name = form.get('pmethod', None)
|
|
326
329
|
|
|
327
330
|
if name is None:
|
|
328
331
|
return None
|
|
329
332
|
|
|
330
|
-
argument = form.
|
|
333
|
+
argument = form.get('pargument', '')
|
|
331
334
|
|
|
332
335
|
# Add mdp- prefix when MDP is selected and admissible
|
|
333
336
|
can_mdp = name not in ('uaction', 'strategy')
|
|
334
|
-
mdp = 'mdp-' if can_mdp and form.
|
|
337
|
+
mdp = 'mdp-' if can_mdp and form.get('mdp') == 'true' else ''
|
|
335
338
|
|
|
336
339
|
return f'{mdp}{name}({argument})' if argument else f'{mdp}{name}'
|
|
337
340
|
|
umaudemc/wrappers.py
CHANGED
|
@@ -11,6 +11,8 @@ from .common import maude, default_model_settings
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def default_getNextStates(self, stateNr):
|
|
14
|
+
"""Generator of all the successors of a state"""
|
|
15
|
+
|
|
14
16
|
index = 0
|
|
15
17
|
next_state = self.getNextState(stateNr, index)
|
|
16
18
|
|
|
@@ -20,10 +22,38 @@ def default_getNextStates(self, stateNr):
|
|
|
20
22
|
next_state = self.getNextState(stateNr, index)
|
|
21
23
|
|
|
22
24
|
|
|
25
|
+
def standard_getTransitions(self, stateNr):
|
|
26
|
+
"""Generator of all the transitions (target state and rule) of a rewrite graph"""
|
|
27
|
+
|
|
28
|
+
index = 0
|
|
29
|
+
next_state = self.getNextState(stateNr, index)
|
|
30
|
+
|
|
31
|
+
while next_state != -1:
|
|
32
|
+
yield next_state, self.getRule(stateNr, next_state)
|
|
33
|
+
index = index + 1
|
|
34
|
+
next_state = self.getNextState(stateNr, index)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def strategy_getTransitions(self, stateNr):
|
|
38
|
+
"""Generator of all the transitions of a strategy-controlled rewrite graph"""
|
|
39
|
+
|
|
40
|
+
index = 0
|
|
41
|
+
next_state = self.getNextState(stateNr, index)
|
|
42
|
+
|
|
43
|
+
while next_state != -1:
|
|
44
|
+
yield next_state, self.getTransition(stateNr, next_state)
|
|
45
|
+
index = index + 1
|
|
46
|
+
next_state = self.getNextState(stateNr, index)
|
|
47
|
+
|
|
48
|
+
|
|
23
49
|
# Add getNextStates to the original graphs
|
|
24
50
|
maude.RewriteGraph.getNextStates = default_getNextStates
|
|
25
51
|
maude.StrategyRewriteGraph.getNextStates = default_getNextStates
|
|
26
52
|
|
|
53
|
+
# Add getTransitions to the original graphs
|
|
54
|
+
maude.RewriteGraph.getTransitions = standard_getTransitions
|
|
55
|
+
maude.StrategyRewriteGraph.getTransitions = strategy_getTransitions
|
|
56
|
+
|
|
27
57
|
# Add a property to know whether the graph is strategy-controlled
|
|
28
58
|
maude.RewriteGraph.strategyControlled = False
|
|
29
59
|
maude.StrategyRewriteGraph.strategyControlled = True
|
|
@@ -50,6 +80,9 @@ class WrappedGraph:
|
|
|
50
80
|
def getTransition(self, *args):
|
|
51
81
|
return self.graph.getTransition(*args)
|
|
52
82
|
|
|
83
|
+
def getTransitions(self, stateNr):
|
|
84
|
+
return self.graph.getTransitions(stateNr)
|
|
85
|
+
|
|
53
86
|
def getNrStates(self):
|
|
54
87
|
return self.graph.getNrStates()
|
|
55
88
|
|
|
@@ -113,6 +146,11 @@ class FailFreeGraph(WrappedGraph):
|
|
|
113
146
|
if self.valid_states[next_state]:
|
|
114
147
|
yield next_state
|
|
115
148
|
|
|
149
|
+
def getTransitions(self, stateNr):
|
|
150
|
+
for next_state, edge in self.graph.getTransitions(stateNr):
|
|
151
|
+
if self.valid_states[next_state]:
|
|
152
|
+
yield next_state, edge
|
|
153
|
+
|
|
116
154
|
|
|
117
155
|
class MergedGraph:
|
|
118
156
|
"""A graph where states are merged"""
|
|
@@ -141,6 +179,10 @@ class MergedGraph:
|
|
|
141
179
|
return trans
|
|
142
180
|
return None
|
|
143
181
|
|
|
182
|
+
def getTransitions(self, stateNr):
|
|
183
|
+
for next_state in self.getNextStates(stateNr):
|
|
184
|
+
yield next_state, self.getTransition(stateNr, next_state)
|
|
185
|
+
|
|
144
186
|
def getNrStates(self):
|
|
145
187
|
return len(self.states)
|
|
146
188
|
|
|
@@ -252,7 +294,7 @@ class BoundedGraph(WrappedGraph):
|
|
|
252
294
|
yield next_state
|
|
253
295
|
|
|
254
296
|
|
|
255
|
-
def
|
|
297
|
+
def wrap_graph(graph, purge_fails, merge_states):
|
|
256
298
|
"""Wrap graphs according to the model modification options"""
|
|
257
299
|
if purge_fails == 'yes':
|
|
258
300
|
graph = FailFreeGraph(graph)
|
|
@@ -277,4 +319,4 @@ def create_graph(term=None, strategy=None, opaque=(), full_matchrew=False, purge
|
|
|
277
319
|
# Wrap the graph with the model modification for branching-time
|
|
278
320
|
purge_fails, merge_states = default_model_settings(logic, purge_fails, merge_states, strategy,
|
|
279
321
|
tableau=tableau)
|
|
280
|
-
return
|
|
322
|
+
return wrap_graph(graph, purge_fails, merge_states)
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: umaudemc
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.13.0
|
|
4
4
|
Summary: Unified Maude model-checking utility
|
|
5
|
-
|
|
6
|
-
Author: ningit
|
|
7
|
-
Author-email: ningit@users.noreply.github.com
|
|
5
|
+
Author-email: ningit <ningit@users.noreply.github.com>
|
|
8
6
|
License: GPLv3
|
|
7
|
+
Project-URL: Homepage, https://github.com/fadoss/umaudemc
|
|
9
8
|
Project-URL: Bug Tracker, https://github.com/fadoss/umaudemc/issues
|
|
10
9
|
Project-URL: Documentation, https://github.com/fadoss/umaudemc
|
|
11
10
|
Project-URL: Source Code, https://github.com/fadoss/umaudemc
|
|
@@ -17,9 +16,9 @@ Classifier: Operating System :: OS Independent
|
|
|
17
16
|
Requires-Python: >=3.7
|
|
18
17
|
Description-Content-Type: text/markdown
|
|
19
18
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist: maude
|
|
21
|
-
Provides-Extra:
|
|
22
|
-
Requires-Dist: pyModelChecking
|
|
19
|
+
Requires-Dist: maude >=1.0
|
|
20
|
+
Provides-Extra: ctlstar
|
|
21
|
+
Requires-Dist: pyModelChecking >=1.3.3 ; extra == 'ctlstar'
|
|
23
22
|
Provides-Extra: plot
|
|
24
23
|
Requires-Dist: matplotlib ; extra == 'plot'
|
|
25
24
|
Provides-Extra: smc
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
umaudemc/__init__.py,sha256=KzYlv9mV5BAclb_b4mb6NprSS8L9Xd0qsNzjQFwnp30,23
|
|
2
|
+
umaudemc/__main__.py,sha256=PBIa2mStJwNIK5YnwoCefEB_a59VLkHE_Zp_1hnMyg4,14060
|
|
3
|
+
umaudemc/api.py,sha256=I-o5foy8NUlO4JT4pX9L7kkuHQG_8_GMkWlOKt708E8,19733
|
|
4
|
+
umaudemc/backends.py,sha256=mzJkALYwcKPInT0lBiRsCxJSewKvx5j_akQsqWN1Ezo,4590
|
|
5
|
+
umaudemc/common.py,sha256=5jtR_HLZmTDrZFU2Isd3tJudZdMD-RbkiuHMUA3wPiE,4922
|
|
6
|
+
umaudemc/counterprint.py,sha256=vVqM_UjGRk_xeftFxBGI5m6cQXV7mf8KvbQ_fvAvSQk,9226
|
|
7
|
+
umaudemc/formatter.py,sha256=36l0nc9IIe4B0_eW_PPfDTIxJj0mHKZfddCUugrEyjM,6024
|
|
8
|
+
umaudemc/formulae.py,sha256=jZPPDhjgsb7cs5rWvitiQoO0fd8JIlK98at2SN-LzVE,12156
|
|
9
|
+
umaudemc/grapher.py,sha256=K1chKNNlEzQvfOsiFmRPJmd9OpxRIrg6OyiMW6gqOCU,4348
|
|
10
|
+
umaudemc/gtk.py,sha256=61p4_OSFDfNHFD4lLz3QTZ7yZBra3RINmgbcnB-mUis,4249
|
|
11
|
+
umaudemc/jani.py,sha256=N5tE28jZC_OsI041nXOn02THlokpweATtEK-nx9pfWE,4130
|
|
12
|
+
umaudemc/kleene.py,sha256=Yxo9O2rjJNpS6y4Qfb_SP71tDrryV0KKUfmBIKXypwg,4458
|
|
13
|
+
umaudemc/mproc.py,sha256=9X5pTb3Z3XHcdOo8ynH7I5RZQpjzm9xr4IBbEtaglUE,11766
|
|
14
|
+
umaudemc/opsem.py,sha256=p49k8Dto0zJ7jeI8Ih5Q9bB4lqMQaF39kxprlvCMN3U,9448
|
|
15
|
+
umaudemc/probabilistic.py,sha256=f1ZtV84mAuaaGSmYCpun8gaUi5PFGCPD96BUgYvvBGk,29304
|
|
16
|
+
umaudemc/pyslang.py,sha256=m501iqJb4fVlIimpOy_tO7woK5QLkTWYav0no7onoXM,85099
|
|
17
|
+
umaudemc/quatex.py,sha256=HQoiC8N7WnloHPBgNlcpWUi0NcIyUXm3IK_glfHbu4A,21611
|
|
18
|
+
umaudemc/resources.py,sha256=k1sekrTafAcOb7GQN-mx2BgCBEBPUi-IR_4EjNjRRmU,1530
|
|
19
|
+
umaudemc/simulators.py,sha256=gjCWR-TiPeOv65viH-djAkazqaLV0olwfbU6Nak2rdE,13205
|
|
20
|
+
umaudemc/statistical.py,sha256=Az7r4uuB1XrO4akBiYu2th7DSPGzDDAacu6W5wJym-Q,9015
|
|
21
|
+
umaudemc/terminal.py,sha256=B4GWLyW4Sdymgoavj418y4TI4MnWqNu3JS4BBoSYeTc,1037
|
|
22
|
+
umaudemc/usermsgs.py,sha256=d3RfyBGEBmcV_c2MeXWCtZIiiM2vFnaHsN3MHwMnyAs,583
|
|
23
|
+
umaudemc/webui.py,sha256=7dWf5VVl5dGN9oBVTT8m6F4v_QqEbsKSH67q5FljuT8,11071
|
|
24
|
+
umaudemc/wrappers.py,sha256=uz9JV1zBVqzkuoByUd569fEcSxT_00aCJw-jcDtrFpE,9399
|
|
25
|
+
umaudemc/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
|
+
umaudemc/backend/_pymc.py,sha256=asfN3uc0PbizVTiBt0Hs1n7jxzUN629Baj90z5X8Gjc,6679
|
|
27
|
+
umaudemc/backend/_spot.py,sha256=rwnXJG98kLsjjobeYdFh5RqK07al0bGMzjz2gLnUPOQ,9166
|
|
28
|
+
umaudemc/backend/_storm.py,sha256=yhHPNxLOekr9ZdzZv5Jzv1K6R5hIrYKQ4SES0rds_0A,4675
|
|
29
|
+
umaudemc/backend/_stormpy.py,sha256=KPbRkVYZhwlL007GfbJJc2VBHbBz3_UKqUNM0FV7PyU,8280
|
|
30
|
+
umaudemc/backend/bmcalc.py,sha256=fE6RxIETYu-ywzrwRvWJP5ZZbZXuUbO6TdV4bcJjA6E,17502
|
|
31
|
+
umaudemc/backend/ltsmin.py,sha256=iZNzVQ74oiMOdIv1zNW8oeiLzGO88ENqLfhPQ20i4E0,21103
|
|
32
|
+
umaudemc/backend/nusmv.py,sha256=ebHWUYv6IcOedD2qsafqyvmEjLaxMmCMBy3tyAfrYUE,10913
|
|
33
|
+
umaudemc/backend/prism.py,sha256=a78MEMXDRD-QRheQIDiAgVKDPyqkQ8iTAWmRE6lsKH4,15502
|
|
34
|
+
umaudemc/backend/pymc.py,sha256=_NXTEpXsf0s5_WE3-1y63jx6iKj2KSjmn8hZZcWMltI,309
|
|
35
|
+
umaudemc/backend/spin.py,sha256=fe5w1YyVQ3LHGiP7jVex5yXC17CwTHlPvM4B3j7kvwk,9663
|
|
36
|
+
umaudemc/backend/spot.py,sha256=P7vkxhY7Tx9J_rOmlua3bfiO8iMgNIuEi25ZNYZRLHk,283
|
|
37
|
+
umaudemc/backend/storm.py,sha256=FlhJ0ZkJO84GjEUxuE2hQQJxJoeE_lElBB5NJL4NXTU,276
|
|
38
|
+
umaudemc/command/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
|
+
umaudemc/command/acheck.py,sha256=lEywzcr-yEszvVcEaCELBqN3FJBNpr8C6Xoo8qGWxrU,385
|
|
40
|
+
umaudemc/command/check.py,sha256=fzRUGAHNudZPYFk94ekwKplv9N7Fhsrmf5pOFsvPZwA,12030
|
|
41
|
+
umaudemc/command/graph.py,sha256=74U-yY9NEm5oTeUjspkwy6Ve_eLBTwx8LgZDzUk2LQw,6112
|
|
42
|
+
umaudemc/command/pcheck.py,sha256=RcgwQn8xBgt9eZC1sE3JzR97MB0SC6Q1AXuiKkkzJes,7274
|
|
43
|
+
umaudemc/command/scheck.py,sha256=eRGE-2SsOf6etIfJQ9dJe4cSch8qAs7IuOR94i-E1_U,4653
|
|
44
|
+
umaudemc/command/test.py,sha256=4Uw83V-gVbm21L0Zkv3mKOUpamiNM-qMxGVAYs-trdY,38734
|
|
45
|
+
umaudemc/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
|
+
umaudemc/data/opsem.maude,sha256=geDP3_RMgtS1rRmYOybJDCXn_-dyHHxg0JxfYg1ftv0,27929
|
|
47
|
+
umaudemc/data/problog.maude,sha256=qvP90peT3J9gWi7I0x86jfrEXsVxDP5lcrUnSkTMhcY,3091
|
|
48
|
+
umaudemc/data/result.htm,sha256=IwllBM3p4F-QFvOYZZR6bZicL-FuuPLainU9DUPPyNA,1766
|
|
49
|
+
umaudemc/data/select.htm,sha256=g0eXHHFxRpxJ9tqOfSgn_QmSQy0E-ET7MimBllGk6vk,4600
|
|
50
|
+
umaudemc/data/smcgraph.js,sha256=iCNQNmsuGdL_GLnqVhGDisediFtedxw3C24rxSiQwx8,6674
|
|
51
|
+
umaudemc/data/smcview.css,sha256=ExFqrMkSeaf8VxFrJXflyCsRW3FTwbv78q0Hoo2UVrM,3833
|
|
52
|
+
umaudemc/data/smcview.js,sha256=_fHum1DRU1mhco-9-c6KqTLgiC5u_cCUf61jIK7wcIQ,14509
|
|
53
|
+
umaudemc/data/templog.maude,sha256=TZ-66hVWoG6gp7gJpS6FsQn7dpBTLrr76bKo-UfHGcA,9161
|
|
54
|
+
umaudemc-0.13.0.dist-info/LICENSE,sha256=MrEGL32oSWfnAZ0Bq4BZNcqnq3Mhp87Q4w6-deXfFnA,17992
|
|
55
|
+
umaudemc-0.13.0.dist-info/METADATA,sha256=TxKYoZevbw_qjRETGj5rzpnrAmdWs2DEQcUT_zhgQdY,1693
|
|
56
|
+
umaudemc-0.13.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
|
57
|
+
umaudemc-0.13.0.dist-info/entry_points.txt,sha256=8rYRlLkn4orZtAoujDSeol1t_UFBrK0bfjmLTNv9B44,52
|
|
58
|
+
umaudemc-0.13.0.dist-info/top_level.txt,sha256=Yo_CF78HLGBSblk3890qLcx6XZ17zHCbGcT9iG8sfMw,9
|
|
59
|
+
umaudemc-0.13.0.dist-info/RECORD,,
|
umaudemc-0.12.1.dist-info/RECORD
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
umaudemc/__init__.py,sha256=M8dH3sTTjYXJ2FxuD_PXBW1cSl4mi0DzrcDnr1i9aAQ,23
|
|
2
|
-
umaudemc/__main__.py,sha256=uvsnSkgE_mCt8VV06oP2n5q2ThuIqdKGcfETuhk2MgU,13882
|
|
3
|
-
umaudemc/api.py,sha256=B7lgAYF6AfzPm83rWRAi63ss3_eMZY_f6tv0Bw8tLLA,19735
|
|
4
|
-
umaudemc/backends.py,sha256=mzJkALYwcKPInT0lBiRsCxJSewKvx5j_akQsqWN1Ezo,4590
|
|
5
|
-
umaudemc/common.py,sha256=oEEjXfdytVnfoq60N1iayjiAfHS6C4L4d_RKJl8Q3rw,6032
|
|
6
|
-
umaudemc/counterprint.py,sha256=WCPiEKXXWXKzALjz7onsbt74_L3OUnk2iWCI_tTHoDM,9114
|
|
7
|
-
umaudemc/formatter.py,sha256=jZbrDUr6fnJiVG9hRCU63rvdLk9TnHs22Tw1R3M5HbU,6560
|
|
8
|
-
umaudemc/formulae.py,sha256=KJ_GS6IOJFeyreSGOwo6U-APXPUM5UWzL5bBWirwrM4,12184
|
|
9
|
-
umaudemc/grapher.py,sha256=mUQjf48Rv0Ej0j6TIozVHfq2Np__j_KbEnygs1n_fbQ,4291
|
|
10
|
-
umaudemc/gtk.py,sha256=EKnmiErOGa6YsPtINDHrPMAmu0xQFLX7sU_t_RzEeK8,17881
|
|
11
|
-
umaudemc/jani.py,sha256=N5tE28jZC_OsI041nXOn02THlokpweATtEK-nx9pfWE,4130
|
|
12
|
-
umaudemc/mproc.py,sha256=pjinJ8zAMcIvQnOxR1VZjBR1vl0YdMNlIE0-3rq2WAA,11768
|
|
13
|
-
umaudemc/opsem.py,sha256=ICIzlAb6ubwpKbOVM8Un23LZ5ZW2DDr7euapwM1axMY,9451
|
|
14
|
-
umaudemc/probabilistic.py,sha256=GUy5urT04RWVTJHWSaGwALCImD6zoV_AxMUZcDlnmds,29210
|
|
15
|
-
umaudemc/pyslang.py,sha256=UnQwHov_2-mq-G0DN8N5TEd220rzG6uVWxbmDsFz2lE,81128
|
|
16
|
-
umaudemc/quatex.py,sha256=zq5DKgFPX8tgoqhwlml0nHYZw6rAwA9sQahznWetk24,21606
|
|
17
|
-
umaudemc/resources.py,sha256=vQyMQFT_3o_aKQgIWGc1gVH9LILhWUVsB-ys-QufHuA,930
|
|
18
|
-
umaudemc/simulators.py,sha256=gjCWR-TiPeOv65viH-djAkazqaLV0olwfbU6Nak2rdE,13205
|
|
19
|
-
umaudemc/statistical.py,sha256=Az7r4uuB1XrO4akBiYu2th7DSPGzDDAacu6W5wJym-Q,9015
|
|
20
|
-
umaudemc/terminal.py,sha256=B4GWLyW4Sdymgoavj418y4TI4MnWqNu3JS4BBoSYeTc,1037
|
|
21
|
-
umaudemc/usermsgs.py,sha256=d3RfyBGEBmcV_c2MeXWCtZIiiM2vFnaHsN3MHwMnyAs,583
|
|
22
|
-
umaudemc/webui.py,sha256=FkO8zw51dsooz5qxMJJ-0aYocwvU50L9jKeEZNm4ayg,11029
|
|
23
|
-
umaudemc/wrappers.py,sha256=8auVvHxdJdBgdMaMWCerdtJ-OurHYrFUWNR0XxJkA9g,8104
|
|
24
|
-
umaudemc/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
|
-
umaudemc/backend/_pymc.py,sha256=asfN3uc0PbizVTiBt0Hs1n7jxzUN629Baj90z5X8Gjc,6679
|
|
26
|
-
umaudemc/backend/_spot.py,sha256=aLj--3xBbYYOF7vkch0n2RFPUm-R49LFQUIy2O6P2nQ,9346
|
|
27
|
-
umaudemc/backend/_storm.py,sha256=yhHPNxLOekr9ZdzZv5Jzv1K6R5hIrYKQ4SES0rds_0A,4675
|
|
28
|
-
umaudemc/backend/_stormpy.py,sha256=KPbRkVYZhwlL007GfbJJc2VBHbBz3_UKqUNM0FV7PyU,8280
|
|
29
|
-
umaudemc/backend/bmcalc.py,sha256=FU95dQ-gUfx2suQKqH_md2j_MA4xqIn6fueeAojHJ7k,17507
|
|
30
|
-
umaudemc/backend/ltsmin.py,sha256=tIVIvVCGZN5bSnJ3UhoULDt0sZteA8pcCY0L_vGiasM,21102
|
|
31
|
-
umaudemc/backend/nusmv.py,sha256=52SKU6LTtEFDzkO6-zeS8tRrTymW8gerk9Q1eT83d5Y,10912
|
|
32
|
-
umaudemc/backend/prism.py,sha256=5q0Ep_09KY3TZZEx6_kNEuIkvnm9Y_1XLFmNVYKXUgQ,15501
|
|
33
|
-
umaudemc/backend/pymc.py,sha256=_NXTEpXsf0s5_WE3-1y63jx6iKj2KSjmn8hZZcWMltI,309
|
|
34
|
-
umaudemc/backend/spin.py,sha256=4W0-a3yZL-2AjRy13OUYkgRqfqceZzdLXRGdgxSXPCQ,9662
|
|
35
|
-
umaudemc/backend/spot.py,sha256=P7vkxhY7Tx9J_rOmlua3bfiO8iMgNIuEi25ZNYZRLHk,283
|
|
36
|
-
umaudemc/backend/storm.py,sha256=FlhJ0ZkJO84GjEUxuE2hQQJxJoeE_lElBB5NJL4NXTU,276
|
|
37
|
-
umaudemc/command/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
|
-
umaudemc/command/check.py,sha256=fzRUGAHNudZPYFk94ekwKplv9N7Fhsrmf5pOFsvPZwA,12030
|
|
39
|
-
umaudemc/command/graph.py,sha256=NDjIYHMkafseIJs5H_vBBqpr04PYRVgoen-6beLi4DA,5261
|
|
40
|
-
umaudemc/command/pcheck.py,sha256=RcgwQn8xBgt9eZC1sE3JzR97MB0SC6Q1AXuiKkkzJes,7274
|
|
41
|
-
umaudemc/command/scheck.py,sha256=e6LrvXHxnmuoa6dUNfSizQ3MgC_EGdi2-ec4L7qLK1I,4653
|
|
42
|
-
umaudemc/command/test.py,sha256=oBBC6aYBCTZ_hxsKsWL_UR03PbmAY5a9b7yOSpKlmhg,38357
|
|
43
|
-
umaudemc/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
|
-
umaudemc/data/opsem.maude,sha256=geDP3_RMgtS1rRmYOybJDCXn_-dyHHxg0JxfYg1ftv0,27929
|
|
45
|
-
umaudemc/data/problog.maude,sha256=qvP90peT3J9gWi7I0x86jfrEXsVxDP5lcrUnSkTMhcY,3091
|
|
46
|
-
umaudemc/data/result.htm,sha256=IwllBM3p4F-QFvOYZZR6bZicL-FuuPLainU9DUPPyNA,1766
|
|
47
|
-
umaudemc/data/select.htm,sha256=g0eXHHFxRpxJ9tqOfSgn_QmSQy0E-ET7MimBllGk6vk,4600
|
|
48
|
-
umaudemc/data/smcgraph.js,sha256=j4t6Dkt5qNU1wwePesPR_nX6JzuDIWcEFQCQibqhkF8,6642
|
|
49
|
-
umaudemc/data/smcview.css,sha256=ExFqrMkSeaf8VxFrJXflyCsRW3FTwbv78q0Hoo2UVrM,3833
|
|
50
|
-
umaudemc/data/smcview.js,sha256=ioE4DNE1bOJjc0hQND0KKjzVDZIYnZZH58D40Y9nPqI,14113
|
|
51
|
-
umaudemc/data/templog.maude,sha256=TZ-66hVWoG6gp7gJpS6FsQn7dpBTLrr76bKo-UfHGcA,9161
|
|
52
|
-
umaudemc-0.12.1.dist-info/LICENSE,sha256=MrEGL32oSWfnAZ0Bq4BZNcqnq3Mhp87Q4w6-deXfFnA,17992
|
|
53
|
-
umaudemc-0.12.1.dist-info/METADATA,sha256=9wdA3L4yEATNIcPz7gjSiOGpaKZExOhCGhY_v65izkA,1685
|
|
54
|
-
umaudemc-0.12.1.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
|
55
|
-
umaudemc-0.12.1.dist-info/entry_points.txt,sha256=8rYRlLkn4orZtAoujDSeol1t_UFBrK0bfjmLTNv9B44,52
|
|
56
|
-
umaudemc-0.12.1.dist-info/top_level.txt,sha256=Yo_CF78HLGBSblk3890qLcx6XZ17zHCbGcT9iG8sfMw,9
|
|
57
|
-
umaudemc-0.12.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|