causaldag.classes.dag.DAG.is_minimal_imap

DAG.is_minimal_imap(other, certify=False, check_imap=True) → Union[bool, Tuple[bool, Any]][source]

Check if this DAG is a minimal IMAP of other, i.e., it is an IMAP and no proper subgraph of this DAG is an IMAP of other. Deleting the arc i->j retains IMAPness when i is d-separated from j in other given the parents of j besides i in this DAG.

Parameters:
  • other – Another DAG.
  • certify – If True and this DAG is not an IMAP of other, return a certificate of non-minimality in the form of an edge i->j that can be deleted while retaining IMAPness.
  • check_imap – If True, first check whether this DAG is an IMAP of other, if False, this DAG is assumed to be an IMAP of other.

See also

is_imap()

Returns:True if other is a minimal I-MAP of this DAG, otherwise False.
Return type:bool

Examples

>>> import causaldag as cd
>>> g = cd.DAG(arcs={(1, 2), (3, 2)})
>>> other = cd.DAG(arcs={(1, 2)})
>>> g.is_minimal_imap(other)
False