$ include "seed7_05.s7i"; const func array bitset: powerSet (in bitset: baseSet) is func result var array bitset: pwrSet is [] (bitset.value); local var integer: element is 0; var integer: index is 0; var bitset: aSet is bitset.value; begin for element range baseSet do for key index range pwrSet do aSet := pwrSet[index]; if element not in aSet then incl(aSet, element); pwrSet &:= aSet; end if; end for; end for; end func; const proc: main is func local var bitset: aSet is bitset.value; begin for aSet range powerSet({1, 2, 3, 4}) do writeln(aSet); end for; end func;