12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667(****************************************************************************)(* *)(* This file is part of MOPSA, a Modular Open Platform for Static Analysis. *)(* *)(* Copyright (C) 2017-2019 The MOPSA Project. *)(* *)(* This program is free software: you can redistribute it and/or modify *)(* it under the terms of the GNU Lesser General Public License as published *)(* by the Free Software Foundation, either version 3 of the License, or *)(* (at your option) any later version. *)(* *)(* This program is distributed in the hope that it will be useful, *)(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *)(* GNU Lesser General Public License for more details. *)(* *)(* You should have received a copy of the GNU Lesser General Public License *)(* along with this program. If not, see <http://www.gnu.org/licenses/>. *)(* *)(****************************************************************************)(** Powerset lattice with finite cardinality elements or ⊺. *)openMopsa_utilsopenTopopenCoremoduletypeS=sigtypeeltmoduleSet:SetExtSig.Swithtypeelt=elttypet=Set.twith_topvalbottom:tvaltop:tvalis_top:t->boolvalsubset:t->t->boolvalequal:t->t->boolvalcompare:t->t->intvaljoin:t->t->tvalmeet:t->t->tvalunion:t->t->tvalinter:t->t->tvaldiff:t->t->tvalwiden:'aCore.Context.ctx->t->t->tvalprint:Print.printer->t->unitvaladd:Set.elt->t->tvalfold:(elt->'a->'a)->t->'a->'avalremove:elt->t->tvalmem:elt->t->boolvalfilter:(Set.elt->bool)->t->tvalpartition:(Set.elt->bool)->t->t*tvalexists:(Set.elt->bool)->t->boolvalfor_all:(Set.elt->bool)->t->boolvalcardinal:t->intvalfind:Set.elt->t->eltvalchoose:t->eltvalsingleton:elt->tvalof_list:eltlist->Set.tTop.with_topvalis_empty:t->boolvalempty:tvalis_bottom:t->boolvalis_singleton:t->boolvalelements:t->Set.eltlistvalmap:(elt->elt)->t->tvaliter:(elt->unit)->t->unitvalapply:(Set.t->'a)->'a->t->'aend