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
{ (let R h = Repeat ((((((RWW "member_append" h THENA Auto) THEN RWW "member_filter" h) THENA (Reduce 0 THEN Auto))
THEN All Reduce
THEN RW assert_pushdownC h)
THENA Auto
)) in
((((D (-1))
THEN (R (-1))
THEN Repeat (((SplitOnConclITE THENA (Auto THEN Try (DeqSubtype))) THEN (R (-1)) THEN Auto))
THEN Repeat ((SplitOrHyps THEN Auto))
THEN (D (-1)))
THENL [OrLeft; OrRight]
)
THEN Auto
))⋅ }
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
(let R h = Repeat ((((((RWW "member\_append" h THENA Auto) THEN RWW "member\_filter" h)
THENA (Reduce 0 THEN Auto)
)
THEN All Reduce
THEN RW assert\_pushdownC h)
THENA Auto
)) in
((((D (-1))
THEN (R (-1))
THEN Repeat (((SplitOnConclITE THENA (Auto THEN Try (DeqSubtype))) THEN (R (-1)) THEN Auto))
THEN Repeat ((SplitOrHyps THEN Auto))
THEN (D (-1)))
THENL [OrLeft; OrRight]
)
THEN Auto
))\mcdot{}
Home
Index