Kiểm chứng mô hình LTL trong Maude

Một phần của tài liệu Các nguyên lý và kỹ thuật kiểm chứng chất lượng phần mềm (Trang 58 - 62)

5. Phương pháp nghiên cứu

2.6.4.2 Kiểm chứng mô hình LTL trong Maude

Công thức LTL và module LTL

Cho một tập AP của các mệnh đề nguyên tử, chúng ta định nghĩa các công thức của logic thời gian tuyến tính thuộc mệnh đề(LTL(AP)) như sau:

-True: T LTL AP∈ ( ) -Các mệnh đề nguyên tử: nếu p AP∈ , thì p LTL AP∈ ( ) -Toán tử Next: nếu ϕ∈LTL AP( ), thì ϕ∈LTL AP( ) -Toán tử Until: nếu ϕ ψ, ∈LTL AP( )thì ϕ ψU ∈LTL AP( ) -Liên kết Boolean: nếu ϕ ψ, ∈LTL AP( ), thì biểu thức ¬ϕ, và ϕ ψ∨ nằm trong LTL(AP)

Những liên kết LTL khác có thể được định nghĩa dựa vào tập các liên kết ở trên như sau:

¾Các liên kết Boolean khác: False: ⊥= ¬T

Conjuntion: ϕ ψ∧ = ¬ ¬ ∨ ¬(( ϕ) ( ψ))

¾Các toán tử thời gian khác: Eventually: ◊ =ϕ ¦ U ϕ Henceforth: ϕ = ¬◊¬ϕ Release: ϕ R ψ = ¬ ¬(( ϕ) U (¬ψ)) Unless: ϕW ψ=(ϕ U ψ ) (∨ ϕ) …

Các cấu trúc Kripke kết hợp cho lý thuyết viết lại

Các cấu trúc Kripke là các mô hình tự nhiên cho mệnh đề logic thời gian. Về cơ bản, một cấu trúc Kripke là một Hệ thống giao dịch không gắn nhãn mà chúng ta đã thêm vào một tập các thuộc tính trạng thái một ngôi trên tập các trạng thái của nó.

Một quan hệ hai ngôi R⊆ ×A A trên một tập Ađược gọi là total khi và chỉ khi với mỗi aA, có ít nhất một ’

