▁types ▁that ▁have ▁the ▁same ▁size , ▁effectively ▁sub ver ting ▁the ▁type ▁concept . ▁ ▁For ▁a ▁list ▁of ▁languages ▁with ▁static ▁type ▁checking , ▁see ▁the ▁category ▁for ▁stat ically ▁typed ▁languages . ▁ ▁Dynamic ▁type ▁checking ▁and ▁runtime ▁type ▁information ▁▁ ▁Dynamic ▁type ▁checking ▁is ▁the ▁process ▁of ▁ver ifying ▁the ▁type ▁safety ▁of ▁a ▁program ▁at ▁runtime . ▁Im plement ations ▁of ▁dynamically ▁type - checked ▁languages ▁generally ▁associate ▁each ▁runtime ▁object ▁with ▁a ▁type ▁tag ▁( i . e ., ▁a ▁reference ▁to ▁a ▁type ) ▁containing ▁its ▁type ▁information . ▁This ▁runtime ▁type ▁information ▁( RT TI ) ▁can ▁also ▁be ▁used ▁to ▁implement ▁dynamic ▁dispatch , ▁late ▁binding , ▁down cast ing , ▁reflection , ▁and ▁similar ▁features . ▁ ▁Most ▁type - safe ▁languages ▁include ▁some ▁form ▁of ▁dynamic ▁type ▁checking , ▁even ▁if ▁they ▁also ▁have ▁a ▁static ▁type ▁check er . ▁The ▁reason ▁for ▁this ▁is ▁that ▁many ▁useful ▁features ▁or ▁properties ▁are ▁difficult ▁or ▁impossible ▁to ▁verify ▁stat ically . ▁For ▁example , ▁suppose ▁that ▁a ▁program ▁defines ▁two ▁types , ▁A ▁and ▁B , ▁where ▁B ▁is ▁a ▁sub type ▁of ▁A . ▁If ▁the ▁program ▁tries ▁to ▁convert ▁a ▁value ▁of ▁type ▁A ▁to ▁type ▁B , ▁which ▁is ▁known ▁as ▁down cast ing , ▁then ▁the ▁operation ▁is ▁legal ▁only ▁if ▁the ▁value ▁being ▁converted ▁is ▁actually ▁a ▁value ▁of ▁type ▁B . ▁Thus , ▁a ▁dynamic ▁check ▁is ▁needed ▁to ▁verify ▁that ▁the ▁operation ▁is ▁safe . ▁This