ADT LLetBindingCaml [ ] INITIALS nil_LLetBindingCaml: -> LLetBindingCaml CONSTRUCTORS cons_LLetBindingCaml: LetBindingCaml * LLetBindingCaml -> LLetBindingCaml SELECTORS head_LLetBindingCaml : LLetBindingCaml(i) -> LetBindingCaml tail_LLetBindingCaml : LLetBindingCaml(i) -> LLetBindingCaml length_LLetBindingCaml : LLetBindingCaml(i) -> NAT concat_LLetBindingCaml : LLetBindingCaml(i) * LLetBindingCaml -> LLetBindingCaml memberList_LLetBindingCaml : LLetBindingCaml(i) * LetBindingCaml -> BOOL isEmptyList_LLetBindingCaml : LLetBindingCaml(i) -> BOOL StringOfLLetBindingCaml : LLetBindingCaml(i) -> String EQ_LLetBindingCaml(c): LLetBindingCaml(i) * LLetBindingCaml(i) -> BOOL AXIOMS head_LLetBindingCaml(nil_LLetBindingCaml) = ERROR head_LLetBindingCaml(cons_LLetBindingCaml(X1,L2)) = X1 tail_LLetBindingCaml(nil_LLetBindingCaml) = ERROR tail_LLetBindingCaml(cons_LLetBindingCaml(X1,L2)) = L2 length_LLetBindingCaml(nil_LLetBindingCaml) = ZERO length_LLetBindingCaml(cons_LLetBindingCaml(X1,L2)) = SUC(length_LLetBindingCaml(L2)) concat_LLetBindingCaml(nil_LLetBindingCaml,L1) = L1 concat_LLetBindingCaml(cons_LLetBindingCaml(X1,L2),L3) = cons_LLetBindingCaml(X1,concat_LLetBindingCaml(L2,L3)) memberList_LLetBindingCaml(nil_LLetBindingCaml,X1) = FALSE memberList_LLetBindingCaml(cons_LLetBindingCaml(X1,L2),X3) = if EQ_LetBindingCaml(X1,X3) then TRUE else memberList_LLetBindingCaml(L2,X3) fi isEmptyList_LLetBindingCaml(nil_LLetBindingCaml) = TRUE isEmptyList_LLetBindingCaml(cons_LLetBindingCaml(X1,L2)) = FALSE StringOfLLetBindingCaml(nil_LLetBindingCaml)="" StringOfLLetBindingCaml(cons_LLetBindingCaml(L1,nil_LLetBindingCaml))= StringOfLetBindingCaml(L1) StringOfLLetBindingCaml(cons_LLetBindingCaml(L1,cons_LLetBindingCaml(L2,t)))= concat_String(StringOfLetBindingCaml(L1), concat_String("\nand ",StringOfLLetBindingCaml(cons_LLetBindingCaml(L2,t)))) EQ_LLetBindingCaml(nil_LLetBindingCaml,nil_LLetBindingCaml) = TRUE EQ_LLetBindingCaml(nil_LLetBindingCaml,cons_LLetBindingCaml(X1,L2)) = FALSE EQ_LLetBindingCaml(cons_LLetBindingCaml(X1,L2),nil_LLetBindingCaml) = FALSE EQ_LLetBindingCaml(cons_LLetBindingCaml(X1,L2),cons_LLetBindingCaml(X3,L4)) = AND(EQ_LetBindingCaml(X1,X3),EQ_LLetBindingCaml(L2,L4))