plant_to_EPN.mvc 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742
  1. include "primitives.alh"
  2. include "modelling.alh"
  3. include "object_operations.alh"
  4. A B {
  5. Composite schedule {
  6. {Contains} Success success {}
  7. {Contains} Failure failure {}
  8. {Contains} Atomic init_ports {
  9. LHS {}
  10. RHS {
  11. Post_Encapsulated_PetriNet/Place post_ports_00 {
  12. label = "00"
  13. value_name = $
  14. String function value(model : Element, name : String, mapping : Element):
  15. return "down"!
  16. $
  17. value_tokens = $
  18. Integer function value(model : Element, name : String, mapping : Element):
  19. return 0!
  20. $
  21. }
  22. Post_Encapsulated_PetriNet/Port post_ports_10 {
  23. label = "10"
  24. value_name = $
  25. String function value(model : Element, name : String, mapping : Element):
  26. return "down"!
  27. $
  28. }
  29. Post_Encapsulated_PetriNet/PortPlace (post_ports_10, post_ports_00) {
  30. label = "20"
  31. }
  32. Post_Encapsulated_PetriNet/Place post_ports_01 {
  33. label = "01"
  34. value_name = $
  35. String function value(model : Element, name : String, mapping : Element):
  36. return "neutral"!
  37. $
  38. value_tokens = $
  39. Integer function value(model : Element, name : String, mapping : Element):
  40. return 0!
  41. $
  42. }
  43. Post_Encapsulated_PetriNet/Port post_ports_11 {
  44. label = "11"
  45. value_name = $
  46. String function value(model : Element, name : String, mapping : Element):
  47. return "neutral"!
  48. $
  49. }
  50. Post_Encapsulated_PetriNet/PortPlace (post_ports_11, post_ports_01) {
  51. label = "21"
  52. }
  53. Post_Encapsulated_PetriNet/Place post_ports_02 {
  54. label = "02"
  55. value_name = $
  56. String function value(model : Element, name : String, mapping : Element):
  57. return "down"!
  58. $
  59. value_tokens = $
  60. Integer function value(model : Element, name : String, mapping : Element):
  61. return 0!
  62. $
  63. }
  64. Post_Encapsulated_PetriNet/Port post_ports_12 {
  65. label = "12"
  66. value_name = $
  67. String function value(model : Element, name : String, mapping : Element):
  68. return "down"!
  69. $
  70. }
  71. Post_Encapsulated_PetriNet/PortPlace (post_ports_12, post_ports_02) {
  72. label = "22"
  73. }
  74. Post_Encapsulated_PetriNet/Place post_ports_03 {
  75. label = "03"
  76. value_name = $
  77. String function value(model : Element, name : String, mapping : Element):
  78. return "interrupt"!
  79. $
  80. value_tokens = $
  81. Integer function value(model : Element, name : String, mapping : Element):
  82. return 0!
  83. $
  84. }
  85. Post_Encapsulated_PetriNet/Port post_ports_13 {
  86. label = "13"
  87. value_name = $
  88. String function value(model : Element, name : String, mapping : Element):
  89. return "interrupt"!
  90. $
  91. }
  92. Post_Encapsulated_PetriNet/PortPlace (post_ports_13, post_ports_03) {
  93. label = "23"
  94. }
  95. Post_Encapsulated_PetriNet/Place post_ports_04 {
  96. label = "04"
  97. value_name = $
  98. String function value(model : Element, name : String, mapping : Element):
  99. return "objDetected"!
  100. $
  101. value_tokens = $
  102. Integer function value(model : Element, name : String, mapping : Element):
  103. return 0!
  104. $
  105. }
  106. Post_Encapsulated_PetriNet/Port post_ports_14 {
  107. label = "14"
  108. value_name = $
  109. String function value(model : Element, name : String, mapping : Element):
  110. return "objDetected"!
  111. $
  112. }
  113. Post_Encapsulated_PetriNet/PortPlace (post_ports_14, post_ports_04) {
  114. label = "24"
  115. }
  116. Post_Encapsulated_PetriNet/Place post_ports_05 {
  117. label = "05"
  118. value_name = $
  119. String function value(model : Element, name : String, mapping : Element):
  120. return "no_objDetected"!
  121. $
  122. value_tokens = $
  123. Integer function value(model : Element, name : String, mapping : Element):
  124. return 1!
  125. $
  126. }
  127. Post_Encapsulated_PetriNet/Port post_ports_15 {
  128. label = "15"
  129. value_name = $
  130. String function value(model : Element, name : String, mapping : Element):
  131. return "no_objDetected"!
  132. $
  133. }
  134. Post_Encapsulated_PetriNet/PortPlace (post_ports_15, post_ports_05) {
  135. label = "25"
  136. }
  137. Post_Encapsulated_PetriNet/Place post_ports_06 {
  138. label = "06"
  139. value_name = $
  140. String function value(model : Element, name : String, mapping : Element):
  141. return "objPresent"!
  142. $
  143. value_tokens = $
  144. Integer function value(model : Element, name : String, mapping : Element):
  145. return 0!
  146. $
  147. }
  148. Post_Encapsulated_PetriNet/Port post_ports_16 {
  149. label = "16"
  150. value_name = $
  151. String function value(model : Element, name : String, mapping : Element):
  152. return "objPresent"!
  153. $
  154. }
  155. Post_Encapsulated_PetriNet/PortPlace (post_ports_16, post_ports_06) {
  156. label = "26"
  157. }
  158. Post_Encapsulated_PetriNet/Place post_ports_07 {
  159. label = "07"
  160. value_name = $
  161. String function value(model : Element, name : String, mapping : Element):
  162. return "no_objPresent"!
  163. $
  164. value_tokens = $
  165. Integer function value(model : Element, name : String, mapping : Element):
  166. return 1!
  167. $
  168. }
  169. Post_Encapsulated_PetriNet/Port post_ports_17 {
  170. label = "17"
  171. value_name = $
  172. String function value(model : Element, name : String, mapping : Element):
  173. return "no_objPresent"!
  174. $
  175. }
  176. Post_Encapsulated_PetriNet/PortPlace (post_ports_17, post_ports_07) {
  177. label = "27"
  178. }
  179. }
  180. }
  181. {Contains} ForAll create_states {
  182. LHS {
  183. Pre_PW_Plant/State {
  184. label = "0"
  185. }
  186. }
  187. RHS {
  188. Post_PW_Plant/State post_cs_0 {
  189. label = "0"
  190. }
  191. Post_Encapsulated_PetriNet/Place post_cs1 {
  192. label = "1"
  193. value_name = $
  194. String function value(model : Element, name : String, mapping : Element):
  195. return read_attribute(model, mapping["0"], "name")!
  196. $
  197. value_tokens = $
  198. Integer function value(model : Element, name : String, mapping : Element):
  199. if (value_eq(read_attribute(model, mapping["0"], "isInitial"), True)):
  200. return 1!
  201. else:
  202. return 0!
  203. $
  204. }
  205. Post_PLANT2EPN_link (post_cs_0, post_cs_1) {
  206. label = "2"
  207. }
  208. }
  209. }
  210. {Contains} ForAll command_transition {
  211. LHS {
  212. Pre_PW_Plant/State pre_ct_0{
  213. label = "0"
  214. }
  215. Pre_PW_Plant/State pre_ct_1{
  216. label = "1"
  217. }
  218. Pre_PW_Plant/Transition pre_ct_2{
  219. label = "2"
  220. }
  221. Pre_Encapsulated_PetriNet/Place pre_ct_3{
  222. label = "3"
  223. }
  224. Pre_Encapsulated_PetriNet/Place pre_ct_4{
  225. label = "4"
  226. }
  227. Pre_PLANT2EPN_link (pre_ct_0, pre_ct_3) {
  228. label = "5"
  229. }
  230. Pre_PLANT2EPN_link (pre_ct_1, pre_ct_4) {
  231. label = "6"
  232. }
  233. Pre_Encapsulated_PetriNet/Place pre_ct_7 {
  234. label = "7"
  235. }
  236. Pre_Encapsulated_PetriNet/Port pre_ct_8 {
  237. label = "8"
  238. }
  239. Pre_Encapsulated_PetriNet/PortPlace (pre_ct_8, pre_ct_7) {
  240. label = "9"
  241. }
  242. }
  243. RHS {
  244. Post_PW_Plant/State post_ct_0{
  245. label = "0"
  246. }
  247. Post_PW_Plant/State post_ct_1{
  248. label = "1"
  249. }
  250. Post_PW_Plant/Transition post_ct_2{
  251. label = "2"
  252. }
  253. Post_Encapsulated_PetriNet/Place post_ct_3{
  254. label = "3"
  255. }
  256. Post_Encapsulated_PetriNet/Place post_ct_4{
  257. label = "4"
  258. }
  259. Post_PLANT2EPN_link (post_ct_0, post_ct_3) {
  260. label = "5"
  261. }
  262. Post_PLANT2EPN_link (post_ct_1, post_ct_4) {
  263. label = "6"
  264. }
  265. Post_Encapsulated_PetriNet/Place post_ct_7 {
  266. label = "7"
  267. }
  268. Post_Encapsulated_PetriNet/Port post_ct_8 {
  269. label = "8"
  270. }
  271. Post_Encapsulated_PetriNet/PortPlace (post_ct_8, post_ct_7) {
  272. label = "9"
  273. }
  274. Post_Encapsulated_PetriNet/Transition post_ct_10 {
  275. label = "10"
  276. }
  277. Post_Encapsulated_PetriNet/P2T (post_ct_3, post_ct_10) {
  278. label = "11"
  279. }
  280. Post_Encapsulated_PetriNet/T2P (post_ct_10, post_ct_4) {
  281. label = "12"
  282. }
  283. Post_Encapsulated_PetriNet/P2T (post_ct_7, post_ct_10) {
  284. label = "13"
  285. }
  286. Post_Encapsulated_PetriNet/T2P (post_ct_10, post_ct_7) {
  287. label = "14"
  288. }
  289. }
  290. }
  291. {Contains} ForAll check_object {
  292. LHS {
  293. Pre_PW_Plant/State pre_co_0{
  294. label = "0"
  295. }
  296. Pre_PW_Plant/State pre_co_1{
  297. label = "1"
  298. }
  299. Pre_PW_Plant/Transition pre_co_2{
  300. label = "2"
  301. constraint_objPresent = $
  302. Boolean function constraint(value : String):
  303. return (bool_or(value == "Y", value == "N"))!
  304. $
  305. }
  306. Pre_Encapsulated_PetriNet/Place pre_co_3{
  307. label = "3"
  308. }
  309. Pre_Encapsulated_PetriNet/Place pre_co_4{
  310. label = "4"
  311. }
  312. Pre_PLANT2EPN_link (pre_co_0, pre_co_3) {
  313. label = "5"
  314. }
  315. Pre_PLANT2EPN_link (pre_co_1, pre_co_4) {
  316. label = "6"
  317. }
  318. Pre_Encapsulated_PetriNet/Place pre_co_8 {
  319. label = "8"
  320. }
  321. Pre_Encapsulated_PetriNet/Port pre_co_11 {
  322. label = "11"
  323. }
  324. Pre_Encapsulated_PetriNet/PortPlace (pre_co_11, pre_co_8) {
  325. label = "12"
  326. }
  327. Pre_Encapsulated_PetriNet/Transition pre_co_15 {
  328. label = "15"
  329. }
  330. Pre_Encapsulated_PetriNet/P2T (pre_co_3, pre_co_15) {
  331. label = "16"
  332. }
  333. Pre_Encapsulated_PetriNet/T2P (pre_co_15, pre_co_4) {
  334. label = "17"
  335. }
  336. constraint = $
  337. Boolean function constraint (host_model : Element, mapping : Element):
  338. // Check whether the bound primary places match with the state
  339. String objPresent
  340. String port_name
  341. objPresent = read_attribute(host_model, mapping["2"], "objPresent")
  342. port_name = read_attribute(host_model, mapping["11"], "name")
  343. if (objPresent == "Y"):
  344. return (port_name == "objPresent")!
  345. elif (objPresent == "N"):
  346. return (port_name == "no_objPresent")!
  347. else:
  348. return False!
  349. $
  350. }
  351. RHS {
  352. Post_PW_Plant/State post_co_0{
  353. label = "0"
  354. }
  355. Post_PW_Plant/State post_co_1{
  356. label = "1"
  357. }
  358. Post_PW_Plant/Transition post_co_2{
  359. label = "2"
  360. }
  361. Post_Encapsulated_PetriNet/Place post_co_3{
  362. label = "3"
  363. }
  364. Post_Encapsulated_PetriNet/Place post_co_4{
  365. label = "4"
  366. }
  367. Post_PLANT2EPN_link (post_co_0, post_co_3) {
  368. label = "5"
  369. }
  370. Post_PLANT2EPN_link (post_co_1, post_co_4) {
  371. label = "6"
  372. }
  373. Post_Encapsulated_PetriNet/Place post_co_8 {
  374. label = "8"
  375. }
  376. Post_Encapsulated_PetriNet/Port post_co_11 {
  377. label = "11"
  378. }
  379. Post_Encapsulated_PetriNet/PortPlace (post_co_11, post_co_8) {
  380. label = "12"
  381. }
  382. Post_Encapsulated_PetriNet/Transition post_co_15 {
  383. label = "15"
  384. }
  385. Post_Encapsulated_PetriNet/P2T (post_co_3, post_co_15) {
  386. label = "16"
  387. }
  388. Post_Encapsulated_PetriNet/T2P (post_co_15, post_co_4) {
  389. label = "17"
  390. }
  391. Post_Encapsulated_PetriNet/P2T (post_co_8, post_co_15) {
  392. label = "9"
  393. }
  394. Post_Encapsulated_PetriNet/T2P (post_co_15, post_co_8) {
  395. label = "10"
  396. }
  397. }
  398. }
  399. {Contains} ForAll detect {
  400. LHS {
  401. Pre_PW_Plant/NormalState pre_de_0{
  402. label = "0"
  403. }
  404. Pre_PW_Plant/ErrorState pre_de_1{
  405. label = "1"
  406. }
  407. Pre_PW_Plant/Transition pre_de_2{
  408. label = "2"
  409. }
  410. Pre_Encapsulated_PetriNet/Place pre_de_3{
  411. label = "3"
  412. }
  413. Pre_Encapsulated_PetriNet/Place pre_de_4{
  414. label = "4"
  415. }
  416. Pre_PLANT2EPN_link (pre_de_0, pre_de_3) {
  417. label = "5"
  418. }
  419. Pre_PLANT2EPN_link (pre_de_1, pre_de_4) {
  420. label = "6"
  421. }
  422. Pre_Encapsulated_PetriNet/Transition pre_de_7 {
  423. label = "7"
  424. }
  425. Pre_Encapsulated_PetriNet/P2T (pre_de_3, pre_de_7) {
  426. label = "8"
  427. }
  428. Pre_Encapsulated_PetriNet/T2P (pre_de_7, pre_de_4) {
  429. label = "9"
  430. }
  431. Pre_Encapsulated_PetriNet/Place pre_de_10 {
  432. label = "10"
  433. }
  434. Pre_Encapsulated_PetriNet/Port pre_de_11 {
  435. label = "11"
  436. }
  437. Pre_Encapsulated_PetriNet/PortPlace (pre_de_11, pre_de_10) {
  438. label = "12"
  439. }
  440. Pre_Encapsulated_PetriNet/Place pre_de_13 {
  441. label = "13"
  442. }
  443. Pre_Encapsulated_PetriNet/Port pre_de_14 {
  444. label = "14"
  445. constraint_name = $
  446. Boolean function constraint(value : String):
  447. return (value == "interrupt")!
  448. $
  449. }
  450. Pre_Encapsulated_PetriNet/PortPlace (pre_de_14, pre_de_13) {
  451. label = "15"
  452. }
  453. Pre_Encapsulated_PetriNet/Place pre_de_16 {
  454. label = "16"
  455. }
  456. Pre_Encapsulated_PetriNet/Port pre_de_17 {
  457. label = "17"
  458. constraint_name = $
  459. Boolean function constraint(value : String):
  460. return (value == "no_objDetected")!
  461. $
  462. }
  463. Pre_Encapsulated_PetriNet/PortPlace (pre_de_17, pre_de_16) {
  464. label = "18"
  465. }
  466. Pre_Encapsulated_PetriNet/Place pre_de_19 {
  467. label = "19"
  468. }
  469. Pre_Encapsulated_PetriNet/Port pre_de_20 {
  470. label = "20"
  471. constraint_name = $
  472. Boolean function constraint(value : String):
  473. return (value == "objDetected")!
  474. $
  475. }
  476. Pre_Encapsulated_PetriNet/PortPlace (pre_de_20, pre_de_19) {
  477. label = "21"
  478. }
  479. constraint = $
  480. Boolean function constraint (host_model : Element, mapping : Element):
  481. // Check whether the bound primary places match with the state
  482. String source_type
  483. String port_name
  484. source_type = read_type(host_model, mapping["0"])
  485. port_name = read_attribute(host_model, mapping["11"], "name")
  486. if (source_type == "Up"):
  487. return (port_name == "up")!
  488. elif (source_type == "Neutral"):
  489. return (port_name == "neutral")!
  490. elif (source_type == "Down"):
  491. return (port_name == "down")!
  492. else:
  493. return False!
  494. $
  495. }
  496. RHS {
  497. Post_PW_Plant/NormalState post_de_0{
  498. label = "0"
  499. }
  500. Post_PW_Plant/ErrorState post_de_1{
  501. label = "1"
  502. }
  503. Post_PW_Plant/Transition post_de_2{
  504. label = "2"
  505. }
  506. Post_Encapsulated_PetriNet/Place post_de_3{
  507. label = "3"
  508. }
  509. Post_Encapsulated_PetriNet/Place post_de_4{
  510. label = "4"
  511. }
  512. Post_PLANT2EPN_link (post_de_0, post_de_3) {
  513. label = "5"
  514. }
  515. Post_PLANT2EPN_link (post_de_1, post_de_4) {
  516. label = "6"
  517. }
  518. Post_Encapsulated_PetriNet/Transition post_de_7 {
  519. label = "7"
  520. }
  521. Post_Encapsulated_PetriNet/P2T (post_de_3, post_de_7) {
  522. label = "8"
  523. }
  524. Post_Encapsulated_PetriNet/T2P (post_de_7, post_de_4) {
  525. label = "9"
  526. }
  527. Post_Encapsulated_PetriNet/Place post_de_10 {
  528. label = "10"
  529. }
  530. Post_Encapsulated_PetriNet/Port post_de_11 {
  531. label = "11"
  532. }
  533. Post_Encapsulated_PetriNet/PortPlace (post_de_11, post_de_10) {
  534. label = "12"
  535. }
  536. Post_Encapsulated_PetriNet/Place post_de_13 {
  537. label = "13"
  538. }
  539. Post_Encapsulated_PetriNet/Port post_de_14 {
  540. label = "14"
  541. }
  542. Post_Encapsulated_PetriNet/PortPlace (post_de_14, post_de_13) {
  543. label = "15"
  544. }
  545. Post_Encapsulated_PetriNet/Place post_de_16 {
  546. label = "16"
  547. }
  548. Post_Encapsulated_PetriNet/Port post_de_17 {
  549. label = "17"
  550. }
  551. Post_Encapsulated_PetriNet/PortPlace (post_de_17, post_de_16) {
  552. label = "18"
  553. }
  554. Post_Encapsulated_PetriNet/Place post_de_19 {
  555. label = "19"
  556. }
  557. Post_Encapsulated_PetriNet/Port post_de_20 {
  558. label = "20"
  559. }
  560. Post_Encapsulated_PetriNet/PortPlace (post_de_20, post_de_19) {
  561. label = "21"
  562. }
  563. Post_Encapsulated_PetriNet/P2T (post_de_10, post_de_7) {
  564. label = "22"
  565. }
  566. Post_Encapsulated_PetriNet/T2P (post_de_7, post_de_13) {
  567. label = "23"
  568. }
  569. Post_Encapsulated_PetriNet/P2T (post_de_16, post_de_7) {
  570. label = "22"
  571. }
  572. Post_Encapsulated_PetriNet/T2P (post_de_7, post_de_19) {
  573. label = "23"
  574. }
  575. }
  576. }
  577. {Contains} ForAll remove_detect {
  578. LHS {
  579. Pre_PW_Plant/ErrorState pre_rd_0{
  580. label = "0"
  581. }
  582. Pre_PW_Plant/NormalState pre_rd_1{
  583. label = "1"
  584. }
  585. Pre_PW_Plant/Transition pre_rd_2{
  586. label = "2"
  587. }
  588. Pre_Encapsulated_PetriNet/Place pre_rd_3{
  589. label = "3"
  590. }
  591. Pre_Encapsulated_PetriNet/Place pre_rd_4{
  592. label = "4"
  593. }
  594. Pre_PLANT2EPN_link (pre_rd_0, pre_rd_3) {
  595. label = "5"
  596. }
  597. Pre_PLANT2EPN_link (pre_rd_1, pre_rd_4) {
  598. label = "6"
  599. }
  600. Pre_Encapsulated_PetriNet/Transition pre_rd_7 {
  601. label = "7"
  602. }
  603. Pre_Encapsulated_PetriNet/P2T (pre_rd_3, pre_rd_7) {
  604. label = "8"
  605. }
  606. Pre_Encapsulated_PetriNet/T2P (pre_rd_7, pre_rd_4) {
  607. label = "9"
  608. }
  609. Pre_Encapsulated_PetriNet/Place pre_rd_10 {
  610. label = "10"
  611. }
  612. Pre_Encapsulated_PetriNet/Port pre_rd_11 {
  613. label = "11"
  614. constraint_name = $
  615. Boolean function constraint(value : String):
  616. return (value == "objDetected")!
  617. $
  618. }
  619. Pre_Encapsulated_PetriNet/PortPlace (pre_rd_11, pre_rd_10) {
  620. label = "12"
  621. }
  622. Pre_Encapsulated_PetriNet/Place pre_rd_13 {
  623. label = "13"
  624. }
  625. Pre_Encapsulated_PetriNet/Port pre_rd_14 {
  626. label = "14"
  627. constraint_name = $
  628. Boolean function constraint(value : String):
  629. return (value == "no_objDetected")!
  630. $
  631. }
  632. Pre_Encapsulated_PetriNet/PortPlace (pre_rd_14, pre_rd_13) {
  633. label = "15"
  634. }
  635. }
  636. RHS {
  637. Post_PW_Plant/NormalState post_rd_0{
  638. label = "0"
  639. }
  640. Post_PW_Plant/ErrorState post_rd_1{
  641. label = "1"
  642. }
  643. Post_PW_Plant/Transition post_rd_2{
  644. label = "2"
  645. }
  646. Post_Encapsulated_PetriNet/Place post_rd_3{
  647. label = "3"
  648. }
  649. Post_Encapsulated_PetriNet/Place post_rd_4{
  650. label = "4"
  651. }
  652. Post_PLANT2EPN_link (post_rd_0, post_rd_3) {
  653. label = "5"
  654. }
  655. Post_PLANT2EPN_link (post_rd_1, post_rd_4) {
  656. label = "6"
  657. }
  658. Post_Encapsulated_PetriNet/Transition post_rd_7 {
  659. label = "7"
  660. }
  661. Post_Encapsulated_PetriNet/P2T (post_rd_3, post_rd_7) {
  662. label = "8"
  663. }
  664. Post_Encapsulated_PetriNet/T2P (post_rd_7, post_rd_4) {
  665. label = "9"
  666. }
  667. Post_Encapsulated_PetriNet/Place post_rd_10 {
  668. label = "10"
  669. }
  670. Post_Encapsulated_PetriNet/Port post_rd_11 {
  671. label = "11"
  672. }
  673. Post_Encapsulated_PetriNet/PortPlace (post_rd_11, post_rd_10) {
  674. label = "12"
  675. }
  676. Post_Encapsulated_PetriNet/Place post_rd_13 {
  677. label = "13"
  678. }
  679. Post_Encapsulated_PetriNet/Port post_rd_14 {
  680. label = "14"
  681. }
  682. Post_Encapsulated_PetriNet/PortPlace (post_rd_14, post_rd_13) {
  683. label = "15"
  684. }
  685. Post_Encapsulated_PetriNet/P2T (post_rd_10, post_rd_7) {
  686. label = "16"
  687. }
  688. Post_Encapsulated_PetriNet/T2P (post_rd_7, post_rd_13) {
  689. label = "17"
  690. }
  691. }
  692. }
  693. }
  694. Initial (schedule, init_ports) {}
  695. OnSuccess (init_ports, create_states) {}
  696. OnSuccess (create_states, command_transition) {}
  697. OnSuccess (command_transition, check_object) {}
  698. OnSuccess (check_object, detect) {}
  699. OnSuccess (detect, remove_detect) {}
  700. OnSuccess (remove_detect, success) {}
  701. OnFailure (init_ports, create_states) {}
  702. OnFailure (create_states, command_transition) {}
  703. OnFailure (command_transition, check_object) {}
  704. OnFailure (check_object, detect) {}
  705. OnFailure (detect, remove_detect) {}
  706. OnFailure (remove_detect, success) {}
  707. }