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

Đặc tả ngôn ngữ lập trình ngữ nghĩa tiền đề

16 585 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 16
Dung lượng 231,88 KB

Nội dung

C T NGÔN NG NG L P TRÌNH NGH A TIÊN TS Nguy n H a Phùng Khoa CNTT – HBK TPHCM 2007 NG NGH A TIÊN {P} S {Q} – – – P : ti n u ki n S : phát bi u Q : h u u ki n N u P sau S đ c th c thi Q s {x = A} x := x + { x = A + 1} {y ≠ 0} x := / y { x = / y } Ng Ngh a Tiên Khoa CNTT-DHBK TPHCM NG NGH A TIÊN (tt) S, Q → P : ng ngh a c a S N u P1 ⇒ P2 P2 y u h n P1 { y > } x := / y { x = / y} y>0⇒y≠0 wp(S,Q): ti n u ki n y u nh t – – wp(x := / y, x = / y) ≡ y ≠ wp(n := n + 1, n > 0) ≡ n ≥ Ng Ngh a Tiên Khoa CNTT-DHBK TPHCM H LU T HOARE L1: N u ({P} S {Q}) ∧ (Q ⇒ R) {P} S {R} L2: N u ({P} S {Q}) ∧ (R ⇒ P) {R} S {Q} L3: {Px→E} x:= E {P}, v i E bi u th c Px→E P x đ c thay b ng E Ví d : Ch ng minh: {f = i!} i := i + {f * i = i!} P f * i = i! E i+1 Pi→E f *(i+1) = (i+1)! Theo L3: {f *(i+1) = (i+1)!} i := i + {f * i = i!} Vì f = i! ⇒ f *(i+1) = (i+1)! nên theo L2 ta có u c n cm Ng Ngh a Tiên Khoa CNTT-DHBK TPHCM H LU T HOARE (tt) L4: N u ({P} S1 {Q}) ∧ ({Q} S2 {R}) {P} S1; S2 {R} Ví d : Ch ng minh {f =i!} i := i + 1; f := f * i {f = i!} Theo ví d tr c, ta có {f = i!} i := i + {f * i = i!} Ta ch ng minh {f * i = i!} f := f * i {f = i!} P f = i! E f*i Pi→E f *i = i! Theo L3, (2) đ c ch ng minh Theo L4 (1),(2) ta có u ph i ch ng minh Ng Ngh a Tiên (1) (2) Khoa CNTT-DHBK TPHCM H LU T HOARE (tt) L5: N u ({P ∧ B} S1 {Q}) ∧ ({P ∧ ¬B} S2 {Q}) {P} if B then S1 else S2 {Q} L6: N u ({P ∧ B} S1 {Q}) ∧ ((P ∧ ¬B) ⇒ Q) {P} if B then S1 {Q} Ví d : {xy < 0} if x > y then max := x else max :=y {max > 0} Theo L3, ta có {x > 0} max := x {max > 0} Vì (xy < 0) ∧ (x > y) ⇒ (x > 0) nên theo L2 ta có {(xy < 0) ∧ (x > y)} max := x {max > 0} T ng t {(xy < 0) ∧ (x ≤ y)} max := y {max > 0} Áp d ng L5 ta có u c n ch ng minh Ng Ngh a Tiên Khoa CNTT-DHBK TPHCM H LU T HOARE (tt) L7: N u {P ∧ B} S {P} {P} while B S {P ∧ ¬B} Ví d : {f =i!} while i≠n begin i := i +1; f := f * i end {f=n!} Theo ví d tr c ta ch ng minh {f =i!} i := i + 1; f := f * i {f = i!} Vì (f = i!) ∧ (i≠n) ⇒ f = i! nên theo L2 {(f = i!) ∧ (i≠n)} i := i + 1; f := f * i {f = i!} V iP f = i! B i≠n S i := i + 1; f := f * i theo L7: {f =i!} while i≠n begin i := i +1; f := f * i end {(f=i!) ∧ (i=n)} mà (f=i!) ∧ (i=n) ⇒ f = n! nên theo L1 ta có u c n ph i ch ng minh Ng Ngh a Tiên Khoa CNTT-DHBK TPHCM CH NG MINH CH NG TRÌNH {P} Prog {Q} úng đ n b ph n: n u P đúng, sau th c hi n Prog Q úng đ n toàn ph n: Prog đ n b ph n n u P Prog d ng Ng Ngh a Tiên Khoa CNTT-DHBK TPHCM VÍ D Ch ng minh {n ≥ 0} i := 0; f := 1; while i ≠ n begin i:= i +1; f := f * i end {f = n!} Ta ch ng minh {f = i!} while i ≠ n begin i:= i +1; f := f * i end {f = n!} Vì = 0! luôn nên n ≥ ⇒ = 0! Theo L2 ta đ Áp d ng L3 v i P f = i! E Pf →E = i! ta đ c {1 = i!} f := {f = i!} Áp d ng L3 v i P = i! E Pi→E = 0! ta đ c {1 = 0!} i := {1 = i!} c {n ≥ 0} i := {1 = i!} Áp d ng L4 ta có u c n ph i cm Ng Ngh a Tiên Khoa CNTT-DHBK TPHCM VÍ D Ch ng minh: {n ≥ 0} i := n; f := 1; while i > begin f := f * i ; i := i -1; end {f = n!} 10 Ng Ngh a Tiên Khoa CNTT-DHBK TPHCM (1) Ta ch ng minh: {f = (i+1)* n ∧ i ≥ 0} while i > begin f := f * i; i := i – 1; end {f = n!} 11 Ng Ngh a Tiên (2) Ta ch ng minh {f = i* *n ∧ i -1 ≥ 0} i := i – 1; {f = (i+1)* *n ∧ i ≥ 0} Áp d ng L3 ta d dàng cm (2) (3) Ta ch ng minh {f = (i+1)* *n ∧ i -1 ≥ 0} f := f * i; {f = i* *n ∧ i -1 ≥ 0} Áp d ng L3 ta xác đ nh ti n u ki n c a f := f * i f * i = i * * n ∧ i -1 ≥ ≡ f = (i+1)* * n ∧ i -1 ≥ Áp d ng L2 ta cm (3) Khoa CNTT-DHBK TPHCM Áp d ng L4 cho (2) (3) ta đ c: {f = (i+1)* *n ∧ i -1 ≥ 0} f := f*i; i := i-1 {f = (i+1)* *n ∧ i ≥ 0} G i P = {f = (i+1)* n ∧ i ≥ 0} B = i > 0, ta có P ∧ B → {f = (i+1)* *n ∧ i -1 ≥ 0}, theo L2 ta đ c {P ∧ B} f := f*i; i := i-1 {P} Áp d ng L7 cho phát bi u while, ta có {P} while B begin end {P ∧ ¬B} Mà P ∧ ¬B = (f = (i+1)* *n ∧ i ≥ 0) ∧ i ≤ → f = (i+1)* *n ∧ i = đa → f = n! Áp d ng L1, ta cm (1) 12 Ng Ngh a Tiên Khoa CNTT-DHBK TPHCM Áp d ng L3 cho f := ta d dàng ch ng minh {1 = (i+1)* * n ∧ i ≥ 0} f := {f = (i+1)* * n ∧ i ≥ 0} (4) Áp d ng L3 cho i := n ta c ng cm đ c {1 = ∧ n ≥ 0} i := n {1 = (i+1)* * n ∧ i ≥ 0} Vì = true nên {n ≥ 0} → {1 = ∧ n ≥ 0} V y theo L2 ta có {n ≥ 0} i := n {1 = (i+1)* * n ∧ i ≥ 0} (5) Áp d ng L4 cho (4), (5) (1) ta có u c n ch ng minh 13 Ng Ngh a Tiên Khoa CNTT-DHBK TPHCM ÚNG N TOÀN PH N L8: if {P ∧ B ∧ ≤ E = E0} C {P ∧ ≤ E < E0} then {P ∧ ≤ E }while B C {P ∧ ¬B} E: an integer expression called variant 14 Ng Ngh a Tiên Khoa CNTT-DHBK TPHCM Ví d { n ≥ 0} f := 1; i := 0; while (n ≠ i) { i := i + 1; f := f * i; } { f = n!} Ta cm (1): {f = i! ∧ ≤ n – i} while (n ≠ i) { i := i + 1; f := f * i; } { f = n!} f = i! ∧ n ≠ i ∧ ≤ n – i = E0 ? 15 f = i! ∧ ≤ n – i – < E0 Ng Ngh a Tiên cm (1), ta cm (2): {f = i! ∧ n ≠ i ∧ ≤ n – i = E0} i := i + 1; f := f * i; { f = i! ∧ ≤ n – i < E0} Mà theo L3, ta có {f = i! ∧ ≤ n – i – < E0} i := i + 1; {f*i = i! ∧ ≤ n – i < E0} f := f * i; { f = i! ∧ ≤ n – i < E0} Khoa CNTT-DHBK TPHCM KI M CH NG KHI TH C THI #include assert(n >= 0); i := n; f := 1; while i > begin f := f * i ; i := i -1; end 16 Ng Ngh a Tiên if (n < 0) throw Exception; i := n; f := 1; while i > begin f := f * i ; i := i -1; end Khoa CNTT-DHBK TPHCM ... n! nên theo L1 ta có u c n ph i ch ng minh Ng Ngh a Tiên Khoa CNTT-DHBK TPHCM CH NG MINH CH NG TRÌNH {P} Prog {Q} úng đ n b ph n: n u P đúng, sau th c hi n Prog Q úng đ n toàn ph n: Prog đ n

Ngày đăng: 11/03/2016, 14:40

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN