Sstt.RecordsRecord components.
Record types is a union of intersection of positive and negative records:
\bigcup_{i=1\ldots m} \bigcap_{j=1 \ldots p} \texttt{\{}l_{j}{^1}:o_{j}^1,\ldots,l_{j}^k:o_{j}^{k} ~~ b_j\texttt{\}} \cap
\bigcap_{j=1 \ldots n} \lnot(\{l_{j}{^1}:o_{j}^1,\ldots,l_{j}^l:o_{j}^{l} ~~ b_j\})
with b_j \in \{\texttt{..},~ \epsilon\}.
The minimal signature of a component.
module Atom = VDescr.Descr.Records.Atommodule Dnf = VDescr.Descr.Records.DnfRecords have a condensed representation where each record atom requires the existence of extra labels. For instance, given the (closed) record
\texttt{\{} x:t, y:s \texttt{\}}
its negation can be written as a union of positive condensed atoms:
\texttt{\{} x:\lnot t, \texttt{.. \}}\cup
\texttt{\{} y:\lnot s, \texttt{.. \}}\cup
\texttt{\{} x:t, y:s, \overline{\{x, y\}}~\texttt{.. \}}
meaning any record which has label x associated to a type that is not t, or any record which has label y associated to a type that is not s, or any record which has both labels associated to their original type but which also has an extra label that is neither x nor y.
module Atom' = VDescr.Descr.Records.Atom'The abstract module representing condensed atoms.
module Dnf' = VDescr.Descr.Records.Dnf'Explicit DNF over condensed atoms.