Giáo trình Toán rời rạc
Chương IIISUY LUẬN TOÁN HỌCI)Các phương pháp chứng minh.Có hai câu hỏi đặt ra trong nghiên cứu toán học là: (1) Khi nào thì một suy luận toán học là đúng? (2) Có thể dùng các phương pháp nào để xây dựng các suy luận toán toán học?Suy luận là một hoạt động của trí tuệ dựa trên các qui tắc nhất đònh mà trong thực tiển hoạt động của mình con người chấp nhận được rằng việc áp dụng các qui tắc đó cho phép đạt được các kết quả nhận thức phù hợp với thực tiển. Ví dụ: Trong hoạt động thực tiển con người nhận thấy rằng khi hai sự vật đồng nhất với một sự vật thứ ba thì hai sự vật ấy đồng nhất với nhau. Do đó mọi người đều đồng ý chấp nhận qui tắc (hay mô hình) suy luận: Nếu A đồng nhất với C và nếu B đồng nhất với C thì A đồng nhất với B bất kể A, B, C là sự vật gì. Con người không thể suy luận mà không dựa trên các ý tưởng, các khái niệm. Để có thể thống nhất với nhau trong khi giao tiếp con người cần đònh nghóa các khái niệm một cách chặt chẻ. Ví dụ cần thống nhất với nhau khái niệm “Hình tam giác” bằng đònh nghóa “Hình tam giác là một hình phẳng gồm ba đoạn thẳng nối ba điểm không thẳng hàng”. Mỗi một khái niệm được đònh nghóa lại cần dựa trên các khái niệm khác để đònh nghóa. Trong ví dụ trên khái niệm “hình tam giác” được đònh nghóa dựa trên các khái niệm đoạn thẳng, điểm, phẳng, thẳng hàng. Dó nhiên không thể đẩy việc đònh nghóa đến tận cùng được, phải dừng việc đònh nghóa ở một số khái niệm xem như có thể thỏa thuận với nhau là khái niệm ban đầu không cần thiết phải đònh nghóa hoặc không thể đònh nghóa được. Trong ví dụ vừa nêu có thể xem “điểm” là khái niệm ban đầu, khi đó “điểm” là “điểm” - đơn thuần là một khái niệm và không dựa vào bất cứ khái niệm nào khác để đònh nghóa lại điểm. Mối quan hệ giữa các sự vật, các khái niệm cũng cần được làm sáng tỏ bằng các suy luận, ie: cần được chứng minh. Ví dụ: “Tổng ba góc trong một tam giác bằng 180 độ” là một khẳng đònh về mối quan hệ đònh lượng giữa các góc trong một tam giác. Mỗi quan hệ giữa các sự vật, các khái niệm được chứng minh đó tùy vào tầm quan trọng của chúng mà được gọi dưới các tên: “Tính chất / Bổ đề / Đònh lý /Hệï quả”. Việc chứng minh các mối quan hệ này đòi hỏi các suy luận dựa trên các khái niệm đã biết, đã được đònh nghóa và dựa trên các mối quan hệ đã được chứng minh (hoặc đã được chấp nhận) khác. Trong ví dụ trên việc chứng minh “Tổng ba góc trong một tam giác bằng 180 độ” sẽ dẫn đến việc đòi hỏi quan hệ “Từ một điểm ở ngoài một đường thẳng ta có thể dựng được một và chỉ một đường thẳng song song song với đường thẳng đã cho” hoặc phải được chứng minh hoặc phải được chấp nhận. Trong trường hợp một phát biểu về mối quan hệ giữa các khái niệm được yêu cầu chấp nhận vì không thể chứng minh được thì phát biểu đó sẽ được gọi là một tiên đề. Một tiên đề thì có thể được chấp nhận hoặc không chấp nhận - không làm ảnh hưởng gì đến tính chặt chẻ hoặc tính đúng đắn của hệ thống khoa học đang được nghiên cứu. Việc chứng minh một mối quan hệ là “không thể chứng minh được” trong nhiều trường hợp là hết sức khó khăn, vì vậy một số quan hệ đã được kiểm chứng1 1 Đừng nhầm lẫn “chứng minh” với “kiểm chứng”. Dù có kiểm chứng hàng trăm nghìn lần phát biểu “Mỗi bản đồ phẳng đều có thể được tô bằng không quá bốn màu sao cho không có hai quốc 41 là đúng nhưng chưa chứng minh được sẽ chỉ được gọi là các phỏng đoán mà thôi. Trong khoa học tồn tại vô vàn các phỏng đoán.Chúng ta xét đến khái niệm “chứng minh”: Như đã nói trên mỗi chứng minh là một dãy các suy luận đi từ các khái niệm ban đầu, các giả thiết, các khái niệm đã được đònh nghóa, các tính chất, các đònh lý để đạt được các kết luận mới. Để đảm bảo cho các kết luận mới này được chặt chẻ2 thì dãy các suy luận đó phải thỏa mãn:- Áp dụng đúng các qui tắc suy luận.- Chỉ được suy luận dựa trên các khái niệm ban đầu, các giả thiết, các khái niệm đã được đònh nghóa, các tính chất, các đònh lý (đã được chứng minh). Không được sử dụng các phỏng đoán.Các qui tắc suy luận.Mặc dù các chứng minh thì vô cùng vô tận nhưng chúng ta lại chỉ có một số rất ít các qui tắc suy luận mà thôi. Ví dụ:“Nếu hôm nay mưa, chúng ta sẽ không học thêm 1 tiết.Nếu hôm nay chúng ta không học thêm một tiết thì ngày mai chúng ta phải học thêm một tiết.Do đó nếu hôm nay trời mưa thì ngày mai chúng ta phải học thêm một tiết.”Quy tắc suy luận nào làm cơ sở cho suy lý đó vậy? Nếu đặt :p là mệnh đề: “Hôm nay mưa”q là mệnh đề: “Chúng ta không học thêm một tiết”.Thì suy lý trên có dạng hình thức: [(p⇒q)∧(q⇒r)]⇒(p⇒r) (*)Có thể chứng minh rằng (*) là một hằng đúng, ie: luôn lấy giá trò TRUE với mọi tổ hợp giá trò của p và q. Vì (*) là một hằng đúng nên suy lí trên chắc chắn là một suy luận chặt chẻ và ta nói ta đã áp dụng một qui tắc suy luận (tam đoạn luận giả đònh). Qui tắc đó được viết như sau:p qq rp r⇒⇒∴ ⇒Khi dùng kí hiệu này, các giả thiết (hay các tiền đề) được viết trên gạch ngang và kết luận được viết dưới gạch ngang sau kí hiệu ∴(đọc là vậy thì)Có thể liệt kê các qui tắc suy luận như sau:Qui tắc suy luận Hằng đúng tương ứng Tên gọigia nào có cùng đường biên giới được tô cùng màu” là phù hợp thì đó vẫn không phải là một chứng minh, nghóa là phát biểu đó vẫn chưa trở thành một đònh lý được.2 Lưu ý: “Chặt chẻ (valid)” chứ không phải “đúng (true)”. Đôi khi ta cũng dùng từ “hợp thức” hoặc “có cơ sở” thay cho “chặt chẻ”.42 pp q∴ ∨p ⇒(p∨q) Luật cộngp qp∧∴(p∧q) ⇒p Luật rút gọnpqp q∴ ∧((p)∧(q))⇒(p∧q) Luật hợppp qq⇒∴[p∧(p⇒q)]⇒q Modus ponensqp qp¬⇒¬[¬q∧(p⇒q)]⇒¬p Modus tollensp qq rp r⇒⇒∴ ⇒[(p⇒q)∧(q⇒r)]⇒(p⇒r) Tam đoạn luận giả đònh.p qpq∨¬∴[(p∨q)∧¬p]⇒ q Tam đoạn luận tuyển.Có thể thấy rằng một suy luận hợp thức, ie: áp dụng đúng các qui tắc suy luận, chưa chắc đã cho kết luận đúng. Với một suy luận hợp thức thì kết luận là bất khả kháng (valid). Còn việc kết luận là đúng (true) hay sai (false) là tùy thuộc vào các tiền đề.Ví dụ: “Nếu 101 chia hết cho 3 thì 1012 chia hết cho 9. Vì 101 chia hết cho 3 nên 1012 chia hết cho 9”.Đây là một suy luận áp dụng modus ponens, hoàn toàn chặt chẻ. Tuy nhiên kết luận của suy luận này sai vì thực tế 1012 = 10201 không chia hết cho 9. Vấn đề ở chổ người ta đã dùng mệnh đề “101 chia hết cho 3” là một mệnh đề sai.Khi có nhiều tiền đề, thường cần phải dùng phối hợp các qui tắc suy luận để chứng tỏ một suy diễn là đúng. Ví dụ:“Nếu Ông Fuji Mori là công dân Nhật thì phía Nhật không phải trao trả ông Fuji Mori cho Pêru. Còn nếu Fuji Mori không phải là công dân Nhật thì vì giữa Nhật và Pêru không có 43 hiệp đònh về dẫn độ nên Nhật không phải trao trả Fuji Mori cho phía Pêru. Cho nên trong mọi trường hợp phía Nhật thấy không cần trao trả Fuji Mori cho phía Pêru.” 3Đặt:p là mệnh đề: “Fuji Mori là công dân Nhật” q là mệnh đề: “Nhật không phải trao trả ông Fuji Mori cho Pêru”r là mệnh đề: “Nhật và Pêru không có hiệp đònh về dẫn độ”.Ta thấy:Bước Suy diễn1. p ⇒ q Giả thiết2. (r ∧ ¬p) ⇒ q Giả thiết.Vì r là đúng hiển nhiên (do thực tế) nên (r ∧ ¬p) ≈ ¬p nên3. ¬p ⇒ q Giả thiết tương đương.3. (p ∨ ¬p) Hằng đúng.4. ( )( ) ( )]p pp q p qq∨ ¬⇒ ∨ ¬ ⇒∴Song quan luận kiến tạo.Qui tắc suy luân đối với mệnh đề lượng hóa:Khi các suy luận liên quan đến các lượng từ tồn tại và phổ dụng ta có các qui tắc suy luận sau:(Giả sử U là không gian khảo sát)Quy tắc suy luận Tên gọi( )( )x P xP c if c U∀∴ ∈Cá biệt hóa phổ dụng.( )( )P c doi voi mot c U ngau nhienx P x∈∀Tổng quát hóa phổ dụng.( )( )x P cP c doi voi phan tu nao do c U∃∈Cá biệt hóa tồn tại.3 Trả lời của Bộ ngoại giao Nhật khi chính phủ Pêru đòi Nhật trao trả cựu tổng thống Pêru Fuji Mori để xét xử về tội chuyên quyền và tham nhũng.44 ( )( )P c doi voi phan tu nao do c Ux P x∈∃Tổng quát hóa tồn tại.Ví dụ:1. Tất cả phụ nữ dều khôn ngoan vì vậy chò Sáu cũng khôn ngoan. (Cá biệt hóa phổ dụng)2. Lấy ngẫu nhiên một x∈A, ta chứng minh dược rằng x >0. Vậy ,x A x∀ ∈> 0 (Tổng quát hóa phổ dụng)3. Có ít nhất một người trong lớp K1-CNTT là dân Mõ Cày. Vậy có người nào đó trong lớp K1-CNTT là dân Mõ Cày. (Cá biệt hóa tồn tại).4. Vì Hưng là sinh viên lớp K1-CNTT là dân Mõ Cày nên có ít nhất một người trong lớp K1-CNTT là dân Mõ Cày. (Tổng quát hóa tồn tại)Các phương pháp chứng minh đònh lý.Phần lớn các đònh lý toán học đề có thể đưa về dạng p ⇒ q. Vì vậy nếu p là đúng ta chỉ cần chứng tỏ phép kéo theo (p ⇒ q) là đúng chứ không cần chứng minh q đúng.Chứng minh trực tiếp: chứng minh mệnh đề (p ⇒ q) bằng cách chứng tỏ nếu p đúng thì q cũng phải đúng. Điều này chứng tỏ tổ hợp (P đúng, Q sai) không khi nào xảy ra. Ví dụ: Chứng minh” Nếu n lẻ thì n2 cũng lẻ” .Giải: Giả sử n lẻ n lẻ ⇒ n = 2k+1 với k là một số nguyên.⇒ n2 = (2k+1)2 = 2.2(k2+k)+1⇒ n2 là một số lẻ.Chứng minh gián tiếp: Vì ta có (p ⇒ q) ≅ (¬q ⇒ ¬p) nên thay vì chứng minh (p ⇒ q) ta chỉ cần chứng minh (¬q ⇒ ¬p) (Đôi khi còn gọi là chứng minh phản chứng).Ví dụ: Chứng minh rằng “Nếu 3n+2 lẻ thì n cũng lẻ”.Giải:Giả sử n không lẻ, ie: n chẵnn chẵn ⇒n = 2 k với k là một số nguyên.⇒3n+2= 3(2k)+2 =2(3k+1)⇒ 3n+2 chẫn. Điều này trái với giả thiết 3n+2 lẻ vậy giả sử n chẵn là sai, tức n phải lẻ.Quy nạp toán học:Qui nạp toán học dựa trên tiên đề sau đây (gọi là tiên đề về tối thứ tự : well - ordering axiom): “Mọi tập con khác rổng các số nguyên không âm đều có phầân tử nhỏ nhất”Từ tiên đề này người ta có thể chứng minh đònh lý về sự qui nạp sau đây:45 Dạng I: Giả sử với mỗi số nguyên n ≥ 1 chúng ta có phát biểu A(n) thỏa mãn:(1) A(1) đúng.(2) Với mỗi số nguyên n ≥ 1, nếu A(n) đúng thì A(n+1) đúngThì phát biểu A(n) đúng với mọi n ≥ 1.Dạng II: Giả sử với mỗi số nguyên n ≥ 0 chúng ta có phát biểu A(n) thỏa mãn:(1) A(0) đúng.(2) Với mỗi số nguyên n ≥ 0, nếu A(k) đúng với mọi k thỏa 0≤k<nThì phát biểu A(n) đúng với mọi n ≥ 0.Có thể chứng minh hai dạng này là tương đương. Chúng ta bỏ qua chứng minh hai đònh lý này cũng như bỏ qua chứng minh chúng tương đương nhau.Để minh họa cho phương pháp chứng minh này theo dạng I ta có thể quan sát sơ đồ sau:0 1 2 . n n+1 n+2 A(1) được kiểm chứng đúngÁp dụng cửa sổ này cho n lần lượt từ n=1 trở điVí dụ: Chứng minh rằng:1n∀ ≥: A(n) : 1+2+3+ . + n = ( 1)2n n +Giải: A(1) =1=1(1 1)2+ (đúng)Giả sử A(n) đúng với n ≥ 1. Thế thì:1+ .+n+(n+1) =( 1)2n n ++(n+1).46Cửa sổ này cho thấy nếu A(n) đúng thì A(n+1) cũng đúng =( 1) 2( 1)2n n n+ + += ( 1)( 2)2n n+ +=( 1)(( 1) 1)2n n+ + + Vậy A(n) đúng với mọi n ≥ 1.Ng biện.4Nếu hiểu một cách chính xác thì động từ ng biện để chỉ một hành vi ngôn ngữ dựa vào một cách thức suy lý mà chúng ta không thể chấp nhận được do dựa vào hoặc sự mơ hồ của chức ngôn ngữ để đánh tráo khái niệm hoặc cố tình (hay vô tình!) dựa vào các liên hệ không hợp các qui tắc suy luận. Các ng biện thường rất tinh vi vì chúng thường dấu mình dưới một dãy các liên hệ logich mà tính đúng đắn của toàn bộ dãy liên hệ hệ này rất khó kiểm chứng được. Nhìn chung có thể phân biệt các loại ng biện thành:a) Ng biện từ trong đònh nghóa khái niệm .Đònh nghóa dùng để xác đònh một cách duy nhất một đối tượng mà chúng ta cần nói tới, nhằm làm cho chúng ta thống nhất với nhau về từ ngữ dùng để chỉ đối tượng đó. Tuy nhiên từ ngữ thường dễ sa vào sự mơ hồ làm cho chúng ta thống nhất với nhau về từ được dùng nhưng lại không thống nhất với nhau về phạm vi áp dụng (ngoại diên) của từ đó.Ví dụ5: Phát biểu “Tiểu thuyết là một công trình văn chương dài hơn truyện ngắn”. Trong phát biểu này có ba điều cần nghi ngại: Một là: “Thế nào là một công trình văn chương?”. Phải chăng mọi văn bản đều là công trình văn chương?Hai là: “Thế nào là dài hơn?”. Đại lượng dùng để đo chiều dài này là gì?Ba là: Có khả năng dẫn đến một đònh nghóa vòng quanh “Truyện ngắn là một công trình văn chương ngắn hơn tiểu thuyết”.Ví dụ: b) Ng biện lưỡng nghóa (đánh tráo khái niệm). Ví dụ:"Đây là một tác phẩm nghệ thuật.Mà cái này là của tôi.Vậy thì đây là tác phẩm nghệ thuật của tôi"Trong phép ng biện này, từ "của" đã bò đánh tráo. Từ "của" chỉ quan hệ sở hữu đã chuyển sang từ "của" chỉ quan hệ chủ thể sáng tạo.4 Mục này chỉ để giúp sinh viên tìm hiểu thêm, không nằm trong chương trình học. Tuy nhiên đây là một vấn đề rất thú vò. Suy nghó kỷ về vấn đề này giúp ta tránh được các "suy lý"gây ngộ nhận.5 Các ví dụ và các lý chứng trong phần này có trích từ: NGÔN TỪ VÀ SỰ NG BIỆN - Tiến só Nguyễn Đức Dân - Báo Kiến thức ngày nay - Số 25 (15-12-1989). Các ví dụ khác trích từ LUẬN LÝ TOÁN HỌC ĐẠI CƯƠNG - Lê Thành Trò. và DISCRETE MATHMATIC and ITS APPLICATIONS -K. H. Rosen.47 Ví dụ: "Cái gì anh không mất thì anh còn.Anh không mất sừng.Vậy thì anh còn sừng!"Trong "suy luận" trên, người ta đã đánh tráo nghóa của cụm từ "không mất". Trong tiền đề thứ nhất "không mất" được dùng với nghóa "không mất cái gì anh đã có". Khi chuyển sang tiền đề thứ hai, cụm "không mất" đã bò đánh tráo thành "không mất cái mà anh không có".Ví dụ:Trên đời này đạt được cái gì tốt đều là có ích. Tên bất lương không muốn đạt được cái gì tồi.Như vậy tên bất lương muốn điều có ích.Trong ví dụ này cụm từ “cái gì tốt” đã được dùng hai lần trong tiền đề thứ nhất và thứ hai. Trong lần thứ nhất là “cái gì tốt” là của một người lương thiện, còn trong lần thứ hai “cái gì tốt” là của một kẻ bất lương. Đây là hai “cái gì tốt” khác nhau nên sự nối kết để cho ra kết luận là không thích hợp.c) Ng biện liên hệ giữa tiền đề và kết luận :Là ngụy biện xảy ra khi tiền đề không đủ chắc để dẫn đến kết luận.Ví dụ:- Không ai đưa ra được một chứng cứ nào rằng hắn là vô tội vì vậy hắn chính là thủ phạm.- Vì ABCD không phải là hình vuông nên suy ra ABCD phải là một hình bình hành.- Nó đã năm lần thất bại nên lần này nhất đònh nó sẽ thất bại nữa cho xem!II)Tính đúng đắn của chương trình.Nếu một phát biểu của toán học như một đònh lí, một hệ quả .v.v. có thể xác đònh dễ dàng tính hợp lệ của nó nhờ vào việc kiểm tra dãy các suy luận và các phép tính, dựa vào các qui tắc suy luận đã được áp dụng và các qui tắc làm tính, trên cơ sở chỉ được áp dụng phép suy 48 diễn từ các khái niệm ban đầu, các tiên đề và các đònh nghóa cũng như các phát biểu đã được chứng minh thì việc xác nhận tính đúng đắn của một chương trình máy tính trở nên phức tạp hơn nhiều. Một cách tổng quát, cho một chương trình máy tính, mấy vấn nạn sau đây phải được đặt ra:a) Tính dừng của chương trình (Terminating problem): Chương trình này có dừng hay không với một dữ liệu nhập cho trước?b) Tính đáp ứng của chương trình (Respond problem): Với một dữ liệu nhập đã cho, nếu chương trình là dừng thì kết xuất của chương trình là gì? c) Tính đúng của chương trình (Correctness problem): Với dữ liệu nhập đã cho thì kết xuất của chương trình có phù hợp hay không? Mối quan hệ giữa dữ liệu nhập và kết xuất có thích đáng hay không?d) Tính tương đương của chương trình (Equivalence problem): Cho hai chương trình. Liệu hai chương trình này có cho cùng một kết xuất ứng với cùng dữ liệu nhập hay không? e) Tính đặc trưng của chương trình (Specialization problem): Cho một chương trình P được viết để nhận một tập I các dữ liệu nhập, nếu chúng ta giới hạn trên tập con khác rỗng I* của I chúng ta có thể nào đơn giản P thành P* chạy trên I* nhanh hơn P hay không?Nếu một chương trình thỏa mãn các yêu cầu a) b) c) nói trên ta sẽ nói rằng chương trình đó là đúng đắn. Nói cách khác một chương trình là đúng đắn nếu nó tạo được đầu ra đúng cho mọi đầu vào có thể có.I)Kiểm chứng chương trìnhCác qui tắc suy luận để kiểm chứng chương trình.Giả sử chương trình S được phân thành các đoạn chương trình con S1 và S2. Ta viết S=S1; S2 để chỉ rằng S được tạo ra bởi chạy S1 rồi tiếp theo sau đó là S2. Giả sử tính đứng đắn của S1 ứng với khẳng đònh đầu vào p và khẳng đònh đầu cuối q (tương tự tính đứng đắn của S2 ứng với khẳng đònh đầu vào q và khẳng đònh đầu cuối r) đã được thiết lập. Có thể suy ra rằng nếu p đúng và S1 được thực thi rồi kết thúc, thì q cũng đúng. Và nếu q đúng và S2 được thực thi rồi kết thúc, thì r cũng đúng. Quy tắc suy luận như vậy gọi là quy tắc hợp thành và có thể diễn đạt như sau:{ 1}{ 2}{ 1; 2}p S qq S rp S S r∴Từ đó suy ra một qui tắc rất có ích khi chứng minh tính đứng đắn của chương trình là: Chia chương trình đó thành một dãy các đoạn chương trình con rồi sau đó chứng tỏ các đoạn này là đúng đắn. Như ta đã biết chỉ cần các cấu trúc tuần tự, lựa chọn và lặp là đủ để viết các 49 chương trình theo hướng thủ tục6 nên ta chỉ cần xây dựng các tiêu chuẩn kiểm tra tính đứng đắn của chương trình đối với 3 cấu trúc đó là đủ. Qui tắc hợp thành vừa nói trên cho ta qui tắc kiểm tra tính đúng đắn của chương trình ứng với cấu trúc điều khiển tuần tự. Ta còn cần thiết lập các qui tắc cho hai cấu trúc điều khiển còn lại như sau:Các câu lệnh điều kiện: o Suy luận đối với câu lệnh điều kiện (lựa chọn):IF <điều kiện> THENStrong đó S là một khối các lệnh7. Khối S sẽ được thực thi nếu <điều kiện> là đúng và không được thực thi nếu điều kiện là sai. Để kiểm chứng tính đứng đắn của đọan chương trình này ứng với khẳng đònh đầu vào p và khẳng đònh đầu ra q ta phải làm hai việc:1. Chứng tỏ khi p đúng và <điều kiện> cũng đúng thì q cũng đúng sau khi S kết thúc.2. Chứng tỏ khi p đúng và <điều kiện> sai thì q cũng đúng mặc dù S không được thực thi.Từ đây dẫn đến qui tắc suy luận: ( ){ }( ){ }p dieukien S qp dieukien qp if dieukien then S q∧ < >∧ ¬ < > ⇒∴ < >Ví dụ: Xác minh đoạn chương trình sau đây là đúng đắn:IF (x>y) THENy:=xlà đúng đắn đối với khẳng đònh đầu vào T và khẳng đònh đầu cuối y≥ x.Giải: Khi khẳng đònh đầu vào T đúng và x>y thì mệnh đề gán y:=x được thực thi. Vì khẳng đònh cuối khẳng đònh rằng y≥ x nên nó là đúng trong trường hợp này. Hơn nữa khi khẳng đònh đầu vào T đúng và điều kiên x>y sai, ie: x≤ y, khẳng đònh đầu cuối một lần nữa lại đúng. Vì thế theo qui tắc suy luận đối với đoạn chương trình kiểu này thì đoạn chương trình nói trên là đúng đối với các khẳng đònh đầu vào và đầu cuối đã cho.6 Procedural driven. ƠÛ đây chúng ta chưa xét đến các chương trình viết theo (hoặc sẽ được thực thi theo) hướng biến cố (Event driven).7 Trong một số ngôn ngữ lập trình ta thường gọi S là một câu lệnh ghép. Chẳng hạn trong Pascal câu lệnh ghép thường được bao giữa hai từ khóa BEGIN END. Ví dụ: BeginTam:=A;A:=B;B:=Tam;End; .trong ví dụ này S là nhóm 3 lệnh Tam:=A; A:=B; B:=Tam;50 [...]... kiện) {S} p là đúng 51 Có thể suy ra nếu p đúng trước khi đoạn chương trình này (S) được thực thi, thì p và ¬ sẽ đúng sau khi đoạn chương trình kết thúc (nếu có kết thúc xảy ra) Qui tắc suy luận này là: ( p ∧ < dieu kien >) {S} p ∴ p {While < dieukien > S}(¬ < dieukien > ∧ p) Ví dụ: Cần một bất biến vòng lặp để kiểm chứng chương trình: i:=1 Factorial:=1 While (i . thể có.I)Kiểm chứng chương trìnhCác qui tắc suy luận để kiểm chứng chương trình. Giả sử chương trình S được phân thành các đoạn chương trình con S1 và S2.. problem): Với một dữ liệu nhập đã cho, nếu chương trình là dừng thì kết xuất của chương trình là gì? c) Tính đúng của chương trình (Correctness problem): Với dữ