You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The current version of Inliner replaces A in be as follows:
B(x)==(x+1)*(1+y)
The new type checker and type inferer give us types before preprocessing. The most important part of the type information is the types of declarations: variable declarations, constant declarations, and operators declarations, including LET-definitions. To be able to carry this type information, we have to modify the inliner in a way that it implicitly introduces constant LET-definitions for the parameters and the result at the call sites:
By doing so, we can define the types of the auxiliary definititions such as A_result1, A_x1, A_y1, ... These types are easily computed from the type contexts that are produced by the type checker. When we have this form, we can apply our usual preprocessing transformations and then re-run the type checker. The types of the auxiliary variables will contain enough information for finding the types of the inlined operator bodies.
The text was updated successfully, but these errors were encountered:
As Jure @Kukovec noticed, this format is very similar to a stack machine. It looks like we are moving towards a particular TLA+ structure in our intermediate representation.
Consider the following example:
The current version of Inliner replaces
A
in be as follows:The new type checker and type inferer give us types before preprocessing. The most important part of the type information is the types of declarations: variable declarations, constant declarations, and operators declarations, including LET-definitions. To be able to carry this type information, we have to modify the inliner in a way that it implicitly introduces constant LET-definitions for the parameters and the result at the call sites:
By doing so, we can define the types of the auxiliary definititions such as
A_result1
,A_x1
,A_y1
, ... These types are easily computed from the type contexts that are produced by the type checker. When we have this form, we can apply our usual preprocessing transformations and then re-run the type checker. The types of the auxiliary variables will contain enough information for finding the types of the inlined operator bodies.The text was updated successfully, but these errors were encountered: