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 case0 thenshow ?thesis by simp qed qed
have mono: "m ≤ n ==> f m ≤ f n"for m n :: nat proof (induct n) case0 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 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-10)
¤
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.