INCREMENT không có hành động value.write[0] vì nó luôn tăng giá trị mà nó đọc được. Vì thế tiến trình TURNSTILE thiếu mất hành động value.write[0] nên tập hành động mà tiến trình này tham gia ít hơn tập hành động được định nghĩa trong tập hành động VarAlpha = {value.{read[T],write[T]}}. Do đó bảng chữ cái của TURNSTILE
được mở rộng với bảng chữ cái VarAlpha bằng cách sử dụng cấu trúc bảng chữ cái mở
rộng +{..}.
Kết hợp các tiến trình RUN và INCREMENT ta có tiến trình TURNSTILE được miêu tả đầy đủ như hình 4.6.
Hình 4.6. Tiến trình TURNSTILE.
RUN = (arrive -> INCREMENT | end -> TURNSTILE )
INCREMENT = (value.read[x:T]
-> value.write[x+1]->RUN )
LTS của tiến trình TURNSTILE có các thành phần được xác định như sau:
- Tập các trạng thái Q:
Qua hình 4.6 ta thấy rằng từ TURNSTILE để chuyển sang RUN cần một phép chuyển trạng thái, đối với tiến trình RUN có hai phép chuyển trạng thái và tiến trình INCREMENT có năm phép chuyển trạng thái tương ứng như sau:
value.read[0] -> value.write[1]->RUN
value.read[1] -> value.write[2]->RUN
value.read[2] -> value.write[3]->RUN
value.read[3] -> value.write[4]->RUN
value.read[4] -> value.write[5]->RUN
Do đó tổng số trạng thái của TURNSTILE là 1+2+5 = 8.
Ký hiệu tập trạng thái này là: Q = {Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7}.
- Trạng thái ban đầu là: Q0 = TURNSTILE
- Tậpnhãn các hành động:
L= {go, arrive, end, value.read[x:T], value.write[x+1] với T = [0..4]}.
-Tập quy tắc chuyển trạng thái δ = {Q x L x Q} được miêu tả như sau:
Mô hình LTS của tiến trình thành phần TURNSTILE được miêu tả như hình 4.7.
δ= {(0, go, 1), (1, end, 0), (1, arrive, 2),
(2, value.read[0], 7), (7, value.write[1], 1), (2, value.read[1], 6), (6, value.write[2], 1), (2, value.read[2], 5), (5, value.write[3], 1), (2, value.read[3], 4), (4, value.write[4], 1), (2, value.read[4], 3), (3, value.write[5], 1)}