levels
parent
f636a8d833
commit
68606aab99
@ -1,95 +0,0 @@
|
|||||||
import Adam.Metadata
|
|
||||||
import Mathlib
|
|
||||||
|
|
||||||
Game "Adam"
|
|
||||||
World "Function"
|
|
||||||
Level 10
|
|
||||||
|
|
||||||
Title "Inverse"
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
"
|
|
||||||
Eigentlich hast du nur beiläufig Robo gefragt, ob bijektiv nicht auch bedeute, dass
|
|
||||||
eine Inverse Funktion bestehe. Jetzt steht ihr aber schon seit einer halben Stunde rum
|
|
||||||
und der Gelehrte möchte wissen, wie das den genau ginge.
|
|
||||||
|
|
||||||
Offensichtlich kennt er diese Aussage als `Function.bijective_iff_has_inverse` aus seinen Büchern,
|
|
||||||
aber er möchte, dass du ihm das hier und jetzt nochmals von Grund auf zeigst.
|
|
||||||
"
|
|
||||||
|
|
||||||
open Function
|
|
||||||
set_option pp.rawOnError true
|
|
||||||
|
|
||||||
-- bijective_iff_has_inverse
|
|
||||||
Statement {A B : Type} (f : A → B) :
|
|
||||||
Bijective f ↔ ∃ g, LeftInverse g f ∧ RightInverse g f := by
|
|
||||||
Branch
|
|
||||||
exfalso
|
|
||||||
Hint "Das war eine blöde Idee
|
|
||||||
dd
|
|
||||||
|
|
||||||
ddds
|
|
||||||
"
|
|
||||||
Hint (hidden := true) "constructor"
|
|
||||||
constructor
|
|
||||||
Hint "intro h" -- does not show
|
|
||||||
intro h
|
|
||||||
Hint "rcases h with ⟨h₁, h₂⟩" -- shows too late: 1, 2 after
|
|
||||||
rcases h with ⟨h₁, h₂⟩
|
|
||||||
Hint (strict := true) "let g := fun x => (h₂ x).choose" -- shows correct + 1 after
|
|
||||||
let g := fun x => (h₂ x).choose
|
|
||||||
Hint "use g"
|
|
||||||
use g
|
|
||||||
Hint "constructor" -- does not show
|
|
||||||
constructor
|
|
||||||
Hint "intro x" -- does not show
|
|
||||||
intro x
|
|
||||||
Hint "simp" -- Error updating: Error fetching goals: Rpc error: InternalError: unknown universe metavariable '?_uniq.286465'. Try again.
|
|
||||||
simp
|
|
||||||
Hint "apply h₁"
|
|
||||||
apply h₁
|
|
||||||
Hint "apply Exists.choose_spec (h₂ (f x))"
|
|
||||||
apply Exists.choose_spec (h₂ (f x))
|
|
||||||
Hint "intro y" -- Error updating: Error fetching goals: Rpc error: InternalError: unknown universe metavariable '?_uniq.286465'. Try again.
|
|
||||||
intro y
|
|
||||||
Hint "simp"
|
|
||||||
simp
|
|
||||||
Hint "apply Exists.choose_spec (h₂ y)"
|
|
||||||
apply Exists.choose_spec (h₂ y)
|
|
||||||
Hint "intro ⟨g, h₁, h₂⟩"
|
|
||||||
intro ⟨g, h₁, h₂⟩
|
|
||||||
Hint "constructor"
|
|
||||||
constructor
|
|
||||||
Hint "intro a b hab"
|
|
||||||
intro a b hab
|
|
||||||
Hint (strict := true) "have h : g (f a) = g (f b)"
|
|
||||||
have h : g (f a) = g (f b)
|
|
||||||
Hint "apply congrArg"
|
|
||||||
apply congrArg
|
|
||||||
Hint "assumption"
|
|
||||||
assumption
|
|
||||||
Hint "rw [h₁, h₁] at h"
|
|
||||||
rw [h₁, h₁] at h
|
|
||||||
Hint "assumption"
|
|
||||||
assumption
|
|
||||||
Hint "intro x"
|
|
||||||
intro x
|
|
||||||
Hint "use g x"
|
|
||||||
use g x
|
|
||||||
Hint "rw [h₂]"
|
|
||||||
rw [h₂]
|
|
||||||
|
|
||||||
-- NewDefinition LeftInverse RightInverse
|
|
||||||
-- NewLemma Exists.choose Exists.choose_spec congrArg congrFun
|
|
||||||
-- DisabledLemma Function.bijective_iff_has_inverse
|
|
||||||
|
|
||||||
Hint (A B: Type) (f : A → B) (h : Bijective f) :
|
|
||||||
(∃ g, LeftInverse g f ∧ RightInverse g f) → Bijective f =>
|
|
||||||
"Test"
|
|
||||||
|
|
||||||
Conclusion
|
|
||||||
"Endlich entkommt ihr dem Tempel.
|
|
||||||
|
|
||||||
**Robo**: Da würden mich keine zehn Pferde nochmals hineinbringen!
|
|
||||||
|
|
||||||
**Du**: Von wegen Pferden, wie viele PS hat eigentlich unser Raumschiff?"
|
|
Loading…
Reference in New Issue