fix sessions and CE oracles
[why3.git] / share / ce-models.json
blob423c6dfcbc75a0d55b3fe11f9de1a7ffe04321b0
2     "$schema": "https://json-schema.org/draft/2020-12/schema",
3     "title": "Model_parser.json_model",
4     "type": "array",
5     "items": {
6         "type": "object",
7         "properties": {
8             "filename": {
9                 "type": "string"
10             },
11             "model": {
12                 "$comment": "list of counterexample model values, sorted by file and line number",
13                 "type": "array",
14                 "items": {
15                     "type": "object",
16                     "properties": {
17                         "is_vc_line": {
18                             "$comment": "true if the current line corresponds to the source code element from which the VC originates",
19                             "type": "boolean"
20                         },
21                         "line": {
22                             "type": "string"
23                         },
24                         "model_elements": {
25                             "$comment": "see src/core/model_parser.mli for a description of the model_element type",
26                             "type": "array",
27                             "items": {
28                                 "type": "object",
29                                 "properties": {
30                                     "attrs": {
31                                         "type": "array",
32                                         "items": {
33                                             "type": "string"
34                                         }
35                                     },
36                                     "kind": {
37                                         "type": "string"
38                                     },
39                                     "location": {
40                                         "$ref": "#/$defs/location"
41                                     },
42                                     "lsymbol": {
43                                         "type": "object",
44                                         "properties": {
45                                             "name": {
46                                                 "type": "string"
47                                             },
48                                             "attrs": {
49                                                 "type": "array",
50                                                 "items": {
51                                                     "type": "string"
52                                                 }
53                                             },
54                                             "loc": {
55                                                 "$ref": "#/$defs/location"
56                                             }
57                                         }
58                                     },
59                                     "value": {
60                                         "type": "object",
61                                         "properties": {
62                                             "value_concrete_term": {
63                                                 "$ref": "#/$defs/concrete_term"
64                                             },
65                                             "value_term": {
66                                                 "$ref": "#/$defs/term"
67                                             },
68                                             "value_type": {
69                                                 "$ref": "#/$defs/type"
70                                             }
71                                         }
72                                     }
73                                 }
74                             }
75                         }
76                     }
77                 }
78             }
79         }
80     },
81     "$defs": {
82         "location": {
83             "oneOf": [
84                 {
85                     "type": "string",
86                     "pattern": "^NO_LOC$"
87                 },
88                 {
89                     "type": "object",
90                     "properties": {
91                         "file-name": {
92                             "type": "string"
93                         },
94                         "start-line": {
95                             "type": "number"
96                         },
97                         "start-char": {
98                             "type": "number"
99                         },
100                         "end-line": {
101                             "type": "number"
102                         },
103                         "end-char": {
104                             "type": "number"
105                         }
106                     }
107                 }
108             ]
109         },
110         "type": {
111             "oneOf": [
112                 {
113                     "type": "null"
114                 },
115                 {
116                     "type": "object",
117                     "properties": {
118                         "Tyvar": {
119                             "type": "string"
120                         }
121                     },
122                     "required": ["Tyvar"]
123                 },
124                 {
125                     "type": "object",
126                     "properties": {
127                         "Tyapp": {
128                             "type": "object",
129                             "properties": {
130                                 "ty_symbol": {
131                                     "type": "string"
132                                 },
133                                 "ty_args": {
134                                     "type": "array",
135                                     "items": {
136                                         "$ref": "#"
137                                     }
138                                 }
139                             },
140                             "required": ["ty_symbol","ty_args"]
141                         }
142                     },
143                     "required": ["Tyapp"]
144                 }
145             ]
146         },
147         "vsymbol": {
148             "type": "object",
149             "properties": {
150                 "vs_name": {
151                     "type": "string"
152                 },
153                 "vs_type": {
154                     "$ref": "#/$defs/type"
155                 }
156             },
157             "required": ["vs_name","vs_type"]
158         },
159         "term": {
160             "oneOf": [
161                 {
162                     "type": "object",
163                     "properties": {
164                         "Tvar": {
165                             "$ref": "#/$defs/vsymbol"
166                         }
167                     },
168                     "required": ["Tvar"]
169                 },
170                 {
171                     "type": "object",
172                     "properties": {
173                         "Tconst": {
174                             "type": "object",
175                             "properties": {
176                                 "const_type": {
177                                     "type": "string"
178                                 },
179                                 "const_value": {
180                                     "type": "string"
181                                 }
182                             },
183                             "required": ["const_type","const_value"]
184                         }
185                     },
186                     "required": ["Tconst"]
187                 },
188                 {
189                     "type": "object",
190                     "properties": {
191                         "Tapp": {
192                             "type": "object",
193                             "properties": {
194                                 "app_ls": {
195                                     "type": "string"
196                                 },
197                                 "app_args": {
198                                     "type": "array",
199                                     "items": {
200                                         "$ref": "#"
201                                     }
202                                 }
203                             },
204                             "required": ["app_ls","app_args"]
205                         }
206                     },
207                     "required": ["Tapp"]
208                 },
209                 {
210                     "type": "object",
211                     "properties": {
212                         "Tif": {
213                             "type": "object",
214                             "properties": {
215                                 "if": {
216                                     "$ref": "#"
217                                 },
218                                 "then": {
219                                     "$ref": "#"
220                                 },
221                                 "else": {
222                                     "$ref": "#"
223                                 }
224                             },
225                             "required": ["if","then","else"]
226                         }
227                     },
228                     "required": ["Tif"]
229                 },
230                 {
231                     "type": "object",
232                     "properties": {
233                         "Teps": {
234                             "type": "object",
235                             "properties": {
236                                 "eps_vs": {
237                                     "$ref": "#/$defs/vsymbol"
238                                 },
239                                 "eps_t": {
240                                     "$ref": "#"
241                                 }
242                             },
243                             "required": ["eps_vs","eps_t"]
244                         }
245                     },
246                     "required": ["Teps"]
247                 },
248                 {
249                     "type": "object",
250                     "properties": {
251                         "Tfun": {
252                             "type": "object",
253                             "properties": {
254                                 "fun_args": {
255                                     "type": "array",
256                                     "items": {
257                                         "$ref": "#/$defs/vsymbol"
258                                     }
259                                 },
260                                 "fun_body": {
261                                     "$ref": "#"
262                                 }
263                             },
264                             "required": ["fun_args","fun_body"]
265                         }
266                     },
267                     "required": ["Tfun"]
268                 },
269                 {
270                     "type": "object",
271                     "properties": {
272                         "Tquant": {
273                             "type": "object",
274                             "properties": {
275                                 "quant": {
276                                     "type": "string"
277                                 },
278                                 "quant_vs": {
279                                     "type": "array",
280                                     "items": {
281                                         "$ref": "#/$defs/vsymbol"
282                                     }
283                                 },
284                                 "quant_t": {
285                                     "$ref": "#"
286                                 }
287                             },
288                             "required": ["quant","quant_vs","quant_t"]
289                         }
290                     },
291                     "required": ["Tquant"]
292                 },
293                 {
294                     "type": "object",
295                     "properties": {
296                         "Tbinop": {
297                             "type": "object",
298                             "properties": {
299                                 "binop": {
300                                     "type": "string"
301                                 },
302                                 "binop_t1": {
303                                     "$ref": "#"
304                                 },
305                                 "binop_t2": {
306                                     "$ref": "#"
307                                 }
308                             },
309                             "required": ["binop","binop_t1","binop_t2"]
310                         }
311                     },
312                     "required": ["Tbinop"]
313                 },
314                 {
315                     "type": "object",
316                     "properties": {
317                         "Tnot": {
318                             "$ref": "#"
319                         }
320                     },
321                     "required": ["Tnot"]
322                 },
323                 {
324                     "type": "string",
325                     "pattern": "^Ttrue$"
326                 },
327                 {
328                     "type": "string",
329                     "pattern": "^Tfalse$"
330                 },
331                 {
332                     "type": "object",
333                     "properties": {
334                         "Tlet": {
335                             "type": "string"
336                         }
337                     },
338                     "required": ["Tlet"]
339                 },
340                 {
341                     "type": "object",
342                     "properties": {
343                         "Tcase": {
344                             "type": "string"
345                         }
346                     },
347                     "required": ["Tcase"]
348                 }
349             ]
350         },
351         "concrete_bv": {
352             "type": "object",
353             "properties": {
354                 "bv_value_as_decimal": {
355                     "type": "string"
356                 },
357                 "bv_length": {
358                     "type": "number"
359                 },
360                 "bv_verbatim": {
361                     "type": "string"
362                 }
363             },
364             "required": ["bv_value_as_decimal","bv_length","bv_verbatim"]
365         },
366         "concrete_real": {
367             "type": "object",
368             "properties": {
369                 "real_value": {
370                     "type": "string"
371                 },
372                 "real_verbatim": {
373                     "type": "string"
374                 }
375             },
376             "required": ["real_value","real_verbatim"]
377         },
378         "concrete_term": {
379             "oneOf": [
380                 {
381                     "type": "object",
382                     "properties": {
383                         "type": {
384                             "type": "string",
385                             "pattern": "^Var$"
386                         },
387                         "val": {
388                             "type": "string"
389                         }
390                     },
391                     "required": ["type","val"]
392                 },
393                 {
394                     "type": "object",
395                     "properties": {
396                         "type": {
397                             "type": "string",
398                             "pattern": "^Boolean$"
399                         },
400                         "val": {
401                             "type": "boolean"
402                         }
403                     },
404                     "required": ["type","val"]
405                 },
406                 {
407                     "type": "object",
408                     "properties": {
409                         "type": {
410                             "type": "string",
411                             "pattern": "^String$"
412                         },
413                         "val": {
414                             "type": "string"
415                         }
416                     },
417                     "required": ["type","val"]
418                 },
419                 {
420                     "type": "object",
421                     "properties": {
422                         "type": {
423                             "type": "string",
424                             "pattern": "^Integer$"
425                         },
426                         "val": {
427                             "type": "object",
428                             "properties": {
429                                 "int_value": {
430                                     "type": "string"
431                                 },
432                                 "int_verbatim": {
433                                     "type": "string"
434                                 }
435                             },
436                             "required": ["int_value","int_verbatim"]
437                         }
438                     },
439                     "required": ["type","val"]
440                 },
441                 {
442                     "type": "object",
443                     "properties": {
444                         "type": {
445                             "type": "string",
446                             "pattern": "^Real$"
447                         },
448                         "val": {
449                             "$ref": "#/$defs/concrete_real"
450                         }
451                     },
452                     "required": ["type","val"]
453                 },
454                 {
455                     "type": "object",
456                     "properties": {
457                         "type": {
458                             "type": "string",
459                             "pattern": "^BitVector$"
460                         },
461                         "val": {
462                             "$ref": "#/$defs/concrete_bv"
463                         }
464                     },
465                     "required": ["type","val"]
466                 },
467                 {
468                     "type": "object",
469                     "properties": {
470                         "type": {
471                             "type": "string",
472                             "pattern": "^Fraction$"
473                         },
474                         "val": {
475                             "type": "object",
476                             "properties": {
477                                 "frac_num": {
478                                     "$ref": "#/$defs/concrete_real"
479                                 },
480                                 "frac_den": {
481                                     "$ref": "#/$defs/concrete_real"
482                                 },
483                                 "frac_verbatim": {
484                                     "type": "string"
485                                 }
486                             },
487                             "required": ["frac_num","frac_den","frac_verbatim"]
488                         }
489                     },
490                     "required": ["type","val"]
491                 },
492                 {
493                     "type": "object",
494                     "properties": {
495                         "type": {
496                             "type": "string",
497                             "pattern": "^Float$"
498                         },
499                         "val": {
500                             "oneOf": [
501                                 {
502                                     "type": "object",
503                                     "properties": {
504                                         "float_type": {
505                                             "type": "string",
506                                             "pattern": "^Infinity"
507                                         }
508                                     },
509                                     "required": ["float_type"]
510                                 },
511                                 {
512                                     "type": "object",
513                                     "properties": {
514                                         "float_type": {
515                                             "type": "string",
516                                             "pattern": "^Plus_zero"
517                                         }
518                                     },
519                                     "required": ["float_type"]
520                                 },
521                                 {
522                                     "type": "object",
523                                     "properties": {
524                                         "float_type": {
525                                             "type": "string",
526                                             "pattern": "^Minus_zero"
527                                         }
528                                     },
529                                     "required": ["float_type"]
530                                 },
531                                 {
532                                     "type": "object",
533                                     "properties": {
534                                         "float_type": {
535                                             "type": "string",
536                                             "pattern": "^NaN"
537                                         }
538                                     },
539                                     "required": ["float_type"]
540                                 },
541                                 {
542                                     "type": "object",
543                                     "properties": {
544                                         "float_type": {
545                                             "type": "string",
546                                             "pattern": "^Float_value"
547                                         },
548                                         "float_sign": {
549                                             "$ref": "#/$defs/concrete_bv"
550                                         },
551                                         "float_exp": {
552                                             "$ref": "#/$defs/concrete_bv"
553                                         },
554                                         "float_mant": {
555                                             "$ref": "#/$defs/concrete_bv"
556                                         },
557                                         "float_hex": {
558                                             "type": "string"
559                                         }
560                                     },
561                                     "required": ["float_type","float_sign","float_exp","float_mant","float_hex"]
562                                 }
563                             ]
564                         }
565                     },
566                     "required": ["type","val"]
567                 },
568                 {
569                     "type": "object",
570                     "properties": {
571                         "type": {
572                             "type": "string",
573                             "pattern": "^Apply$"
574                         },
575                         "val": {
576                             "type": "object",
577                             "properties": {
578                                 "app_ls": {
579                                     "type": "string"
580                                 },
581                                 "app_args": {
582                                     "type": "array",
583                                     "items": {
584                                         "$ref": "#"
585                                     }
586                                 }
587                             },
588                             "required": ["app_ls","app_args"]
589                         }
590                     },
591                     "required": ["type","val"]
592                 },
593                 {
594                     "type": "object",
595                     "properties": {
596                         "type": {
597                             "type": "string",
598                             "pattern": "^If$"
599                         },
600                         "val": {
601                             "type": "object",
602                             "properties": {
603                                 "if": {
604                                     "$ref": "#"
605                                 },
606                                 "then": {
607                                     "$ref": "#"
608                                 },
609                                 "else": {
610                                     "$ref": "#"
611                                 }
612                             },
613                             "required": ["if","then","else"]
614                         }
615                     },
616                     "required": ["type","val"]
617                 },
618                 {
619                     "type": "object",
620                     "properties": {
621                         "type": {
622                             "type": "string",
623                             "pattern": "^Epsilon$"
624                         },
625                         "val": {
626                             "type": "object",
627                             "properties": {
628                                 "eps_var": {
629                                     "type": "string"
630                                 },
631                                 "eps_t": {
632                                     "$ref": "#"
633                                 }
634                             },
635                             "required": ["eps_var","eps_t"]
636                         }
637                     },
638                     "required": ["type","val"]
639                 },
640                 {
641                     "type": "object",
642                     "properties": {
643                         "type": {
644                             "type": "string",
645                             "pattern": "^Function$"
646                         },
647                         "val": {
648                             "type": "object",
649                             "properties": {
650                                 "fun_args": {
651                                     "type": "array",
652                                     "items": {
653                                         "type": "string"
654                                     }
655                                 },
656                                 "fun_body": {
657                                     "$ref": "#"
658                                 }
659                             },
660                             "required": ["fun_args","fun_body"]
661                         }
662                     },
663                     "required": ["type","val"]
664                 },
665                 {
666                     "type": "object",
667                     "properties": {
668                         "type": {
669                             "type": "string",
670                             "pattern": "^Quant$"
671                         },
672                         "val": {
673                             "type": "object",
674                             "properties": {
675                                 "quant": {
676                                     "type": "string"
677                                 },
678                                 "quant_vars": {
679                                     "type": "array",
680                                     "items": {
681                                         "type": "string"
682                                     }
683                                 },
684                                 "quant_t": {
685                                     "$ref": "#"
686                                 }
687                             },
688                             "required": ["quant","quant_vars","quant_t"]
689                         }
690                     },
691                     "required": ["type","val"]
692                 },
693                 {
694                     "type": "object",
695                     "properties": {
696                         "type": {
697                             "type": "string",
698                             "pattern": "^Binop$"
699                         },
700                         "val": {
701                             "type": "object",
702                             "properties": {
703                                 "binop": {
704                                     "type": "string"
705                                 },
706                                 "binop_t1": {
707                                     "$ref": "#"
708                                 },
709                                 "binop_t2": {
710                                     "$ref": "#"
711                                 }
712                             },
713                             "required": ["binop","binop_t1","binop_t2"]
714                         }
715                     },
716                     "required": ["type","val"]
717                 },
718                 {
719                     "type": "object",
720                     "properties": {
721                         "type": {
722                             "type": "string",
723                             "pattern": "^Not$"
724                         },
725                         "val": {
726                             "$ref": "#"
727                         }
728                     },
729                     "required": ["type","val"]
730                 },
731                 {
732                     "type": "object",
733                     "properties": {
734                         "type": {
735                             "type": "string",
736                             "pattern": "^FunctionLiteral$"
737                         },
738                         "val": {
739                             "type": "object",
740                             "properties": {
741                                 "funliteral_elts": {
742                                     "type": "array",
743                                     "items": {
744                                         "type": "object",
745                                         "properties": {
746                                             "indice": {
747                                                 "$ref": "#"
748                                             },
749                                             "value": {
750                                                 "$ref": "#"
751                                             }
752                                         },
753                                         "required": ["indice","value"]
754                                     }
755                                 },
756                                 "funliteral_others": {
757                                     "$ref": "#"
758                                 }
759                             },
760                             "required": ["array_elts","array_others"]
761                         }
762                     },
763                     "required": ["type","val"]
764                 },
765                 {
766                     "type": "object",
767                     "properties": {
768                         "type": {
769                             "type": "string",
770                             "pattern": "^Record$"
771                         },
772                         "val": {
773                             "type": "array",
774                             "items": {
775                                 "type": "object",
776                                 "properties": {
777                                     "field": {
778                                         "type": "string"
779                                     },
780                                     "value":{
781                                         "$ref": "#"
782                                     }
783                                 },
784                                 "required": ["field","value"]
785                             }
786                         }
787                     },
788                     "required": ["type","val"]
789                 },
790                 {
791                     "type": "object",
792                     "properties": {
793                         "type": {
794                             "type": "string",
795                             "pattern": "^Proj$"
796                         },
797                         "val": {
798                             "type": "object",
799                             "properties": {
800                                 "proj_name": {
801                                     "type": "string"
802                                 },
803                                 "proj_value":{
804                                     "$ref": "#"
805                                 }
806                             },
807                             "required": ["proj_name","proj_value"]
808                         }
809                     },
810                     "required": ["type","val"]
811                 }
812             ]
813         }
814     }