Step
*
1
2
1
of Lemma
injection-inverse
1. [A] : Type
2. [B] : Type
3. f : A →⟶ B@i
4. a : A@i
5. n : ℕ@i
6. h : ℕn ⟶ A@i
7. Surj(ℕn;A;h)@i
8. ∀x,y:B.  Dec(x = y ∈ B)@i
9. test : b:B ⟶ (∃i:ℕn. ((f (h i)) = b ∈ B) + (¬(∃i:ℕn. ((f (h i)) = b ∈ B))))
⊢ ∃g:B ⟶ A. ∀a:A. ((g (f a)) = a ∈ A)
BY
{ (With ⌜λb.case test b of inl(e) => h (fst(e)) | inr(z) => a⌝ (D 0)⋅ THEN Reduce 0 THEN Auto) }
1
1. A : Type
2. B : Type
3. f : A →⟶ B@i
4. a : A@i
5. n : ℕ@i
6. h : ℕn ⟶ A@i
7. Surj(ℕn;A;h)@i
8. ∀x,y:B.  Dec(x = y ∈ B)@i
9. test : b:B ⟶ (∃i:ℕn. ((f (h i)) = b ∈ B) + (¬(∃i:ℕn. ((f (h i)) = b ∈ B))))
10. a@0 : A@i
⊢ case test (f a@0) of inl(e) => h (fst(e)) | inr(z) => a = a@0 ∈ A
Latex:
Latex:
1.  [A]  :  Type
2.  [B]  :  Type
3.  f  :  A  \mrightarrow{}{}\mrightarrow{}  B@i
4.  a  :  A@i
5.  n  :  \mBbbN{}@i
6.  h  :  \mBbbN{}n  {}\mrightarrow{}  A@i
7.  Surj(\mBbbN{}n;A;h)@i
8.  \mforall{}x,y:B.    Dec(x  =  y)@i
9.  test  :  b:B  {}\mrightarrow{}  (\mexists{}i:\mBbbN{}n.  ((f  (h  i))  =  b)  +  (\mneg{}(\mexists{}i:\mBbbN{}n.  ((f  (h  i))  =  b))))
\mvdash{}  \mexists{}g:B  {}\mrightarrow{}  A.  \mforall{}a:A.  ((g  (f  a))  =  a)
By
Latex:
(With  \mkleeneopen{}\mlambda{}b.case  test  b  of  inl(e)  =>  h  (fst(e))  |  inr(z)  =>  a\mkleeneclose{}  (D  0)\mcdot{}  THEN  Reduce  0  THEN  Auto)
Home
Index