catala/compiler
adelaett 67e36dcf42
Adding Typing Invariant for TDefault
Added a new type safety invariant to ensure that the type `TDefault` can only appear in certain positions,

* On the left-hand side of an arrow with arity 1, as the type of a scope (for scope calls).
* At the root of the type tree (outside a default).
* On the right-hand side of the arrow at the root of the type (occurs for rentrant variables).

This is crucial to maintain the safety of the type system, as demonstrated in the formal development.

The invariant was checked on all tests cases and on family and housing benefits.

Adjusted inversion invariant about app to handle external objects as well.
2023-12-07 11:27:14 +01:00
..
catala_utils Reformat 2023-11-30 23:53:38 +01:00
dcalc Adding Typing Invariant for TDefault 2023-12-07 11:27:14 +01:00
desugared Reformat 2023-11-30 23:53:38 +01:00
lcalc Rework resolution of module elements 2023-11-30 21:14:12 +01:00
literate Fix #543 2023-12-06 16:58:38 +01:00
plugins Rework resolution of module elements 2023-11-30 21:14:12 +01:00
scalc Adjust plugins and warnings 2023-11-27 11:06:16 +01:00
scopelang Reformat 2023-11-30 23:53:38 +01:00
shared_ast Reformat 2023-11-30 23:53:38 +01:00
surface Small cleanup and doc on the module handling refactor 2023-12-05 16:01:56 +01:00
verification Typing defaults: support nested priorities 2023-11-27 11:09:08 +01:00
catala_web_interpreter.ml Rework resolution of module elements 2023-11-30 21:14:12 +01:00
catala.ml replace let _ by let () or add type annotation 2023-09-09 22:02:39 +02:00
driver.ml Small cleanup and doc on the module handling refactor 2023-12-05 16:01:56 +01:00
driver.mli Reformat 2023-11-30 23:53:38 +01:00
dune Add an explain plugin 2023-07-11 17:33:56 +02:00
index.mld More doc 2023-06-18 16:08:16 +02:00
plugin.ml Reformat 2023-09-27 13:19:04 +02:00
plugin.mli Refacter the main Driver module 2023-07-03 16:42:54 +02:00
tests.ml replace let _ by let () or add type annotation 2023-09-09 22:02:39 +02:00