Tải bản đầy đủ (.pdf) (42 trang)

Thẩm định các thành phần của hệ thống lai thời gian thực kết nối đồng bộ dựa trên logic tính toán khoảng DC luận văn t

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (597.17 KB, 42 trang )

ðẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ðẠI HỌC CÔNG NGHỆ

LƯƠNG THANH HOÀI

THẨM ðỊNH CÁC THÀNH PHẦN
CỦA HỆ THỐNG LAI THỜI GIAN THỰC
KẾT NỐI ðỒNG BỘ
DỰA TRÊN LOGIC TÍNH TOÁN KHOẢNG DC
(DURATION CALCULUS)
Ngành: Công nghệ thông tin
Chuyên ngành: Công nghệ phần mềm
Mã số: 60 48 10

LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. ðặng Văn Hưng

Hà Nội - 2010


LỜI CAM ðOAN
Tôi xin cam ñoan các thông tin, số liệu, kiến thức trích dẫn trong luận văn là thu thập
từ các nguồn chính thống, ñăng tải trên các tạp chí chuyên ngành, sách, báo…

Các giải pháp ñưa ra là của bản thân rút ra từ quá trình nghiên cứu tổng hợp.

Tác giả ký tên

Lương Thanh Hoài



MỤC LỤC
MỞ ðẦU................................................................................................... 1
Chương 1 – Phép Tính Toán Khoảng......................................................... 4
1.1 Phép Tính Toán Khoảng Có Lặp...............................................................4
1.2 Phép Tính Toán Khoảng Có Lặp Với Thời Gian ðơn ðiệu Yếu ...............5

Chương 2 - Xây dựng chương trình thời gian thực .................................. 12
2.1 Bộ ba Hoare mở rộng..............................................................................12
2.2 Cú pháp và ngữ nghĩa phi hình thức........................................................13
2.3 Ngữ nghĩa hình thức của ngôn ngữ lập trình ...........................................14
2.4 Các luật kiểm chứng ...............................................................................17

Chương 3 - Kỹ thuật thiết kế hệ thống ñiều khiển thời gian thực ............. 22
3.1 Hình thức hóa giao diện rời rạc ...............................................................23
3.2 Các luật kiểm chứng thiết kế mức cao.....................................................24

Chương 4 - Kiểm chứng việc tránh xung ñột trong hệ thống ñiều khiển tàu
ñiện.......................................................................................................... 26
4.1 Tổng quan về ETCS................................................................................26
4.2 Thiết kế chương trình ñiều khiển.............................................................28
4.2.1 Hình thức hóa yêu cầu hệ thống.................................................................28
4.2.2 Design Decision – Quyết ñịnh thiết kế.......................................................29
4.2.3 Discrete Design – Thiết kế rời rạc .............................................................31
4.2.4 Chương trình .............................................................................................34

KẾT LUẬN ............................................................................................. 37
TÀI LIỆU THAM KHẢO ....................................................................... 38


1


MỞ ðẦU
Tóm tắt – ðể xác ñịnh và kiểm chứng hệ thống lai phân tán thời gian thực kết nối
ñồng bộ (distributed synchronously communication real-time hybrid system), bộ ba
Hoare cổ ñiển (classical Hoare triples) ñược mở rộng với việc nhúng hành vi
(behavior) thời gian thực của chương trình. Nhờ vào việc mở rộng này một Hệ Thống
Chứng Minh Có Tính Kết Hợp (Compositional Proof System) dựa trên Sự Mở Rộng
về Thời Gian ðơn ðiệu Yếu (Weakly Monotonic Time Extention) của DC* (WDC*)
ñã ñược hình thành. Lợi thế của luật chứng minh kết hợp (compositional) là nó thực
hiện việc chia một hệ thống lớn thành các phần nhỏ có thể quản lý ñược sau ñó chứng
minh tính ñúng của toàn bộ hệ thống từ việc chứng minh tính ñúng của các thành phần
hợp thành. WDC* cung cấp bản chất ñơn giản trong việc lý luận về thiết kế của những
chương trình thời gian thực bằng những phương tiện của giả thuyết ñồng bộ lý tưởng
(true synchrony) và tính toán siêu trù mật (super-dense computation). ðiều này ñược
mô phỏng bằng quá trình kiểm chứng những thuộc tính an toàn của việc tránh xung
ñột trong Hệ Thống ðiều Khiển Tàu ðiện Châu Âu (European Train Control System –
ETCS), phiên bản ñầy ñủ các tham số.
Giới thiệu - Với sự tăng trưởng nhanh chóng của mạng cùng sự phát triển mạnh về
khả năng tính toán, nhu cầu cho các hệ thống quy mô lớn và phức tạp ñã tăng lên ñáng
kể. Nhiều hệ thống hỗ trợ hoặc thay thế kiểm soát của con người trong các hệ thống
ñòi hỏi an toàn cao như: Hệ thống ñiều khiển ñiện tử trên máy bay, hệ thống ñiều
khiển tàu, hệ thống ñiều khiển nhà máy năng lượng hạt nhân v…v. Lỗi trong các hệ
thống ñòi hỏi an toàn cao này có thể dẫn ñến những thảm họa lớn và lấy ñi mạng sống
của con người. Vì vậy, hệ thống an toàn cao cần duy trì những thuộc tính ñảm bảo cao.
ðể phù hợp với những thuộc tính ñảm bảo cao, những hệ thống này thường chia sẻ tài
nguyên giữa nhiều tác tử tính toán chủ ñộng ñồng thời và phải tuân thủ chặt chẽ những
ràng buộc thời gian thực. Hệ thống lai thời gian thực phân tán dựa trên kết nối ñồng bộ
là một trong những hệ thống an toàn cao, nó ñóng một vai trò rất quan trọng trong
những hệ thống có qui mô lớn.
Tuy nhiên, tính ñồng thời, sự ràng buộc thời gian, giao diện liên tục và rời rạc làm cho

sự phát triển và kiểm chứng những hệ thống lai an toàn cao trở lên khó khăn hơn
nhiều. ðầu tiên, việc chứng minh thuộc tính an toàn tổng thể của hệ thống an toàn cao
ñối với một tập những tác tử thành phần (component agent) là rất khó bởi vì mỗi tác tử
thành phần là (mô hình bởi) một hệ thống lai với một số (rời rạc) các chế ñộ và các
biến ñổi liên tục khác nhau ở mỗi chế ñộ. Thứ hai, sự phát triển của ngôn ngữ ñặc tả
hình thức với khả năng (mô hình hóa) thời gian ñã và vẫn là một nhiệm vụ thách thức.
ðặc biệt, việc kiểm chứng các ràng buộc thời gian bởi Explicit Clock Temporal Logic


2
và Duration Calculus ([1], [2]) cổ ñiển thay vì sử dụng sự trừu tượng hóa của
ñồng bộ lí tưởng (nghĩa là, coi tính toán và liên lạc không mất thời gian, ñây là sự ñơn
giản bản chất trong việc hiểu và lí giải về hành vi của những hệ thống thời gian thực)
ñã làm nó trở lên rất phức tạp trong việc hiểu và lí giải về hành vi của hệ thống lai thời
gian thực [3]. Cuối cùng, những phương pháp kiểm chứng thời gian thực truyền thống
không phải dạng kết hợp (non-compositional), yêu cầu một sự xem xét tổng thể toàn
bộ hệ thống, không có khả năng mở rộng ñủ tốt ñể kiểm chứng một hệ thống thực sự
lớn do sự bùng nổ không gian trạng thái. Từ ñó, việc phát triển của những luật chứng
minh thời gian thực có tính kết hợp ñóng một vai trò quan trọng ñể duy trì các thuộc
tính bảo ñảm ở mức cao cho hệ thống lai thời gian thực kết nối ñồng bộ phân tán.
Trong bài luận này, một số công việc sẽ ñể xác ñịnh vấn ñề. Trong [1] Hooman ñã mở
rộng bộ ba Hoare (Hoare triples) bằng cách thêm vào tham số thời gian và biểu diễn
một hệ thống chứng minh có tính kết hợp cho thời gian thực phân tán kết nối ñồng bộ.
Pandya và những người khác trong [4] ñã xem xét một ngôn ngữ lập trình lai bao gồm
những cấu trúc lập trình tuần tự bình thường kết hợp với những câu lệnh pha (phase)
ñây là những công thức khoảng (duration) diễn tả một vài yếu tố ñộng phụ thuộc thời
gian. Francois và những người khác thì mở rộng bộ ba Hoare ñể nhúng thêm hành vi
thời gian thực của chương trình và phát triển một tập những luật kết hợp dựa trên
WDC* sử dụng trong thiết kế và kiểm chứng hệ thống phân tán với những biến chia sẻ
[5]. Damm và những người khác trình diễn một cấu trúc phân tầng ñiển hình trong một

