# Re: [tlaplus] Re: Removing "equivalents" from a set

Hi, thanks for the answer! I haven't been able to get your solution to work, and I don't know hot to troubleshoot it yet. I have decided to abandon this part of the model for simplicity. I hope you didn't spend too much time on this! I will take another look at it after i get more familiar with recursive actions.

On Friday, April 19, 2019 at 12:12:07 AM UTC+2, Steve Glaser wrote:
I think you want something like:

RECURSIVE union_set2(_, _)

union_set2(x, y) ==

IF x = {}

THEN y

ELSE CHOOSE a \in x :

IF \E b \in y : UNION a = UNION b

THEN union_set2(x \ a, y)

ELSE union_set2(x \ a, y \cup {a})

union_set(x) == union_set2(x, {})

Steve Glaser
sgl...@xxxxxxxxxxx
On Apr 18, 2019, 3:01 PM -0700, Leslie Lamport <tlap...@xxxxxxxxx>, wrote:
In constructing the second set, you have removed from s the element {{3}, {2,4}}  the union of the elements of that set is the set {2,3,4}.  That set is not in s, since s has no 3-element sets, so it does not satisfy your condition for an element to be removed from s.  Therefore, what you have written makes no sense to me.

You seem to want to define an operator Op such that Op(s) equals the second set.  By talking about "removing elements", I presume you meant that Op(s) should be a subset of s.  Hence, I believe that the definition you want should be expressible as

Op(t) == CHOOSE u \in SUBSET t : P(t, u)

for some formula  P(t, u).  This definition of Op may not satisfy you because to evaluate it, TLC must compute all elements of SUBSET t and evaluate P(t,u) for all the elements u of SUBSET t until it finds one that evaluates to TRUE.  However, it will at least tell people what operator Op you want.

--
You received this message because you are subscribed to the Google Groups "tlaplus" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tla...@googlegroups.com.
To post to this group, send email to tla...@xxxxxxxxxxxxxxxx.