ADT CasePMCaml [ ] INITIALS cPMC : PatternCaml * LExprCaml * ExprCaml -> CasePMCaml CONSTRUCTORS SELECTORS StringOfCasePMCaml(c): CasePMCaml(i) -> String EQ_CasePMCaml(c): CasePMCaml(i) * CasePMCaml(i) -> BOOL AXIOMS StringOfCasePMCaml(cPMC(P1,L2,E3))= if isEmptyList_LExprCaml(L2) then concat_String(StringOfPatternCaml(P1), concat_String("->",StringOfExprCaml(E3))) else concat_String(StringOfPatternCaml(P1), concat_String(" when ", concat_String(StringOfExprCaml(head_LExprCaml(L2)), concat_String("->",StringOfExprCaml(E3))))) fi EQ_CasePMCaml(cPMC(P1,L2,E3),cPMC(P4,L5,E6)) = AND(AND(EQ_PatternCaml(P1,P4),EQ_LExprCaml(L2,L5)),EQ_ExprCaml(E3,E6))