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
14 trang |
Chia sẻ: phuongt97 | Lượt xem: 481 | Lượt tải: 0
Nội dung tài liệu Bài giảng Đặc tả hình thức - Chương 5: Giới thiệu về Alloy - Nguyễn Thị Minh Tuyền (Tiếp theo), để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
LOGO
Đặc tả hình thức
Nguyễn Thị Minh Tuyền
Giới thiệu về Alloy
Nguyễn Thị Minh Tuyền 1
Đặc tả hình thức
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
}
2 Nguyễn Thị Minh Tuyền
Đặ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)
}
3 Nguyễn Thị Minh Tuyền
Đặ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 yê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.
4 Nguyễn Thị Minh Tuyền
Đặ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
5 Nguyễn Thị Minh Tuyền
Đặ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 for 5 Object
§ check A for 4 Directory, 3 File
§ check A for 5 Object, 3 Directory
§ check A for 3 Directory, 3 Alias, 5 File
6 Nguyễn Thị Minh Tuyền
Đặ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.
7 Nguyễn Thị Minh Tuyền
Đặ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?
8 Nguyễn Thị Minh Tuyền
Đặ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.
9 Nguyễn Thị Minh Tuyền
Đặ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)
10 Nguyễn Thị Minh Tuyền
Đặ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}
11 Nguyễn Thị Minh Tuyền
Đặ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?
12 Nguyễn Thị Minh Tuyền
Đặc tả hình thức
Trở lại ví dụ granpa
13 Nguyễn Thị Minh Tuyền
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
LOGO
Các file đính kèm theo tài liệu này:
- bai_giang_dac_ta_hinh_thuc_chuong_5_gioi_thieu_ve_alloy_nguy.pdf