Step
*
2
1
of Lemma
fpf-join-assoc
1. A : Type
2. B : A ⟶ Type
3. eq : EqDecider(A)
4. d : A List
5. f1 : a:{a:A| (a ∈ d)}  ⟶ B[a]
6. d1 : A List
7. g1 : a:{a:A| (a ∈ d1)}  ⟶ B[a]
8. d2 : A List
9. h1 : a:{a:A| (a ∈ d2)}  ⟶ B[a]
10. x : {a:A| (a ∈ d @ filter(λa.(¬ba ∈b d);d1 @ filter(λa.(¬ba ∈b d1);d2)))} 
⊢ if x ∈b d then f1 x
if x ∈b d1 then g1 x
else h1 x
fi 
= if x ∈b d @ filter(λa.(¬ba ∈b d);d1) then if x ∈b d then f1 x else g1 x fi  else h1 x fi 
∈ B[x]
BY
{ (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)) }
1
1. A : Type
2. B : A ⟶ Type
3. eq : EqDecider(A)
4. d : A List
5. f1 : a:{a:A| (a ∈ d)}  ⟶ B[a]
6. d1 : A List
7. g1 : a:{a:A| (a ∈ d1)}  ⟶ B[a]
8. d2 : A List
9. h1 : a:{a:A| (a ∈ d2)}  ⟶ B[a]
10. x : 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. A : Type
2. B : A ⟶ Type
3. eq : EqDecider(A)
4. d : A List
5. f1 : a:{a:A| (a ∈ d)}  ⟶ B[a]
6. d1 : A List
7. g1 : a:{a:A| (a ∈ d1)}  ⟶ B[a]
8. d2 : A List
9. h1 : a:{a:A| (a ∈ d2)}  ⟶ B[a]
10. x : 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