Python.use(better, VDM++) #dinter -- distributed intersection
‖記事一覧‖ Python.use(better, VDM++)
dinter -- distributed intersection
《著》小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2000/04/03 ● 第1版♪2003/05/23 ● 第2版♪2006/10/01 ● 第3版♪2009/10/07
VDM++ に準拠する操作を実現することで、Python との相互理解を深めます。
※ Python1.5 で作成した例題を、Python3.1 で再構成しました。
事例:モジュールを起動する
■ 全項目を確認する
全ステップの「項目」を確認するには、関数 do を利用します。
$ python VDM_set.py >>> do() 0: step00 -- def VDM_set(): ... >>>
>>> help(dinter)
...
dinter(ss)
dinter ss
; set of set of A -> set of A
;
; Distributed intersection
; the resulting set is the intersection of all the elements
; (these are sets themselves) of, i.e. it contains the
; elements that are in all the elements/sets of ss. ss must
; be non-empty.
■ 各項目を実行する
各ステップの「動作」を確認するには、関数 do に実引数を指定します。
>>> do(@) >>> # -------------------------------------------------- dinter >>> s1 = VDM_set("AB"); s1 {'A', 'B'} >>> s2 = VDM_set("CB"); s2 {'B', 'C'} >>> s3 = VDM_set("BC"); s3 {'B', 'C'} >>> s4 = VDM_set("BD"); s4 {'B', 'D'} >>> ss = VDM_set([s1,s2,s3,s4]); ss {{'A', 'B'}, {'B', 'C'}, {'B', 'D'}} >>> dinter(ss) {'B'}
分配的積集合が得られます。
事例:コードの解説
VDM/set
Operator | Name | Type |
---|---|---|
e in set s1 | Membership | A ∗ set of A → bool |
e not in set s1 | Not membership | A ∗ set of A → bool |
s1 union s2 | Union | set of A ∗ set of A → set of A |
s1 inter s2 | Intersection | set of A ∗ set of A → set of A |
s1 \ s2 | Difference | set of A ∗ set of A → set of A |
s1 subset s2 | Subset | set of A ∗ set of A → bool |
s1 psubset s2 | Proper subset | set of A ∗ set of A → bool |
s1 = s2 | Equality | set of A ∗ set of A → bool |
s1 <> s2 | Inequality | set of A ∗ set of A → bool |
card s1 | Cardinality | set of A → nat |
dunion ss | Distributed union | set of set of A → set of A |
dinter ss | Distributed intersection | set of set of A → set of A |
power s1 | Finite power set | set of A → set of set of A |
- Note that the types A, set of A and set of set of A are only meant to illustrate
》こちらに移動中です《
↑TOP