object Driver extends App { import Sets._ println(contains(singletonSet(1), 1)) val s1 = add(add(add(emptySet,1),3),5) val s2 = add(add(add(emptySet,1),4),5) val s3 = add(add(emptySet,1),5) val s4 = add(add(emptySet,1),5) print("s1 = ") printSet(s1) print("s2 = ") printSet(s2) print("s3 = ") printSet(s3) print("s4 = ") printSet(s4) print("s1 union s2 = ") printSet(union(s1,s2)) print("s1 intersect s2 = ") printSet(intersect(s1,s2)) print("s1 difference s2 = ") printSet(difference(s1,s2)) print("s3 subset of s1: ") println(subset(s3,s1)) print("s1 subset of s3: ") println(subset(s1,s3)) print("s3 equal s4: ") println(equal(s3,s4)) print("size of s1: ") println(size(s1)) print("even numbers in s1 are ") printSet(filter(s1,x=>x%2==0)) print("even numbers in s2 are ") printSet(filter(s2,x=>x%2==0)) print("odd numbers in s2 are ") printSet(filter(s2,x=>x%2!=0)) print("forall x, x is even (s1) ") println(forall(s1,x=>x%2==0)) print("forall x, x is odd (s1) ") println(forall(s1,x=>x%2!=0)) print("exists x, x is even (s1) ") println(forall(s1,x=>x%2==0)) print("exists x, x is odd (s1) ") println(forall(s1,x=>x%2!=0)) print("squares of s1 ") printSet(map(s1,x=>x*x)) val ss = add(add(emptySet,-1000),0) println(forall(ss,x=>x<1000)) }