Lattice TOP ⊤ XCTRL ⊤ :ctrl TOP->XCTRL INT_TOP ⊤ :int TOP->INT_TOP FLT_TOP ⊤ :flt TOP->FLT_TOP PTR *ptr struct TOP->PTR STRUCT_TOP ⊤ :struct TOP->STRUCT_TOP MEM_TOP ⊤ :mem TOP->MEM_TOP TUPLE_TOP ⊤ :tuple TOP->TUPLE_TOP BOT ⊥ CTRL ⊥ :ctrl XCTRL->CTRL CTRL->BOT INT_HI [min>max] INT_TOP->INT_HI INT_BOT ⊥ :int INT_BOT->BOT INT_XBOOL [1...0] INT_HI->INT_XBOOL INT_CON constants INT_HI->INT_CON INT_CON0 0 INT_XBOOL->INT_CON0 INT_CON1 1 INT_XBOOL->INT_CON1 INT_LO [min<max] INT_CON->INT_LO INT_BOOL [0...1] INT_CON0->INT_BOOL INT_CON1->INT_BOOL INT_BOOL->INT_LO INT_LO->INT_BOT FLT_CON64 64b consts [excludes 32b consts] FLT_TOP->FLT_CON64 FLT_CONPI 3.14159... FLT_TOP->FLT_CONPI FLT_X32 ~f32 FLT_TOP->FLT_X32 FLT_BOT ⊥ :flt FLT_BOT->BOT FLT_CON64->FLT_BOT FLT_CON32 32b consts FLT_32 f32 FLT_CON32->FLT_32 FLT_CONPI->FLT_BOT FLT_X32->FLT_CON32 FLT_CON0 0. FLT_X32->FLT_CON0 FLT_CON0->FLT_32 FLT_32->FLT_BOT PTR0 *ptr? struct PTR->PTR0 PTR0->BOT STRUCT_S1 field int/ptr STRUCT_TOP->STRUCT_S1 STRUCT_S2 field int/ptr field int/ptr STRUCT_TOP->STRUCT_S2 STRUCT_SN field int/ptr ...   int/ptr field int/ptr STRUCT_TOP->STRUCT_SN STRUCT_BOT ⊥ :struct STRUCT_BOT->BOT STRUCT_S1->STRUCT_BOT STRUCT_S2->STRUCT_BOT STRUCT_SN->STRUCT_BOT MEM_ALIAS1 #1 MEM_TOP->MEM_ALIAS1 MEM_ALIASDOTS ... MEM_TOP->MEM_ALIASDOTS MEM_ALIASN #n MEM_TOP->MEM_ALIASN MEM_BOT ⊥ :mem MEM_BOT->BOT MEM_ALIAS1->MEM_BOT MEM_ALIASDOTS->MEM_BOT MEM_ALIASN->MEM_BOT TUPLE1 Tuple type TUPLE_TOP->TUPLE1 TUPLE2 Tuple type type TUPLE_TOP->TUPLE2 TUPLEN Tuple type ... type TUPLE_TOP->TUPLEN TUPLE_BOT ⊥ :tuple TUPLE_BOT->BOT TUPLE1->TUPLE_BOT TUPLE2->TUPLE_BOT TUPLEN->TUPLE_BOT