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. Bài giảng Đặc tả hình thức: Chương 5 do Nguyễn Thị Minh Tuyền sau đây sẽ giúp các bạn nắm chi tiết hơn về Assertion. Mời các bạn cùng tham khảo!
LOGO Đặc tả hình thức Giới thiệu Alloy Nguyễn Thị Minh Tuyền Nguyễn Thị Minh Tuyền Assertion v Assertion ràng buộc bổ sung kiểm tra phân tích xem chúng có hay khơng v Nếu assertion khơng đúng, phân tích tạo phản ví dụ v Cú pháp: assert tên{ ràng buộc } Nguyễn Thị Minh Tuyền Đặc tả hình thức Ví dụ v Khơng có bố mẹ mà đồng thời anh chị em assert parentsSiblings{ all p: Person | no p.parents & p.siblings } v Anh chị em người anh chị em người assert siblingsSiblings{ all p: Person | p.siblings = p.siblings.siblings } v Khơng có tổ tiên với chồng/vợ ( 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 Đặc tả hình thức Lệnh (command) phạm vi (scope) v Để phân tích mơ hình, ta cần lệnh dẫn cơng cụ thực thi § Lệnh run u cầu cơng cụ tìm kiếm instance vị từ § Lệnh check u cầu cơng cụ tìm kiếm phản vớ d ca mt assertion Đ Vớ d: ã check Safe • run trans v Để rõ phạm vi, ta đưa giới hạn (scope )cho signature tương ứng với loại 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ó fact M, tìm ví dụ 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 Đặc tả hình thức Ví dụ check v Ví dụ: Cho trước khai báo hệ thống file: abstract sig Object {} sig Directory extends Object {} sig File extends Object {} sig Alias extends File {} v và assertion A Các lệnh sau cú pháp § § § § check A check A check A check A Nguyễn Thị Minh Tuyền for Object for Directory, File for Object, Directory for Directory, Alias, File Đặc tả hình thức Ví dụ check v Ta thiết lập phạm vi mặc định, trộn lẫn phạm vi mặc định với giới hạn rõ ràng cho loại cụ thể v Ví dụ: § § § § check A for Đặt giới hạn cho tất loại top-level check A for but Directory đặt thêm giới hạn cho Directory, giới hạn cho File phép suy dẫn v Có thể dùng từ khóa exactly: § check A for exactly Directory, exactly Alias, File § Giới hạn File với nhiều phần tử, yêu cầu Directory Alias có xác phần tử cho loại Nguyễn Thị Minh Tuyền Đặc tả hình thức Câu hỏi v Nếu AA khơng tìm phản ví dụ cho assertion assertion có hợp lệ khơng? Nguyễn Thị Minh Tuyền Đặc tả hình thức Run v Được dùng để u cầu AA sinh instance mơ hình v AA thực thi lệnh run file v Để phân tích mơ hình, thêm lệnh run dẫn AA thực thi v Có thể cung cấp cho lệnh run phạm vi § giới hạn kích thước instance xem xét Nguyễn Thị Minh Tuyền Đặc tả hình thức Run vị từ v pred p[x:X, y:Y, ] {F} v run p scope v Nếu mơ hình có fact M, tìm ví dụ 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ó fact M, tìm ví dụ 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ụ lệnh run v Lệnh run đơn giản § run {} v Lệnh run có điều kiện § run {some Man && some Woman && some Married} for v Một số kịch khác § run {some Woman && no Man} for § 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 vị từ check cho assertion có khác khơng? Nguyễn Thị Minh Tuyền 12 Đặc tả hình thức Trở lại ví dụ granpa module language/grandpa1 abstract sig Person { father: lone Man, mother: lone Woman } sig Man extends Person { wife: lone Woman } 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 Nguyễn Thị Minh Tuyền 13 Đặc tả hình thức LOGO ... xác phần tử cho loại Nguyễn Thị Minh Tuyền Đặc tả hình thức Câu hỏi v Nếu AA khơng tìm phản ví dụ cho assertion assertion có hợp lệ khơng? Nguyễn Thị Minh Tuyền Đặc tả hình thức Run v Được... 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 vị từ check cho assertion có khác khơng? Nguyễn Thị Minh Tuyền 12 Đặc tả hình thức Trở lại ví dụ... p: Married | some (p.^parents & p.spouse.^parents) } Nguyễn Thị Minh Tuyền Đặc tả hình thức Lệnh (command) phạm vi (scope) v Để phân tích mơ hình, ta cần lệnh dẫn cơng cụ thực thi § Lệnh run