 .permit(
.permit( )
)  
  
 
  に含まれるアイテム集合について、
に含まれるアイテム集合について、 中の少なくとも1つのアイテム集合に包含されていれば、その項を選択する。 より正確には、
中の少なくとも1つのアイテム集合に包含されていれば、その項を選択する。 より正確には、 を構成するある項
を構成するある項 から重みを省いたアイテム集合を
から重みを省いたアイテム集合を 、 同じく
、 同じく のアイテム集合を
のアイテム集合を とすると、
とすると、  を満たすような
を満たすような が少なくとも一つあれば、
が少なくとも一つあれば、 に対応する項
に対応する項 を
を から選択する。 ちなみに、条件式
から選択する。 ちなみに、条件式 を
を に変えれば restrict関数となる。
に変えれば restrict関数となる。 
> require 'zdd'
> a=ZDD::itemset("a")
> b=ZDD::itemset("b")
> c=ZDD::itemset("c")
> d=ZDD::itemset("d")
> x=5*a + 3*b + b*c + 2
> y=a + b + d
> z=a*c
> x.show
 5 a + b c + 3 b + 2
> y.show
 a + b + d
> z.show
 a c
# xに含まれる3つのアイテム集合a,bc,b,Φ(重み2の項で空のアイテム集合)のうち、
# yの3つのアイテム集合a,b,dのいずれかに包含されるアイテム集合は
# aとbとΦ(空のアイテム集合はいずれのアイテム集合にも含まれると考える)。
# よって、xからa,b,Φの項が選択される。
> x.permit(y).show
 5 a + 3 b + 2
# xに含まれる4つのアイテム集合a,bc,b,Φのうち、zのアイテム集合acに含まれるアイテム集合はaとΦ。
# よって、xからaとΦの項が選択される。
> x.permit(z).show
 5 a + 2
# xに含まれる3つのアイテム集合a,bc,b,Φのうち、アイテム集合cに含まれるアイテム集合はΦのみ。
# よって、xからΦの項が選択される。
> x.permit(c).show
 2
restrict : 上位集合の選択