### Nuprl Lemma : bag-mapfilter-mapfilter

`∀[A,B,C:Type]. ∀[b:bag(A)]. ∀[P:A ⟶ 𝔹]. ∀[f:{x:A| ↑P[x]}  ⟶ B]. ∀[Q:B ⟶ 𝔹]. ∀[g:{x:B| ↑Q[x]}  ⟶ C].`
`  (bag-mapfilter(g;Q;bag-mapfilter(f;P;b)) = bag-mapfilter(g o f;λx.(P[x] ∧b Q[f[x]]);b) ∈ bag(C))`

Proof

Definitions occuring in Statement :  bag-mapfilter: `bag-mapfilter(f;P;bs)` bag: `bag(T)` compose: `f o g` band: `p ∧b q` assert: `↑b` bool: `𝔹` uall: `∀[x:A]. B[x]` so_apply: `x[s]` set: `{x:A| B[x]} ` lambda: `λx.A[x]` function: `x:A ⟶ B[x]` universe: `Type` equal: `s = t ∈ T`
Definitions unfolded in proof :  prop: `ℙ` so_apply: `x[s]` bag-mapfilter: `bag-mapfilter(f;P;bs)` member: `t ∈ T` uall: `∀[x:A]. B[x]` so_lambda: `λ2x.t[x]` true: `True` false: `False` assert: `↑b` bnot: `¬bb` guard: `{T}` sq_type: `SQType(T)` or: `P ∨ Q` exists: `∃x:A. B[x]` bfalse: `ff` ifthenelse: `if b then t else f fi ` band: `p ∧b q` uimplies: `b supposing a` and: `P ∧ Q` uiff: `uiff(P;Q)` btrue: `tt` it: `⋅` unit: `Unit` bool: `𝔹` implies: `P `` Q` all: `∀x:A. B[x]` compose: `f o g` rev_implies: `P `` Q` iff: `P `⇐⇒` Q` subtype_rel: `A ⊆r B` squash: `↓T` top: `Top` decidable: `Dec(P)` not: `¬A`
Lemmas referenced :  bag_wf bool_wf assert_wf istype-universe bag-filter_wf bag-map_wf bfalse_wf assert-bnot bool_subtype_base subtype_base_sq bool_cases_sqequal eqff_to_assert eqtt_to_assert iff_weakening_equal subtype_rel_self bag-filter-map2 true_wf squash_wf equal_wf istype-void bag-map-map decidable__assert istype-assert iff_imp_equal_bool btrue_wf istype-true bag-filter-filter2 subtype_rel_sets subtype_rel_bag
Rules used in proof :  universeEquality inhabitedIsType because_Cache axiomEquality isect_memberEquality_alt applyEquality universeIsType hypothesisEquality thin isectElimination sqequalHypSubstitution extract_by_obid setIsType functionIsType hypothesis sqequalRule cut introduction isect_memberFormation_alt sqequalReflexivity computationStep sqequalTransitivity sqequalSubstitution closedConclusion setEquality natural_numberEquality voidElimination independent_functionElimination cumulativity instantiate dependent_functionElimination promote_hyp equalityIsType1 dependent_pairFormation_alt dependent_set_memberEquality_alt rename setElimination independent_isectElimination productElimination equalitySymmetry equalityTransitivity equalityElimination unionElimination lambdaFormation_alt lambdaEquality_alt baseClosed imageMemberEquality imageElimination independent_pairFormation applyLambdaEquality hyp_replacement

Latex:
\mforall{}[A,B,C:Type].  \mforall{}[b:bag(A)].  \mforall{}[P:A  {}\mrightarrow{}  \mBbbB{}].  \mforall{}[f:\{x:A|  \muparrow{}P[x]\}    {}\mrightarrow{}  B].  \mforall{}[Q:B  {}\mrightarrow{}  \mBbbB{}].
\mforall{}[g:\{x:B|  \muparrow{}Q[x]\}    {}\mrightarrow{}  C].
(bag-mapfilter(g;Q;bag-mapfilter(f;P;b))  =  bag-mapfilter(g  o  f;\mlambda{}x.(P[x]  \mwedge{}\msubb{}  Q[f[x]]);b))

Date html generated: 2020_05_20-AM-08_01_36
Last ObjectModification: 2020_01_24-PM-06_25_28

Theory : bags

Home Index