File tree Expand file tree Collapse file tree 3 files changed +15
-0
lines changed
examples/Constrained/Examples Expand file tree Collapse file tree 3 files changed +15
-0
lines changed Original file line number Diff line number Diff line change @@ -35,6 +35,12 @@ evenSpec = explainSpec ["even via (x+x)"] $
3535 (\ eval -> pure (div (eval evenx) 2 ))
3636 (\ [var |somey|] -> [assert $ evenx ==. somey + somey])
3737
38+ composeEvenSpec :: Specification Int
39+ composeEvenSpec = constrained $ \ x -> [satisfies x evenSpec, assert $ x >. 10 ]
40+
41+ composeOddSpec :: Specification Int
42+ composeOddSpec = constrained $ \ x -> [satisfies x oddSpec, assert $ x >. 10 ]
43+
3844sum3WithLength :: Integer -> Specification ([Int ], Int , Int , Int )
3945sum3WithLength n =
4046 constrained $ \ [var |quad|] ->
Original file line number Diff line number Diff line change @@ -895,6 +895,9 @@ instance Logic IntW where
895895 propagateMemberSpec MultW (HOLE :<: i) es = memberSpec (mapMaybe (flip invertMult i) (NE. toList es)) (NE. fromList [" propagateSpec" ])
896896 propagateMemberSpec MultW ctx es = propagateMemberSpec MultW (flipCtx ctx) es
897897
898+ rewriteRules AddW (x :> y :> Nil ) _ | x == y = Just $ 2 * x
899+ rewriteRules _ _ _ = Nothing
900+
898901infix 4 +.
899902
900903-- | `Term`-level `(+)`
Original file line number Diff line number Diff line change @@ -20,9 +20,11 @@ import Constrained.Examples.Either
2020import Constrained.Examples.Fold (
2121 Outcome (.. ),
2222 evenSpec ,
23+ composeEvenSpec ,
2324 listSumComplex ,
2425 logishProp ,
2526 oddSpec ,
27+ composeOddSpec ,
2628 pickProp ,
2729 sum3 ,
2830 sum3WithLength ,
@@ -203,6 +205,10 @@ tests nightly =
203205 prop " prop_noNarrowLoop" $ withMaxSuccess 1000 prop_noNarrowLoop
204206 conformsToSpecESpec
205207 foldWithSizeTests
208+ testSpec " evenSpec" (evenSpec @ Int )
209+ testSpec " composeEvenSpec" composeEvenSpec
210+ testSpec " oddSpec" oddSpec
211+ testSpec " composeOddSpec" composeOddSpec
206212
207213negativeTests :: Spec
208214negativeTests =
You can’t perform that action at this time.
0 commit comments