summaryrefslogtreecommitdiff
path: root/src/theory/fp/kinds
blob: 144e5736f1ab1bc91fb4be8e368c98a5db7731a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
# kinds                                                               -*- sh -*-
#
# For documentation on this file format, please refer to
# src/theory/builtin/kinds.
#

theory THEORY_FP ::CVC4::theory::fp::TheoryFp "theory/fp/theory_fp.h"
typechecker "theory/fp/theory_fp_type_rules.h"
rewriter ::CVC4::theory::fp::TheoryFpRewriter "theory/fp/theory_fp_rewriter.h"

properties check

# Theory content goes here.

# constants...
constant CONST_FLOATINGPOINT \
    ::CVC4::FloatingPoint \
    ::CVC4::FloatingPointHashFunction \
    "util/floatingpoint.h" \
    "a floating-point literal"
typerule CONST_FLOATINGPOINT    ::CVC4::theory::fp::FloatingPointConstantTypeRule


constant CONST_ROUNDINGMODE \
    ::CVC4::RoundingMode \
    ::CVC4::RoundingModeHashFunction \
    "util/floatingpoint.h" \
    "a floating-point rounding mode"    
typerule CONST_ROUNDINGMODE    ::CVC4::theory::fp::RoundingModeConstantTypeRule



# types...
sort ROUNDINGMODE_TYPE \
    5 \
    well-founded \
    "NodeManager::currentNM()->mkConst<RoundingMode>(RoundingMode())" \
    "expr/node_manager.h" \
    "floating-point rounding mode"

enumerator ROUNDINGMODE_TYPE \
    "::CVC4::theory::fp::RoundingModeEnumerator" \
    "theory/fp/type_enumerator.h"



constant FLOATINGPOINT_TYPE \
    ::CVC4::FloatingPointSize \
    ::CVC4::FloatingPointSizeHashFunction \
    "util/floatingpoint.h" \
    "floating-point type"

cardinality FLOATINGPOINT_TYPE \
    "::CVC4::theory::fp::CardinalityComputer::computeCardinality(%TYPE%)" \
    "theory/fp/theory_fp_type_rules.h"

enumerator FLOATINGPOINT_TYPE \
    "::CVC4::theory::fp::FloatingPointEnumerator" \
    "theory/fp/type_enumerator.h"

well-founded FLOATINGPOINT_TYPE \
    true \
    "(*CVC4::theory::TypeEnumerator(%TYPE%))" \
    "theory/type_enumerator.h"



# operators...
operator FLOATINGPOINT_FP 3 "construct a floating-point literal from bit vectors"
typerule FLOATINGPOINT_FP    ::CVC4::theory::fp::FloatingPointFPTypeRule



operator FLOATINGPOINT_EQ 2: "floating-point equality"
typerule FLOATINGPOINT_EQ    ::CVC4::theory::fp::FloatingPointTestTypeRule

operator FLOATINGPOINT_ABS 1 "floating-point absolute value"
typerule FLOATINGPOINT_ABS   ::CVC4::theory::fp::FloatingPointOperationTypeRule

operator FLOATINGPOINT_NEG 1 "floating-point negation"
typerule FLOATINGPOINT_NEG   ::CVC4::theory::fp::FloatingPointOperationTypeRule

operator FLOATINGPOINT_PLUS 3 "floating-point addition"
typerule FLOATINGPOINT_PLUS   ::CVC4::theory::fp::FloatingPointRoundingOperationTypeRule

operator FLOATINGPOINT_SUB 3 "floating-point sutraction"
typerule FLOATINGPOINT_SUB   ::CVC4::theory::fp::FloatingPointRoundingOperationTypeRule

operator FLOATINGPOINT_MULT 3 "floating-point multiply"
typerule FLOATINGPOINT_MULT   ::CVC4::theory::fp::FloatingPointRoundingOperationTypeRule

operator FLOATINGPOINT_DIV 3 "floating-point division"
typerule FLOATINGPOINT_DIV   ::CVC4::theory::fp::FloatingPointRoundingOperationTypeRule

operator FLOATINGPOINT_FMA 4 "floating-point fused multiply and add"
typerule FLOATINGPOINT_FMA   ::CVC4::theory::fp::FloatingPointRoundingOperationTypeRule

operator FLOATINGPOINT_SQRT 2 "floating-point square root"
typerule FLOATINGPOINT_SQRT   ::CVC4::theory::fp::FloatingPointRoundingOperationTypeRule

operator FLOATINGPOINT_REM 2 "floating-point remainder"
typerule FLOATINGPOINT_REM   ::CVC4::theory::fp::FloatingPointOperationTypeRule

operator FLOATINGPOINT_RTI 2 "floating-point round to integral"
typerule FLOATINGPOINT_RTI   ::CVC4::theory::fp::FloatingPointRoundingOperationTypeRule

