Step
*
2
2
2
1
2
2
of Lemma
do-apply-p-first
1. A : Type
2. B : Type
3. u : A ⟶ (B + Top)
4. v : (A ⟶ (B + Top)) List
5. ∀[x:A]. do-apply(p-first(v);x) = do-apply(hd(filter(λf.can-apply(f;x);v));x) ∈ B supposing ↑can-apply(p-first(v);x)
6. x : A
7. ↑can-apply(p-first(v);x)
8. ¬↑can-apply(p-first([u]);x)
9. ¬↑can-apply(u;x)
10. do-apply(p-first(v);x) = do-apply(hd(filter(λf.can-apply(f;x);v));x) ∈ B
11. z : B
⊢ ↑can-apply(p-first([u / v]);x)
BY
{ xxxSubst' [u / v] ~ [u] @ v 0xxx }
1
.....equality.....
1. A : Type
2. B : Type
3. u : A ⟶ (B + Top)
4. v : (A ⟶ (B + Top)) List
5. ∀[x:A]. do-apply(p-first(v);x) = do-apply(hd(filter(λf.can-apply(f;x);v));x) ∈ B supposing ↑can-apply(p-first(v);x)
6. x : A
7. ↑can-apply(p-first(v);x)
8. ¬↑can-apply(p-first([u]);x)
9. ¬↑can-apply(u;x)
10. do-apply(p-first(v);x) = do-apply(hd(filter(λf.can-apply(f;x);v));x) ∈ B
11. z : B
⊢ [u / v] ~ [u] @ v
2
1. A : Type
2. B : Type
3. u : A ⟶ (B + Top)
4. v : (A ⟶ (B + Top)) List
5. ∀[x:A]. do-apply(p-first(v);x) = do-apply(hd(filter(λf.can-apply(f;x);v));x) ∈ B supposing ↑can-apply(p-first(v);x)
6. x : A
7. ↑can-apply(p-first(v);x)
8. ¬↑can-apply(p-first([u]);x)
9. ¬↑can-apply(u;x)
10. do-apply(p-first(v);x) = do-apply(hd(filter(λf.can-apply(f;x);v));x) ∈ B
11. z : B
⊢ ↑can-apply(p-first([u] @ v);x)
Latex:
Latex:
1. A : Type
2. B : Type
3. u : A {}\mrightarrow{} (B + Top)
4. v : (A {}\mrightarrow{} (B + Top)) List
5. \mforall{}[x:A]
do-apply(p-first(v);x) = do-apply(hd(filter(\mlambda{}f.can-apply(f;x);v));x)
supposing \muparrow{}can-apply(p-first(v);x)
6. x : A
7. \muparrow{}can-apply(p-first(v);x)
8. \mneg{}\muparrow{}can-apply(p-first([u]);x)
9. \mneg{}\muparrow{}can-apply(u;x)
10. do-apply(p-first(v);x) = do-apply(hd(filter(\mlambda{}f.can-apply(f;x);v));x)
11. z : B
\mvdash{} \muparrow{}can-apply(p-first([u / v]);x)
By
Latex:
xxxSubst' [u / v] \msim{} [u] @ v 0xxx
Home
Index