123456789101112131415161718192021222324252627282930moduletypeLAWS=sigtypetvaljoin_semilattice_1:unit->(t,t->t->t)Law.tvaljoin_semilattice_2:unit->(t,t->t)Law.tvaljoin_semilattice_3:unit->(t,t)Law.tendmoduleFor(L:Preface_specs.JOIN_SEMILATTICE):LAWSwithtypet:=L.t=structopenLawletjoin_semilattice_1()=letlhsxyz=L.joinx(L.joinyz)andrhsxyz=L.join(L.joinxy)zinlaw("join x (join y z)"=~lhs)("join (join x y) z"=~rhs);;letjoin_semilattice_2()=letlhsxy=L.joinxyandrhsxy=L.joinyxinlaw("join x y"=~lhs)("join y x"=~rhs);;letjoin_semilattice_3()=letlhsx=L.joinxxandrhsx=xinlaw("join x x"=~lhs)("x"=~rhs);;end