operator FLOATINGPOINT_MIN 2 "floating-point minimum"
typerule FLOATINGPOINT_MIN   ::CVC4::theory::fp::FloatingPointOperationTypeRule

operator FLOATINGPOINT_MAX 2 "floating-point maximum"
typerule FLOATINGPOINT_MAX   ::CVC4::theory::fp::FloatingPointOperationTypeRule

operator FLOATINGPOINT_MIN_TOTAL 3 "floating-point minimum (defined for all inputs)"
typerule FLOATINGPOINT_MIN_TOTAL   ::CVC4::theory::fp::FloatingPointPartialOperationTypeRule

operator FLOATINGPOINT_MAX_TOTAL 3 "floating-point maximum (defined for all inputs)"
typerule FLOATINGPOINT_MAX_TOTAL   ::CVC4::theory::fp::FloatingPointPartialOperationTypeRule


operator FLOATINGPOINT_LEQ 2: "floating-point less than or equal"
typerule FLOATINGPOINT_LEQ   ::CVC4::theory::fp::FloatingPointTestTypeRule

operator FLOATINGPOINT_LT 2: "floating-point less than"
typerule FLOATINGPOINT_LT   ::CVC4::theory::fp::FloatingPointTestTypeRule

operator FLOATINGPOINT_GEQ 2: "floating-point greater than or equal"
typerule FLOATINGPOINT_GEQ   ::CVC4::theory::fp::FloatingPointTestTypeRule

operator FLOATINGPOINT_GT 2: "floating-point greater than"
typerule FLOATINGPOINT_GT   ::CVC4::theory::fp::FloatingPointTestTypeRule



operator FLOATINGPOINT_ISN 1 "floating-point is normal"
typerule FLOATINGPOINT_ISN   ::CVC4::theory::fp::FloatingPointTestTypeRule

operator FLOATINGPOINT_ISSN 1 "floating-point is sub-normal"
typerule FLOATINGPOINT_ISSN   ::CVC4::theory::fp::FloatingPointTestTypeRule

operator FLOATINGPOINT_ISZ 1 "floating-point is zero"
typerule FLOATINGPOINT_ISZ   ::CVC4::theory::fp::FloatingPointTestTypeRule

operator FLOATINGPOINT_ISINF 1 "floating-point is infinite"
typerule FLOATINGPOINT_ISINF   ::CVC4::theory::fp::FloatingPointTestTypeRule

operator FLOATINGPOINT_ISNAN 1 "floating-point is NaN"
typerule FLOATINGPOINT_ISNAN   ::CVC4::theory::fp::FloatingPointTestTypeRule

operator FLOATINGPOINT_ISNEG 1 "floating-point is negative"
typerule FLOATINGPOINT_ISNEG   ::CVC4::theory::fp::FloatingPointTestTypeRule

operator FLOATINGPOINT_ISPOS 1 "floating-point is positive"
typerule FLOATINGPOINT_ISPOS   ::CVC4::theory::fp::FloatingPointTestTypeRule



constant FLOATINGPOINT_TO_FP_IEEE_BITVECTOR_OP \
    ::CVC4::FloatingPointToFPIEEEBitVector \
    "::CVC4::FloatingPointConvertSortHashFunction<0x1>" \
    "util/floatingpoint.h" \
    "operator for to_fp from bit vector"
typerule FLOATINGPOINT_TO_FP_IEEE_BITVECTOR_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule

parameterized FLOATINGPOINT_TO_FP_IEEE_BITVECTOR FLOATINGPOINT_TO_FP_IEEE_BITVECTOR_OP 1 "convert an IEEE-754 bit vector to floating-point"
typerule FLOATINGPOINT_TO_FP_IEEE_BITVECTOR   ::CVC4::theory::fp::FloatingPointToFPIEEEBitVectorTypeRule



constant FLOATINGPOINT_TO_FP_FLOATINGPOINT_OP \
    ::CVC4::FloatingPointToFPFloatingPoint \
    "::CVC4::FloatingPointConvertSortHashFunction<0x2>" \
    "util/floatingpoint.h" \
    "operator for to_fp from floating point"
typerule FLOATINGPOINT_TO_FP_FLOATINGPOINT_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule

parameterized FLOATINGPOINT_TO_FP_FLOATINGPOINT FLOATINGPOINT_TO_FP_FLOATINGPOINT_OP 2 "convert between floating-point sorts"
typerule FLOATINGPOINT_TO_FP_FLOATINGPOINT   ::CVC4::theory::fp::FloatingPointToFPFloatingPointTypeRule




constant FLOATINGPOINT_TO_FP_REAL_OP \
    ::CVC4::FloatingPointToFPReal \
    "::CVC4::FloatingPointConvertSortHashFunction<0x4>" \
    "util/floatingpoint.h" \
    "operator for to_fp from real"
typerule FLOATINGPOINT_TO_FP_REAL_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule

