Currently Language.Fixpoint.Horn.Transformations.elim crashes the program if the constraint contains cycles. As outlined in ICFP2017, the intended behavior should be to ignore the cyclic constraints and use predicate abstraction to solve them. This change uses calculateCuts to remove the set of refinement variables that cause the constraint to be cyclic before running the elimination algorithm.
Currently
Language.Fixpoint.Horn.Transformations.elim
crashes the program if the constraint contains cycles. As outlined in ICFP2017, the intended behavior should be to ignore the cyclic constraints and use predicate abstraction to solve them. This change usescalculateCuts
to remove the set of refinement variables that cause the constraint to be cyclic before running the elimination algorithm.