aA sao cho ( , ')a aR. Nếu R không là total, nó có thể tạo total bằng cách định nghĩa R● = RU{(a, a) A2 | a’ A (a, a’) R}.

Một cấu trúc Kripke là một bộ ba Å =(A,→Å,L) với A là một tập (được gọi là tập các trạng thái), →Å là một quan hệ hai ngôi total trên A (được gọi là quan hệ chuyển dịch), và L A: →P AP( ) là một hàm (được gọi là hàm gắn nhãn), liên kết tới mỗi aA tập L(a) của các mệnh đề nguyên tử đó trong AP mà nắm giữ trạng thái

a.

Ngữ nghĩa của LTL(AP) được xác định bằng cách một quan hệ thích hợp A,

ϕ b.

Giữa một cấu trúc Kripke ÅAP như các mệnh đề nguyên tử của nó, một trạng thái aA, và một công thức LTL ϕ∈LTL AP( ). Đặc biệt, A, ϕ nắm giữ khi và chỉ khi với mỗi đường π∈Path(A)a, quan hệ thỏa mãn đường A, ϕb nắm giữ, trong đó chúng ta định nghĩa tập Path(Å)a của các đường ước tính bắt đầu ở trạng thái a là tập các hàm π: N →A mà π(0)=a và với mỗi nN, chúng ta có

( )n Å (n 1)

Chúng ta có thể xác định quan hệ thỏa mãn đường (cho bất kỳ đường nào bắt đầu ở trạng thái bất kỳ) như sau: -Ta luôn có A, π¨ LTLb T - Với p AP∈ , A, π¨ LTLpb ⇔ ∈p L( (0))π . - Với ϕ∈LTL AP( ), A, π¨ LTLb ϕ ⇔ A, s; π¨ LTLb ϕ, Với s N: →N là một chức năng kế nhiệm, và nơi ( ; )( )sπ n =π( ( ))s n =π(n+1) - Với ϕ ψ∪ ∈LTL(A) ⇔ ∃ ∈( n N) ((A, sn¨ LTLbψ ) ((∀ ∈m N) m n< ⇒m < n =>A, sm¨ LTLbϕ)). - Với ¬ ∈ϕ LTL AP( ), A, π¨ LTLb¬ϕ, A, π¨ LTLb ¬ ⇔ϕ A,π¨ LTLb ϕ, - Với ϕ ψ∨ ∈LTL AP( ), A, π LTLϕ ψ∨ ⇔ A, π¨ LTLb ϕ hoặc A, π¨ LTLbψ

Bằng cách nào chúng ta có thể kết hợp một cấu trúc Kripke với lý thuyết viết lại R =(Σ, E, , R)được xác định bởi một module Hệ thống Maude M? Chúng ta chỉ cần làm rõ ràng hai điều sau:

• Tính chất mong đợi k của các trạng thái trong Σ, và

• Các thuộc tính trạng thái thích hợp, tức là tập AP thích hợp của các mệnh đề nguyên tử.

Do đó, sau khi chọn một loại nhất định, ví dụ [Foo], trong M như loại của chúng ta cho các trạng thái, chúng ta có thể đặc tả các thuộc tính trạng thái thích hợp trong module M-PREDS protecting M theo mẫu chung sau đây:

mod M-PREDS is protecting M .

including SATISFACTION . subsort Foo < State . ...

Trong đó dấu “…” biểu thị các phần trong cú pháp và ngữ nghĩa của các thuộc tính trạng thái thích hợp đã được đặc tả, nhưđược giải thích sau đây.

Module STATISFACTION (chứa trong file model-checker.maude) là rất đơn giản, và có những đặc tả sau đây:

fmod SATISFACTION is protecting BOOL . sorts State Prop .

op _|=_ : State Prop -> Bool [frozen] . endfm

Trong đó các không gian State và Prop chưa được đặc tả. Tuy nhiên, bằng cách importing STATISFACTION vào M-PREDS và đưa ra khai báo không gian con:

subsort Foo < State .

Tất cả các điều khoản trong không gian Foo trong M cũng được áp dụng cho không gian State.

Toán tử

op _|=_ : State Prop -> Bool [frozen] .

chủ yếu để định nghĩa ngữ nghĩa của các thuộc tính trạng thái quan hệ trong

M-PREDS. Mỗi thuộc tính trạng thái như vậy được khai báo như một toán tử của không gian Prop.

Ví dụ: loại trừ lẫn nhau đơn giản.

Giả sử rằng module Hệ thống M nguyên thủy của chúng ta là module MUTEX

như sau, trong đó hai Tiến trình có tên là a b có thể chờ hoặc trong đoạn tới hạn của chúng, và thay phiên nhau truy cập đoạn tới hạn của chúng bằng cách truyền cho chúng một thẻ khác nhau ($ hoặc là *).

mod MUTEX is

sorts Name Mode Proc Token Conf . subsorts Token Proc < Conf . op none : -> Conf [ctor] .

ops a b : -> Name [ctor] .

ops wait critical : -> Mode [ctor] . op [_,_] : Name Mode -> Proc [ctor] . ops * $ : -> Token [ctor] .

rl [a-enter] : $ [a, wait] => [a, critical] . rl [b-enter] : * [b, wait] => [b, critical] . rl [a-exit] : [a, critical] => [a, wait] * . rl [b-exit] : [b, critical] => [b, wait] $ . endm

Loại rõ ràng của chúng ta cho các trạng thái là loại [Conf] của các cấu hình. Để phát biểu các thuộc tính an toàn và sống còn được mong muốn, chúng ta cần các thuộc tính trạng thái chỉ cho chúng ta thấy một Tiến trình đang chờ hoặc trong đoạn tới hạn của nó. Chúng ta có thể tạo các tham số thuộc tính đó trên tên của các Tiến trình và định nghĩa ngữ nghĩa như sau:

mod MUTEX-PREDS is protecting MUTEX .

including SATISFACTION . subsort Conf < State . op crit : Name -> Prop . op wait : Name -> Prop . var N : Name .

var C : Conf . var P : Prop .

eq [N, critical] C |= crit(N) = true . eq [N, wait] C |= wait(N) = true . eq C |= P = false [owise] . endm

Một phần của tài liệu Các nguyên lý và kỹ thuật kiểm chứng chất lượng phần mềm (Trang 58 - 62)

Tải bản đầy đủ (PDF)

(86 trang)