ADT MultipleMatchCaml [ ] INITIALS mmCaml : LPatternCaml * LExprCaml * ExprCaml -> MultipleMatchCaml CONSTRUCTORS SELECTORS StringOfMultipleMatchCaml(c): MultipleMatchCaml(i) -> String EQ_MultipleMatchCaml(c): MultipleMatchCaml(i) * MultipleMatchCaml(i) -> BOOL AXIOMS StringOfMultipleMatchCaml(mmCaml(L1,L2,E3))= if isEmptyList_LExprCaml(L2) then concat_String(StringOfLPatternCaml(L1," "), concat_String("->",StringOfExprCaml(E3))) else concat_String(StringOfLPatternCaml(L1," "), concat_String(" when ", concat_String(StringOfExprCaml(head_LExprCaml(L2)), concat_String("->",StringOfExprCaml(E3))))) fi EQ_MultipleMatchCaml(mmCaml(L1,L2,E3),mmCaml(L4,L5,E6)) = AND(EQ_LPatternCaml(L1,L4),AND(EQ_LExprCaml(L2,L5),EQ_ExprCaml(E3,E6)))