Nuprl Lemma : hdf-bind-gen-ap-eq
∀[A,B,C:Type]. ∀[X:hdataflow(A;B)]. ∀[Y:B ─→ hdataflow(A;C)]. ∀[hdfs:bag(hdataflow(A;C))]. ∀[a:A].
X (hdfs) >>= Y(a)
= <fst(X(a)) ([y∈bag-map(λP.(fst(P(a)));hdfs + bag-map(Y;snd(X(a))))|¬bhdf-halted(y)]) >>= Y
, ∪p∈bag-map(λP.P(a);hdfs + bag-map(Y;snd(X(a)))).snd(p)
>
∈ (hdataflow(A;C) × bag(C))
supposing valueall-type(C)
Proof
Definitions occuring in Statement :
hdf-bind-gen: X (hdfs) >>= Y
,
hdf-halted: hdf-halted(P)
,
hdf-ap: X(a)
,
hdataflow: hdataflow(A;B)
,
valueall-type: valueall-type(T)
,
bnot: ¬bb
,
uimplies: b supposing a
,
uall: ∀[x:A]. B[x]
,
pi1: fst(t)
,
pi2: snd(t)
,
lambda: λx.A[x]
,
function: x:A ─→ B[x]
,
pair: <a, b>
,
product: x:A × B[x]
,
universe: Type
,
equal: s = t ∈ T
,
bag-combine: ∪x∈bs.f[x]
,
bag-filter: [x∈b|p[x]]
,
bag-append: as + bs
,
bag-map: bag-map(f;bs)
,
bag: bag(T)
Lemmas :
hdf-bind-gen-ap,
hdf-bind-gen_wf,
hdf-ap_wf,
hdataflow_wf,
bag_wf,
bag-filter_wf,
bnot_wf,
hdf-halted_wf,
bag-map_wf,
bag-append_wf,
subtype_rel_bag,
assert_wf,
bag-combine_wf,
valueall-type_wf
\mforall{}[A,B,C:Type]. \mforall{}[X:hdataflow(A;B)]. \mforall{}[Y:B {}\mrightarrow{} hdataflow(A;C)]. \mforall{}[hdfs:bag(hdataflow(A;C))]. \mforall{}[a:A].
X (hdfs) >>= Y(a)
= <fst(X(a)) ([y\mmember{}bag-map(\mlambda{}P.(fst(P(a)));hdfs + bag-map(Y;snd(X(a))))|\mneg{}\msubb{}hdf-halted(y)]) >>= Y
, \mcup{}p\mmember{}bag-map(\mlambda{}P.P(a);hdfs + bag-map(Y;snd(X(a)))).snd(p)
>
supposing valueall-type(C)
Date html generated:
2015_07_17-AM-08_07_04
Last ObjectModification:
2015_01_27-PM-00_06_32
Home
Index