:- module daf_bug.
:- interface.

:- include_module daf_bug_sub.
:- import_module daf_bug.daf_bug_sub.

:- import_module list.

:- type bool_var.
:- type int_var.

:- type cpx_constraint
  --->  linear_leq(list(int_var))
  ;     all_different(list(int_var))
  ;     neq(int_var, int_var)
  ;     clause(list(bool_var))
  ;     conj(list(cpx_constraint))
  ;     literal(bool_var).

:- func parent_value = cpx_constraint.

:- implementation.

:- type bool_var
	--->	bool_var(
			kind :: bool_kind,	
			var  :: int_dom,
			val  :: int
		).

:- type int_var
    --->    int_var(
                mult   ::  int,
                dom    ::  int_dom,
                offset ::  int
            ).

:- type int_dom
    --->    int_dom(
                col :: int
            ).


parent_value = literal(bool_var(geq, int_dom(561), 42)).
