]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/core_notation.moo
use named types to force some constraints asap
[helm.git] / helm / software / matita / core_notation.moo
1 notation < "hvbox(\exists ident i opt (: ty) break . p)"
2   right associative with precedence 20
3 for @{ 'exists ${default
4   @{\lambda ${ident i} : $ty. $p}
5   @{\lambda ${ident i} . $p}}}.
6
7 notation > "\exists list1 ident x sep , opt (: T). term 19 Px"
8   with precedence 20
9   for ${ default
10           @{ ${ fold right @{$Px} rec acc @{'exists (λ${ident x}:$T.$acc)} } }
11           @{ ${ fold right @{$Px} rec acc @{'exists (λ${ident x}.$acc)} } }
12        }.
13
14 notation < "hvbox(\Sigma ident i opt (: ty) break . p)"
15   right associative with precedence 20
16 for @{ 'sigma ${default
17   @{\lambda ${ident i} : $ty. $p}
18   @{\lambda ${ident i} . $p}}}.
19
20 notation > "\Sigma list1 ident x sep , opt (: T). term 19 Px"
21   with precedence 20
22   for ${ default
23           @{ ${ fold right @{$Px} rec acc @{'sigma (λ${ident x}:$T.$acc)} } }
24           @{ ${ fold right @{$Px} rec acc @{'sigma (λ${ident x}.$acc)} } }
25        }.
26
27 notation "hvbox(\langle term 19 a, break term 19 b\rangle)" 
28 with precedence 90 for @{ 'pair $a $b}.
29
30 notation "hvbox(x break \times y)" with precedence 70
31 for @{ 'product $x $y}.
32
33 notation < "\fst \nbsp term 90 x" with precedence 69 for @{'pi1a $x}.
34 notation < "\snd \nbsp term 90 x" with precedence 69 for @{'pi2a $x}.
35
36 notation < "\fst \nbsp term 90 x \nbsp term 90 y" with precedence 69 for @{'pi1b $x $y}.
37 notation < "\snd \nbsp term 90 x \nbsp term 90 y" with precedence 69 for @{'pi2b $x $y}.
38
39 notation > "\fst" with precedence 90 for @{'pi1}.
40 notation > "\snd" with precedence 90 for @{'pi2}.
41
42 notation "hvbox(a break \to b)" 
43   right associative with precedence 20
44 for @{ \forall $_:$a.$b }.
45
46 notation < "hvbox(a break \to b)" 
47   right associative with precedence 20
48 for @{ \Pi $_:$a.$b }.
49
50 notation "hvbox(a break = b)" 
51   non associative with precedence 45
52 for @{ 'eq $a $b }.
53
54 notation "hvbox(a break \leq b)" 
55   non associative with precedence 45
56 for @{ 'leq $a $b }.
57
58 notation "hvbox(a break \geq b)" 
59   non associative with precedence 45
60 for @{ 'geq $a $b }.
61
62 notation "hvbox(a break \lt b)" 
63   non associative with precedence 45
64 for @{ 'lt $a $b }.
65
66 notation "hvbox(a break \gt b)" 
67   non associative with precedence 45
68 for @{ 'gt $a $b }.
69
70 notation "hvbox(a break \neq b)" 
71   non associative with precedence 45
72 for @{ 'neq $a $b }.
73
74 notation "hvbox(a break \nleq b)" 
75   non associative with precedence 45
76 for @{ 'nleq $a $b }.
77
78 notation "hvbox(a break \ngeq b)" 
79   non associative with precedence 45
80 for @{ 'ngeq $a $b }.
81
82 notation "hvbox(a break \nless b)" 
83   non associative with precedence 45
84 for @{ 'nless $a $b }.
85
86 notation "hvbox(a break \ngtr b)" 
87   non associative with precedence 45
88 for @{ 'ngtr $a $b }.
89
90 notation "hvbox(a break \divides b)"
91   non associative with precedence 45
92 for @{ 'divides $a $b }.
93
94 notation "hvbox(a break \ndivides b)"
95   non associative with precedence 45
96 for @{ 'ndivides $a $b }.
97
98 notation "hvbox(a break + b)" 
99   left associative with precedence 50
100 for @{ 'plus $a $b }.
101
102 notation "hvbox(a break - b)" 
103   left associative with precedence 50
104 for @{ 'minus $a $b }.
105
106 notation "hvbox(a break * b)" 
107   left associative with precedence 55
108 for @{ 'times $a $b }.
109
110 notation "hvbox(a break \middot b)" 
111   left associative with precedence 55
112   for @{ 'middot $a $b }.
113
114 notation "hvbox(a break \mod b)" 
115   left associative with precedence 55
116 for @{ 'module $a $b }.
117
118 notation "a \frac b" 
119   non associative with precedence 90
120 for @{ 'divide $a $b }.
121
122 notation "a \over b" 
123   left associative with precedence 55
124 for @{ 'divide $a $b }.
125
126 notation "hvbox(a break / b)" 
127   left associative with precedence 55
128 for @{ 'divide $a $b }.
129
130 notation "- term 60 a" with precedence 60 
131 for @{ 'uminus $a }.
132
133 notation "a !"
134   non associative with precedence 80
135 for @{ 'fact $a }.
136
137 notation "\sqrt a" 
138   non associative with precedence 60
139 for @{ 'sqrt $a }.
140
141 notation "hvbox(a break \lor b)" 
142   left associative with precedence 30
143 for @{ 'or $a $b }.
144
145 notation "hvbox(a break \land b)" 
146   left associative with precedence 35
147 for @{ 'and $a $b }.
148
149 notation "hvbox(\lnot a)" 
150   non associative with precedence 40
151 for @{ 'not $a }.
152
153 notation > "hvbox(a break \liff b)" 
154   left associative with precedence 25
155 for @{ 'iff $a $b }.
156
157 notation "hvbox(a break \leftrightarrow b)" 
158   left associative with precedence 25
159 for @{ 'iff $a $b }.
160
161
162 notation "hvbox(\Omega \sup term 90 A)" non associative with precedence 70
163 for @{ 'powerset $A }.
164
165 notation < "hvbox({ ident i | term 19 p })" with precedence 90
166 for @{ 'subset (\lambda ${ident i} : $nonexistent . $p)}.
167
168 notation > "hvbox({ ident i | term 19 p })" with precedence 90
169 for @{ 'subset (\lambda ${ident i}. $p)}.
170
171 notation < "hvbox({ ident i ∈ s | term 19 p })" with precedence 90
172 for @{ 'comprehension $s (\lambda ${ident i} : $nonexistent . $p)}.
173
174 notation > "hvbox({ ident i ∈ s | term 19 p })" with precedence 90
175 for @{ 'comprehension $s (\lambda ${ident i}. $p)}.
176
177 notation "hvbox(a break ∈ b)" non associative with precedence 45
178 for @{ 'mem $a $b }.
179
180 notation "hvbox(a break ≬ b)" non associative with precedence 45
181 for @{ 'overlaps $a $b }. (* \between *)
182
183 notation "hvbox(a break ⊆ b)" non associative with precedence 45
184 for @{ 'subseteq $a $b }. (* \subseteq *)
185
186 notation "hvbox(a break ∩ b)" non associative with precedence 55
187 for @{ 'intersects $a $b }. (* \cap *)
188
189 notation "hvbox(a break ∪ b)" non associative with precedence 50
190 for @{ 'union $a $b }. (* \cup *)
191
192 notation "hvbox({ term 19 a })" with precedence 90 for @{ 'singl $a}.
193
194 notation "hvbox(a break \approx b)" non associative with precedence 45 
195   for @{ 'napart $a $b}.
196         
197 notation "hvbox(a break # b)" non associative with precedence 45 
198   for @{ 'apart $a $b}.
199     
200 notation "hvbox(a break \circ b)" 
201   left associative with precedence 55
202 for @{ 'compose $a $b }.
203
204 notation "↓a" with precedence 55 for @{ 'downarrow $a }.
205
206 notation "hvbox(U break ↓ V)" non associative with precedence 55 for @{ 'fintersects $U $V }.
207
208 notation "↑a" with precedence 55 for @{ 'uparrow $a }.
209
210 notation "hvbox(a break ↑ b)" with precedence 55 for @{ 'funion $a $b }.
211
212 notation "(a \sup b)" left associative with precedence 60 for @{ 'exp $a $b}.
213 notation "s \sup (-1)" with precedence 60 for @{ 'invert $s }.
214 notation < "s \sup (-1) x" with precedence 60 for @{ 'invert_appl $s $x}. 
215
216 notation "hvbox(|term 90 C|)" with precedence 69 for @{ 'card $C }.
217
218 notation "\naturals" non associative with precedence 90 for @{'N}.
219 notation "\rationals" non associative with precedence 90 for @{'Q}.
220 notation "\reals" non associative with precedence 90 for @{'R}.
221 notation "\integers" non associative with precedence 90 for @{'Z}.
222 notation "\complexes" non associative with precedence 90 for @{'C}.
223
224 notation "\ee" with precedence 90 for @{ 'neutral }. (* ⅇ *)