You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

821 lines
26 KiB

  1. {
  2. "jani-version":1,
  3. "features":[
  4. "derived-operators"
  5. ],
  6. "name":"Converted from PRISM by IscasMC",
  7. "type":"ctmc",
  8. "actions":[
  9. {
  10. "name":"loop1a"
  11. },
  12. {
  13. "name":"loop1b"
  14. },
  15. {
  16. "name":"serve1"
  17. },
  18. {
  19. "name":"loop2a"
  20. },
  21. {
  22. "name":"loop2b"
  23. },
  24. {
  25. "name":"serve2"
  26. },
  27. {
  28. "name":"tau__"
  29. }
  30. ],
  31. "variables":[
  32. {
  33. "name":"s",
  34. "type":{
  35. "kind":"bounded",
  36. "base":"int",
  37. "lower-bound":1,
  38. "upper-bound":2
  39. }
  40. },
  41. {
  42. "name":"a",
  43. "type":{
  44. "kind":"bounded",
  45. "base":"int",
  46. "lower-bound":0,
  47. "upper-bound":1
  48. }
  49. },
  50. {
  51. "name":"s1",
  52. "type":{
  53. "kind":"bounded",
  54. "base":"int",
  55. "lower-bound":0,
  56. "upper-bound":1
  57. }
  58. },
  59. {
  60. "name":"s2",
  61. "type":{
  62. "kind":"bounded",
  63. "base":"int",
  64. "lower-bound":0,
  65. "upper-bound":1
  66. }
  67. }
  68. ],
  69. "observables":[
  70. {
  71. "name":"\"waiting\""
  72. },
  73. {
  74. "name":"\"served\""
  75. }
  76. ],
  77. "initial-states":{
  78. "exp":{
  79. "op":"∧",
  80. "left":{
  81. "op":"∧",
  82. "left":{
  83. "op":"∧",
  84. "left":{
  85. "op":"=",
  86. "left":"s",
  87. "right":1
  88. },
  89. "right":{
  90. "op":"=",
  91. "left":"a",
  92. "right":0
  93. }
  94. },
  95. "right":{
  96. "op":"=",
  97. "left":"s1",
  98. "right":0
  99. }
  100. },
  101. "right":{
  102. "op":"=",
  103. "left":"s2",
  104. "right":0
  105. }
  106. }
  107. },
  108. "automata":[
  109. {
  110. "name":"server",
  111. "locations":[
  112. {
  113. "name":"location",
  114. "observables":[
  115. {
  116. "ref":"\"waiting\"",
  117. "value":{
  118. "op":"?:",
  119. "args":[
  120. {
  121. "op":"∧",
  122. "left":{
  123. "op":"=",
  124. "left":"s1",
  125. "right":1
  126. },
  127. "right":{
  128. "op":"¬",
  129. "exp":{
  130. "op":"∧",
  131. "left":{
  132. "op":"=",
  133. "left":"s",
  134. "right":1
  135. },
  136. "right":{
  137. "op":"=",
  138. "left":"a",
  139. "right":1
  140. }
  141. }
  142. }
  143. },
  144. 1,
  145. 0
  146. ]
  147. }
  148. }
  149. ]
  150. }
  151. ],
  152. "initial-locations":[
  153. "location"
  154. ],
  155. "edges":[
  156. {
  157. "location":"location",
  158. "action":"loop1a",
  159. "rate":{
  160. "exp":200
  161. },
  162. "guard":{
  163. "exp":{
  164. "op":"∧",
  165. "left":{
  166. "op":"=",
  167. "left":"s",
  168. "right":1
  169. },
  170. "right":{
  171. "op":"=",
  172. "left":"a",
  173. "right":0
  174. }
  175. }
  176. },
  177. "destinations":[
  178. {
  179. "probability":{
  180. "exp":{
  181. "op":"/",
  182. "left":200,
  183. "right":200
  184. }
  185. },
  186. "location":"location",
  187. "assignments":[
  188. {
  189. "ref":"s",
  190. "value":{
  191. "op":"+",
  192. "left":"s",
  193. "right":1
  194. }
  195. }
  196. ],
  197. "observables":[
  198. ]
  199. }
  200. ]
  201. },
  202. {
  203. "location":"location",
  204. "action":"loop1b",
  205. "rate":{
  206. "exp":200
  207. },
  208. "guard":{
  209. "exp":{
  210. "op":"∧",
  211. "left":{
  212. "op":"=",
  213. "left":"s",
  214. "right":1
  215. },
  216. "right":{
  217. "op":"=",
  218. "left":"a",
  219. "right":0
  220. }
  221. }
  222. },
  223. "destinations":[
  224. {
  225. "probability":{
  226. "exp":{
  227. "op":"/",
  228. "left":200,
  229. "right":200
  230. }
  231. },
  232. "location":"location",
  233. "assignments":[
  234. {
  235. "ref":"a",
  236. "value":1
  237. }
  238. ],
  239. "observables":[
  240. ]
  241. }
  242. ]
  243. },
  244. {
  245. "location":"location",
  246. "action":"serve1",
  247. "rate":{
  248. "exp":1
  249. },
  250. "guard":{
  251. "exp":{
  252. "op":"∧",
  253. "left":{
  254. "op":"=",
  255. "left":"s",
  256. "right":1
  257. },
  258. "right":{
  259. "op":"=",
  260. "left":"a",
  261. "right":1
  262. }
  263. }
  264. },
  265. "destinations":[
  266. {
  267. "probability":{
  268. "exp":{
  269. "op":"/",
  270. "left":1,
  271. "right":1
  272. }
  273. },
  274. "location":"location",
  275. "assignments":[
  276. {
  277. "ref":"s",
  278. "value":{
  279. "op":"+",
  280. "left":"s",
  281. "right":1
  282. }
  283. },
  284. {
  285. "ref":"a",
  286. "value":0
  287. }
  288. ],
  289. "observables":[
  290. {
  291. "ref":"\"served\"",
  292. "value":1
  293. }
  294. ]
  295. }
  296. ]
  297. },
  298. {
  299. "location":"location",
  300. "action":"loop2a",
  301. "rate":{
  302. "exp":200
  303. },
  304. "guard":{
  305. "exp":{
  306. "op":"∧",
  307. "left":{
  308. "op":"=",
  309. "left":"s",
  310. "right":2
  311. },
  312. "right":{
  313. "op":"=",
  314. "left":"a",
  315. "right":0
  316. }
  317. }
  318. },
  319. "destinations":[
  320. {
  321. "probability":{
  322. "exp":{
  323. "op":"/",
  324. "left":200,
  325. "right":200
  326. }
  327. },
  328. "location":"location",
  329. "assignments":[
  330. {
  331. "ref":"s",
  332. "value":1
  333. }
  334. ],
  335. "observables":[
  336. ]
  337. }
  338. ]
  339. },
  340. {
  341. "location":"location",
  342. "action":"loop2b",
  343. "rate":{
  344. "exp":200
  345. },
  346. "guard":{
  347. "exp":{
  348. "op":"∧",
  349. "left":{
  350. "op":"=",
  351. "left":"s",
  352. "right":2
  353. },
  354. "right":{
  355. "op":"=",
  356. "left":"a",
  357. "right":0
  358. }
  359. }
  360. },
  361. "destinations":[
  362. {
  363. "probability":{
  364. "exp":{
  365. "op":"/",
  366. "left":200,
  367. "right":200
  368. }
  369. },
  370. "location":"location",
  371. "assignments":[
  372. {
  373. "ref":"a",
  374. "value":1
  375. }
  376. ],
  377. "observables":[
  378. ]
  379. }
  380. ]
  381. },
  382. {
  383. "location":"location",
  384. "action":"serve2",
  385. "rate":{
  386. "exp":1
  387. },
  388. "guard":{
  389. "exp":{
  390. "op":"∧",
  391. "left":{
  392. "op":"=",
  393. "left":"s",
  394. "right":2
  395. },
  396. "right":{
  397. "op":"=",
  398. "left":"a",
  399. "right":1
  400. }
  401. }
  402. },
  403. "destinations":[
  404. {
  405. "probability":{
  406. "exp":{
  407. "op":"/",
  408. "left":1,
  409. "right":1
  410. }
  411. },
  412. "location":"location",
  413. "assignments":[
  414. {
  415. "ref":"s",
  416. "value":1
  417. },
  418. {
  419. "ref":"a",
  420. "value":0
  421. }
  422. ],
  423. "observables":[
  424. ]
  425. }
  426. ]
  427. }
  428. ]
  429. },
  430. {
  431. "name":"station1",
  432. "locations":[
  433. {
  434. "name":"location"
  435. }
  436. ],
  437. "initial-locations":[
  438. "location"
  439. ],
  440. "edges":[
  441. {
  442. "location":"location",
  443. "action":"loop1a",
  444. "rate":{
  445. "exp":1
  446. },
  447. "guard":{
  448. "exp":{
  449. "op":"=",
  450. "left":"s1",
  451. "right":0
  452. }
  453. },
  454. "destinations":[
  455. {
  456. "probability":{
  457. "exp":{
  458. "op":"/",
  459. "left":1,
  460. "right":1
  461. }
  462. },
  463. "location":"location",
  464. "assignments":[
  465. {
  466. "ref":"s1",
  467. "value":0
  468. }
  469. ]
  470. }
  471. ]
  472. },
  473. {
  474. "location":"location",
  475. "action":"tau__",
  476. "rate":{
  477. "exp":{
  478. "op":"/",
  479. "left":1,
  480. "right":2
  481. }
  482. },
  483. "guard":{
  484. "exp":{
  485. "op":"=",
  486. "left":"s1",
  487. "right":0
  488. }
  489. },
  490. "destinations":[
  491. {
  492. "probability":{
  493. "exp":{
  494. "op":"/",
  495. "left":{
  496. "op":"/",
  497. "left":1,
  498. "right":2
  499. },
  500. "right":{
  501. "op":"/",
  502. "left":1,
  503. "right":2
  504. }
  505. }
  506. },
  507. "location":"location",
  508. "assignments":[
  509. {
  510. "ref":"s1",
  511. "value":1
  512. }
  513. ],
  514. "observables":[
  515. ]
  516. }
  517. ]
  518. },
  519. {
  520. "location":"location",
  521. "action":"loop1b",
  522. "rate":{
  523. "exp":1
  524. },
  525. "guard":{
  526. "exp":{
  527. "op":"=",
  528. "left":"s1",
  529. "right":1
  530. }
  531. },
  532. "destinations":[
  533. {
  534. "probability":{
  535. "exp":{
  536. "op":"/",
  537. "left":1,
  538. "right":1
  539. }
  540. },
  541. "location":"location",
  542. "assignments":[
  543. {
  544. "ref":"s1",
  545. "value":1
  546. }
  547. ]
  548. }
  549. ]
  550. },
  551. {
  552. "location":"location",
  553. "action":"serve1",
  554. "rate":{
  555. "exp":1
  556. },
  557. "guard":{
  558. "exp":{
  559. "op":"=",
  560. "left":"s1",
  561. "right":1
  562. }
  563. },
  564. "destinations":[
  565. {
  566. "probability":{
  567. "exp":{
  568. "op":"/",
  569. "left":1,
  570. "right":1
  571. }
  572. },
  573. "location":"location",
  574. "assignments":[
  575. {
  576. "ref":"s1",
  577. "value":0
  578. }
  579. ]
  580. }
  581. ]
  582. }
  583. ]
  584. },
  585. {
  586. "name":"station2",
  587. "locations":[
  588. {
  589. "name":"location"
  590. }
  591. ],
  592. "initial-locations":[
  593. "location"
  594. ],
  595. "edges":[
  596. {
  597. "location":"location",
  598. "action":"loop2a",
  599. "rate":{
  600. "exp":1
  601. },
  602. "guard":{
  603. "exp":{
  604. "op":"=",
  605. "left":"s2",
  606. "right":0
  607. }
  608. },
  609. "destinations":[
  610. {
  611. "probability":{
  612. "exp":{
  613. "op":"/",
  614. "left":1,
  615. "right":1
  616. }
  617. },
  618. "location":"location",
  619. "assignments":[
  620. {
  621. "ref":"s2",
  622. "value":0
  623. }
  624. ]
  625. }
  626. ]
  627. },
  628. {
  629. "location":"location",
  630. "action":"tau__",
  631. "rate":{
  632. "exp":{
  633. "op":"/",
  634. "left":1,
  635. "right":2
  636. }
  637. },
  638. "guard":{
  639. "exp":{
  640. "op":"=",
  641. "left":"s2",
  642. "right":0
  643. }
  644. },
  645. "destinations":[
  646. {
  647. "probability":{
  648. "exp":{
  649. "op":"/",
  650. "left":{
  651. "op":"/",
  652. "left":1,
  653. "right":2
  654. },
  655. "right":{
  656. "op":"/",
  657. "left":1,
  658. "right":2
  659. }
  660. }
  661. },
  662. "location":"location",
  663. "assignments":[
  664. {
  665. "ref":"s2",
  666. "value":1
  667. }
  668. ],
  669. "observables":[
  670. ]
  671. }
  672. ]
  673. },
  674. {
  675. "location":"location",
  676. "action":"loop2b",
  677. "rate":{
  678. "exp":1
  679. },
  680. "guard":{
  681. "exp":{
  682. "op":"=",
  683. "left":"s2",
  684. "right":1
  685. }
  686. },
  687. "destinations":[
  688. {
  689. "probability":{
  690. "exp":{
  691. "op":"/",
  692. "left":1,
  693. "right":1
  694. }
  695. },
  696. "location":"location",
  697. "assignments":[
  698. {
  699. "ref":"s2",
  700. "value":1
  701. }
  702. ]
  703. }
  704. ]
  705. },
  706. {
  707. "location":"location",
  708. "action":"serve2",
  709. "rate":{
  710. "exp":1
  711. },
  712. "guard":{
  713. "exp":{
  714. "op":"=",
  715. "left":"s2",
  716. "right":1
  717. }
  718. },
  719. "destinations":[
  720. {
  721. "probability":{
  722. "exp":{
  723. "op":"/",
  724. "left":1,
  725. "right":1
  726. }
  727. },
  728. "location":"location",
  729. "assignments":[
  730. {
  731. "ref":"s2",
  732. "value":0
  733. }
  734. ]
  735. }
  736. ]
  737. }
  738. ]
  739. }
  740. ],
  741. "system":{
  742. "elements":[
  743. {
  744. "automaton":"server"
  745. },
  746. {
  747. "automaton":"station1"
  748. },
  749. {
  750. "automaton":"station2"
  751. }
  752. ],
  753. "syncs":[
  754. {
  755. "synchronise":[
  756. "loop2a",
  757. null,
  758. "loop2a"
  759. ],
  760. "result":"loop2a"
  761. },
  762. {
  763. "synchronise":[
  764. "loop2b",
  765. null,
  766. "loop2b"
  767. ],
  768. "result":"loop2b"
  769. },
  770. {
  771. "synchronise":[
  772. "serve2",
  773. null,
  774. "serve2"
  775. ],
  776. "result":"serve2"
  777. },
  778. {
  779. "synchronise":[
  780. "loop1a",
  781. "loop1a",
  782. null
  783. ],
  784. "result":"loop1a"
  785. },
  786. {
  787. "synchronise":[
  788. "loop1b",
  789. "loop1b",
  790. null
  791. ],
  792. "result":"loop1b"
  793. },
  794. {
  795. "synchronise":[
  796. "serve1",
  797. "serve1",
  798. null
  799. ],
  800. "result":"serve1"
  801. },
  802. {
  803. "synchronise":[
  804. null,
  805. "tau__",
  806. null
  807. ],
  808. "result":"tau__"
  809. },
  810. {
  811. "synchronise":[
  812. null,
  813. null,
  814. "tau__"
  815. ],
  816. "result":"tau__"
  817. }
  818. ]
  819. }
  820. }