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/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(), lineno=call_line, col_offset=call_column)
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.lineno, column=expr.col_offset)
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 defined
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 get_resource_path(name):
16
- """Get a temporary filename for a given named resource"""
17
- return pkg_resources.path(data, name)
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
- def get_resource_content(name):
21
- """Get the string content of a given named resource"""
22
- return pkg_resources.read_text(data, name)
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 get_resource_binary(name):
26
- """Get the string content of a given named resource"""
27
- return pkg_resources.read_binary(data, name)
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 a explicit root, paths are given relative to it
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
- '/' : ('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'),
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
- form = cgi.FieldStorage(fp=self.rfile, headers=self.headers,
179
- environ={'REQUEST_METHOD': 'POST',
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.getvalue('question')
183
- url = form.getvalue('url', None)
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' : base,
197
- 'parent' : parent,
198
- 'dirs' : dirs,
199
- 'files' : 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.getvalue('mod')
218
+ mod = form.get('mod')
220
219
  minfo = self.server.info.remote.getModuleInfo(mod)
221
220
  response = {
222
- 'name' : mod,
223
- 'type' : minfo['type'],
224
- 'params' : [],
225
- 'valid' : minfo['valid'],
226
- 'stateSorts' : minfo.get('state', []),
227
- 'strategies' : [self.make_signature(signat) for signat in minfo.get('strat', ())],
228
- 'props' : [self.make_signature(signat) for signat in minfo.get('prop', ())]
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.getvalue('mod'),
237
- 'initial': form.getvalue('initial'),
238
- 'formula': form.getvalue('formula'),
239
- 'strat': form.getvalue('strategy'),
240
- 'opaques': form.getvalue('opaques'),
241
- 'passign': self.make_passign(form),
242
- 'reward': form.getvalue('reward', None),
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.getvalue('mcref'))
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.getvalue('pmethod', None)
328
+ name = form.get('pmethod', None)
326
329
 
327
330
  if name is None:
328
331
  return None
329
332
 
330
- argument = form.getvalue('pargument', '')
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.getvalue('mdp') == 'true' else ''
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 wrapGraph(graph, purge_fails, merge_states):
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 wrapGraph(graph, purge_fails, merge_states)
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.12.1
3
+ Version: 0.13.0
4
4
  Summary: Unified Maude model-checking utility
5
- Home-page: https://github.com/fadoss/umaudemc
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 (>=1.0)
21
- Provides-Extra: ctl_
22
- Requires-Dist: pyModelChecking (>=1.3.3) ; extra == 'ctl_'
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.37.1)
2
+ Generator: bdist_wheel (0.42.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -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,,