Is there any code in the FriCAS library to generate a power set from a set?
I could not find any so I wrote my own (see below). I probably need
custom code anyway to sort and filter the results.
My problem is that the only way I could work out how to do this is to
customise the list.spad code like this:
https://github.com/martinbaker/fricasAlgTop/blob/topology/list.spad#L295
Is there some way I can make a more standalone version of the following
code?
What I would like to do is replace 'S' with 'Type' but I don't think
that would work would it?
localPowerSets(j:List(S),filter:List(S)->Boolean): List(List S) ==
empty? j => list []
Sm := localPowerSets(rest j,filter)
Sn: List List S := []
for x in Sm repeat
if filter(x) then
Sn := cons(reverse cons(first j, x),Sn)
append(Sn, Sm)
gradeAndOrder(a:List S,b:List S) : Boolean ==
if #a < #b then return true
if #a > #b then return false
for ia in a for ib in b repeat
if S has OrderedSet then
if ia < ib then return true
if ia > ib then return false
false
powerSetFiltered(j:List(S),filter:List(S)->Boolean):List List S ==
map(reverse,sort(gradeAndOrder,localPowerSets(j,filter)))
powerSet(j:List(S)):List List S ==
powerSetFiltered(j,(x)+-> true)
--
You received this message because you are subscribed to the Google Groups "FriCAS -
computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/fricas-devel/4321fd4d-ea7d-4aad-9faf-7c34557047e0%40martinb.com.