Lattice TOP ⊤ XCTRL ⊤ :ctrl TOP->XCTRL INT_TOP ⊤ :int TOP->INT_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_MINDOTS ... INT_TOP->INT_MINDOTS INT_ZERO 0 INT_TOP->INT_ZERO INT_MAXDOTS ... INT_TOP->INT_MAXDOTS INT_BOT ⊥ :int INT_BOT->BOT INT_MINDOTS->INT_BOT INT_ZERO->INT_BOT INT_MAXDOTS->INT_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