t_big_ops.mod 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. MODULE TBigOps;
  2. (* Sorted-range big sets: literals, ranges, copy, equality, operators,
  3. EXCL and signed SET OF INTEGER. *)
  4. TYPE
  5. CS = SET OF CARDINAL;
  6. IS = SET OF INTEGER;
  7. VAR
  8. a, b, c : CS;
  9. i : IS;
  10. ExitCode : INTEGER;
  11. BEGIN
  12. a := CS{1, 3, 5..7};
  13. b := CS{3, 7};
  14. c := a;
  15. i := IS{-5..-3, 2, 100000};
  16. IF (a = c) AND NOT (a = b) THEN
  17. c := a + b; (* {1,3,5,6,7} *)
  18. IF (1 IN c) AND (6 IN c) AND NOT (2 IN c) THEN
  19. c := a - b; (* {1,5,6} *)
  20. IF (1 IN c) AND NOT (3 IN c) AND (6 IN c) THEN
  21. c := a * b; (* {3,7} *)
  22. IF (3 IN c) AND NOT (5 IN c) THEN
  23. c := a / b; (* {1,5,6} *)
  24. EXCL(c, 5);
  25. IF (1 IN c) AND NOT (5 IN c) AND (6 IN c) THEN
  26. IF (-5 IN i) AND (-3 IN i) AND (2 IN i) AND (100000 IN i)
  27. AND NOT (-6 IN i) AND NOT (0 IN i) THEN
  28. ExitCode := 42
  29. ELSE ExitCode := 1
  30. END
  31. ELSE ExitCode := 1
  32. END
  33. ELSE ExitCode := 1
  34. END
  35. ELSE ExitCode := 1
  36. END
  37. ELSE ExitCode := 1
  38. END
  39. ELSE ExitCode := 1
  40. END
  41. END TBigOps.