集合(改行区切り一覧リスト)の各種計算を行います。

二つの集合の「和集合(A ∪ B)、積集合(A ∩ B)、差集合(A ⊆ B)」を求めます。
     「和集合(A ∪ B)」→ List( リストA; FilterValues (リストB; リストA)) 
     「積集合(A ∩ B)」→ FilterValues (リストA; リストB)
     「差集合(A ⊆ B)」→ FilterValues (リストA; リストB) 

 用法: MathSets[集合A;集合B;種別]  もどきの設定要領
     「集合A」→ 引数[1]
     「集合B」→ 引数[2]
     「種別:和、積、差」→ 引数[3]

Sample input(入力例):
Sample output(出力例):
formula(式):

Let([
 $prm[1]=引数[1];
 $prm[2]=引数[2];
 $prm[3]=引数[3]; /*「和、積、差」から一択*/
 $m=150; /*再帰分割単位数を指定*/
 $all=ValueCount(Case($prm[3]="差";$prm[1];$prm[2]));
 $n[1]=0;
 $n[2]=Div($all-1;$m);
 $res="";
 /*再帰計算限界回避の分割処理*/
 $fnc[1]="Case(
   $n[1]>$n[2]; List(Case($prm[3]=""和"";$prm[1]); $res);
   Let([
    $i[1]=$m*$n[1];
    $i[2]=$i[1]+Min($all-$m*$n[1]; $m);
    $res=Evaluate($fnc[2]);
    $n[1]=$n[1]+1
   ]; Evaluate($fnc[1]))
  )";
 /*MathSets関数の主式*/
 $fnc[2]="Case(
   $i[1]=$i[2]; $res;
   Let([
    $i[1]=$i[1]+1;
    $add=GetValue(Case($prm[3]=""差"";$prm[1];$prm[2]); $i[1]);
    $add=Case($prm[3]=""積"";
      Case(Not IsEmpty(FilterValues($prm[1];$add)); $add);
      Case(IsEmpty(FilterValues(Case($prm[3]=""差"";$prm[2];$prm[1]);$add)); $add)
);
    $res=List($res; $add)
   ]; Evaluate($fnc[2]))
  )"
];
 Evaluate($fnc[1])
)