このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

集合変数、関係変数、写像変数

可変集合とか不変集合とか言うので、まずは、

  • 集合が等しい/違うとは
  • 写像が等しい/違うとは

のシッカリした理解が必要。

実体、関連を単に集合変数、関係変数として書いてみる。

図式 {
 集合
   const int,
   var 学生,
   var コース
   var 教員;
 関係
   var 2年生(学生),
   var 履修(学生, コース),
   var 履修2(学生, コース, int),
   var 指導(教員, 学生);
 写像
   var 主任:コース→教員;
   var 学年:学生→int;
 派生
   2年生 isDefinableBy (学年 = 2),
   履修2 isCompOf(履修 1, rel_学年 1),
   指導 isCompOf(主任_conv, 履修_conv);
}

キーワードは英語にしてみる。

schema {
 set
   const int,
   var 学生,
   var コース
   var 教員;
 relation
   var 2年生(学生),
   var 履修(学生, コース),
   var 履修2(学生, コース, int),
   var 指導(教員, 学生);
 mapping
   var 主任:コース→教員;
   var 学年:学生→int;
 derivation
   2年生 isDefinableBy (学年 = 2),
   履修2 isCompOf(履修 1, rel_学年 1),
   指導 isCompOf(主任_conv, 履修_conv);
}

符号圏に持っていくと:

coded schema {
 set
   var $学生 on string×date absorbed into $(学生+学年),
   var $コース on string
   var $教員 on string;
 relation
   var $2年生 on $学生 derived,
   var $履修 on $学生×$コース,
   var $履修2 on $学生×$コース×int derived,
   var $指導 on $教員×$学生 derived;
 mapping
   var $(コース+主任) on $コース×$教員;
   var $(学生+学年) on $学生×int considered as set;
 derivation
   $2年生 isDefinableBy ($学生.学年 = 2),
   履修2 isCompOf(履修 1, rel_学年 1),
   指導 isCompOf(主任_conv, 履修_conv);
}
coded schema {
 set
   var $学生 on [string×date]×int
   var $コース on [string]
   var $教員 on [string];
 relation
   var $履修 on $学生×$コース,
 mapping
   var $(コース+主任) on $コース×$教員;
}

var $履修 on $学生×$コース, var $(コース+主任) on $コース×$教員 は次のように展開される。

  • var $履修 on $学生×$コース on [/string×date/×/string/]
  • var $(コース+主任) on $コース×$教員 on [/string/×/string/]

符号圏側の構造

対象

対象は符号集合と呼ぶ。

  1. 単純符号空間〈基本符号空間 | 基本データ型 | 基本集合〉は対象=符号集合である。
  2. AとBが対象のとき、直積A×Bも対象である。
  3. Aが対象で、B⊆A が定義可能な部分集合のとき、Bも対象である。
  4. f:A→B が許容写像のとき、fによる関数グラフ拡張 A+f⊆A×B は対象である。これは、定義方法にfを許せば、定義可能写像の一種である。

  1. 恒等射は射である。
  2. 包含射は射である。
  3. 直積の射影は射である。
  4. 射のデカルトタプルは射である。
  5. 射の直積は射である。
  6. 対角射は射である。

射はι〈イオタ〉とπ〈パイ〉の結合で書ける。