Nuprl Lemma : hdf-compose2-transformation2
∀[L1,L2,G1,G2,init,S:Top]. ∀[m1,m2:ℕ].
(fix((λmk-hdf.(inl (λa.cbva_seq(L1[a]; λg.<mk-hdf, G1[g]>; m1)))))
o (fix((λmk-hdf,s. (inl (λa.cbva_seq(L2[s;a]; λg.<mk-hdf S[g;s], G2[g;s]>; m2))))) init)
~ fix((λmk-hdf,s. (inl (λa.cbva_seq(λn.if n <z m1 then L1[a] n
if n <z m1 + m2 then mk_lambdas(L2[s;a] (n - m1);m1)
else mk_lambdas_fun(λg1.mk_lambdas_fun(λg2.∪f∈G1[g1].∪b∈G2[g2;s].f b;m2);m1)
fi ; λg.<mk-hdf S[partial_ap_gen(g;(m1 + m2) + 1;m1;m2);s]
, select_fun_last(g;m1 + m2)
>; (m1 + m2) + 1)))))
init)
Proof
Definitions occuring in Statement :
hdf-compose2: X o Y
,
nat: ℕ
,
ifthenelse: if b then t else f fi
,
lt_int: i <z j
,
uall: ∀[x:A]. B[x]
,
top: Top
,
so_apply: x[s1;s2]
,
so_apply: x[s]
,
apply: f a
,
fix: fix(F)
,
lambda: λx.A[x]
,
pair: <a, b>
,
inl: inl x
,
subtract: n - m
,
add: n + m
,
natural_number: $n
,
sqequal: s ~ t
,
bag-combine: ∪x∈bs.f[x]
,
select_fun_last: select_fun_last(g;m)
,
partial_ap_gen: partial_ap_gen(g;n;s;m)
,
mk_lambdas: mk_lambdas(F;m)
,
mk_lambdas_fun: mk_lambdas_fun(F;m)
,
cbva_seq: cbva_seq(L; F; m)
Lemmas :
lifting-strict-spread,
has-value_wf_base,
base_wf,
is-exception_wf,
lifting-strict-less,
top_wf,
lifting-strict-decide,
strict4-spread,
lifting-strict-callbyvalueall,
nat_properties,
less_than_transitivity1,
less_than_irreflexivity,
ge_wf,
less_than_wf,
strictness-apply,
bottom-sqle,
decidable__le,
subtract_wf,
false_wf,
not-ge-2,
less-iff-le,
condition-implies-le,
minus-one-mul,
zero-add,
minus-add,
minus-minus,
add-associates,
add-swap,
add-commutes,
add_functionality_wrt_le,
add-zero,
le-add-cancel,
fun_exp_unroll,
le_weakening2,
le_wf,
eq_int_wf,
bool_wf,
eqtt_to_assert,
assert_of_eq_int,
le_weakening,
eqff_to_assert,
equal_wf,
bool_cases_sqequal,
subtype_base_sq,
bool_subtype_base,
assert-bnot,
neg_assert_of_eq_int,
nat_wf,
cbva_seq-spread,
cbva_seq_extend,
cbva_seq-combine,
not-le-2,
not-equal-2,
sq_stable__le,
lifting-strict-int_eq,
general_add_assoc,
cbva_seq-list-case2,
select_fun_last_partial_ap_gen1,
partial_ap_of_partial_ap_gen1,
set_subtype_base,
int_subtype_base
\mforall{}[L1,L2,G1,G2,init,S:Top]. \mforall{}[m1,m2:\mBbbN{}].
(fix((\mlambda{}mk-hdf.(inl (\mlambda{}a.cbva\_seq(L1[a]; \mlambda{}g.<mk-hdf, G1[g]> m1)))))
o (fix((\mlambda{}mk-hdf,s. (inl (\mlambda{}a.cbva\_seq(L2[s;a]; \mlambda{}g.<mk-hdf S[g;s], G2[g;s]> m2))))) init)
\msim{} fix((\mlambda{}mk-hdf,s. (inl (\mlambda{}a.cbva\_seq(\mlambda{}n.if n <z m1 then L1[a] n
if n <z m1 + m2 then mk\_lambdas(L2[s;a] (n - m1);m1)
else mk\_lambdas\_fun(\mlambda{}g1.mk\_lambdas\_fun(\mlambda{}g2.\mcup{}f\mmember{}G1[g1].
\mcup{}b\mmember{}G2[g2;s].
f b;m2);m1)
fi ; \mlambda{}g.<mk-hdf S[partial\_ap\_gen(g;(m1 + m2) + 1;m1;m2);s]
, select\_fun\_last(g;m1 + m2)
> (m1 + m2) + 1)))))
init)
Date html generated:
2015_07_17-AM-08_15_20
Last ObjectModification:
2015_06_19-PM-00_56_04
Home
Index