Nuprl Definition : bag-parts
bag-parts(eq;bs) ==
  fix((λbag-parts,bs. let splits ⟵ bag-partitions(eq;bs)
                      in ⋃p∈splits.if bag-null(fst(p)) then {}
                         if bag-null(snd(p)) then {[fst(p)]}
                         else let parts ⟵ bag-parts (snd(p))
                              in bag-map(λL.[fst(p) / L];parts)
                         fi )) 
  bs
Definitions occuring in Statement : 
bag-partitions: bag-partitions(eq;bs)
, 
bag-combine: ⋃x∈bs.f[x]
, 
bag-null: bag-null(bs)
, 
bag-map: bag-map(f;bs)
, 
single-bag: {x}
, 
empty-bag: {}
, 
cons: [a / b]
, 
nil: []
, 
callbyvalueall: callbyvalueall, 
ifthenelse: if b then t else f fi 
, 
pi1: fst(t)
, 
pi2: snd(t)
, 
apply: f a
, 
fix: fix(F)
, 
lambda: λx.A[x]
Definitions occuring in definition : 
fix: fix(F)
, 
bag-partitions: bag-partitions(eq;bs)
, 
bag-combine: ⋃x∈bs.f[x]
, 
empty-bag: {}
, 
ifthenelse: if b then t else f fi 
, 
bag-null: bag-null(bs)
, 
single-bag: {x}
, 
nil: []
, 
callbyvalueall: callbyvalueall, 
apply: f a
, 
pi2: snd(t)
, 
bag-map: bag-map(f;bs)
, 
lambda: λx.A[x]
, 
cons: [a / b]
, 
pi1: fst(t)
FDL editor aliases : 
bag-parts
Latex:
bag-parts(eq;bs)  ==
    fix((\mlambda{}bag-parts,bs.  let  splits  \mleftarrow{}{}  bag-partitions(eq;bs)
                                            in  \mcup{}p\mmember{}splits.if  bag-null(fst(p))  then  \{\}
                                                  if  bag-null(snd(p))  then  \{[fst(p)]\}
                                                  else  let  parts  \mleftarrow{}{}  bag-parts  (snd(p))
                                                            in  bag-map(\mlambda{}L.[fst(p)  /  L];parts)
                                                  fi  )) 
    bs
Date html generated:
2016_05_15-PM-08_06_43
Last ObjectModification:
2015_09_23-AM-08_20_54
Theory : bags_2
Home
Index