diff -r 4939494ed791 -r ce654b0e6d69 src/HOL/Hoare/Examples.thy --- a/src/HOL/Hoare/Examples.thy Tue Feb 13 14:24:50 2018 +0100 +++ b/src/HOL/Hoare/Examples.thy Thu Feb 15 12:11:00 2018 +0100 @@ -12,29 +12,29 @@ subsection \multiplication by successive addition\ lemma multiply_by_add: "VARS m s a b - {a=A & b=B} + {a=A \ b=B} m := 0; s := 0; - WHILE m~=a - INV {s=m*b & a=A & b=B} + WHILE m\a + INV {s=m*b \ a=A \ b=B} DO s := s+b; m := m+(1::nat) OD {s = A*B}" by vcg_simp lemma multiply_by_add_time: "VARS m s a b t - {a=A & b=B & t=0} + {a=A \ b=B \ t=0} m := 0; t := t+1; s := 0; t := t+1; - WHILE m~=a - INV {s=m*b & a=A & b=B & t = 2*m + 2} + WHILE m\a + INV {s=m*b \ a=A \ b=B \ t = 2*m + 2} DO s := s+b; t := t+1; m := m+(1::nat); t := t+1 OD {s = A*B \ t = 2*A + 2}" by vcg_simp lemma multiply_by_add2: "VARS M N P :: int - {m=M & n=N} + {m=M \ n=N} IF M < 0 THEN M := -M; N := -N ELSE SKIP FI; P := 0; WHILE 0 < M - INV {0 <= M & (EX p. p = (if m<0 then -m else m) & p*N = m*n & P = (p-M)*N)} + INV {0 \ M \ (\p. p = (if m<0 then -m else m) & p*N = m*n & P = (p-M)*N)} DO P := P+N; M := M - 1 OD {P = m*n}" apply vcg_simp @@ -42,11 +42,11 @@ done lemma multiply_by_add2_time: "VARS M N P t :: int - {m=M & n=N & t=0} + {m=M \ n=N \ t=0} IF M < 0 THEN M := -M; t := t+1; N := -N; t := t+1 ELSE SKIP FI; P := 0; t := t+1; WHILE 0 < M - INV {0 \ M & (EX p. p = (if m<0 then -m else m) & p*N = m*n & P = (p-M)*N & t \ 0 & t \ 2*(p-M)+3)} + INV {0 \ M & (\p. p = (if m<0 then -m else m) & p*N = m*n & P = (p-M)*N & t \ 0 & t \ 2*(p-M)+3)} DO P := P+N; t := t+1; M := M - 1; t := t+1 OD {P = m*n & t \ 2*abs m + 3}" apply vcg_simp @@ -283,11 +283,11 @@ lemma zero_search: "VARS A i {True} i := 0; - WHILE i < length A & A!i ~= key - INV {!j. j A!j ~= key} + WHILE i < length A & A!i \ key + INV {\j. j A!j \ key} DO i := i+1 OD {(i < length A --> A!i = key) & - (i = length A --> (!j. j < length A --> A!j ~= key))}" + (i = length A --> (\j. j < length A \ A!j \ key))}" apply vcg_simp apply(blast elim!: less_SucE) done @@ -295,11 +295,11 @@ lemma zero_search_time: "VARS A i t {t=0} i := 0; t := t+1; - WHILE i < length A & A!i ~= key - INV {(\j. j A!j ~= key) & i \ length A & t = i+1} + WHILE i < length A \ A!i \ key + INV {(\j. j A!j \ key) \ i \ length A \ t = i+1} DO i := i+1; t := t+1 OD - {(i < length A --> A!i = key) & - (i = length A --> (!j. j < length A --> A!j ~= key)) & t \ length A + 1}" + {(i < length A \ A!i = key) \ + (i = length A \ (\j. j < length A --> A!j \ key)) \ t \ length A + 1}" apply vcg_simp apply(blast elim!: less_SucE) done @@ -318,22 +318,22 @@ lemma Partition: -"[| leq == %A i. !k. k A!k <= pivot; - geq == %A i. !k. i pivot <= A!k |] ==> +"[| leq == \A i. \k. k A!k \ pivot; + geq == \A i. \k. i k pivot \ A!k |] ==> VARS A u l {0 < length(A::('a::order)list)} l := 0; u := length A - Suc 0; - WHILE l <= u - INV {leq A l & geq A u & u u + INV {leq A l \ geq A u \ u l\length A} + DO WHILE l < length A \ A!l \ pivot + INV {leq A l & geq A u \ u l\length A} DO l := l+1 OD; - WHILE 0 < u & pivot <= A!u - INV {leq A l & geq A u & u A!u + INV {leq A l & geq A u \ u l\length A} DO u := u - 1 OD; - IF l <= u THEN A := A[l := A!u, u := A!l] ELSE SKIP FI + IF l \ u THEN A := A[l := A!u, u := A!l] ELSE SKIP FI OD - {leq A u & (!k. u A!k = pivot) & geq A l}" + {leq A u & (\k. u k A!k = pivot) \ geq A l}" \ \expand and delete abbreviations first\ apply (simp) apply (erule thin_rl)+