Zee3.MARCO (zee3_marco v0.2.0)

Copy Markdown

Documentation for Zee3.MARCO algorithm, which implements the MARCO argoritm for Zee3-based constraints.

Summary

Functions

Returns all minimum unsatisfiable cores (MSSs) for a set of constraints. Returns a list.

Returns all minimum unsatisfiable cores (MUSs) for a set of constraints. Returns a list.

Returns all maximum satisfying sets (MSSs) and minimum unsatisfiable cores (MUSs) for a set of constraints. Returns a list of tuples of the form {:mss, set} or {:mus, set}.

Enumerate the MSSs for this set of constraints. Returns a Stream.

Enumerate the MUSs for this set of constraints. Returns a Stream.

Enumerate the all the maximum satisfying sets (MSSs) and minimum unsatisfiable cores (MUSs) for a set of constraints. Returns a Stream that yields tuples of the form {:mss, set} or {:mus, set}.

Functions

all_mss(constraint_map, background \\ fn pid -> pid end)

Returns all minimum unsatisfiable cores (MSSs) for a set of constraints. Returns a list.

This function eagerly evaluates all MSSs, which can take a rather long time. If you need control over how long to wait until you quit generating more sets or if you want to stream sets as they are generated, use the enumerate_mus/2 function.

The results are sorted by set (generally, smaller sets come first) so that the result of this function is deterministic.

all_mus(constraint_map, background \\ fn pid -> pid end)

Returns all minimum unsatisfiable cores (MUSs) for a set of constraints. Returns a list.

This function eagerly evaluates all MUSs, which can take a rather long time. If you need control over how long to wait until you quit generating more sets or if you want to stream sets as they are generated, use the enumerate_mus/2 function.

The results are sorted by set (generally, smaller sets come first) so that the result of this function is deterministic.

all_sets(constraint_map, background \\ fn pid -> pid end)

Returns all maximum satisfying sets (MSSs) and minimum unsatisfiable cores (MUSs) for a set of constraints. Returns a list of tuples of the form {:mss, set} or {:mus, set}.

This function eagerly evaluates all sets, which can take a rather long time. If you need control over how long to wait until you quit generating more sets or if you want to stream sets as they are generated, use the enumerate_sets/2 function.

The results are sorted by set (generally, smaller sets come first) so that the result of this function is deterministic.

enumerate_mss(constraint_map, background \\ fn pid -> pid end)

@spec enumerate_mss(map(), (pid() -> :ok)) :: Enumerable.t(MapSet.t())

Enumerate the MSSs for this set of constraints. Returns a Stream.

Warning

The order of the returned MSSs is non-deterministic

enumerate_mus(constraint_map, background \\ fn pid -> pid end)

@spec enumerate_mus(map(), (pid() -> :ok)) :: Enumerable.t(MapSet.t())

Enumerate the MUSs for this set of constraints. Returns a Stream.

Warning

The order of the returned MUSs is non-deterministic

enumerate_sets(constraint_map, background \\ fn _pid -> :ok end)

@spec enumerate_sets(map(), (pid() -> :ok)) :: Enumerable.t({:mss | :mus, MapSet.t()})

Enumerate the all the maximum satisfying sets (MSSs) and minimum unsatisfiable cores (MUSs) for a set of constraints. Returns a Stream that yields tuples of the form {:mss, set} or {:mus, set}.

Warning

The order of the returned sets is non-deterministic