from typing import *

a = [1, 2, 3]                   # list of ints
a = [11.0, 12, 13.0]            # wrong, list of ints and floats
a = (4, 5, 6)                   # wrong, tuple of ints rather than list of ints
a = {4, 5, 6}                   # wrong, set of ints rather than list of ints
a = [7, 8, 9, 10, 11]           # right, list ints
                                
b = [1.0, 2, 3]                 # list of ints and floats
b = [1, 2.0, 3.0]               # right, list of ints and floats
b = [1.0, 2.0, 'three']         # wrong, list of ints, floats and strings
                                
c = [1.1, 2.2, 3.3]             # list of floats
c = [1, 2, 3]                   # right, list of integers, which are specializations of floats
c = [4, 5.5, 6]                 # right, list of integers and floats, which are specializations of integers
                                
d = (1, 2)                      # tuple of 2 ints
d = (3, 4, 5)                   # wrong, tuple of 3 ints
                                
e: List [int] = []              # list of ints, explicitly typed since it is empty
e = [1, 2.5]                    # wrong, float is no specialization of int
e = [3, 4, 5]                   # right, list of ints
                                
f = [[1]]                       # list of lists of ints
f = [[1, 2], [3, 4]]            # right, list of list of ints 
f = [[1.5, 2.5], [3.5, 4.5]]    # wrong, float is no specialization of int
