Step
*
of Lemma
fpf-as-apply-alist
∀[A,B:Type]. ∀[f:a:A fp-> B]. ∀[eq:EqDecider(A)].
(f = <fpf-domain(f), λx.outl(apply-alist(eq;map(λx.<x, f(x)>;fpf-domain(f));x))> ∈ a:A fp-> B)
BY
{ (Auto
THEN DVar `f'
THEN RepUR ``fpf-domain fpf-ap fpf`` 0
THEN EqCD
THEN Auto
THEN (Assert map(λx.<x, f1 x>;d) ∈ (A × B) List BY
(InstLemma `map_wf` [⌈{a:A| (a ∈ d)} ⌉;⌈A × B⌉;⌈λx.<x, f1 x>⌉;⌈d⌉]⋅ THEN Auto))⋅) }
1
1. A : Type
2. B : Type
3. d : A List
4. f1 : a:{a:A| (a ∈ d)} ─→ B
5. eq : EqDecider(A)
6. map(λx.<x, f1 x>;d) ∈ (A × B) List
⊢ f1 = (λx.outl(apply-alist(eq;map(λx.<x, f1 x>;d);x))) ∈ (a:{a:A| (a ∈ d)} ─→ B)
Latex:
\mforall{}[A,B:Type]. \mforall{}[f:a:A fp-> B]. \mforall{}[eq:EqDecider(A)].
(f = <fpf-domain(f), \mlambda{}x.outl(apply-alist(eq;map(\mlambda{}x.<x, f(x)>fpf-domain(f));x))>)
By
(Auto
THEN DVar `f'
THEN RepUR ``fpf-domain fpf-ap fpf`` 0
THEN EqCD
THEN Auto
THEN (Assert map(\mlambda{}x.<x, f1 x>d) \mmember{} (A \mtimes{} B) List BY
(InstLemma `map\_wf` [\mkleeneopen{}\{a:A| (a \mmember{} d)\} \mkleeneclose{};\mkleeneopen{}A \mtimes{} B\mkleeneclose{};\mkleeneopen{}\mlambda{}x.<x, f1 x>\mkleeneclose{};\mkleeneopen{}d\mkleeneclose{}]\mcdot{} THEN Auto))\mcdot{})
Home
Index