equal
deleted
inserted
replaced
40 "<+>" :: ['a item set, 'a item set]=> 'a item set (infixr 70) |
40 "<+>" :: ['a item set, 'a item set]=> 'a item set (infixr 70) |
41 |
41 |
42 Split :: [['a item, 'a item]=>'b, 'a item] => 'b |
42 Split :: [['a item, 'a item]=>'b, 'a item] => 'b |
43 Case :: [['a item]=>'b, ['a item]=>'b, 'a item] => 'b |
43 Case :: [['a item]=>'b, ['a item]=>'b, 'a item] => 'b |
44 |
44 |
45 diag :: "'a set => ('a * 'a)set" |
|
46 "<**>" :: "[('a item * 'a item)set, ('a item * 'a item)set] |
45 "<**>" :: "[('a item * 'a item)set, ('a item * 'a item)set] |
47 => ('a item * 'a item)set" (infixr 80) |
46 => ('a item * 'a item)set" (infixr 80) |
48 "<++>" :: "[('a item * 'a item)set, ('a item * 'a item)set] |
47 "<++>" :: "[('a item * 'a item)set, ('a item * 'a item)set] |
49 => ('a item * 'a item)set" (infixr 70) |
48 => ('a item * 'a item)set" (infixr 70) |
50 |
49 |
86 |
85 |
87 Case_def "Case c d M == @u. (? x . M = In0(x) & u = c(x)) |
86 Case_def "Case c d M == @u. (? x . M = In0(x) & u = c(x)) |
88 | (? y . M = In1(y) & u = d(y))" |
87 | (? y . M = In1(y) & u = d(y))" |
89 |
88 |
90 |
89 |
91 (** diagonal sets and equality for the "universe" **) |
90 (** equality for the "universe" **) |
92 |
|
93 diag_def "diag(A) == UN x:A. {(x,x)}" |
|
94 |
91 |
95 dprod_def "r<**>s == UN (x,x'):r. UN (y,y'):s. {(Scons x y, Scons x' y')}" |
92 dprod_def "r<**>s == UN (x,x'):r. UN (y,y'):s. {(Scons x y, Scons x' y')}" |
96 |
93 |
97 dsum_def "r<++>s == (UN (x,x'):r. {(In0(x),In0(x'))}) Un |
94 dsum_def "r<++>s == (UN (x,x'):r. {(In0(x),In0(x'))}) Un |
98 (UN (y,y'):s. {(In1(y),In1(y'))})" |
95 (UN (y,y'):s. {(In1(y),In1(y'))})" |
99 |
96 |
100 end |
97 end |