Step
*
of Lemma
finite-type-union
∀[A,B:Type].  (finite-type(A) 
⇒ finite-type(B) 
⇒ finite-type(A + B))
BY
{ ((((((Auto THEN (All (RWO "finite-type-iff-list"))) THENA Auto)
      THEN ExRepD
      THEN (InstConcl [⌜map(λx.(inl x);L1) @ map(λx.(inr x );L)⌝])⋅
      THEN Auto
      THEN RWO "member_append" 0)
     THENA Auto
     )
    THEN RWO "member_map" 0
    )
   THENA (Reduce 0 THEN Auto)
   ) }
1
1. [A] : Type
2. [B] : Type
3. L1 : A List
4. ∀x:A. (x ∈ L1)
5. L : B List
6. ∀x:B. (x ∈ L)
7. x : A + B@i
⊢ (∃y:A. ((y ∈ L1) ∧ (x = ((λx.(inl x)) y) ∈ (A + B)))) ∨ (∃y:B. ((y ∈ L) ∧ (x = ((λx.(inr x )) y) ∈ (A + B))))
Latex:
Latex:
\mforall{}[A,B:Type].    (finite-type(A)  {}\mRightarrow{}  finite-type(B)  {}\mRightarrow{}  finite-type(A  +  B))
By
Latex:
((((((Auto  THEN  (All  (RWO  "finite-type-iff-list")))  THENA  Auto)
        THEN  ExRepD
        THEN  (InstConcl  [\mkleeneopen{}map(\mlambda{}x.(inl  x);L1)  @  map(\mlambda{}x.(inr  x  );L)\mkleeneclose{}])\mcdot{}
        THEN  Auto
        THEN  RWO  "member\_append"  0)
      THENA  Auto
      )
    THEN  RWO  "member\_map"  0
    )
  THENA  (Reduce  0  THEN  Auto)
  )
Home
Index