集合変数、関係変数、写像変数
可変集合とか不変集合とか言うので、まずは、
- 集合が等しい/違うとは
- 写像が等しい/違うとは
のシッカリした理解が必要。
実体、関連を単に集合変数、関係変数として書いてみる。
図式 { 集合 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/]