Step
*
of Lemma
fpf-join_wf
∀[A:Type]. ∀[B:A ─→ Type]. ∀[f,g:a:A fp-> B[a]]. ∀[eq:EqDecider(A)].  (f ⊕ g ∈ a:A fp-> B[a])
BY
{ (Unfolds ``fpf fpf-join`` 0
   THEN Auto
   THEN Try ((Unfold `fpf-dom` 0 THEN Auto))
   THEN (All (\i. (Fold `fpf` i THEN Complete (Auto))))⋅
   THEN (AssertBY ⌈f ∈ a:A fp-> B[a]⌉ (All (\i. (Fold `fpf` i THEN Complete (Auto)))))⋅
   THEN (AssertBY ⌈g ∈ a:A fp-> B[a]⌉ (All (\i. (Fold `fpf` i THEN Complete (Auto)))))⋅) }
1
1. A : Type
2. B : A ─→ Type
3. f : d:A List × (a:{a:A| (a ∈ d)}  ─→ B[a])
4. g : d:A List × (a:{a:A| (a ∈ d)}  ─→ B[a])
5. eq : EqDecider(A)
6. ∀a:A. ((a ∈ (fst(f)) @ filter(λa.(¬ba ∈ dom(f));fst(g))) ∈ Type)
7. a : A@i
8. (a ∈ (fst(f)) @ filter(λa.(¬ba ∈ dom(f));fst(g)))@i
9. f ∈ a:A fp-> B[a]
10. g ∈ a:A fp-> B[a]
⊢ f(a)?g(a) ∈ B[a]
Latex:
\mforall{}[A:Type].  \mforall{}[B:A  {}\mrightarrow{}  Type].  \mforall{}[f,g:a:A  fp->  B[a]].  \mforall{}[eq:EqDecider(A)].    (f  \moplus{}  g  \mmember{}  a:A  fp->  B[a])
By
(Unfolds  ``fpf  fpf-join``  0
  THEN  Auto
  THEN  Try  ((Unfold  `fpf-dom`  0  THEN  Auto))
  THEN  (All  (\mbackslash{}i.  (Fold  `fpf`  i  THEN  Complete  (Auto))))\mcdot{}
  THEN  (AssertBY  \mkleeneopen{}f  \mmember{}  a:A  fp->  B[a]\mkleeneclose{}  (All  (\mbackslash{}i.  (Fold  `fpf`  i  THEN  Complete  (Auto)))))\mcdot{}
  THEN  (AssertBY  \mkleeneopen{}g  \mmember{}  a:A  fp->  B[a]\mkleeneclose{}  (All  (\mbackslash{}i.  (Fold  `fpf`  i  THEN  Complete  (Auto)))))\mcdot{})
Home
Index