LOGO
Đặc tả hình thức
Giới thiệu về Alloy
Nguyễn Thị Minh Tuyền
Nguyễn Thị Minh Tuyền
1
Assertion
v Assertion là ràng buộc bổ sung và được
kiểm tra bởi bộ phân tích xem chúng có
đúng hay khơng.
v Nếu một assertion khơng đúng, bộ phân tích
sẽ tạo ra một phản ví dụ.
v Cú pháp:
assert tên{
--ràng buộc
}
Nguyễn Thị Minh Tuyền
2
Đặc tả hình thức
Ví dụ
v Khơng ai có bố mẹ mà đồng thời cũng là anh chị
em.
assert parentsSiblings{
all p: Person | no p.parents & p.siblings
}
v Anh chị em của một người là anh chị em của
những người đó.
assert siblingsSiblings{
all p: Person | p.siblings = p.siblings.siblings
}
v Khơng ai có cùng tổ tiên với chồng/vợ mình ( ví
dụ vợ/chồng khơng có quan hệ huyết thống).
assert sameBlood{
no p: Married | some (p.^parents & p.spouse.^parents)
}
Nguyễn Thị Minh Tuyền
3
Đặc tả hình thức
Lệnh (command) và phạm vi (scope)
v Để phân tích một mơ hình, ta cần một lệnh
và chỉ dẫn cơng cụ thực thi nó.
§ Lệnh run u cầu cơng cụ tìm kiếm một instance của một vị từ.
§ Lệnh check yêu cầu cơng cụ tìm kiếm một phản ví dụ của một
assertion.
§ Ví dụ:
• check Safe
• run trans
v Để chỉ rõ một phạm vi, ta có thể đưa ra một
giới hạn (scope )cho mỗi signature tương
ứng với một loại cơ bản.
Nguyễn Thị Minh Tuyền
4
Đặc tả hình thức
Check
v assert a {F}
v check a scope
Nếu mơ hình có các fact M, tìm một ví dụ
sao cho M && !F
v check a for default
v check a for default but list
v check a for list
Nguyễn Thị Minh Tuyền
5
Đặc tả hình thức
Ví dụ về check
v Ví dụ: Cho trước các khai báo của một
hệ thống file:
abstract sig Object {}
sig Directory extends Object {}
sig File extends Object {}
sig Alias extends File {}
v và một assertion A. Các lệnh sau đây
là đúng cú pháp
§
§
§
§
check A
check A
check A
check A
Nguyễn Thị Minh Tuyền
for 5 Object
for 4 Directory, 3 File
for 5 Object, 3 Directory
for 3 Directory, 3 Alias, 5 File
6
Đặc tả hình thức
Ví dụ về check
v Ta có thể thiết lập một phạm vi mặc định, và
có thể trộn lẫn giữa phạm vi mặc định với
giới hạn rõ ràng cho một loại cụ thể.
v Ví dụ:
§
§
§
§
check A for 5
Đặt một giới hạn là 5 cho tất cả các loại top-level.
check A for 5 but 3 Directory
đặt thêm một giới hạn là 3 cho Directory, và một giới hạn là 2
cho File bằng phép suy dẫn.
v Có thể dùng từ khóa exactly:
§ check A for exactly 3 Directory, exactly 3 Alias, 5 File
§ Giới hạn File với nhiều nhất 5 phần tử, nhưng yêu cầu Directory
và Alias có chính xác 3 phần tử cho mỗi loại.
Nguyễn Thị Minh Tuyền
7
Đặc tả hình thức
Câu hỏi
v Nếu AA khơng tìm được một phản ví
dụ cho assertion thì assertion có hợp
lệ khơng?
Nguyễn Thị Minh Tuyền
8
Đặc tả hình thức
Run
v Được dùng để yêu cầu AA sinh ra các
instance của mơ hình.
v AA chỉ thực thi lệnh run đầu tiên
trong file.
v Để phân tích một mơ hình, thêm lệnh
run và chỉ dẫn AA thực thi nó.
v Có thể cung cấp cho lệnh run một
phạm vi
§ giới hạn kích thước các instance được xem xét.
Nguyễn Thị Minh Tuyền
9
Đặc tả hình thức
Run và vị từ
v pred p[x:X, y:Y,...] {F}
v run p scope
v Nếu mô hình có các fact M, tìm ví dụ
sao cho M && (some x:X, y:Y|F)
v fun f[x:X,y:Y,...] R{E}
v run f scope
v Nếu mơ hình có các fact M, tìm ví dụ
sao cho
v M && (some x:X, y:Y,...,result:R|result =
E)
Nguyễn Thị Minh Tuyền
10
Đặc tả hình thức
Ví dụ về lệnh run
v Lệnh run đơn giản nhất
§ run {}
v Lệnh run có điều kiện
§ run {some Man && some Woman && some Married}
for 2
v Một số kịch bản khác
§ run {some Woman && no Man} for 7
§ run {some Man && some Married && no Woman}
Nguyễn Thị Minh Tuyền
11
Đặc tả hình thức
Câu hỏi
v sử dụng lệnh run cho một vị từ và
check cho một assertion có khác nhau
khơng?
Nguyễn Thị Minh Tuyền
12
Đặc tả hình thức
Trở lại ví dụ granpa
1 module language/grandpa1
2 abstract sig Person {
3 father: lone Man,
4 mother: lone Woman
5 }
6 sig Man extends Person {
7 wife: lone Woman
8 }
9 sig Woman extends Person {
10 husband: lone Man
11 }
12 fact {
13 no p: Person | p in p.^(mother + father)
14
wife = ~husband
15 }
16 assert NoSelfFather {
17 no m: Man | m = m.father
18 }
19 check NoSelfFather
20 fun grandpas (p: Person): set Person {
21 p.(mother + father).father
22 }
23 pred ownGrandpa (p: Person) {
24 p in grandpas [p]
25 }
26 run ownGrandpa for 4
Nguyễn Thị Minh Tuyền
13
Đặc tả hình thức
LOGO