diff -r d0e3f790bd73 -r 15f7a6745cce doc-src/TutorialI/Inductive/AB.thy --- a/doc-src/TutorialI/Inductive/AB.thy Thu Jun 14 00:48:42 2007 +0200 +++ b/doc-src/TutorialI/Inductive/AB.thy Thu Jun 14 07:27:55 2007 +0200 @@ -68,13 +68,13 @@ *} lemma correctness: - "(w \ S \ size[x\w. x=a] = size[x\w. x=b]) \ - (w \ A \ size[x\w. x=a] = size[x\w. x=b] + 1) \ - (w \ B \ size[x\w. x=b] = size[x\w. x=a] + 1)" + "(w \ S \ size[x\w. x=a] = size[x\w. x=b]) \ + (w \ A \ size[x\w. x=a] = size[x\w. x=b] + 1) \ + (w \ B \ size[x\w. x=b] = size[x\w. x=a] + 1)" txt{*\noindent These propositions are expressed with the help of the predefined @{term -filter} function on lists, which has the convenient syntax @{text"[x\xs. P +filter} function on lists, which has the convenient syntax @{text"[x\xs. P x]"}, the list of all elements @{term x} in @{term xs} such that @{prop"P x"} holds. Remember that on lists @{text size} and @{text length} are synonymous. @@ -116,8 +116,8 @@ *} lemma step1: "\i < size w. - \(int(size[x\take (i+1) w. P x])-int(size[x\take (i+1) w. \P x])) - - (int(size[x\take i w. P x])-int(size[x\take i w. \P x]))\ \ 1" + \(int(size[x\take (i+1) w. P x])-int(size[x\take (i+1) w. \P x])) + - (int(size[x\take i w. P x])-int(size[x\take i w. \P x]))\ \ 1" txt{*\noindent The lemma is a bit hard to read because of the coercion function @@ -141,8 +141,8 @@ *} lemma part1: - "size[x\w. P x] = size[x\w. \P x]+2 \ - \i\size w. size[x\take i w. P x] = size[x\take i w. \P x]+1" + "size[x\w. P x] = size[x\w. \P x]+2 \ + \i\size w. size[x\take i w. P x] = size[x\take i w. \P x]+1" txt{*\noindent This is proved by @{text force} with the help of the intermediate value theorem, @@ -161,10 +161,10 @@ lemma part2: - "\size[x\take i w @ drop i w. P x] = - size[x\take i w @ drop i w. \P x]+2; - size[x\take i w. P x] = size[x\take i w. \P x]+1\ - \ size[x\drop i w. P x] = size[x\drop i w. \P x]+1" + "\size[x\take i w @ drop i w. P x] = + size[x\take i w @ drop i w. \P x]+2; + size[x\take i w. P x] = size[x\take i w. \P x]+1\ + \ size[x\drop i w. P x] = size[x\drop i w. \P x]+1" by(simp del: append_take_drop_id) text{*\noindent @@ -191,9 +191,9 @@ *} theorem completeness: - "(size[x\w. x=a] = size[x\w. x=b] \ w \ S) \ - (size[x\w. x=a] = size[x\w. x=b] + 1 \ w \ A) \ - (size[x\w. x=b] = size[x\w. x=a] + 1 \ w \ B)" + "(size[x\w. x=a] = size[x\w. x=b] \ w \ S) \ + (size[x\w. x=a] = size[x\w. x=b] + 1 \ w \ A) \ + (size[x\w. x=b] = size[x\w. x=a] + 1 \ w \ B)" txt{*\noindent The proof is by induction on @{term w}. Structural induction would fail here @@ -237,9 +237,9 @@ apply(clarify) txt{*\noindent This yields an index @{prop"i \ length v"} such that -@{prop[display]"length [x\take i v . x = a] = length [x\take i v . x = b] + 1"} +@{prop[display]"length [x\take i v . x = a] = length [x\take i v . x = b] + 1"} With the help of @{thm[source]part2} it follows that -@{prop[display]"length [x\drop i v . x = a] = length [x\drop i v . x = b] + 1"} +@{prop[display]"length [x\drop i v . x = a] = length [x\drop i v . x = b] + 1"} *} apply(drule part2[of "\x. x=a", simplified])