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.

1187 lines
38 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":"loop3a"
  29. },
  30. {
  31. "name":"loop3b"
  32. },
  33. {
  34. "name":"serve3"
  35. },
  36. {
  37. "name":"tau__"
  38. }
  39. ],
  40. "variables":[
  41. {
  42. "name":"s",
  43. "type":{
  44. "kind":"bounded",
  45. "base":"int",
  46. "lower-bound":1,
  47. "upper-bound":3
  48. }
  49. },
  50. {
  51. "name":"a",
  52. "type":{
  53. "kind":"bounded",
  54. "base":"int",
  55. "lower-bound":0,
  56. "upper-bound":1
  57. }
  58. },
  59. {
  60. "name":"s1",
  61. "type":{
  62. "kind":"bounded",
  63. "base":"int",
  64. "lower-bound":0,
  65. "upper-bound":1
  66. }
  67. },
  68. {
  69. "name":"s2",
  70. "type":{
  71. "kind":"bounded",
  72. "base":"int",
  73. "lower-bound":0,
  74. "upper-bound":1
  75. }
  76. },
  77. {
  78. "name":"s3",
  79. "type":{
  80. "kind":"bounded",
  81. "base":"int",
  82. "lower-bound":0,
  83. "upper-bound":1
  84. }
  85. }
  86. ],
  87. "observables":[
  88. {
  89. "name":"\"waiting\""
  90. },
  91. {
  92. "name":"\"served\""
  93. }
  94. ],
  95. "initial-states":{
  96. "exp":{
  97. "op":"∧",
  98. "left":{
  99. "op":"∧",
  100. "left":{
  101. "op":"∧",
  102. "left":{
  103. "op":"∧",
  104. "left":{
  105. "op":"=",
  106. "left":"s",
  107. "right":1
  108. },
  109. "right":{
  110. "op":"=",
  111. "left":"a",
  112. "right":0
  113. }
  114. },
  115. "right":{
  116. "op":"=",
  117. "left":"s1",
  118. "right":0
  119. }
  120. },
  121. "right":{
  122. "op":"=",
  123. "left":"s2",
  124. "right":0
  125. }
  126. },
  127. "right":{
  128. "op":"=",
  129. "left":"s3",
  130. "right":0
  131. }
  132. }
  133. },
  134. "automata":[
  135. {
  136. "name":"server",
  137. "locations":[
  138. {
  139. "name":"location",
  140. "observables":[
  141. {
  142. "ref":"\"waiting\"",
  143. "value":{
  144. "op":"?:",
  145. "args":[
  146. {
  147. "op":"∧",
  148. "left":{
  149. "op":"=",
  150. "left":"s1",
  151. "right":1
  152. },
  153. "right":{
  154. "op":"¬",
  155. "exp":{
  156. "op":"∧",
  157. "left":{
  158. "op":"=",
  159. "left":"s",
  160. "right":1
  161. },
  162. "right":{
  163. "op":"=",
  164. "left":"a",
  165. "right":1
  166. }
  167. }
  168. }
  169. },
  170. 1,
  171. 0
  172. ]
  173. }
  174. }
  175. ]
  176. }
  177. ],
  178. "initial-locations":[
  179. "location"
  180. ],
  181. "edges":[
  182. {
  183. "location":"location",
  184. "action":"loop1a",
  185. "rate":{
  186. "exp":200
  187. },
  188. "guard":{
  189. "exp":{
  190. "op":"∧",
  191. "left":{
  192. "op":"=",
  193. "left":"s",
  194. "right":1
  195. },
  196. "right":{
  197. "op":"=",
  198. "left":"a",
  199. "right":0
  200. }
  201. }
  202. },
  203. "destinations":[
  204. {
  205. "probability":{
  206. "exp":{
  207. "op":"/",
  208. "left":200,
  209. "right":200
  210. }
  211. },
  212. "location":"location",
  213. "assignments":[
  214. {
  215. "ref":"s",
  216. "value":{
  217. "op":"+",
  218. "left":"s",
  219. "right":1
  220. }
  221. }
  222. ],
  223. "observables":[
  224. ]
  225. }
  226. ]
  227. },
  228. {
  229. "location":"location",
  230. "action":"loop1b",
  231. "rate":{
  232. "exp":200
  233. },
  234. "guard":{
  235. "exp":{
  236. "op":"∧",
  237. "left":{
  238. "op":"=",
  239. "left":"s",
  240. "right":1
  241. },
  242. "right":{
  243. "op":"=",
  244. "left":"a",
  245. "right":0
  246. }
  247. }
  248. },
  249. "destinations":[
  250. {
  251. "probability":{
  252. "exp":{
  253. "op":"/",
  254. "left":200,
  255. "right":200
  256. }
  257. },
  258. "location":"location",
  259. "assignments":[
  260. {
  261. "ref":"a",
  262. "value":1
  263. }
  264. ],
  265. "observables":[
  266. ]
  267. }
  268. ]
  269. },
  270. {
  271. "location":"location",
  272. "action":"serve1",
  273. "rate":{
  274. "exp":1
  275. },
  276. "guard":{
  277. "exp":{
  278. "op":"∧",
  279. "left":{
  280. "op":"=",
  281. "left":"s",
  282. "right":1
  283. },
  284. "right":{
  285. "op":"=",
  286. "left":"a",
  287. "right":1
  288. }
  289. }
  290. },
  291. "destinations":[
  292. {
  293. "probability":{
  294. "exp":{
  295. "op":"/",
  296. "left":1,
  297. "right":1
  298. }
  299. },
  300. "location":"location",
  301. "assignments":[
  302. {
  303. "ref":"s",
  304. "value":{
  305. "op":"+",
  306. "left":"s",
  307. "right":1
  308. }
  309. },
  310. {
  311. "ref":"a",
  312. "value":0
  313. }
  314. ],
  315. "observables":[
  316. {
  317. "ref":"\"served\"",
  318. "value":1
  319. }
  320. ]
  321. }
  322. ]
  323. },
  324. {
  325. "location":"location",
  326. "action":"loop2a",
  327. "rate":{
  328. "exp":200
  329. },
  330. "guard":{
  331. "exp":{
  332. "op":"∧",
  333. "left":{
  334. "op":"=",
  335. "left":"s",
  336. "right":2
  337. },
  338. "right":{
  339. "op":"=",
  340. "left":"a",
  341. "right":0
  342. }
  343. }
  344. },
  345. "destinations":[
  346. {
  347. "probability":{
  348. "exp":{
  349. "op":"/",
  350. "left":200,
  351. "right":200
  352. }
  353. },
  354. "location":"location",
  355. "assignments":[
  356. {
  357. "ref":"s",
  358. "value":{
  359. "op":"+",
  360. "left":"s",
  361. "right":1
  362. }
  363. }
  364. ],
  365. "observables":[
  366. ]
  367. }
  368. ]
  369. },
  370. {
  371. "location":"location",
  372. "action":"loop2b",
  373. "rate":{
  374. "exp":200
  375. },
  376. "guard":{
  377. "exp":{
  378. "op":"∧",
  379. "left":{
  380. "op":"=",
  381. "left":"s",
  382. "right":2
  383. },
  384. "right":{
  385. "op":"=",
  386. "left":"a",
  387. "right":0
  388. }
  389. }
  390. },
  391. "destinations":[
  392. {
  393. "probability":{
  394. "exp":{
  395. "op":"/",
  396. "left":200,
  397. "right":200
  398. }
  399. },
  400. "location":"location",
  401. "assignments":[
  402. {
  403. "ref":"a",
  404. "value":1
  405. }
  406. ],
  407. "observables":[
  408. ]
  409. }
  410. ]
  411. },
  412. {
  413. "location":"location",
  414. "action":"serve2",
  415. "rate":{
  416. "exp":1
  417. },
  418. "guard":{
  419. "exp":{
  420. "op":"∧",
  421. "left":{
  422. "op":"=",
  423. "left":"s",
  424. "right":2
  425. },
  426. "right":{
  427. "op":"=",
  428. "left":"a",
  429. "right":1
  430. }
  431. }
  432. },
  433. "destinations":[
  434. {
  435. "probability":{
  436. "exp":{
  437. "op":"/",
  438. "left":1,
  439. "right":1
  440. }
  441. },
  442. "location":"location",
  443. "assignments":[
  444. {
  445. "ref":"s",
  446. "value":{
  447. "op":"+",
  448. "left":"s",
  449. "right":1
  450. }
  451. },
  452. {
  453. "ref":"a",
  454. "value":0
  455. }
  456. ],
  457. "observables":[
  458. ]
  459. }
  460. ]
  461. },
  462. {
  463. "location":"location",
  464. "action":"loop3a",
  465. "rate":{
  466. "exp":200
  467. },
  468. "guard":{
  469. "exp":{
  470. "op":"∧",
  471. "left":{
  472. "op":"=",
  473. "left":"s",
  474. "right":3
  475. },
  476. "right":{
  477. "op":"=",
  478. "left":"a",
  479. "right":0
  480. }
  481. }
  482. },
  483. "destinations":[
  484. {
  485. "probability":{
  486. "exp":{
  487. "op":"/",
  488. "left":200,
  489. "right":200
  490. }
  491. },
  492. "location":"location",
  493. "assignments":[
  494. {
  495. "ref":"s",
  496. "value":1
  497. }
  498. ],
  499. "observables":[
  500. ]
  501. }
  502. ]
  503. },
  504. {
  505. "location":"location",
  506. "action":"loop3b",
  507. "rate":{
  508. "exp":200
  509. },
  510. "guard":{
  511. "exp":{
  512. "op":"∧",
  513. "left":{
  514. "op":"=",
  515. "left":"s",
  516. "right":3
  517. },
  518. "right":{
  519. "op":"=",
  520. "left":"a",
  521. "right":0
  522. }
  523. }
  524. },
  525. "destinations":[
  526. {
  527. "probability":{
  528. "exp":{
  529. "op":"/",
  530. "left":200,
  531. "right":200
  532. }
  533. },
  534. "location":"location",
  535. "assignments":[
  536. {
  537. "ref":"a",
  538. "value":1
  539. }
  540. ],
  541. "observables":[
  542. ]
  543. }
  544. ]
  545. },
  546. {
  547. "location":"location",
  548. "action":"serve3",
  549. "rate":{
  550. "exp":1
  551. },
  552. "guard":{
  553. "exp":{
  554. "op":"∧",
  555. "left":{
  556. "op":"=",
  557. "left":"s",
  558. "right":3
  559. },
  560. "right":{
  561. "op":"=",
  562. "left":"a",
  563. "right":1
  564. }
  565. }
  566. },
  567. "destinations":[
  568. {
  569. "probability":{
  570. "exp":{
  571. "op":"/",
  572. "left":1,
  573. "right":1
  574. }
  575. },
  576. "location":"location",
  577. "assignments":[
  578. {
  579. "ref":"s",
  580. "value":1
  581. },
  582. {
  583. "ref":"a",
  584. "value":0
  585. }
  586. ],
  587. "observables":[
  588. ]
  589. }
  590. ]
  591. }
  592. ]
  593. },
  594. {
  595. "name":"station1",
  596. "locations":[
  597. {
  598. "name":"location"
  599. }
  600. ],
  601. "initial-locations":[
  602. "location"
  603. ],
  604. "edges":[
  605. {
  606. "location":"location",
  607. "action":"loop1a",
  608. "rate":{
  609. "exp":1
  610. },
  611. "guard":{
  612. "exp":{
  613. "op":"=",
  614. "left":"s1",
  615. "right":0
  616. }
  617. },
  618. "destinations":[
  619. {
  620. "probability":{
  621. "exp":{
  622. "op":"/",
  623. "left":1,
  624. "right":1
  625. }
  626. },
  627. "location":"location",
  628. "assignments":[
  629. {
  630. "ref":"s1",
  631. "value":0
  632. }
  633. ]
  634. }
  635. ]
  636. },
  637. {
  638. "location":"location",
  639. "action":"tau__",
  640. "rate":{
  641. "exp":{
  642. "op":"/",
  643. "left":1,
  644. "right":3
  645. }
  646. },
  647. "guard":{
  648. "exp":{
  649. "op":"=",
  650. "left":"s1",
  651. "right":0
  652. }
  653. },
  654. "destinations":[
  655. {
  656. "probability":{
  657. "exp":{
  658. "op":"/",
  659. "left":{
  660. "op":"/",
  661. "left":1,
  662. "right":3
  663. },
  664. "right":{
  665. "op":"/",
  666. "left":1,
  667. "right":3
  668. }
  669. }
  670. },
  671. "location":"location",
  672. "assignments":[
  673. {
  674. "ref":"s1",
  675. "value":1
  676. }
  677. ],
  678. "observables":[
  679. ]
  680. }
  681. ]
  682. },
  683. {
  684. "location":"location",
  685. "action":"loop1b",
  686. "rate":{
  687. "exp":1
  688. },
  689. "guard":{
  690. "exp":{
  691. "op":"=",
  692. "left":"s1",
  693. "right":1
  694. }
  695. },
  696. "destinations":[
  697. {
  698. "probability":{
  699. "exp":{
  700. "op":"/",
  701. "left":1,
  702. "right":1
  703. }
  704. },
  705. "location":"location",
  706. "assignments":[
  707. {
  708. "ref":"s1",
  709. "value":1
  710. }
  711. ]
  712. }
  713. ]
  714. },
  715. {
  716. "location":"location",
  717. "action":"serve1",
  718. "rate":{
  719. "exp":1
  720. },
  721. "guard":{
  722. "exp":{
  723. "op":"=",
  724. "left":"s1",
  725. "right":1
  726. }
  727. },
  728. "destinations":[
  729. {
  730. "probability":{
  731. "exp":{
  732. "op":"/",
  733. "left":1,
  734. "right":1
  735. }
  736. },
  737. "location":"location",
  738. "assignments":[
  739. {
  740. "ref":"s1",
  741. "value":0
  742. }
  743. ]
  744. }
  745. ]
  746. }
  747. ]
  748. },
  749. {
  750. "name":"station2",
  751. "locations":[
  752. {
  753. "name":"location"
  754. }
  755. ],
  756. "initial-locations":[
  757. "location"
  758. ],
  759. "edges":[
  760. {
  761. "location":"location",
  762. "action":"loop2a",
  763. "rate":{
  764. "exp":1
  765. },
  766. "guard":{
  767. "exp":{
  768. "op":"=",
  769. "left":"s2",
  770. "right":0
  771. }
  772. },
  773. "destinations":[
  774. {
  775. "probability":{
  776. "exp":{
  777. "op":"/",
  778. "left":1,
  779. "right":1
  780. }
  781. },
  782. "location":"location",
  783. "assignments":[
  784. {
  785. "ref":"s2",
  786. "value":0
  787. }
  788. ]
  789. }
  790. ]
  791. },
  792. {
  793. "location":"location",
  794. "action":"tau__",
  795. "rate":{
  796. "exp":{
  797. "op":"/",
  798. "left":1,
  799. "right":3
  800. }
  801. },
  802. "guard":{
  803. "exp":{
  804. "op":"=",
  805. "left":"s2",
  806. "right":0
  807. }
  808. },
  809. "destinations":[
  810. {
  811. "probability":{
  812. "exp":{
  813. "op":"/",
  814. "left":{
  815. "op":"/",
  816. "left":1,
  817. "right":3
  818. },
  819. "right":{
  820. "op":"/",
  821. "left":1,
  822. "right":3
  823. }
  824. }
  825. },
  826. "location":"location",
  827. "assignments":[
  828. {
  829. "ref":"s2",
  830. "value":1
  831. }
  832. ],
  833. "observables":[
  834. ]
  835. }
  836. ]
  837. },
  838. {
  839. "location":"location",
  840. "action":"loop2b",
  841. "rate":{
  842. "exp":1
  843. },
  844. "guard":{
  845. "exp":{
  846. "op":"=",
  847. "left":"s2",
  848. "right":1
  849. }
  850. },
  851. "destinations":[
  852. {
  853. "probability":{
  854. "exp":{
  855. "op":"/",
  856. "left":1,
  857. "right":1
  858. }
  859. },
  860. "location":"location",
  861. "assignments":[
  862. {
  863. "ref":"s2",
  864. "value":1
  865. }
  866. ]
  867. }
  868. ]
  869. },
  870. {
  871. "location":"location",
  872. "action":"serve2",
  873. "rate":{
  874. "exp":1
  875. },
  876. "guard":{
  877. "exp":{
  878. "op":"=",
  879. "left":"s2",
  880. "right":1
  881. }
  882. },
  883. "destinations":[
  884. {
  885. "probability":{
  886. "exp":{
  887. "op":"/",
  888. "left":1,
  889. "right":1
  890. }
  891. },
  892. "location":"location",
  893. "assignments":[
  894. {
  895. "ref":"s2",
  896. "value":0
  897. }
  898. ]
  899. }
  900. ]
  901. }
  902. ]
  903. },
  904. {
  905. "name":"station3",
  906. "locations":[
  907. {
  908. "name":"location"
  909. }
  910. ],
  911. "initial-locations":[
  912. "location"
  913. ],
  914. "edges":[
  915. {
  916. "location":"location",
  917. "action":"loop3a",
  918. "rate":{
  919. "exp":1
  920. },
  921. "guard":{
  922. "exp":{
  923. "op":"=",
  924. "left":"s3",
  925. "right":0
  926. }
  927. },
  928. "destinations":[
  929. {
  930. "probability":{
  931. "exp":{
  932. "op":"/",
  933. "left":1,
  934. "right":1
  935. }
  936. },
  937. "location":"location",
  938. "assignments":[
  939. {
  940. "ref":"s3",
  941. "value":0
  942. }
  943. ]
  944. }
  945. ]
  946. },
  947. {
  948. "location":"location",
  949. "action":"tau__",
  950. "rate":{
  951. "exp":{
  952. "op":"/",
  953. "left":1,
  954. "right":3
  955. }
  956. },
  957. "guard":{
  958. "exp":{
  959. "op":"=",
  960. "left":"s3",
  961. "right":0
  962. }
  963. },
  964. "destinations":[
  965. {
  966. "probability":{
  967. "exp":{
  968. "op":"/",
  969. "left":{
  970. "op":"/",
  971. "left":1,
  972. "right":3
  973. },
  974. "right":{
  975. "op":"/",
  976. "left":1,
  977. "right":3
  978. }
  979. }
  980. },
  981. "location":"location",
  982. "assignments":[
  983. {
  984. "ref":"s3",
  985. "value":1
  986. }
  987. ],
  988. "observables":[
  989. ]
  990. }
  991. ]
  992. },
  993. {
  994. "location":"location",
  995. "action":"loop3b",
  996. "rate":{
  997. "exp":1
  998. },
  999. "guard":{
  1000. "exp":{
  1001. "op":"=",
  1002. "left":"s3",
  1003. "right":1
  1004. }
  1005. },
  1006. "destinations":[
  1007. {
  1008. "probability":{
  1009. "exp":{
  1010. "op":"/",
  1011. "left":1,
  1012. "right":1
  1013. }
  1014. },
  1015. "location":"location",
  1016. "assignments":[
  1017. {
  1018. "ref":"s3",
  1019. "value":1
  1020. }
  1021. ]
  1022. }
  1023. ]
  1024. },
  1025. {
  1026. "location":"location",
  1027. "action":"serve3",
  1028. "rate":{
  1029. "exp":1
  1030. },
  1031. "guard":{
  1032. "exp":{
  1033. "op":"=",
  1034. "left":"s3",
  1035. "right":1
  1036. }
  1037. },
  1038. "destinations":[
  1039. {
  1040. "probability":{
  1041. "exp":{
  1042. "op":"/",
  1043. "left":1,
  1044. "right":1
  1045. }
  1046. },
  1047. "location":"location",
  1048. "assignments":[
  1049. {
  1050. "ref":"s3",
  1051. "value":0
  1052. }
  1053. ]
  1054. }
  1055. ]
  1056. }
  1057. ]
  1058. }
  1059. ],
  1060. "system":{
  1061. "elements":[
  1062. {
  1063. "automaton":"server"
  1064. },
  1065. {
  1066. "automaton":"station1"
  1067. },
  1068. {
  1069. "automaton":"station2"
  1070. },
  1071. {
  1072. "automaton":"station3"
  1073. }
  1074. ],
  1075. "syncs":[
  1076. {
  1077. "synchronise":[
  1078. "loop3a",
  1079. null,
  1080. null,
  1081. "loop3a"
  1082. ],
  1083. "result":"loop3a"
  1084. },
  1085. {
  1086. "synchronise":[
  1087. "loop3b",
  1088. null,
  1089. null,
  1090. "loop3b"
  1091. ],
  1092. "result":"loop3b"
  1093. },
  1094. {
  1095. "synchronise":[
  1096. "serve3",
  1097. null,
  1098. null,
  1099. "serve3"
  1100. ],
  1101. "result":"serve3"
  1102. },
  1103. {
  1104. "synchronise":[
  1105. "loop2a",
  1106. null,
  1107. "loop2a",
  1108. null
  1109. ],
  1110. "result":"loop2a"
  1111. },
  1112. {
  1113. "synchronise":[
  1114. "loop2b",
  1115. null,
  1116. "loop2b",
  1117. null
  1118. ],
  1119. "result":"loop2b"
  1120. },
  1121. {
  1122. "synchronise":[
  1123. "serve2",
  1124. null,
  1125. "serve2",
  1126. null
  1127. ],
  1128. "result":"serve2"
  1129. },
  1130. {
  1131. "synchronise":[
  1132. "loop1a",
  1133. "loop1a",
  1134. null,
  1135. null
  1136. ],
  1137. "result":"loop1a"
  1138. },
  1139. {
  1140. "synchronise":[
  1141. "loop1b",
  1142. "loop1b",
  1143. null,
  1144. null
  1145. ],
  1146. "result":"loop1b"
  1147. },
  1148. {
  1149. "synchronise":[
  1150. "serve1",
  1151. "serve1",
  1152. null,
  1153. null
  1154. ],
  1155. "result":"serve1"
  1156. },
  1157. {
  1158. "synchronise":[
  1159. null,
  1160. "tau__",
  1161. null,
  1162. null
  1163. ],
  1164. "result":"tau__"
  1165. },
  1166. {
  1167. "synchronise":[
  1168. null,
  1169. null,
  1170. "tau__",
  1171. null
  1172. ],
  1173. "result":"tau__"
  1174. },
  1175. {
  1176. "synchronise":[
  1177. null,
  1178. null,
  1179. null,
  1180. "tau__"
  1181. ],
  1182. "result":"tau__"
  1183. }
  1184. ]
  1185. }
  1186. }