diff --git a/src/Conjure/UI/Model.hs b/src/Conjure/UI/Model.hs index eb9aba9bd4..6a0d61daee 100644 --- a/src/Conjure/UI/Model.hs +++ b/src/Conjure/UI/Model.hs @@ -1776,13 +1776,12 @@ rule_ChooseRepr config = Rule "choose-repr" (const theRule) where addStructurals :: (MonadLog m, MonadFailDoc m, NameGen m, EnumerateDomain m) => Model -> m Model addStructurals - | forg == Given = return | usedBefore = return | otherwise = \ m -> do structurals <- mkStructurals return $ if null structurals then m - else m { mStatements = mStatements m ++ [SuchThat structurals] } + else m { mStatements = mStatements m ++ [SuchThat structurals | forg == Find] ++ [Where structurals | forg == Given] } channels = [ make opEq this that diff --git a/tests/custom/issues/446/inst.param b/tests/custom/issues/446/inst.param new file mode 100644 index 0000000000..9dcbeba2e5 --- /dev/null +++ b/tests/custom/issues/446/inst.param @@ -0,0 +1 @@ +letting s be sequence(1,2,3,4,5) diff --git a/tests/custom/issues/446/model.essence b/tests/custom/issues/446/model.essence new file mode 100644 index 0000000000..6047c03f59 --- /dev/null +++ b/tests/custom/issues/446/model.essence @@ -0,0 +1 @@ +given s: sequence (size 5, surjective) of int(1..10) diff --git a/tests/custom/issues/446/run.sh b/tests/custom/issues/446/run.sh new file mode 100755 index 0000000000..593842e9c9 --- /dev/null +++ b/tests/custom/issues/446/run.sh @@ -0,0 +1,3 @@ +rm -rf conjure-output +conjure solve model.essence inst.param +rm -rf conjure-output *.solution diff --git a/tests/custom/issues/446/stderr.expected b/tests/custom/issues/446/stderr.expected new file mode 100644 index 0000000000..54bd0465ba --- /dev/null +++ b/tests/custom/issues/446/stderr.expected @@ -0,0 +1,3 @@ +Error: + Invalid instance, a where statement evaluated to false. + (It can be an implicit where statement added by Conjure.) diff --git a/tests/custom/issues/446/stdout.expected b/tests/custom/issues/446/stdout.expected new file mode 100644 index 0000000000..1ad11adbe3 --- /dev/null +++ b/tests/custom/issues/446/stdout.expected @@ -0,0 +1,4 @@ +Generating models for model.essence +Generated models: model000001.eprime +Saved under: conjure-output +Savile Row: model000001.eprime inst.param