library_add_set_components(action,C,SetType,Acc,[union-SetType,skip-SetType|Acc]) :-
SetType = set(set(_)) , C = 1 ; C = 2.
library_add_set_components(action,C,SetType,Acc,[set_subtraction-SetType,skip-SetType|Acc]) :-
SetType = set(set(_)) , C = 3 ; C = 4.
library_add_set_components(action,C,SetType,Acc,[intersection-SetType,skip-SetType|Acc]) :-
SetType = set(set(_)) , C = 5 ; C = 6.
library_add_set_components(action,C,SetType,Acc,[general_union-SetType,skip-SetType|Acc]) :-
SetType = set(set(_)) , C = 7 ; C = 8.
library_add_set_components(action,C,SetType,Acc,[general_intersection-SetType,skip-SetType|Acc]) :-
SetType = set(set(_)) , C = 9 ; C = 10.
library_add_set_components(action,C,SetType,Acc,[union-SetType,set_subtraction-SetType,general_union-SetType,general_intersection-SetType,skip-SetType|Acc]) :-
SetType = set(set(_)) , C = 11 ; C = 12.
library_add_set_components(action,C,SetType,Acc,[union-SetType,intersection-SetType,set_subtraction-SetType,skip-SetType|Acc]) :-
SetType = set(set(_)) , C = 13 ; C = 14.
library_add_set_components(action,_,SetType,Acc,[cartesian_product-SetType,union-SetType,set_subtraction-SetType,intersection-SetType,general_union-SetType,general_intersection-SetType,skip-SetType|Acc]) :-
SetType = set(set(_)).
library_add_set_components(action,C,SetType,Acc,[union-SetType,skip-SetType|Acc]) :-
SetType \= set(set(_)) , C = 1 ; C = 2.
library_add_set_components(action,C,SetType,Acc,[set_subtraction-SetType,skip-SetType|Acc]) :-
SetType \= set(set(_)) , C = 3 ; C = 4.
library_add_set_components(action,C,SetType,Acc,[intersection-SetType,skip-SetType|Acc]) :-
SetType \= set(set(_)) , C = 5 ; C = 6.
library_add_set_components(action,C,SetType,Acc,[union-SetType,set_subtraction-SetType,skip-SetType|Acc]) :-
SetType \= set(set(_)) , C = 7 ; C = 8.
library_add_set_components(action,C,SetType,Acc,[union-SetType,intersection-SetType,skip-SetType|Acc]) :-
SetType \= set(set(_)) , C = 9 ; C = 10.
library_add_set_components(action,C,SetType,Acc,[set_subtraction-SetType,intersection-SetType,skip-SetType|Acc]) :-
SetType \= set(set(_)) , C = 11 ; C = 12.
library_add_set_components(action,C,SetType,Acc,[union-SetType,set_subtraction-SetType,intersection-SetType,skip-SetType,max,min|Acc]) :-
SetType = set(integer) , C = 13 ; C = 14.
library_add_set_components(action,C,SetType,Acc,[union-SetType,set_subtraction-SetType,intersection-SetType,skip-SetType|Acc]) :-
SetType \= set(set(_)) , C = 13 ; C = 14.
library_add_set_components(action,C,SetType,Acc,[union-SetType,intersection-SetType,cartesian_product-SetType,skip-SetType|Acc]) :-
SetType \= set(set(_)) , C = 15 ; C = 16.
library_add_set_components(action,C,SetType,Acc,[union-SetType,set_subtraction-SetType,intersection-SetType,cartesian_product-SetType,skip-SetType|Acc]) :-
SetType \= set(set(_)) , C = 17 ; C = 18.
library_add_set_components(action,_,SetType,Acc,[union-SetType,set_subtraction-SetType,cartesian_product-SetType,intersection-SetType,skip-SetType,max,min|Acc]) :-
SetType = set(integer).
library_add_set_components(_,C,SetType,Acc,[member-SetType,not_member-SetType|Acc]) :- C = 1 ; C = 2.
library_add_set_components(_,C,SetType,Acc,[not_equal-SetType,equal-SetType|Acc]) :- C = 3 ; C = 4.
library_add_set_components(_,C,SetType,Acc,[member-SetType,not_equal-SetType|Acc]) :- C = 5 ; C = 6.
library_add_set_components(_,C,SetType,Acc,[member-SetType,equal-SetType|Acc]) :- C = 7 ; C = 8.
library_add_set_components(_,C,SetType,Acc,[not_member-SetType,not_equal-SetType|Acc]) :- C = 9 ; C = 10.
library_add_set_components(_,C,SetType,Acc,[not_member-SetType,equal-SetType|Acc]) :- C = 11 ; C = 12.
library_add_set_components(_,C,SetType,Acc,[member-SetType,not_member-SetType,equal-SetType,not_equal-SetType|Acc]) :- C = 13 ; C = 14.
library_add_set_components(_,C,SetType,Acc,[member-SetType,not_member-SetType,equal-SetType,not_equal-SetType,union-SetType,intersection-SetType,set_subtraction-SetType|Acc]) :- C = 15 ; C = 16.
library_add_set_components(_,C,SetType,Acc,[card-SetType,greater,equal-integer|Acc]) :- C = 17 ; C = 18.
library_add_set_components(_,C,SetType,Acc,[union-SetType,intersection-SetType,equal-SetType|Acc]) :- C = 19 ; C = 20.
library_add_set_components(_,C,SetType,Acc,[union-SetType,intersection-SetType,not_equal-SetType|Acc]) :- C = 21 ; C = 22.
library_add_set_components(_,C,SetType,Acc,[intersection-SetType,union-SetType,equal-SetType,not_equal-SetType|Acc]) :- C = 23 ; C = 24.
library_add_set_components(_,C,SetType,Acc,[intersection-SetType,union-SetType,set_subtraction-SetType,equal-SetType,not_equal-SetType|Acc]) :- C = 25 ; C = 26.
library_add_set_components(_,C,SetType,Acc,[member-SetType,not_member-SetType,card-SetType,greater,equal-integer,union-SetType|Acc]) :- C = 27 ; C = 28.
library_add_set_components(_,C,SetType,Acc,[member-SetType,not_member-SetType,card-SetType,greater,equal-integer,union-SetType,intersection-SetType,set_subtraction-SetType|Acc]) :- C = 29 ; C = 30.
library_add_set_components(_,C,SetType,Acc,[equal-SetType,member-SetType,subset-SetType,subset_strict-SetType,negation|Acc]) :- C = 31 ; C = 32.
library_add_set_components(_,C,SetType,Acc,[card-SetType,greater,equal-integer,member-SetType,subset_strict-SetType,subset-SetType,negation|Acc]) :-
SetType \= set(integer) , C = 33 ; C = 34.
library_add_set_components(_,C,SetType,Acc,[card-SetType,max,min,greater,equal-integer,member-SetType,subset_strict-SetType,subset-SetType,negation|Acc]) :-
SetType = set(integer) , C = 33 ; C = 34.
library_add_set_components(_,_,SetType,Acc,[max,min,card-SetType,greater,equal-integer,equal-SetType,not_equal-SetType,subset-SetType,subset_strict-SetType,general_union-SetType,general_intersection-SetType,set_subtraction-SetType,member-SetType,negation,not_member-SetType|Acc]) :-
SetType = set(integer).
library_add_set_components(_,_,SetType,Acc,[card-SetType,greater,equal-integer,equal-SetType,not_equal-SetType,subset-SetType,subset_strict-SetType,general_union-SetType,general_intersection-SetType,set_subtraction-SetType,member-SetType,negation,not_member-SetType|Acc]) :-
SetType = set(set(_)).
library_add_set_components(_,_,SetType,Acc,[card-SetType,greater,equal-integer,equal-SetType,not_equal-SetType,subset-SetType,subset_strict-SetType,union-SetType,intersection-SetType,set_subtraction-SetType,member-SetType,negation|Acc]) :-
SetType \= set(set(_)).