30 lines
673 B
Text
30 lines
673 B
Text
|
|
inductive imf {A B : Type} (f : A → B) : B → Type
|
|
| mk : ∀ (a : A), imf (f a)
|
|
|
|
definition g {A B : Type} {f : A → B} : ∀ {b : B}, imf f b → A
|
|
| .(f a) (imf.mk .f a) := a
|
|
|
|
example {A B : Type} (f : A → B) (a : A) : g (imf.mk f a) = a :=
|
|
rfl
|
|
|
|
definition v₁ : imf nat.succ 1 :=
|
|
(imf.mk nat.succ 0)
|
|
|
|
definition v₂ : imf (λ x, 1 + x) 1 :=
|
|
(imf.mk (λ x, 1 + x) 0)
|
|
|
|
example : g v₁ = 0 :=
|
|
rfl
|
|
|
|
example : g v₂ = 0 :=
|
|
rfl
|
|
|
|
lemma ex1 (A : Type) : ∀ (a b : A) (H : a = b), b = a
|
|
| a .a rfl := rfl
|
|
|
|
lemma ex2 (A : Type) : ∀ a b : A, a = b → b = a
|
|
| a .a (eq.refl .a) := rfl
|
|
|
|
lemma ex3 (A : Type) : ∀ a b : A, a = b → b = a
|
|
| a ._ (eq.refl ._) := rfl
|