Step
*
2
of Lemma
concat-map-map-decide
1. T : Type
2. g : Top
3. u : T
4. v : T List
5. ∀[f:{x:T| (x ∈ v)} ⟶ (Top + Top)]
(concat(map(λx.map(λy.g[x;y];case f[x] of inl(m) => [m] | inr(x) => []);v))
~ map(λx.g[x;outl(f[x])];filter(λx.isl(f[x]);v)))
⊢ ∀[f:{x:T| (x ∈ [u / v])} ⟶ (Top + Top)]
(concat([map(λy.g[u;y];case f[u] of inl(m) => [m] | inr(x) => []) /
map(λx.map(λy.g[x;y];case f[x] of inl(m) => [m] | inr(x) => []);v)]) ~ map(λx.g[x;outl(f[x])];if isl(f[u])
then [u /
filter(λx.isl(f[x]);v)]
else filter(λx.isl(f[x]);v)
fi ))
BY
{ xxx(((D 0 THENA Auto) THEN (InstHyp [⌜f⌝] (-2))⋅) THENA Auto)xxx }
1
1. T : Type
2. g : Top
3. u : T
4. v : T List
5. ∀[f:{x:T| (x ∈ v)} ⟶ (Top + Top)]
(concat(map(λx.map(λy.g[x;y];case f[x] of inl(m) => [m] | inr(x) => []);v))
~ map(λx.g[x;outl(f[x])];filter(λx.isl(f[x]);v)))
6. f : {x:T| (x ∈ [u / v])} ⟶ (Top + Top)
7. concat(map(λx.map(λy.g[x;y];case f[x] of inl(m) => [m] | inr(x) => []);v))
~ map(λx.g[x;outl(f[x])];filter(λx.isl(f[x]);v))
⊢ concat([map(λy.g[u;y];case f[u] of inl(m) => [m] | inr(x) => []) /
map(λx.map(λy.g[x;y];case f[x] of inl(m) => [m] | inr(x) => []);v)]) ~ map(λx.g[x;outl(f[x])];if isl(f[u])
then [u / filter(λx.isl(f[x]);v)]
else filter(λx.isl(f[x]);v)
fi )
Latex:
Latex:
1. T : Type
2. g : Top
3. u : T
4. v : T List
5. \mforall{}[f:\{x:T| (x \mmember{} v)\} {}\mrightarrow{} (Top + Top)]
(concat(map(\mlambda{}x.map(\mlambda{}y.g[x;y];case f[x] of inl(m) => [m] | inr(x) => []);v))
\msim{} map(\mlambda{}x.g[x;outl(f[x])];filter(\mlambda{}x.isl(f[x]);v)))
\mvdash{} \mforall{}[f:\{x:T| (x \mmember{} [u / v])\} {}\mrightarrow{} (Top + Top)]
(concat([map(\mlambda{}y.g[u;y];case f[u] of inl(m) => [m] | inr(x) => []) /
map(\mlambda{}x.map(\mlambda{}y.g[x;y];case f[x] of inl(m) => [m] | inr(x) => []);v)])
\msim{} map(\mlambda{}x.g[x;outl(f[x])];if isl(f[u])
then [u / filter(\mlambda{}x.isl(f[x]);v)]
else filter(\mlambda{}x.isl(f[x]);v)
fi ))
By
Latex:
xxx(((D 0 THENA Auto) THEN (InstHyp [\mkleeneopen{}f\mkleeneclose{}] (-2))\mcdot{}) THENA Auto)xxx
Home
Index