Chi tiết của mô-đun INV như sau:
Mô-đun INV kế thừa mô-đun ATA với kiểu protecting (dòng 2). Định nghĩa thuộc tính bất biến inv như một phép toán với 4 tham số đầu vào, các tham số này có kiểu dữ liệu lần lượt là: kiểu dữ liệu không gian trạng thái ATASys, kiểu dữ liệu chuyến bay FId, kiểu dữ liệu đại lý AId và kiểu dữ liệu cuối cùng cũng là kiểu dữ liệu AId, đầu ra của inv thuộc kiểu logic Bool (dòng 3).Các bước tiếp theo của mô-đun (từ dòng 4 đến dòng 6) là khai báo bốn biến để làm tham số cho phép toán inv bao gồm: biến S thuộc kiểu dữ liệu không gian trạng thái ATASys, biến AI và AJ thuộc kiểu dữ liệu đại lý AId, biến FI thuộc kiểu dữ liệu chuyến bay FId. Bước cuối cùng là khai báo ý nghĩa của thuộc tính bất biến inv (dòng 7), (((pc(S,FI,AI) = cs) and (pc(S,FI,AJ) = cs)) implies AI = AJ) có nghĩa là: (((pc(S,FI,AI) = cs) ˄ (pc(S,FI,AJ) = cs)) => AI = AJ), đây là một biểu thức logic, biểu thức logic này có giá trị chân lý là false ở duy nhất một trường hợp là: pc(S,FI,AI) = cs là true và pc(S,FI,AJ) = cs là true nhưng AI = AJ là false, còn lại tất cả các trường hợp khác thì biểu logic này đều cho giá trị chân lý là true. Cũng có nghĩa là: tại một trạng thái S nào đó, nếu có hai đại lý khác nhau AI, AJ cùng đang sử dụng một chuyến bay là FI thì thuộc tính bất biến inv sẽ có giá trị false. Nếu như ta chứng minh được tại mọi trạng thái S thuộc không
gian trạng thái ATASys, giá trị của thuộc tính bất biến inv luôn luôn là true, nghĩa là không có trường hợp tại một trạng thái S nào đó mà có hai đại lý khác nhau AI, AJ cùng đang sử dụng một chuyến bay FI thì có nghĩa là vấn đề xung đột trong quá trình sử dụng các chuyến bay của các đại lý là không xảy ra.
Để áp dụng tư tưởng quy nạp của CafeOBJ trong việc chứng minh tính đúng đắn của các thuộc tính bất biến của hệ thống, ta cần xây dựng thêm mô- đun ISTEP để chứng minh trong trường hợp tổng quát.
1: mod ISTEP{ 2: pr(INV)
-- s được hiểu là trạng thái hiện tại
-- s' được hiểu là trạng thái tiếp theo của s 3: ops s s' : -> ATASys .
-- Bước chứng minh quy nạp 4: pred istep : AId AId
-- Các biến trong CafeOBJ 5: vars AI AJ : AId
6: var FI : FId
7: eq istep(AI,AJ) = inv(s,FI,AI,AJ) implies inv(s',FI,AI,AJ) .
8: }