tiến trình thiết kế dựa trên mô hình của hệ thống ñiều khiển tàu ñiện ñể chia việc kiểm
chứng toàn bộ vấn ñề của hệ thống thành các phần nhỏ hơn có thể kiểm chứng ñược
bằng các công cụ kiểm chứng tự ñộng ñối với các lớp con của những hệ thống thời
gian thực [6], [7].
Tuy nhiên trong những trường hợp trên một số hệ thống chứng minh có tính kết hợp
ñược ñề xuất dựa trên ECTL (Existential Computation Tree Logic) thay vì sự trừu
tượng hóa ñồng bộ lí tưởng, ñã dẫn ñến việc hiểu và lí giải hành vi của hệ thống lai
thời gian thực rất phức tạp. Một số khác ñược ñề xuất cho những biến chia sẻ dựa trên
lược ñồ kết nối ñồng bộ thay vì truyền thông ñiệp dựa trên lược ñồ kết nối ñồng bộ.
Một số kết quả khác ñưa ra những luật phân chia chỉ tương thích tốt trong một số
trường hợp ñặc biệt (như là kiểm chứng tự ñộng của các tác tử giao thông (traffic)). Và
một số kết quả không thể giải quyết ñược vấn ñề không nhất quán giữa mô hình liên
tục sử dụng trong ñặc tả và mô hình rời rạc sử dụng trong cài ñặt.
Thay vào ñó, chúng ta biểu diễn một hệ thống những luật kiểm chứng có tính kết hợp
dựa trên WDC* cho hệ thống lai thời gian thực kết nối ñồng bộ. Sự ñóng góp của bài
luận này là:
1) Sử dụng logic khoảng dựa trên WDC* ñể thích ứng với sự trừu tượng của
ñồng bộ lí tưởng, ñây là yếu tố cơ bản trong việc ñơn giản hóa về mặt bản chất cho
việc hiểu và lí giải về hành vi của hệ thống thời gian thực.


3
2) Làm cho việc sử dụng những luật ñối với giao diện rời rạc tương thích
tốt trong quá trình phân tích và kiểm chứng hệ thống lai từ ñó giải quyết sự không nhất
quán giữa những mô hình liên tục sử dụng trong ñặc tả và mô hình rời rạc sử dụng
trong cài ñặt.
3) Theo cú pháp và những ngữ nghĩa của những ngôn ngữ kết nối ñồng bộ,
chúng ta mô tả hệ thống chứng minh có tính kết hợp cho những hệ thống lai thời gian
thực, nó giúp giải quyết một cách hiệu quả tiến trình phân tích và kiểm chứng những
hệ thống qui mô lớn.

Bài luận ñược tổ chức như sau: chương 1 ñưa ra tổng quan vắn tắt về Phép Tính Toán
Khoảng Có Lặp (DC*), Phép Tính Toán Khoảng Có Lặp Với Thời Gian ðơn ðiệu Yếu
(WDC*). Trong chương 2 chúng ta sẽ xem xét kết nối ñồng bộ dựa trên ngôn ngữ thời
gian thực, cho nó một ngữ nghĩa hình thức trong logic WDC*, và công thức hóa những
luật chứng minh có tính kết hợp. Chương 3 ñưa ra thiết kế rời rạc. Như là một áp dụng,
chương 4 ñưa ra chương trình kiểm chứng cho bài toán thời gian thực ETCS. Cuối
cùng là kết luận của bài luận và danh sách các tài liệu tham khảo.


4

Chương 1 – Phép Tính Toán Khoảng
1.1 Phép Tính Toán Kho ng Có L p
Trong phần này ta sẽ trình bày vắn tắt về DC*. Bạn ñọc có thể tham khảo thêm [2] ñể
có thêm chi tiết về phép tính toán khoảng (DC - duration calculus).
Một ngôn ngữ cho DC* ñược xây dựng bắt ñầu từ tập các ký hiệu sau: một tập những
ký hiệu constant {a,b,c, …}, một tập các biến riêng lẻ (individual variables) {x,y,z,…},
một tập các biến trạng thái (state variables) {P,Q,…}, một tập các biến khoảng
(temporal variable) {u,v,…}, một tập các ký hiệu hàm (function symbols) {f,g…}, một
tập các ký hiệu quan hệ (relation symbols) {R,U,…}, và một tập các kí tự mệnh ñề trên
khoảng (temporal propositional letters) {A,B,….}.
Một ñịnh nghĩa về ngôn ngữ DC* về mặt bản chất bao gồm các tập: những biểu thức
trạng thái (state expression) S, những hạng tử (terms) t và những công thức ϕ của
ngôn ngữ. Những tập này có thể ñược ñịnh nghĩa bằng dạng BNF như sau:
S ≙ 0 | P | ¬S | S ∨ S
t ≙ c | x | u | ∫ S | f (t ,..., t )
ϕ ≙ A | R(t ,..., t ) | ¬ϕ | (ϕ ∨ ϕ ) | (ϕ ϕ) | (ϕ* ) | ∃x.ϕ

Một biến trạng thái P ñược thông dịch như hàm I(P) : ℝ + → {0,1} (một trạng thái).
I(P)(t) =1 có nghĩa rằng trạng thái P hiện hữu tại thời ñiểm t, và ngược lại. Chúng ta

giả sử rằng một trạng thái có hữu hạn biến ñổi trong một khoảng thời gian giới hạn.
Một biểu thức trạng thái ñược thông dịch như là một hàm với các biến trạng thái và
các phép toán logic.
Với một biểu thức trạng thái bất kỳ S, duration của nó ñược ký hiệu bởi
thông dịch I của các biến trạng thái và một khoảng, duration

∫S

∫ S . Cho một

ñược thông dịch như

