text_raw‹🚫‹A question from ``Bundeswettbewerb Mathematik''. Original
pen-and-paper proof due to Herbert Ehler; Isabelle tactic script by Tobias
Nipkow.››
text‹ 🚫‹Problem.› Given some function‹f: ℕ→ℕ› such that ‹f (f n) < f (Suc n)› for all ‹n›. Demonstrate that ‹f›is the identity. ›
theorem assumes f_ax: "\n. f (f n) < f (Suc n)" shows"f n = n" proof (rule order_antisym) show ge: "n \ f n"for n proof (induct "f n" arbitrary: n rule: less_induct) case less show"n \ f n" proof (cases n) case (Suc m) from f_ax have"f (f m) < f n"by (simp only: Suc) with less have"f m \ f (f m)" . alsofrom f_ax have"\ < f n"by (simp only: Suc) finallyhave"f m < f n" . with less have"m \ f m" . alsonote‹… < f n› finallyhave"m < f n" . thenhave"n \ f n"by (simp only: Suc) thenshow ?thesis . next case 0 thenshow ?thesis by simp qed qed
have mono: "m \ n \ f m \ f n"for m n :: nat proof (induct n) case 0 thenhave"m = 0"by simp thenshow ?caseby simp next case (Suc n) from Suc.prems show"f m \ f (Suc n)" proof (rule le_SucE) assume"m \ n" with Suc.hyps have"f m \ f n" . alsofrom ge f_ax have"\ < f (Suc n)" by (rule le_less_trans) finallyshow ?thesis by simp next assume"m = Suc n" thenshow ?thesis by simp qed qed
show"f n \ n" proof - have"\ n < f n" proof assume"n < f n" thenhave"Suc n \ f n"by simp thenhave"f (Suc n) \ f (f n)"by (rule mono) alsohave"\ < f (Suc n)"by (rule f_ax) finallyhave"\ < \" . thenshow False .. qed thenshow ?thesis by simp qed qed
end
Messung V0.5
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.