1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Đặc tả hình thức: Chương 5 - Nguyễn Thị Minh Tuyền

14 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 377,27 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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!

Trang 1

LOGO

Đặc tả hình thức

Nguyễn Thị Minh Tuyền

Giới thiệu về Alloy

Trang 2

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 }

Trang 3

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{

Trang 4

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

Trang 5

Check

Nếu mô hình có các fact M, tìm một ví dụ

sao cho M && !F

v   check a for list

Trang 6

Ví dụ về check

hệ thống file:

abstract sig Object {}

sig Directory extends Object {}

sig File extends Object {}

sig Alias extends File {}

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

Trang 7

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.

Trang 8

Câu hỏi

dụ cho assertion thì assertion có hợp

lệ không?

Trang 9

Run

instance của mô hình

trong file

phạm vi

§   giới hạn kích thước các instance được xem xét

Trang 10

Run và vị từ

v   run f scope

sao cho

v   M && (some x:X, y:Y, ,result:R|result =

E)

Trang 11

Ví dụ về lệnh run

§   run {}

§   run {some Man && some Woman && some Married} for 2

§   run {some Woman && no Man} for 7

§   run {some Man && some Married && no Woman}

Trang 12

Câu hỏi

không?

Trang 13

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]

Trang 14

LOGO

Ngày đăng: 08/05/2021, 13:16

🧩 Sản phẩm bạn có thể quan tâm