Step * 2 1 of Lemma fpf-join-assoc


1. Type
2. A ⟶ Type
3. eq EqDecider(A)
4. List
5. f1 a:{a:A| (a ∈ d)}  ⟶ B[a]
6. d1 List
7. g1 a:{a:A| (a ∈ d1)}  ⟶ B[a]
8. d2 List
9. h1 a:{a:A| (a ∈ d2)}  ⟶ B[a]
10. {a:A| (a ∈ filter(λa.(¬ba ∈b d);d1 filter(λa.(¬ba ∈b d1);d2)))} 
⊢ if x ∈b then f1 x
if x ∈b d1 then g1 x
else h1 x
fi 
if x ∈b filter(λa.(¬ba ∈b d);d1) then if x ∈b then f1 else g1 fi  else h1 fi 
∈ B[x]
BY
(D -1
   THEN (RWW "member_append member_filter" (-1) THENA Auto)
   THEN Reduce -1
   THEN (RWO "deq-member-append" THENA Auto)
   THEN AutoSplit
   THEN -1
   THEN Try (Trivial)
   THEN -1
   THEN -2
   THEN (RW assert_pushdownC (-2) THENA Auto)
   THEN RepeatFor (AutoSplit)) }

1
1. Type
2. A ⟶ Type
3. eq EqDecider(A)
4. List
5. f1 a:{a:A| (a ∈ d)}  ⟶ B[a]
6. d1 List
7. g1 a:{a:A| (a ∈ d1)}  ⟶ B[a]
8. d2 List
9. h1 a:{a:A| (a ∈ d2)}  ⟶ B[a]
10. A
11. ¬(x ∈ filter(λa.(¬ba ∈b d);d1))
12. ¬(x ∈ d)
13. (x ∈ d1)
14. True
15. (x ∈ d1)
⊢ (g1 x) (h1 x) ∈ B[x]

2
1. Type
2. A ⟶ Type
3. eq EqDecider(A)
4. List
5. f1 a:{a:A| (a ∈ d)}  ⟶ B[a]
6. d1 List
7. g1 a:{a:A| (a ∈ d1)}  ⟶ B[a]
8. d2 List
9. h1 a:{a:A| (a ∈ d2)}  ⟶ B[a]
10. A
11. ¬(x ∈ d1)
12. ¬(x ∈ d)
13. (x ∈ d2) ∧ (x ∈ d1))
14. True
15. (x ∈ filter(λa.(¬ba ∈b d);d1))
⊢ (h1 x) (g1 x) ∈ B[x]


Latex:


Latex:

1.  A  :  Type
2.  B  :  A  {}\mrightarrow{}  Type
3.  eq  :  EqDecider(A)
4.  d  :  A  List
5.  f1  :  a:\{a:A|  (a  \mmember{}  d)\}    {}\mrightarrow{}  B[a]
6.  d1  :  A  List
7.  g1  :  a:\{a:A|  (a  \mmember{}  d1)\}    {}\mrightarrow{}  B[a]
8.  d2  :  A  List
9.  h1  :  a:\{a:A|  (a  \mmember{}  d2)\}    {}\mrightarrow{}  B[a]
10.  x  :  \{a:A|  (a  \mmember{}  d  @  filter(\mlambda{}a.(\mneg{}\msubb{}a  \mmember{}\msubb{}  d);d1  @  filter(\mlambda{}a.(\mneg{}\msubb{}a  \mmember{}\msubb{}  d1);d2)))\} 
\mvdash{}  if  x  \mmember{}\msubb{}  d  then  f1  x
if  x  \mmember{}\msubb{}  d1  then  g1  x
else  h1  x
fi 
=  if  x  \mmember{}\msubb{}  d  @  filter(\mlambda{}a.(\mneg{}\msubb{}a  \mmember{}\msubb{}  d);d1)  then  if  x  \mmember{}\msubb{}  d  then  f1  x  else  g1  x  fi    else  h1  x  fi 


By


Latex:
(D  -1
  THEN  (RWW  "member\_append  member\_filter"  (-1)  THENA  Auto)
  THEN  Reduce  -1
  THEN  (RWO  "deq-member-append"  0  THENA  Auto)
  THEN  AutoSplit
  THEN  D  -1
  THEN  Try  (Trivial)
  THEN  D  -1
  THEN  D  -2
  THEN  (RW  assert\_pushdownC  (-2)  THENA  Auto)
  THEN  RepeatFor  2  (AutoSplit))




Home Index