LetExp([ TypeDec[ (arrtype1, ArrayTy(int)), (rectype1, RecordTy[ (name,true,string), (address,true,string), (id,true,int), (age,true,int)]), (arrtype2, ArrayTy(rectype1)), (rectype2, RecordTy[ (name,true,string), (dates,true,arrtype1)]), (arrtype3, ArrayTy(string))], VarDec(arr1,true,NONE, ArrayExp(arrtype1, IntExp(10), IntExp(0))), VarDec(arr2,true,NONE, ArrayExp(arrtype2, IntExp(5), RecordExp(rectype1,[ (name, StringExp("aname")), (address, StringExp("somewhere")), (id, IntExp(0)), (age, IntExp(0))]))), VarDec(arr3,true,SOME(arrtype3), ArrayExp(arrtype3, IntExp(100), StringExp(""))), VarDec(rec1,true,NONE, RecordExp(rectype1,[ (name, StringExp("Kapoios")), (address, StringExp("Kapou")), (id, IntExp(2432)), (age, IntExp(44))])), VarDec(rec2,true,NONE, RecordExp(rectype2,[ (name, StringExp("Allos")), (dates, ArrayExp(arrtype1, IntExp(3), IntExp(1900)))]))], SeqExp[ AssignExp( SubscriptVar( SimpleVar(arr1), IntExp(0)), IntExp(1)), AssignExp( SubscriptVar( SimpleVar(arr1), IntExp(9)), IntExp(3)), AssignExp( FieldVar( SubscriptVar( SimpleVar(arr2), IntExp(3)), name), StringExp("kati")), AssignExp( FieldVar( SubscriptVar( SimpleVar(arr2), IntExp(1)), age), IntExp(23)), AssignExp( SubscriptVar( SimpleVar(arr3), IntExp(34)), StringExp("sfd")), AssignExp( FieldVar( SimpleVar(rec1), name), StringExp("sdf")), AssignExp( SubscriptVar( FieldVar( SimpleVar(rec2), dates), IntExp(0)), IntExp(2323)), AssignExp( SubscriptVar( FieldVar( SimpleVar(rec2), dates), IntExp(2)), IntExp(2323))])