ADT LPatternCaml [ ] INITIALS nil_LPatternCaml: -> LPatternCaml CONSTRUCTORS cons_LPatternCaml: PatternCaml * LPatternCaml -> LPatternCaml SELECTORS head_LPatternCaml : LPatternCaml(i) -> PatternCaml tail_LPatternCaml : LPatternCaml(i) -> LPatternCaml length_LPatternCaml : LPatternCaml(i) -> NAT concat_LPatternCaml : LPatternCaml(i) * LPatternCaml -> LPatternCaml memberList_LPatternCaml : LPatternCaml(i) * PatternCaml -> BOOL isEmptyList_LPatternCaml : LPatternCaml(i) -> BOOL StringOfLPatternCaml : LPatternCaml(i)*String -> String LPatternCamlOfProductPC:PatternCaml(i)->LPatternCaml EQ_LPatternCaml(c): LPatternCaml(i) * LPatternCaml(i) -> BOOL AXIOMS head_LPatternCaml(nil_LPatternCaml) = ERROR head_LPatternCaml(cons_LPatternCaml(X1,L2)) = X1 tail_LPatternCaml(nil_LPatternCaml) = ERROR tail_LPatternCaml(cons_LPatternCaml(X1,L2)) = L2 length_LPatternCaml(nil_LPatternCaml) = ZERO length_LPatternCaml(cons_LPatternCaml(X1,L2)) = SUC(length_LPatternCaml(L2)) concat_LPatternCaml(nil_LPatternCaml,L1) = L1 concat_LPatternCaml(cons_LPatternCaml(X1,L2),L3) = cons_LPatternCaml(X1,concat_LPatternCaml(L2,L3)) memberList_LPatternCaml(nil_LPatternCaml,X1) = FALSE memberList_LPatternCaml(cons_LPatternCaml(X1,L2),X3) = if EQ_PatternCaml(X1,X3) then TRUE else memberList_LPatternCaml(L2,X3) fi isEmptyList_LPatternCaml(nil_LPatternCaml) = TRUE isEmptyList_LPatternCaml(cons_LPatternCaml(X1,L2)) = FALSE StringOfLPatternCaml(nil_LPatternCaml,sep) = "" StringOfLPatternCaml(cons_LPatternCaml(p1,nil_LPatternCaml),sep) = concat_String("(", concat_String(StringOfPatternCaml(p1),")")) StringOfLPatternCaml(cons_LPatternCaml(p1, cons_LPatternCaml(p2,t)),sep) = concat_String("(", concat_String(StringOfPatternCaml(p1), concat_String(")", concat_String(sep,StringOfLPatternCaml(cons_LPatternCaml(p2,t),sep))))) LPatternCamlOfProductPC(valueNamePC(s))=ERROR LPatternCamlOfProductPC(anyPC)=ERROR LPatternCamlOfProductPC(constantPC(con))=ERROR LPatternCamlOfProductPC(productPC(lp))=lp LPatternCamlOfProductPC(consListPC(lp))=ERROR LPatternCamlOfProductPC(labelPC(lp))=ERROR LPatternCamlOfProductPC(asPC(p,s))=ERROR LPatternCamlOfProductPC(orPC(p1,p2))=ERROR LPatternCamlOfProductPC(constructorPC(s,p))=ERROR LPatternCamlOfProductPC(typePC(p,t))=ERROR EQ_LPatternCaml(nil_LPatternCaml,nil_LPatternCaml) = TRUE EQ_LPatternCaml(nil_LPatternCaml,cons_LPatternCaml(X1,L2)) = FALSE EQ_LPatternCaml(cons_LPatternCaml(X1,L2),nil_LPatternCaml) = FALSE EQ_LPatternCaml(cons_LPatternCaml(X1,L2),cons_LPatternCaml(X3,L4)) = AND(EQ_PatternCaml(X1,X3),EQ_LPatternCaml(L2,L4))