class set declare internal_list def set() internal_list = list() end def set(list) internal_list = list end def append(value) if not value in internal_list internal_list.append(value) end return this end def contains(value) return value in internal_list end def difference(other) diff = list() for value in this.internal_list diff.append(value) end for i in range(len(diff) - 1, 0) if diff[i] in other.internal_list diff.remove(i) end end return new(set, diff) end def operator=(other) for value in other.internal_list if not value in this.internal_list return false end end return true end def intersection(other) intersect = list() for value in this.internal_list if other.contains(value) intersect.append(value) end end return new(set, intersect) end def subset(other) for value in this.internal_list if not value in other.internal_list return false end end return true end def union(other) u = list() for value in this.internal_list u.append(value) end for value in other.internal_list if not value in u u.append(value) end end return new(set, u) end def toString() return str(this.internal_list) end end