関係代数には半結合と半差という演算があります。 このノートは、これらの演算を甲州記法で実現する方法について記述します。 このノートが記述された時点であるバージョン 0.37 では、 この機能は実装されていません。
関係 p
の q
に対する半結合は、
q
と交わり可能な組に p
を制限する演算です。
たとえば、関係 p
は項目 /a
/b
からなり、
関係 q
は項目 /b
/c
からなるとします。
そのとき、関係 u
のつぎのような定式化は、
半結合の展開された式とみなせます。
u : p | meet q | pick /a /b
甲州記法の半結合は、演算子 some
を使って、
つぎのように書こうというものです。
u : p | some (meet q)
一般的には、p | some R
のように関係写像 R
をとり、
p
の組をひとつだけもつ関係を
R
で写像した結果が空関係ではないとき、その組を残し、
空関係のとき、その組を捨てるという働きをします。
これは、「関係写像による関係の制限」とよばれるもので、
some
と none
があります。
some
は関係写像が非空関係を出力すると組が残り、
none
は、その反対で、空関係を出力すると組が残ります。
このふたつの演算子が半結合と半差に相当します。
none
の使用例
v : p | none (meet q)
は、一般化された差集合に相当します。 そのため、つぎのような略記法を用意してもよいでしょう。
v : p | minus q