là tổng ñộ dài thời gian trong một khoảng mà tại ñó S hiện hữu. Vì vậy bất kỳ ñoạn
[t,t’], trình dịch I ( ∫ S )([t , t ']) ñược ñịnh nghĩa là



t

t'

I ( S )(t ) dt .

Một công thức ϕ ñược thỏa mãn bởi một trình thông dịch trong một khoảng thời gian
[t,t’] khi nó ñược ñánh giá là ñúng với trình thông dịch ñó trên khoảng thời gian ñã
cho. Ta kí hiệu ñiều này bởi: I ,[t , t '] |= ϕ .
Cho một máy thông dịch I, một biểu thức ϕ ψ là ñúng trên [t,t’’] nếu tồn tại t’ sao
cho t≤t’≤t’’ và ϕ và ψ là ñúng lần lượt trên [t,t’] và [t’,t’’].
Chúng ta cần chú ý các ký hiệu viết tắt sau:



5

l ≙ ∫ 1, S ≙ ( ∫ P = l ) ∧ (l > 0),

⋄ ϕ ≙ true

ϕ true, □ϕ ≙ ¬ ⋄ ¬ϕ

Thêm nữa, ta kí hiệu PREF(ϕ) là một công thức (ñơn giản) ñúng với mọi ñoạn trước
của một ñoạn ñúng trên công thức ϕ.
Hệ thống chứng minh cho DC* bao gồm toàn bộ hệ thống chứng minh Hilbert-style
ñối với First Order Logic, các tiên ñề và luật cho Interval Logic, những luật và tiền ñề
Phép Tính Toán Khoảng (tham khảo trong [2]) và những tiên ñề về lặp ([12]). Chúng
ta chỉ trình bày lại một số luật và tiên ñề của hệ thống chứng minh của DC* .

∫ 0=0
( DC 2) ∫ 1 = l
( DC 3) ∫ S ≥ 0
( DC 4) ∫ S + ∫ S = ∫ ( S ∨ S ) + ∫ ( S ∧ S )
( DC 5) (∫ S = x ∫ S = y )⇒∫ S = x + y
( DC 6) ∫ S = ∫ S if S ⇔ S trong propositional calculus.
( DC1)

1

2

1


2

1

1

2

1

2

2

[l = 0 / A]ϕ ϕ⇒[ A S / A]ϕ
ϕ⇒[ A ¬S / A]ϕ
( IR1 )
[true / A]ϕ
[l = 0 / A]ϕ ϕ⇒[ S A / A]ϕ
A / A]ϕ
ϕ ⇒ [ ¬S
( IR2 )
[true / A]ϕ
( IR3 )

∀k < ω  ( S ∨ ¬S ) k / A ϕ
[true / A]ϕ

( DC1* ) l = 0⇒ϕ*
( DC2* ) (ϕ* ϕ)⇒ϕ*

( DC3* ) (ϕ* ∧ ψ true)⇒(ψ ∧ l = 0 true) ∨ ((ϕ* ∧ ¬ψ ϕ ) true)

1.2 Phép Tính Toán Kho ng Có L p V i Th i Gian ðn ði u Y u
Macro-time Chúng ta tham số hóa logic với macro-time frame TM = (T, <). Với giả
sử rằng TM ñược sắp thứ tự tuyến tính (=thứ tự toàn phần). Logic thu ñược trên ñó sẽ
ñược gọi là WDC(TM). Trong trình thông dịch với thời gian rời rạc, TM lấy giá trị


6
trong (ω, <), ñây là tập các số tự nhiên. Trong trình thông dịch thời gian liên tục,
TM lấy giá trị là (R0, <), ñây là tập các số thực không âm.
ðịnh nghĩa (Stepped Time) Cho một time frame TM, stepped time frame trên TM là
một cặp WTM=(WT,<) thỏa mãn những ñiều kiện sau:
• WT ⊆ T × ω . Giả sử: π1 ((t , i )) ≙ t và π2 ((t , i )) ≙ i . ðịnh nghĩa:
π1 (WT ) = {t | (t , i ) ∈ WT } và π2 (WT ) = {i | (t , i ) ∈ WT }

• < là thứ tự từ ñiển trên WT, nghĩa là:
(t1 , i1 ) < (t2 , i2 ) iff t1 < t2 ∨ (t1 = t2 ∧ i1 < i2 )

Từ ñó, (WT, <) là thứ tự toàn phần.
• Phase Monotonicity t1 < t2 ∧ (t1 , i1 ) ∈ WT ∧ (t2 , i2 ) ∈ WT thì i1 ≤ i2 .
• Progress π1 (WT ) = T
• Past closure π2 (WT ) ñóng dưới ñối với “<” trên ω
Theo trên, mỗi ñiểm macro-time ñược chia thành một hoặc nhiều ñiểm micro-time.
Mỗi ñiểm micro-time (t,i) bao gồm macro-time t và một pha-ñếm tương ứng với số
bước vừa xẩy ra trước khi chạm tới thời ñiểm micro-time này.
Interpretation Cho Pvar là tập các biến mệnh ñề, và Gvar là tập các biến toàn cục.
Một máy thông dịch trên TM là một cặp I = (WTM , θ ) trong ñó WTM là stepped time
frame ñối với TM và θ gán mỗi hàm boolean của stepped time với một biến p ∈ Pvar .
Do vậy, θ ( p ) ∈ WT → {0,1} . Thêm vào ñó, θ phải thỏa mãn ñiều kiện ổn ñịnh (stability)

nghĩa là với mọi i ∈ π2 (WT ) , chúng ta có θ ( p )(b) = θ ( p )(e) cho tất cả b, e ∈ Per (WT , i ) .
(Trong ñó Per (WT , i ) ≙ {t | (t , i) ∈ WT } ám chỉ khoảng thời gian của pha thứ i)
Hành vi θ cũng gán một số thực với mỗi biến toàn cục x ∈ Gvar . Vì vậy,
θ ∈ ( Pvar → WT → {0,1}) × (Gvar → ℝ )

Một hành vi θ’ ñược gọi là x-variant của θ nếu chúng gán cũng giá trị cho tất cả các
biến ngoại trừ x.
Với mỗi mệnh ñề P, xác ñịnh nghĩa một hàm bộ phận (ánh xạ bộ phận)
θc ( P ) ∈ T → Bool của macro-time như sau:
θc ( P )(t ) = θ ( P )(t , i ) nếu {i | (t , i) ∈ WT } chỉ gồm 1 giá trị

=–

trong các trường hợp khác


7

Chú ý rằng θc ( P) là không xác ñịnh tại tập rời rạc các ñiểm. Tuy nhiên, với
TM = ( ℝ 0 , <) , hàm θc ( P ) là liên tục từng phần và bị chặn. Từ ñó chúng ta có thể xác
t2

ñịnh tích phân Reimann

∫ θ ( P)(t )dt
c

theo cách thông thường.

t1


Syntax Chúng ta có hai dạng logic ứng với hạng tử (term) của số nguyên và số thực.
Kí hiệu P, Q là các trạng thái, ti1 , ti2 ... là các hạng tử trên tập số nguyên, tr1 , tr2 ... là các
hạng tử trên tập số thực, và D1 , D2 là các công thức. Ta sẽ sử dụng t ñể kí hiệu cho hạng
tử ở cả một trong 2 loại.
Hạng tử trên tập số thực có dạng:
c | xr | l | ∫ P | tr1 op tr2

trong ñó op ∈ {+,-,*} và xr là kí hiệu cho một biến thực.
Hạng tử trên tập số nguyên có dạng:
k | xi | η | ti1 op ti2

trong ñó op ∈ {+,-,*} và xi kí hiệu cho một biến kiểu nguyên.
Công thức có dạng sau:
⌈ P ⌉0 | t1 = t2 | t1 < t2 | ¬D | D1 ∧ D2 | ∃x.D | D1

D2 | D *

trong ñó, các phép so sánh giữa các hạng tử t1 , t2 cần cùng kiểu.
Ngữ nghĩa (Semantics) Tập các khoảng trên WT ñược ñịnh nghĩa như sau:
Intv (WTM ) = {[b, e] ∈ WT ×WT | b ≤ e}

Một mô hình (model) là một cặp ( I , [b, e]) trong ñó I là một trình thông dịch (WTM , θ )
và [b, e] là một khoảng trong Intv(WTM ) . Ta sẽ kí hiệu giá trị của một hạng tử t trong
một mô hình (WTM , θ,[b, e]) bởi V (t )(WTM , θ,[b, e]) , và kí hiệu tính thỏa ñược
(sactisfaction) của công thức D bởi (WTM , θ ,[b, e]) |= D . ðể cho gọn ta viết tắt chúng
ở dạng V (t )(θ,[b, e]) và (θ,[b, e]) |= D .
Những ngữ nghĩa ñược ñịnh nghĩa một cách ñệ qui như sau:
V (l )(θ ,[b, e]) = π1 (e) − π1 (b)
V (η )(θ ,[b, e]) = π2 (e) − π2 (b)

V ( ∫ P )(θ ,[b, e]) =

π1 ( e )



π1 ( b )

V ( x)(θ ,[b, e]) = θ ( x)

θc ( P ) dt


8
Các trường hợp khác có thể tham khảo trong [2], [5], và ñược bỏ qua.
(θ ,[b, e]) |= ⌈ P ⌉0 iff b = e ∧ θ ( P )(b) = 1
(θ ,[b, e]) |= t1 = t2 iff V (t1 )(θ ,[b, e]) = V (t2 )(θ ,[b, e])
(θ ,[b, e]) |= t1 < t2 iff V (t1 )(θ ,[b, e]) < V (t2 )(θ ,[b, e])
(θ ,[b, e]) |= X iff θ ( X )[b, e] = 1
(θ ,[b, e]) |= D1 D2 iff ∃m ∈ WT : b ≤ m ≤ e.
(θ ,[b, m]) |= D1 ∧ (θ ,[m, e]) |= D2
(θ ,[b, e]) |= D* iff b = e | ∃m1 ,....mn ∈ WT : b = m1 < ... < mn = e.
(θ ,[mi , mi+1 ]) |= D ∀i = 1, 2...n −1

ðặc biệt, ta có :
Pti = ⌈1⌉0 , Exti ≙ ¬Pti , Ptl ≙ l = 0, Extm ≙ ¬Ptl
Unit ≙ Exti ∧ ¬( Exti
1

0


⌈ P⌉ ≙⌈ P⌉

Exti )

Unit , ⌈ P ⌉ ≙ ¬ ( Exti ⌈¬P ⌉0

Exti )

Dễ dàng thấy rằng: (θ,[b, e] |= ⌈ P ⌉ iff θ ( P)(m) ∀m : b < m < e .
Giả

sử

(WTM , θ ) |= D iff (WTM , θ ,[b, e]) |=D ∀[b, e] ∈ Intv(WTM ) ,



TM |= D iff (WTM , θ ) |= D với tất cả mô hình (WTM , θ ) trên macro time frame TM.

Rõ ràng là có một tương ứng giữa những mô hình WDC và mô hình DC. ðó là, bằng
cách chiếu một ñiểm thời gian trong WTM vào thành phần ñầu tiên của nó, mỗi ñiểm
thời gian trong WTM tương ứng với một ñiểm thời gian trong thời gian thực. ðối với
trạng thái P trong WDC, P : WTM → {0,1} , tương ứng với trạng thái trong DC
PDC : Time → {0,1} ñược ñịnh nghĩa bởi:
PDC (t ) = P(t , max{k | (t , k ) ∈ WTM }) .

Với mô hình WDC (WTM , θ,[b, e]) , ta kí hiệu mô hình tương ứng với nó trong
DC là (Time, θDC ,[bDC , eDC ]) .
Proof Rules Những luật chứng minh của WDC khá tương tự với những luật chứng

minh của DC (xem [2] ñể có chi tiết). Tất cả các tiên ñề cho Durations (nghĩa là DCA1 tới DC-A6 trong [2]) là ñúng và ñược bao gồm trong WDC. Luật qui nạp
(induction rule) sẽ ñược thảo luận riêng bên dưới.
Một formula D ñược gọi là rigid nếu nó không chứa biến khoảng hoặc hạng tử
l , η hoặc là công thức con ⌈ P ⌉0 , Ptl .


9
A0
A1
A2
R
B

0≤l∧0≤η



(( D1 D2 ) ∧ ¬( D1 D3 )) ⇒ ( D1 ( D2 ∧ ¬D3 ))




D1 ( D2 D3 ) ⇔ ( D1 D2 ) D3

D1 D2 ⇒ D1 if rigid D1


(∃x.D1 ) D2 ⇒ ∃x.( D1 D2 )

Các luật suy diễn của IL (nghĩa là MP,G,N1, N2, M1, M2 trong [2]) ñược bao gồm

nguyên xi.
Cần chú rằng trong thời gian ñơn ñiệu chặt, có một ñiểm duy nhất trong tương lai với
khoảng các l = d từ bất kỳ một ñiểm cho trước . Trong thời gian ñơn ñiệu yếu, có duy
nhất một ñiểm ở tương lai (nếu có) với khoảng cách l = d ∧ η = k từ một ñiểm cho
trước. Chú ý rằng cả l = d hoặc η = k tự nó ñều sẽ không ñủ ñể xác ñịnh ñiểm duy
nhất trong tương lai.
Mệnh ñề sau chỉ ra mối quan hệ giữa khoảng và ñộ dài
Pti ⇔ η = 0 ∧ l = 0

Tiên ñề L1, L3 có thể ñược viết như sau:
L3

L1


D1 ⇒ D1 Pti

D1 ⇒ Pti D1



(l = x ∧ η = k ) D1 ⇒ ¬((l = x ∧ η = k ) ¬D1 )


D1 (l = x ∧ η = k ) ⇒ ¬(¬D1 (l = x ∧ η = k ))

Tiền ñề L2 cần phải chia thành hai luật.
L 21
L 22



(0 ≤ x ∧ 0 ≤ y ) ⇒ ((l = x + y )⇔ (l = x l = y ))

(0 ≤ x ∧ 0 ≤ y ) ⇒ ((η = x + y )⇔ (η = x η = y ))

Chúng ta còn có tiền ñề sau, nó khẳng ñịnh rằng micro-steps là rời rạc.
AXM
L 22



l = 0 ⇒□( Pti ∨ (Unit true) ∧ (true Unit ))

(0 ≤ x ∧ 0 ≤ y )⇒((η = x + y )⇔ (η = x η = y ))

Cuối cùng, những luật qui nạp của DC là có cơ sở (ñúng):
H (⌈⌉)



H ( X ) ⊢ H ( X ∨ X ⌈ P ⌉∨ X ⌈¬P ⌉)
H (true)

Chúng ta cũng có pha (phase) sau dựa trên luật qui nạp.


10
H (η = 0)



H ( X ) ⊢ H ( X ∨ ( X η = 1))
H (true)

Cuối cùng, luật qui nạp sau cho phép lí giải về micro-steps.
H ( Pti )


H ( X ∧ l = 0) ⊢ H ( X ∧ l = 0 ∨ ( X ∧ l = 0 Unit ))
H (l = 0)

Những tiên ñề về lặp (iteration) ( DC1* , DC2* , DC3* ) của DC * sẽ ñược sửa thành như sau.
(WDC1* )
(WDC2* )
(WDC3* )

Pti ⇒ϕ*

(ϕ* ϕ )⇒ϕ*




(ϕ* ∧ ψ true)⇒(ψ ∧ Pti true) ∨ (((ϕ* ∧ ¬ψ ϕ ) ∧ ψ ) true)

Chú ý: những viết tắt sau sẽ ñược sử dụng:

⌈P⌉1 ≙ ⌈P⌉0 Unit

P⌉ ≙ ⌈P⌉0 ⌈P⌉
⌢ ⌢

P ≙ ⌈P⌉0 ⌈P⌉ ⌈P⌉0
P⌉+ ≙

P⌉∨⌈P⌉0

P⌉− ≙

P⌉∨⌈⌉

P
P

+



P ∨⌈P⌉0

+



P ∨⌈⌉

Phép chiếu (projection) Những ngữ nghĩa hình thức của một chương trình là một
công thức WDC*. Tuy nhiên công thức khoảng trong một bộ ba (Hoare) là một công
thức DC*. Vì vậy chúng ta liên hệ hai loại logic này với nhau. Ta ñịnh nghĩa một hàm
*
*
Π : WDC * → DC * , gọi là phép chiếu, cho tương ứng mỗi WDC formula D với một DC

tương ứng với phép chiều của D trên mô hình thời gian thực. Cho ≺∈ {=, <} .
Π(⌈P⌉0 ) ≙ l = 0
Π(ti1 ≺ ti2 ) ≙ true
Π(tr1 ≺ tr2 ) ≙ tr1 ≺ tr2
Π(¬D) ≙

khi D không có Real Terms
{true
¬Π( D ) t / hop khác

Π( D1 ∧ D2 ) ≙ Π( D1 ) ∧ Π( D2 )
Π(∃x.D) ≙ ∃x.Π( D)


Π( D1 D2 ) ≙ Π( D1 ) Π( D2 )
Π( D* ) ≙ (Π( D))*


11
Ta dễ dàng có ñược những bổ ñề sau:
Bổ ñề 1 Với mọi công thức D trong WDC và với mọi mô hình (WTM , θ ,[b, e]) , ta luôn
có: (WTM , θ ,[b, e]) |= D iff (Time, θDC ,[bDC , eDC ]) |= Π( D )
Bổ ñề 2 (ðơn ñiệu – Monotonicity)
Cho ϕ và ψ là hai công thức trong WDC*: nếu ϕ⇒ψ thì Π(ϕ)⇒Π(ψ )


12

Chương 2 - Xây dựng chương trình thời gian thực
2.1 B ba Hoare m r ng

Cho P là một tiến trình, pre và post là vị từ (khẳng ñịnh) trên các biến chương trình.
Một công thức trong Hoare logic có dạng { pre}P{ post} , ñược gọi là bộ ba Hoare, với ý
nghĩa rằng nếu ñiều kiện trước pre ñược giữ trong trọng thái ban ñầu và P kết thúc, thì
ñiều kiện sau post ñược giữ trong trạng thái kết thúc. Bộ ba này ñược gọi là công thức
tính ñúng bộ phận (partial correctness formula) khi mà nó không ñảm bảo việc kết
thúc của chương trình P. Hoare logic với tính ñúng tổng thể (total correctness) ñảm
bảo tính dừng của chương trình. Logic này cung cấp một hệ thống chứng minh ñầy ñủ
cho việc lí giải về hành vi chức năng của những chương trình tuần tự [16, 15]. Rất
nhiều lí thuyết liên quan tới tính dừng của chương trình ñã ñược nghiên cứu. Những
chương trình không dừng không thể lí giải ñược, và thông thường ñược coi là không
xác ñịnh (undefined). Một số mở rộng của logic Hoare tới những ngôn ngữ lập trình
song song chia sẻ biến ñã ñược ñề xuất [18,17]. Tuy nhiên ta sẽ xem xét giới hạn sau
trên việc truy cập vào những biến chia sẻ. Bất kỳ biến chia sẻ nào cũng có thể ñược
ñọc bởi bất kỳ tiến trình. Một số biến chia sẻ có thể ñược ghi bởi bất kỳ tiến trình nào.
Một số khác có thể chỉ ñược ghi bởi một tiến trình và chỉ ñọc bởi một tiến trình khác.
Ta mở rộng logic Hoare ra lập trình song song thời gian thực với biến chia sẻ ñể lí giải
về tính dừng cũng như không dừng của những chương trình thời gian thực. Không
giống với những chương trình máy tính thông thường, những chương trình ñiều khiển
thời gian thực nói chung sẽ thực thi mãi mãi. Vì vậy không dừng là thuộc tính quan
trọng ñể lí giải cho những loại chương trình như vậy. Sự mở rộng bộ ba Hoare của
chúng ta có hai dạng. Dạng thứ nhất là { pre}[ P, ϕ]{ post} tức là nếu tiền ñiều kiện pre
ñúng trong trạng thái ban ñầu và P kết thúc, thì hậu ñiều kiện post ñúng trong trạng
thái cuối và trong khoảng thời gian thực thi chương trình công thức Duration ϕ luôn
ñược thỏa mãn. Dạng thứ hai là { pre}[ P, ϕ ]{} , tức là nếu tiền ñiều kiện pre ñúng trong
trạng thái ban ñầu và P không dừng, thì bất kỳ khoảng thời gian trước của một khoảng
thời gian không giới hạn của chương trình ñều thỏa mãn công thức duration ϕ. Cặp bộ
ba này ñược sử dụng ñể lí giải về các thuộc tính của những chương trình thời gian
thực. Vì vậy, {true}[ P, true]{ false} diễn tả rằng P không kết thúc, và {true}[ P, false]{}
nói lên rằng P không có hành vi không kết thúc. Chú ý rằng có thể nhận dạng theo cú
pháp rằng một bộ ba ñang diễn tả những thuộc tính của những hành vi giới hạn hay

ñang diễn tả những thuộc tính của hành vi vô hạn cho một chương trình.


13

2.2 Cú pháp và ng nghĩa phi hình th c
Trong mục này ta sẽ xem xét một ngôn ngữ lập trình thời gian thực ñơn giản tựa
OCCAM [8] với các tiến trình song song và kết nối thông qua việc truyền thông ñiệp
dọc theo các kênh không vô hướng, mỗi kênh kết nối hai tiến trình. Thời gian thực
hình thành từ những câu lệnh delay (trì hoãn việc thực thi trong một khoảng thời gian
nhất ñịnh). Một câu lệnh delay như vậy cũng cho phép thêm vào ñiều kiện canh
(guard). ðiều này cho phép chúng ta lập trình một khoảng thời gian time-out, nhờ ñó
giới hạn khoảng thời gian chờ cho việc kết nối và thực hiện câu lệnh khác nếu không
có kết nối nào là có thể xẩy ra trong khoảng thời gian cho trước ñó. Cú pháp và ngữ
nghĩa của ngôn ngữ này sẽ ñược trình bày tại ñây.
Cho CHAN là một tập không rỗng tên những kênh liên lạc, VAR là tập không rỗng
những biến chương trình, và VAL là miền ñếm ñược các giá trị. Cú pháp của ngôn ngữ
lập trình ñược ñưa ra trong ngôn ngữ mô tả dạng Backus-Naur Form (BNF) bên dưới,
nó bao gồm những khái niệm cơ sở của ngôn ngữ lập trình tuần tự và thêm vào những
câu lệnh ñiều khiển thời gian và xử lý song song. Cú pháp của ngôn ngữ lập trình thời
gian thực ñược ñưa ra bên dưới, với S ñại diện cho những chương trình, P và Q ñại
diện cho các tiến trình, e ñại diện cho các biểu thức số học, c ñại diện cho các kênh
(CHAN), g ñại diện cho biến canh (biểu thức boolean), d ñại diện cho các số tự nhiên
(d>0), và x ñại diện cho các biến chương trình (VAR).
P ::= x := e | skip | delay d | c ? x | c !e | P; Q |

b ; ci ? xi → Si

n
i =1 i


delay e → S 0 | while g do P od

S ::= P1 || P2 || ... || Pn , ( n ≥ 1)

Ta giả sử giả thuyết về ñồng bộ lí tưởng là ñúng, nghĩa là, tính toán và kết nối không
mất thời gian, chỉ sự việc chờ ñồng bộ bên ngoài hoặc những câu lệnh trễ là tốn thời
gian. Ý nghĩ không hình thức của ngôn ngữ lập trình ñược mô tả như sau:
• Skip: một tiến trình trong ñó không hành ñộng nào ñược thực thi và kết thúc
ngay lập tức, vì vậy giá trị của tất cả các biến ñược giữ nguyên.


x := e : câu lệnh gán thay ñổi giá trị của biến x tới giá tương ứng của biểu

thức e.
• delay d: ñưa tiến trình vào trạng thái ngủ trong d ñơn vị thời gian. Trong
khoảng thời gian này, tiến trình không thể làm gì.


c ? x, c !e : tiến trình vào dữ liệu c ? x gán dữ liệu vào từ kênh c cho biến x,

tương tự như vậy, tiến trình xuất dữ liệu c !e tính toán giá trị biểu thức e và
gửi thông qua kênh c. Nhưng trước khi kết nối có thể xẩy ra thì cả kênh
nhập và xuất phải sẵn sàng ñể kết nối, do ñó trong trường hợp cần thiết các


14
kênh nhập hoặc xuất phải chờ
ñích ñã sẵn sàng.




tới khi tài nguyên nguồn hoặc

P; Q : kết hợp tuần tự P; Q thực hiện P trước tới khi kết thúc thì thực hiện Q.
b ; ci ? xi → Si

n
i =1 i

delay e → S 0 : câu lệnh ñiều kiện. Nếu không ñiều kiện tại

câu lệnh canh của biến vào nào ñược thỏa mãn trong khoảng thời gian e thì
S0 ñược thực thi, ngược lại, nó sẽ chờ cho tới khi một câu lệnh nhập (tương
ứng biến canh mở) ñược thực thi và thực hiện tiếp chương trình Si tương
ứng. Ở ñây, một ñiều kiện canh là mở nếu việc tính toán giá chị chân lí cho
kết quả ñúng.
• While g do P od: câu lệnh lặp lặp lại việc thực thi P khi mà g vẫn còn ñúng
và kết thúc khi g là sai.


P1 || P2 || ... || Pn : một tiến trình thực thi song song nhiều tiến trình, trong ñó tất

cả những tiến trình con chạy song song và việc thực thi của chúng cũng
ñược khởi tạo ñồng thời. Tiến trình song song kết thúc khi tiến trình con với
thời gian thực thi lâu nhất kết thúc.
Ta cung cấp một hệ thống chứng minh có tính kết hợp cho việc lí giải về thiết kế và
tính ñúng ñắn của những chương trình thời gian thực ñối với cả chức năng và ñặc tả
thời gian thực. Mục ñích của chúng ta là cung cấp cho những người thiết kế giao diện
kết hợp dựa trên cú pháp cho việc thiết kế và kiểm chứng những chương trình thời

gian thực, ẩn ñi bớt chi tiết về ngữ nghĩa.

2.3 Ng nghĩa hình th c c a ngôn ng l p trình
Ở ñây ta ñưa ra những ngữ nghĩa hình thức ñể lập trình những bước xây dựng công
thức trong WDC*. ðể ñơn giản, ta sử dụng x\ch cho dãy thu ñược từ việc gỡ bỏ tất cả
các kết nối trên kênh ch từ dãy x, x↓CH ≙ x\CHAN\CH phép chiếu vết (trace) trên kênh
CH, và x≤y dãy x là tiền tố của dãy y.
Cho một hệ thống thời gian thực, giờ ta ñã sẵn sàng ñể diễn tả việc giám sát theo thời
gian bằng bộ:
(s,v,v’,tr)

(1)

trong ñó
• s : Time → Rn là một hàm số thực của thời gian, ñược sử dụng ñể mô tả trạng
.

thái vật lý của hệ thống. Ta sử dụng s ñể kí hiệu cho ñạo hàm của s.


15
• tr : Time → chan*, kí hiệu cho việc

ghi vết (trace), xác ñịnh những sự

kiện kết nối một hệ thống gặp phải trên khoảng thời gian dọc theo kênh trong
chan(P). Ở ñây, chan(P) ñược ñịnh nghĩa là tên của các kênh trong tiến trình P.
Nó phải thỏa mãn những luật sau:
1.


□(tr ≤ tr )

2.

tr \ chan ( P ) = 〈〉;

trong ñó chan* là tập hữu hạn dãy các kết nối trên các kênh của tập CHAN.
• v biểu thị những giá trị ban ñầu của những biến chương trình v, và v’ là những
giá trị cuối cùng tại thời ñiểm kết thúc.

Trong những ngữ nghĩa hình thức ta ñịnh nghĩa thêm await(c?) và await(c!) ñể biểu thị
cho việc chờ một kênh ñược ñồng bộ trước khi kết nối như sau:
await (c ?) ≙ intv ∧ ¬c ?

(2)

await (c !) ≙ intv ∧ ¬c !

(3)

trong ñó intv là kí tự mệnh ñề khoảng thỏa mãn intv[a,b] = true khi và chỉ khi a,b ∈
Integer và a < b. Thêm nữa, mỗi kênh ñược ánh xạ tới một tập các giá trị theo thời
gian bởi ánh xạ C: Channel → Time → Value
C(c)(t)=v
trong ñó v ∈ Type(c) là giá trị vừa ñược xuất tới c.
Ta ghi lại hành vi của tiến trình P với công thức WDC*, M(P) là công thức tương ứng
với hành vi dừng và M’(P) là công thức tương ứng với hành vi không dừng. Từ ñó,
nếu (θ, [0,e]) ⊨ M(P) thì (θ, [0,e]) biểu thị một thực thi ñầy ñủ, trong ñó P kết thúc tại
thời ñiểm cuối của khoảng ñã cho. Nói cách khác, với hành vi không kết thúc của một
tiến trình, nếu ∀e > 0 (θ, [0,e]) ⊨ M’(P) thì θ biểu thị một thực thi không kết thúc.

Những ngữ nghĩa của ngôn ngữ ñược ñưa ra bởi những ñịnh nghĩa tiếp theo. Ta ñịnh
nghĩa thêm Idle, ñể biểu thị một khoảng không phải ñiểm nơi mà không có sự kiện nào
ñang xẩy ra hoặc ñược mong ñợi xẩy ra theo tiến trình thời gian, nghĩa là tất cả các
kênh và trạng thái/giá trị của các biến ñược giữ nguyên
Idle p ≙ v ' = v ∧ tr = tr ∧ η = 0

(4)

ðể ñơn giản ta viết Idle ñối với Idlep, nhưng nó sẽ ñược ghi thêm p bên dưới khi cần
làm rõ. Ngữ nghĩa của chương trình thời gian thực trong WDC* ñược liệt kê bên dưới:


16

( D1)

M( x := e) ≙ Unit ⌈ x ' = e⌉0 ∧ v ' = x v ∧ l = 0 ∧ tr = tr
M '( x := e) ≙ false

( D 2)

M(skip ) ≙ Pti ∧ tr = tr ∧ v ' = v
M '(skip) ≙ false

( D3)

M(delay d ) ≙ Idle

+


Unit ⌈ Idle⌉0 ∧ l = d

M '(delay d ) ≙ false
( D 4)

M(c !e) ≙ Unit ⌈c !∧ C (c) = e⌉0

await (c ?)* Unit ⌈c ?⌉∧ tr = tr· < c, e > ∧v ' = v

M '(c !e) ≙ Unit ⌈ c !∧ C (c ) = e⌉0 ⌈¬c ?⌉∧ tr = tr ∧ v ' = v

( D5)

M(c ? x) ≙ Unit ⌈ c ?⌉0

∃v⌈c !∧ C (c) = v ⌉0

await (c !)*

Unit ⌈ x ' = v ⌉0 ∧ v ' = x v ∧ tr = tr· < c, e >
M '(c ? x) ≙ Unit ⌈c ?⌉0
( D6)

¬c ! ∧v ' = v ∧ tr = tr

M( P; Q ) ≙ M( P ) M(Q )
M '( P; Q) ≙ M '( P ) ∨ M( P) M '(Q )

( D 7)


M(

b ; ci ? xi → Si

n
i =1 i

≙ (⌈∨in=1 bi ⌉0

M '(

b ; ci ? xi → Si

n
i =1 i

≙ (⌈∨in=1 bi ⌉0

( D8)

( D9)

delay d → S0 )

M(ci ? xi ) ∧ l ≤ d ) M( Si ) ∨ l = d

M( S0 )

delay d → S0 )


M(ci ? xi ) ∧ l ≤ d ) M '( Si ) ∨ l = d

M(while g do P od) ≙ (⌈ g ⌉0

M( P))* ⌈¬g ⌉0

M '(while g do P od) ≙ (⌈ g ⌉0

M( P ))* ⌈ g ⌉0

M( P1 || P2 || ... || Pn ) ≙ ∧1≤i≤n ((M( Pi )

M '( S0 )

(M '( P) ∨ PREF (M( P )))

IdlePi ) ∧ l = m) ∧ COND 0

M '( P1 || P2 || ... || Pn ) ≙ ∨∅≠ J ⊆{1..n} (∧i∈J M '( Pi ) ∧ (∧i∈{1...n}\ J M( Pi )

IdlePi )) ∧ COND0

ðịnh nghĩa thời gian kết thúc của tiến trình Pi(1 ≤ i ≤ n) là ∏(ϕi) (1 ≤ i ≤ n), thì
m=max(m1, …, mn) nghĩa là giá trị lớn nhất của thời gian kết thúc các tiến trình Pi
(1≤i≤ n);
COND 0 ≙ trM( P1 ||P2 ||...||Pn ) ↓chan ( Pi ) [0, b]
trM( P ) 0 < b < mi
i
= 
∅

mi ≤ b < m



17
nghĩa là nếu chúng ta chiếu trM( P ||P ||...|| P )
1

2

n

trong khoảng [0,b], lưu vết của những tiến

trình tổ hợp, lên các kênh của chan(Pi) (1 ≤ i ≤ n) thì ta thu ñược vết của Pi khi b nhỏ
hơn thời gian kết thúc của Pi, ngược lại thu ñược tập rỗng.

2.4 Các lu t ki m ch ng
Những luật cho các câu lệnh nguyên tử và các câu lệnh kết hợp ñược liệt kê dưới ñây.
Luật 1 nói rằng việc thực thi của câu lệnh skip không thay ñổi trạng thái cũng như
không tốn thời gian.
Luật 1 (Skip)
{ post}[skip, ]{ post}

Luật 2 nói rằng việc thực thi của câu lệnh gán có thể thay ñổi trạng thái nhưng không
tốn thời gian. Một công thức duration không thể thể hiện sự thay ñổi ngay lập tức của
biến chương trình.
Luật 2 (Assignment)
{ post[ x / e]}[ x := e, ]{ post}


giả sử COND1 ñúng.
Ví dụ 1 {x = 2 ∧ y = 5}[ x := x + 1, ]{x = 3 ∧ y = 5} . Bộ ba này nói lên rằng việc thực thi
câu lệnh gán x := x + 1 thay ñổi giá trị của biến x từ 2 thành 3, và giữ giá trị y không
thay ñổi. Không có khoảng thời gian nào bị tiêu tốn.

Luật 3 nói rằng việc thực thi của câu lệnh delay là tốn thời gian, và trong khoảng thời
gian này tiến trình không thể làm gì khác.
Luật 3 (Delay) trong tiến trình Pi
{ post}[delay d , l = d ∧ post ]{ post}

giả sử COND1 ñúng.

Luật 4 (Output) trong tiến trình Pi
(a)

{ post}[c !e, await (c ?) ∧ post * ]{ post}

(b)

{ pre}[c ! x, ¬c ?∧ pre * ]{}

giả sử COND1, COND2 ñúng

Luật 5 (Input) trong tiến trình Pi


18

(a)


{ post[ x / e]}[c ? x, await (c !) ∧ post[ x / e] * ]{ post}

(b)

{ pre}[c ? x, ¬c !∧ pre * ]{}

giả sử COND1, COND2 ñúng

Luật 6 cho phép làm mạnh hơn tiền ñiều kiện, và làm yếu ñi hậu ñiều kiện hoặc yếu ñi
biểu thức duration trong một bộ ba.
Luật 6 (Consequence)
(a)
(b)

pre '⇒ pre
post ⇒ post ' ϕ⇒φ
{ pre '}[ P, φ]{ post '}
{ pre}[ P, ϕ ]{} pre '⇒ pre
ϕ⇒φ
{ pre '}[ P, φ ]{}

{ pre}[ P, ϕ ]{ post}

Luật 7 diễn tả kết hợp tuần tự của những chương trình. Nó nhấn mạnh tính tương tự
giữa kết hợp tuần tự của chương trình và toán tử chop của công thức duration. Tiếp
theo ñó hệ thống chứng minh cũng có thể ñược sử dụng ñể lí giải về hành vi của những
chương trình không xác ñịnh thời gian.Vì vậy mở rộng bộ ba Hoare của chúng ta là
ñược bảo tồn (conservative). Luật 7-a nói rằng một dãy P; Q kết thúc nếu cả P và Q
kết thúc. Luật 7-b, 7-c, và 7-d nói rằng một dãy P; Q không kết thúc thành công khi P
hoặc Q không kết thúc thành công.

Luật 7 (Sequences) trong tiến trình Pi
(a)
(b)
(c )
(d )

{ pre}[ P, ϕ ]{mid }
{mid }[Q, φ ]{ post}
{ pre}[ P; Q, φ ϕ ]{ post}
{ pre}[ P, ϕ ]{mid }
{mid }[Q, φ ]{}
{ pre}[ P; Q, φ ϕ ]{}
{ pre}[ P, ϕ]{}
{ pre}[ P; Q, φ ]{ post}
{ pre}[ P, ϕ ]{mid }
{ pre}[Q, α ]{}
{ pre}[ P; Q, α ∨ φ ϕ]{}

{mid }[Q, φ ]{}

Câu lệnh ñiều kiện ñược xử lí theo cách thông thường. Nó cài ñặt phép tuyển của các
công thức duration.
Luật 8 (Conditional)


19

{ pre ∧ bi }[c ? x, await (c !) ∧l ≤ e]{ pi [v / x]}, i = 1...n
{ pi [v / x]}[ Si , α ]{qi }, i = 1...n
( a)


{ pre ∧ ∨in=1 bi }[delay e; S0 , l = d ϕ]{q}
{ pre ∧ ∨in=1 bi }[CondE , l ≤ e α ∨ l = e ϕ]{∨in=1 qi ∨ q}
{ pre ∧ bi }[c ? x, await (c !) ∧l ≤ e]{ pi [v / x]}, i = 1...n
{ pi }[ Si , α ]{}, i = 1...n

(b)

{ pre ∧ ∨in=1 bi }[delay e; S0 , l = d ϕ]{}
{ pre ∧ ∨in=1 bi }[CondE , l ≤ e α ∨ l = e ϕ]{}

trong ñó CondE = in=1 bi ; ci ? xi → Si delay d → S0

Trong luật 9, inv biệu thị cho sự bất biến của vòng lặp, nghĩa là một vị từ ñúng vào
thời ñiểm ñầu và cuối của mỗi vòng lặp. Luật 9-a thể hiện những vòng lặp có kết thúc,
các trường hợp khác là không kết thúc. Với những vòng lặp không dừng chúng yêu
cầu rằng việc thực thi phần thân của vòng lặp chiến khoảng thời gian không ñổi c ñể
tránh hiện tượng divergence và Zeno.
Luật 9 (Iteration) trong tiến trình Pi
( a)

{inv ∧ g}[ P, ϕ]{inv}
{inv}[while g do P od,ϕ* ]{inv ∧ ¬g}

(c )

{inv ∧ g}[ P, α ]{}
{inv}[while g do P od,α ]{}

( a)


{inv ∧ g}[ P, ϕ ]{inv} {inv ∧ g}[ P, α ]{}
ϕ⇒l > c > 0

*
{inv}[while g do P od,ϕ α ]{}

Ví dụ Xem xét câu lệnh while sau ñây:


20
P ≙ while x ≠ 0 do
z := z + y; delay 1; x := x -1
od

trong ñó x là biến kiểu nguyên.
• {x ≥ 0}[ P, ( x > 0 ∧l = 1)* ]{x = 0} là ñúng.
• {x < 0}[ P, x < 0 * ]{} là ñúng.
Một ñại lượng bất biến khoảng (temporal invariant) cho một vòng lặp có dạng s ∨
và biểu thị rằng trạng thái s có mặt trong hầu hết khoảng thời gian thực thi của vòng
lặp. Một câu lệnh lặp thỏa mãn một ñại lượng bất biến nếu phần thân của nó luôn tốn ít
một khoảng thời gian cố ñịnh khác không c (ñể ñảm bảo divergence và Zeno) và thỏa
mãn ñại lượng bất biến ñó. ðiều này ñược thiết lập từ luật 9 với ϕ ≙ s ∧l > c > 0 và
α ≙ s *.

Cuối cùng luật cho kết hợp song song của các tiến trình ñược ñịnh nghĩa như sau.
Những tính toán là ñan vào nhau nhưng những câu lệnh delay thì chồng lên nhau. Luật
10-a nói rằng một kết hợp song song của các tiến trình kết thúc khi tất cả các tiến trình
kết thúc. Luật 10-b nói rằng một kết hợp song song của các tiến trình không kết thúc
ñược khi tất cả các tiến trình không kết thúc.

Luật 10 (Parallel)
{ prei }[ Pi , ϕi ]{ posti },1 ≤ i ≤ n
(a)

Idle ) ∧ l = m) → ϕ
∧1≤i≤n ((ϕi
{∧1≤i≤n prei }[ P1 || P2 || ... || Pn , ϕ]{∧1≤i≤n posti }

với giả sử COND0 thỏa mãn.
{ prei }[ Pi , ϕi ]{},

1≤ i ≤ n

{ prei }[ Pi , ϕi ]{ posti }, k + 1 ≤ i ≤ n
(b)

∧1≤i≤n ((ϕi
Idle ) ∧ l = m) → ϕ
{∧1≤i≤n prei }[ P1 || P2 || ... || Pn , ϕ ]{}

với giả sử COND1, COND2 thỏa mãn.
Ví dụ Ta xét chương trình sau
P ≙ x := z + 1; x := x − 3; delay 2 || y := y * z; delay 1; y := y + 2; delay 1

Thì bộ ba sau là ñúng:

{z ≥ 0 ∧ y = 0}[ P, x ≥ −2 ∧(l = 1 ∧ y = 0 ) (l = 1 ∧ y = 2 )]{x ≥ −2 ∧ y = 2}

Vì vậy sẽ có những khả năng giao nhau của P là:



21

(1)

P1 ≙ y := y * z; x := z + 1; x := x − 3; delay 1; y := y + 2; delay 1

(2)

P2 ≙ x := z + 1; y := y * z; x := x − 3; delay 1; y := y + 2; delay 1

(3)

P3 ≙ x := z + 1; x := x − 3; y := y * z; delay 1; y := y + 2; delay 1

Chúng ta có thể chứng minh từ những luật trên rằng những công thức sau là ñúng:

{z ≥ 0 ∧ y = 0}[ Pi , x ≥ −2 ∧(l = 1 ∧ y = 0 ) (l = 1 ∧ y = 2 )]{x ≥ −2 ∧ y = 2}i = 1, 2,3

trong ñó
COND1 ≙ ∧i , j ,i≠ j var ( prei , Pi , posti ) ∩ var ( S j ) = ∅

nghĩa là hậu ñiều kiện của một câu lệnh không nên tham chiếu tới các biến của một
tiến trình khác, trong ñó var(α) kí hiệu cho tập các biến có mặt trong
α ∈ { prei , Pi , posti , S j } .

COND 2 ≙ ∧i chan( posti ) ∩ chan( Pi ) ⊆ chan( Si )

ám chỉ rằng nếu hậu ñiều kiện của một câu lệnh tham chiếu tới các kênh của tiến trình
khác thì ñiều kiện này là ñể liên kết các kênh kết nối tới 2 tiến trình.


Việc chứng minh các luật này ñược trình bày, về cơ bản là dựa trên ñịnh nghĩa:
ðịnh nghĩa: cho P là chương trình, pre,post là các vị từ, ϕ là công thức duration
(1) Bộ ba { pre}[ P, ϕ]{ post} là ñúng khi và chỉ khi
- ⌈ pre ⌉0

M( P) ⇒WDC* M( P) ⌈ post ⌉0

- ∏ (⌈ pre⌉0 M( P )) ⇒ DC ϕ
*

(2) Bộ ba { pre}[ P, ϕ ]{} là ñúng khi và chỉ khi
∏ (⌈ pre⌉0

M '( P)) ⇒ DC* ϕ


22

Chương 3 - Kỹ thuật thiết kế hệ thống ñiều khiển thời gian
thực
Trong phần trước, chúng ta vừa trình bày một kỹ thuật ñể thu ñược một chương trình
thời gian thực từ một yêu cầu thời gian thực viết trong DC*. Giờ, chúng ta sẽ kết hợp
kỹ thuật này với những kỹ thuật ñược trình bày trong [13] ñể phát triển một phương
pháp ñầy ñủ các bước xây dựng hệ thống thời gian thực.
Một hệ thống ñiều khiển thời gian thực là một hệ thống lai phân tán bao gồm thành
phần liên tục và thành phần rời rạc trong sự tương tác. Một mô hình của những hệ
thống ñiều khiển thời gian thực ñược mô tả trên hình 1.
Sensors


Plant

Controller
Actuators

Plant kí hiệu cho những thành phần liên tục của hệ thống, trong sự tương tác chặt chẽ
với môi trường vật lý. Controller là một thành rời rạc kí hiệu cho một chương trình
ñược thực thi bởi máy tính. Sensors lấy mẫu những trạng thái của plant (máy) ñược
theo dõi bởi controller. Actuators nhận những lệnh từ controller và ñiều khiển máy
(plant) dựa theo ñó. Sensors và actuators cấu thành giao tiếp liên tục sang rời rạc và rời
rạc sang liên tục.
Trong phép tính toán khoảng một hệ thống ñược mô hình bởi một tập các biến trạng
thái (nhận giá trị chân lí theo thời gian). Mối quan hệ và giao tiếp giữa những thành
phần (bao gồm việc rời rạc hóa) cũng có thể ñược mô hình như là một sự xấp xỉ của
những hàm như vậy. Mỗi thành phần của hệ thống sử dụng các biến ñịa phương của
nó, và một số thành phần khác có thể học về hành vi của nó với ñộ trễ khác không nào
ñó. Những lệnh ñưa ra cho một thành phần bởi thành phần khác cũng có thể ñược thực
thi với một ñộ trễ nào ñó. Theo khung nhìn của một thành phần chúng ta phân biệt hai
loại biến trạng thái: các biến trạng thái liên tục có thể thay ñổi tại bất kì thời ñiểm nào,
và các biến trạng thái rời rạc chỉ có thể thay ñổi tại các ñiểm thời gian rời rạc theo nhịp
ñếm của ñồng hồ cục bộ. Từ ñó ta xem xét mối quan hệ giữa các biến trạng thái liên
tục và rời rạc. Trong những hệ thống phân tán, tính rời rạc là một thuộc tính cục bộ và
chúng ta suy nghĩ về các biến trạng thái rời rạc chỉ như là một trường hợp ñặc biệt của
các biến trạng thái liên tục. Kỹ thuật thiết kế của chúng ta ñược thành lập như sau.
ðầu tiên một mô hình các biến trạng thái của hệ thống ñược ñịnh nghĩa. Mô hình này
bao gồm các biến trạng thái liên tục và các biến trạng thái rời rạc mô tả các trạng thái
của các thành phần khác nhau của hệ thống lai. Sau ñó yêu cầu của những hệ thống
thời gian thực ñược xác ñịnh như là một công thức duration (DC) Req trên các biến



×