parameterized FLOATINGPOINT_TO_FP_REAL FLOATINGPOINT_TO_FP_REAL_OP 2 "convert a real to floating-point"
typerule FLOATINGPOINT_TO_FP_REAL   ::CVC4::theory::fp::FloatingPointToFPRealTypeRule



constant FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR_OP \
    ::CVC4::FloatingPointToFPSignedBitVector \
    "::CVC4::FloatingPointConvertSortHashFunction<0x8>" \
    "util/floatingpoint.h" \
    "operator for to_fp from signed bit vector"
typerule FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule

parameterized FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR_OP 2 "convert a signed bit vector to floating-point"
typerule FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR   ::CVC4::theory::fp::FloatingPointToFPSignedBitVectorTypeRule



constant FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR_OP \
    ::CVC4::FloatingPointToFPUnsignedBitVector \
    "::CVC4::FloatingPointConvertSortHashFunction<0x10>" \
    "util/floatingpoint.h" \
    "operator for to_fp from unsigned bit vector"
typerule FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule


parameterized FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR_OP 2 "convert an unsigned bit vector to floating-point"
typerule FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR   ::CVC4::theory::fp::FloatingPointToFPUnsignedBitVectorTypeRule



constant FLOATINGPOINT_TO_FP_GENERIC_OP \
    ::CVC4::FloatingPointToFPGeneric \
    "::CVC4::FloatingPointConvertSortHashFunction<0x11>" \
    "util/floatingpoint.h" \
    "operator for a generic to_fp"
typerule FLOATINGPOINT_TO_FP_GENERIC_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule


parameterized FLOATINGPOINT_TO_FP_GENERIC FLOATINGPOINT_TO_FP_GENERIC_OP 1:2 "a generic conversion to floating-point, used in parsing only"
typerule FLOATINGPOINT_TO_FP_GENERIC   ::CVC4::theory::fp::FloatingPointToFPGenericTypeRule





constant FLOATINGPOINT_TO_UBV_OP \
    ::CVC4::FloatingPointToUBV \
    "::CVC4::FloatingPointToBVHashFunction<0x1>" \
    "util/floatingpoint.h" \
    "operator for to_ubv"
typerule FLOATINGPOINT_TO_UBV_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule

parameterized FLOATINGPOINT_TO_UBV FLOATINGPOINT_TO_UBV_OP 2 "convert a floating-point value to an unsigned bit vector"
typerule FLOATINGPOINT_TO_UBV   ::CVC4::theory::fp::FloatingPointToUBVTypeRule


constant FLOATINGPOINT_TO_UBV_TOTAL_OP \
    ::CVC4::FloatingPointToUBVTotal \
    "::CVC4::FloatingPointToBVHashFunction<0x4>" \
    "util/floatingpoint.h" \
    "operator for to_ubv_total"
typerule FLOATINGPOINT_TO_UBV_TOTAL_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule

parameterized FLOATINGPOINT_TO_UBV_TOTAL FLOATINGPOINT_TO_UBV_TOTAL_OP 3 "convert a floating-point value to an unsigned bit vector (defined for all inputs)"
typerule FLOATINGPOINT_TO_UBV_TOTAL   ::CVC4::theory::fp::FloatingPointToUBVTotalTypeRule



constant FLOATINGPOINT_TO_SBV_OP \
    ::CVC4::FloatingPointToSBV \
    "::CVC4::FloatingPointToBVHashFunction<0x2>" \
    "util/floatingpoint.h" \
    "operator for to_sbv"
typerule FLOATINGPOINT_TO_SBV_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule

parameterized FLOATINGPOINT_TO_SBV FLOATINGPOINT_TO_SBV_OP 2 "convert a floating-point value to a signed bit vector"
typerule FLOATINGPOINT_TO_SBV   ::CVC4::theory::fp::FloatingPointToSBVTypeRule


constant FLOATINGPOINT_TO_SBV_TOTAL_OP \
    ::CVC4::FloatingPointToSBVTotal \
    "::CVC4::FloatingPointToBVHashFunction<0x8>" \
    "util/floatingpoint.h" \
    "operator for to_sbv_total"
typerule FLOATINGPOINT_TO_SBV_TOTAL_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule

parameterized FLOATINGPOINT_TO_SBV_TOTAL FLOATINGPOINT_TO_SBV_TOTAL_OP 3 "convert a floating-point value to a signed bit vector (defined for all inputs)"
typerule FLOATINGPOINT_TO_SBV_TOTAL   ::CVC4::theory::fp::FloatingPointToSBVTotalTypeRule


operator FLOATINGPOINT_TO_REAL 1 "floating-point to real"
typerule FLOATINGPOINT_TO_REAL   ::CVC4::theory::fp::FloatingPointToRealTypeRule

operator FLOATINGPOINT_TO_REAL_TOTAL 2 "floating-point to real (defined for all inputs)"
typerule FLOATINGPOINT_TO_REAL_TOTAL   ::CVC4::theory::fp::FloatingPointToRealTotalTypeRule


endtheory
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback