{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE ViewPatterns #-}
module Constrained.Examples.List where
import Data.Word
import Constrained
import Constrained.Examples.Basic
type Numbery a =
( Foldy BaseFn a
, OrdLike BaseFn a
, NumLike BaseFn a
, Ord a
, Enum a
)
listSum :: Numbery a => Specification BaseFn [a]
listSum :: forall a. Numbery a => Specification BaseFn [a]
listSum = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \Term BaseFn [a]
as ->
Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
10 forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<=. forall (fn :: Univ) a.
(BaseUniverse fn, Member (FunFn fn) fn, Foldy fn a) =>
Term fn [a] -> Term fn a
sum_ Term BaseFn [a]
as
listSumForall :: Numbery a => Specification BaseFn [a]
listSumForall :: forall a. Numbery a => Specification BaseFn [a]
listSumForall = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \Term BaseFn [a]
xs ->
[ forall t a (fn :: Univ) p.
(Forallable t a, HasSpec fn t, HasSpec fn a, IsPred p fn) =>
Term fn t -> (Term fn a -> p) -> Pred fn
forAll Term BaseFn [a]
xs forall a b. (a -> b) -> a -> b
$ \Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
x -> Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
1 forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
x
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ forall (fn :: Univ) a.
(BaseUniverse fn, Member (FunFn fn) fn, Foldy fn a) =>
Term fn [a] -> Term fn a
sum_ Term BaseFn [a]
xs forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
20
]
listSumRange :: Numbery a => Specification BaseFn [a]
listSumRange :: forall a. Numbery a => Specification BaseFn [a]
listSumRange = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \Term BaseFn [a]
xs ->
let n :: Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
n = forall (fn :: Univ) a.
(BaseUniverse fn, Member (FunFn fn) fn, Foldy fn a) =>
Term fn [a] -> Term fn a
sum_ Term BaseFn [a]
xs
in [ forall t a (fn :: Univ) p.
(Forallable t a, HasSpec fn t, HasSpec fn a, IsPred p fn) =>
Term fn t -> (Term fn a -> p) -> Pred fn
forAll Term BaseFn [a]
xs forall a b. (a -> b) -> a -> b
$ \Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
x -> Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
1 forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
x
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
n forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
20
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
10 forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
n
]
listSumRangeUpper :: Numbery a => Specification BaseFn [a]
listSumRangeUpper :: forall a. Numbery a => Specification BaseFn [a]
listSumRangeUpper = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \Term BaseFn [a]
xs ->
let n :: Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
n = forall (fn :: Univ) a.
(BaseUniverse fn, Member (FunFn fn) fn, Foldy fn a) =>
Term fn [a] -> Term fn a
sum_ Term BaseFn [a]
xs
in
[ forall t a (fn :: Univ) p.
(Forallable t a, HasSpec fn t, HasSpec fn a, IsPred p fn) =>
Term fn t -> (Term fn a -> p) -> Pred fn
forAll Term BaseFn [a]
xs forall a b. (a -> b) -> a -> b
$ \Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
x -> [Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
x forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
12]
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
n forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
20
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
10 forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
n
]
listSumRangeRange :: Numbery a => Specification BaseFn [a]
listSumRangeRange :: forall a. Numbery a => Specification BaseFn [a]
listSumRangeRange = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \Term BaseFn [a]
xs ->
let n :: Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
n = forall (fn :: Univ) a.
(BaseUniverse fn, Member (FunFn fn) fn, Foldy fn a) =>
Term fn [a] -> Term fn a
sum_ Term BaseFn [a]
xs
in [ forall t a (fn :: Univ) p.
(Forallable t a, HasSpec fn t, HasSpec fn a, IsPred p fn) =>
Term fn t -> (Term fn a -> p) -> Pred fn
forAll Term BaseFn [a]
xs forall a b. (a -> b) -> a -> b
$ \Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
x -> [Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
1 forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
x, Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
x forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
5]
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
n forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
20
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
10 forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
n
]
listSumElemRange :: Numbery a => Specification BaseFn [a]
listSumElemRange :: forall a. Numbery a => Specification BaseFn [a]
listSumElemRange = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \Term BaseFn [a]
xs ->
let n :: Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
n = forall (fn :: Univ) a.
(BaseUniverse fn, Member (FunFn fn) fn, Foldy fn a) =>
Term fn [a] -> Term fn a
sum_ Term BaseFn [a]
xs
in [ forall t a (fn :: Univ) p.
(Forallable t a, HasSpec fn t, HasSpec fn a, IsPred p fn) =>
Term fn t -> (Term fn a -> p) -> Pred fn
forAll Term BaseFn [a]
xs forall a b. (a -> b) -> a -> b
$ \Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
x -> [Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
1 forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
x, Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
x forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
5]
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
n forall a (fn :: Univ).
HasSpec fn a =>
Term fn a -> Term fn [a] -> Term fn Bool
`elem_` forall a (fn :: Univ). Show a => a -> Term fn a
lit [a
10, a
12 .. a
20]
]
listSumPair :: Numbery a => Specification BaseFn [(a, Int)]
listSumPair :: forall a. Numbery a => Specification BaseFn [(a, Int)]
listSumPair = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \Term BaseFn [(a, Int)]
xs ->
[ forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ forall (fn :: Univ) a b.
(BaseUniverse fn, Foldy fn b, HasSpec fn a) =>
(Term fn a -> Term fn b) -> Term fn [a] -> Term fn b
foldMap_ forall (fn :: Univ) a b.
(HasSpec fn a, HasSpec fn b) =>
Term fn (a, b) -> Term fn a
fst_ Term BaseFn [(a, Int)]
xs forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
100
, forall (fn :: Univ) t a p.
(Forallable t a, Cases (SimpleRep a) ~ '[SimpleRep a],
TypeSpec fn a ~ TypeSpec fn (SimpleRep a), HasSpec fn t,
HasSpec fn (SimpleRep a), HasSimpleRep a,
All (HasSpec fn) (Args (SimpleRep a)), IsPred p fn,
IsProd (SimpleRep a), HasSpec fn a) =>
Term fn t
-> FunTy (MapList (Term fn) (Args (SimpleRep a))) p -> Pred fn
forAll' Term BaseFn [(a, Int)]
xs forall a b. (a -> b) -> a -> b
$ \Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
x Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
y -> [Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
20 forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
x, Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
x forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
a
30, Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
y forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
100]
]
listEmpty :: Specification BaseFn [Int]
listEmpty :: Specification BaseFn [Int]
listEmpty = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \Term BaseFn [Int]
xs ->
[ forall t a (fn :: Univ) p.
(Forallable t a, HasSpec fn t, HasSpec fn a, IsPred p fn) =>
Term fn t -> (Term fn a -> p) -> Pred fn
forAll Term BaseFn [Int]
xs forall a b. (a -> b) -> a -> b
$ \Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
_ -> Bool
False
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ forall a (fn :: Univ).
HasSpec fn [a] =>
Term fn [a] -> Term fn Integer
length_ Term BaseFn [Int]
xs forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<=. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Integer
10
]
pairListError :: Specification BaseFn [(Int, Int)]
pairListError :: Specification BaseFn [(Int, Int)]
pairListError = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \Term BaseFn [(Int, Int)]
ps ->
[ forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ forall a (fn :: Univ).
HasSpec fn [a] =>
Term fn [a] -> Term fn Integer
length_ Term BaseFn [(Int, Int)]
ps forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<=. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Integer
10
, forall (fn :: Univ) t a p.
(Forallable t a, Cases (SimpleRep a) ~ '[SimpleRep a],
TypeSpec fn a ~ TypeSpec fn (SimpleRep a), HasSpec fn t,
HasSpec fn (SimpleRep a), HasSimpleRep a,
All (HasSpec fn) (Args (SimpleRep a)), IsPred p fn,
IsProd (SimpleRep a), HasSpec fn a) =>
Term fn t
-> FunTy (MapList (Term fn) (Args (SimpleRep a))) p -> Pred fn
forAll' Term BaseFn [(Int, Int)]
ps forall a b. (a -> b) -> a -> b
$ \Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
a Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
b ->
[ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
a forall a (fn :: Univ).
HasSpec fn a =>
Term fn a -> Term fn [a] -> Term fn Bool
`elem_` forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
1 .. Int
8]
, Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
a forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
9
, Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
b forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
a
]
]
listMustSizeIssue :: Specification BaseFn [Int]
listMustSizeIssue :: Specification BaseFn [Int]
listMustSizeIssue = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \Term BaseFn [Int]
xs ->
[ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
1 forall a (fn :: Univ).
HasSpec fn a =>
Term fn a -> Term fn [a] -> Term fn Bool
`elem_` Term BaseFn [Int]
xs
, forall a (fn :: Univ).
HasSpec fn [a] =>
Term fn [a] -> Term fn Integer
length_ Term BaseFn [Int]
xs forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Integer
1
]
sumListBad :: Specification BaseFn [Word64]
sumListBad :: Specification BaseFn [Word64]
sumListBad = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \Term BaseFn [Word64]
xs ->
[ forall t a (fn :: Univ) p.
(Forallable t a, HasSpec fn t, HasSpec fn a, IsPred p fn) =>
Term fn t -> (Term fn a -> p) -> Pred fn
forAll Term BaseFn [Word64]
xs forall a b. (a -> b) -> a -> b
$ \Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Word64
x -> forall a p (fn :: Univ).
(HasSpec fn a, IsPred p fn) =>
(Term fn a -> p) -> Pred fn
unsafeExists forall a b. (a -> b) -> a -> b
$ \Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Word64
y -> Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Word64
y forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Word64
x
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ forall (fn :: Univ) a.
(BaseUniverse fn, Member (FunFn fn) fn, Foldy fn a) =>
Term fn [a] -> Term fn a
sum_ Term BaseFn [Word64]
xs forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. forall a (fn :: Univ). Show a => a -> Term fn a
lit Word64
10
]
listExistsUnfree :: Specification BaseFn [Int]
listExistsUnfree :: Specification BaseFn [Int]
listExistsUnfree = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \Term BaseFn [Int]
xs ->
[ forall t a (fn :: Univ) p.
(Forallable t a, HasSpec fn t, HasSpec fn a, IsPred p fn) =>
Term fn t -> (Term fn a -> p) -> Pred fn
forAll Term BaseFn [Int]
xs forall a b. (a -> b) -> a -> b
$ \Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
x -> Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
x forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Specification fn a -> Pred fn
`satisfies` Specification BaseFn Int
existsUnfree
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ forall a (fn :: Univ).
(HasSpec fn a, Sized fn a) =>
Term fn a -> Term fn Integer
sizeOf_ Term BaseFn [Int]
xs forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Integer
3
]
listSumShort :: Specification BaseFn [Int]
listSumShort :: Specification BaseFn [Int]
listSumShort = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \ Term BaseFn [Int]
[var| xs |] ->
[ forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ forall a (fn :: Univ).
(HasSpec fn a, Sized fn a) =>
Term fn a -> Term fn Integer
sizeOf_ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
xs forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<=. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Integer
4
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ forall (fn :: Univ) a.
(BaseUniverse fn, Member (FunFn fn) fn, Foldy fn a) =>
Term fn [a] -> Term fn a
sum_ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
xs forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<=. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
100000
, forall t a (fn :: Univ) p.
(Forallable t a, HasSpec fn t, HasSpec fn a, IsPred p fn) =>
Term fn t -> (Term fn a -> p) -> Pred fn
forAll Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
xs forall a b. (a -> b) -> a -> b
$ \ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
[var| x |] ->
[ forall a p (fn :: Univ).
(HasSpec fn a, IsPred p fn) =>
((forall b. Term fn b -> b) -> GE a) -> (Term fn a -> p) -> Pred fn
exists (forall a b. a -> b -> a
const forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
True) forall a b. (a -> b) -> a -> b
$ \Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Bool
b ->
forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
Term fn Bool -> p -> Pred fn
whenTrue Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Bool
b forall a b. (a -> b) -> a -> b
$ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
x forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<=. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
10000000
]
]
appendSize :: Specification BaseFn ([Int], [Int])
appendSize :: Specification BaseFn ([Int], [Int])
appendSize = forall a (fn :: Univ) p.
(Cases (SimpleRep a) ~ '[SimpleRep a],
TypeSpec fn a ~ TypeSpec fn (SimpleRep a),
HasSpec fn (SimpleRep a), HasSimpleRep a,
All (HasSpec fn) (Args (SimpleRep a)), IsProd (SimpleRep a),
HasSpec fn a, IsPred p fn) =>
FunTy (MapList (Term fn) (Args (SimpleRep a))) p
-> Specification fn a
constrained' forall a b. (a -> b) -> a -> b
$ \ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var| xs |] Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var| ys |] ->
[ forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ forall a (fn :: Univ).
(HasSpec fn a, Sized fn a) =>
Term fn a -> Term fn Integer
sizeOf_ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
xs forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<=. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Integer
10
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ forall a (fn :: Univ).
(HasSpec fn a, Sized fn a) =>
Term fn a -> Term fn Integer
sizeOf_ (Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
ys forall (fn :: Univ) a.
HasSpec fn a =>
Term fn [a] -> Term fn [a] -> Term fn [a]
++. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
xs) forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<=. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Integer
15
]
appendSingleton :: Specification BaseFn Int
appendSingleton :: Specification BaseFn Int
appendSingleton = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \ Term BaseFn Int
[var| x |] ->
Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
10 forall a (fn :: Univ).
HasSpec fn a =>
Term fn a -> Term fn [a] -> Term fn Bool
`elem_` forall (fn :: Univ) a. HasSpec fn a => Term fn a -> Term fn [a]
singletonList_ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
x forall (fn :: Univ) a.
HasSpec fn a =>
Term fn [a] -> Term fn [a] -> Term fn [a]
++. forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
1, Int
2, Int
3]
singletonSubset :: Specification BaseFn Int
singletonSubset :: Specification BaseFn Int
singletonSubset = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \ Term BaseFn Int
[var| x |] ->
forall a (fn :: Univ).
(HasSpec fn a, Ord a) =>
Term fn [a] -> Term fn (Set a)
fromList_ (forall (fn :: Univ) a. HasSpec fn a => Term fn a -> Term fn [a]
singletonList_ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
x) forall (fn :: Univ) a.
(HasSpec fn (Set a), Ord a, Show a, Typeable a) =>
Term fn (Set a) -> Term fn (Set a) -> Term fn Bool
`subset_` forall a (fn :: Univ).
(HasSpec fn a, Ord a) =>
Term fn [a] -> Term fn (Set a)
fromList_ (forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
1, Int
2, Int
3])
appendSuffix :: Specification BaseFn ([Int], [Int])
appendSuffix :: Specification BaseFn ([Int], [Int])
appendSuffix = forall a (fn :: Univ) p.
(Cases (SimpleRep a) ~ '[SimpleRep a],
TypeSpec fn a ~ TypeSpec fn (SimpleRep a),
HasSpec fn (SimpleRep a), HasSimpleRep a,
All (HasSpec fn) (Args (SimpleRep a)), IsProd (SimpleRep a),
HasSpec fn a, IsPred p fn) =>
FunTy (MapList (Term fn) (Args (SimpleRep a))) p
-> Specification fn a
constrained' forall a b. (a -> b) -> a -> b
$
\ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var|x|] Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var|y|] -> forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
x forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
y forall (fn :: Univ) a.
HasSpec fn a =>
Term fn [a] -> Term fn [a] -> Term fn [a]
++. forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
4, Int
5, Int
6]
appendForAll :: Specification BaseFn ([Int], [Int])
appendForAll :: Specification BaseFn ([Int], [Int])
appendForAll = forall a (fn :: Univ) p.
(Cases (SimpleRep a) ~ '[SimpleRep a],
TypeSpec fn a ~ TypeSpec fn (SimpleRep a),
HasSpec fn (SimpleRep a), HasSimpleRep a,
All (HasSpec fn) (Args (SimpleRep a)), IsProd (SimpleRep a),
HasSpec fn a, IsPred p fn) =>
FunTy (MapList (Term fn) (Args (SimpleRep a))) p
-> Specification fn a
constrained' forall a b. (a -> b) -> a -> b
$ \ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var| xs |] Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var| ys |] ->
[ forall t a (fn :: Univ) p.
(Forallable t a, HasSpec fn t, HasSpec fn a, IsPred p fn) =>
Term fn t -> (Term fn a -> p) -> Pred fn
forAll Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
xs forall a b. (a -> b) -> a -> b
$ \Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
x -> Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
x forall a (fn :: Univ).
HasSpec fn a =>
Term fn a -> Term fn [a] -> Term fn Bool
`elem_` forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
2, Int
4 .. Int
10]
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
xs forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
ys forall (fn :: Univ) a.
HasSpec fn a =>
Term fn [a] -> Term fn [a] -> Term fn [a]
++. forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
2, Int
4, Int
6]
]
singletonErrorTooMany :: Specification BaseFn Int
singletonErrorTooMany :: Specification BaseFn Int
singletonErrorTooMany = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \ Term BaseFn Int
[var| x |] ->
forall a (fn :: Univ).
(HasSpec fn a, Ord a) =>
Term fn [a] -> Term fn (Set a)
fromList_ (forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
1, Int
2, Int
3]) forall (fn :: Univ) a.
(HasSpec fn (Set a), Ord a, Show a, Typeable a) =>
Term fn (Set a) -> Term fn (Set a) -> Term fn Bool
`subset_` forall a (fn :: Univ).
(HasSpec fn a, Ord a) =>
Term fn [a] -> Term fn (Set a)
fromList_ (forall (fn :: Univ) a. HasSpec fn a => Term fn a -> Term fn [a]
singletonList_ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
x)
singletonErrorTooLong :: Specification BaseFn Int
singletonErrorTooLong :: Specification BaseFn Int
singletonErrorTooLong = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \ Term BaseFn Int
[var| x |] ->
Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Integer
2 forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<=. forall a (fn :: Univ).
HasSpec fn [a] =>
Term fn [a] -> Term fn Integer
length_ (forall (fn :: Univ) a. HasSpec fn a => Term fn a -> Term fn [a]
singletonList_ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
x)
appendTooLong :: Specification BaseFn [Int]
appendTooLong :: Specification BaseFn [Int]
appendTooLong = forall a (fn :: Univ) p.
(IsPred p fn, HasSpec fn a) =>
(Term fn a -> p) -> Specification fn a
constrained forall a b. (a -> b) -> a -> b
$ \ Term BaseFn [Int]
[var| xs |] ->
forall a (fn :: Univ).
(HasSpec fn a, Sized fn a) =>
Term fn a -> Term fn Integer
sizeOf_ (forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
1, Int
2, Int
3, Int
4] forall (fn :: Univ) a.
HasSpec fn a =>
Term fn [a] -> Term fn [a] -> Term fn [a]
++. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
xs) forall a (fn :: Univ).
(Ord a, OrdLike fn a) =>
Term fn a -> Term fn a -> Term fn Bool
<=. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Integer
3
overconstrainedAppend :: Specification BaseFn ([Int], [Int])
overconstrainedAppend :: Specification BaseFn ([Int], [Int])
overconstrainedAppend = forall a (fn :: Univ) p.
(Cases (SimpleRep a) ~ '[SimpleRep a],
TypeSpec fn a ~ TypeSpec fn (SimpleRep a),
HasSpec fn (SimpleRep a), HasSimpleRep a,
All (HasSpec fn) (Args (SimpleRep a)), IsProd (SimpleRep a),
HasSpec fn a, IsPred p fn) =>
FunTy (MapList (Term fn) (Args (SimpleRep a))) p
-> Specification fn a
constrained' forall a b. (a -> b) -> a -> b
$
\ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var|x|] Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var|y|] ->
[ forall (fn :: Univ) a b.
(HasSpec fn a, HasSpec fn b) =>
Term fn a -> Term fn b -> Pred fn
dependsOn Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
y Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
x
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
x forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
1, Int
2, Int
3] forall (fn :: Univ) a.
HasSpec fn a =>
Term fn [a] -> Term fn [a] -> Term fn [a]
++. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
y
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
y forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
4, Int
5, Int
6]
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
x forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
/=. forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
1, Int
2, Int
3, Int
4, Int
5, Int
6]
]
overconstrainedPrefixes :: Specification BaseFn ([Int], [Int], [Int])
overconstrainedPrefixes :: Specification BaseFn ([Int], [Int], [Int])
overconstrainedPrefixes = forall a (fn :: Univ) p.
(Cases (SimpleRep a) ~ '[SimpleRep a],
TypeSpec fn a ~ TypeSpec fn (SimpleRep a),
HasSpec fn (SimpleRep a), HasSimpleRep a,
All (HasSpec fn) (Args (SimpleRep a)), IsProd (SimpleRep a),
HasSpec fn a, IsPred p fn) =>
FunTy (MapList (Term fn) (Args (SimpleRep a))) p
-> Specification fn a
constrained' forall a b. (a -> b) -> a -> b
$ \ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var| xs |] Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var| ys |] Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var| zs |] ->
[ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
xs forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
1, Int
2, Int
3] forall (fn :: Univ) a.
HasSpec fn a =>
Term fn [a] -> Term fn [a] -> Term fn [a]
++. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
ys
, Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
xs forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
3, Int
4, Int
5] forall (fn :: Univ) a.
HasSpec fn a =>
Term fn [a] -> Term fn [a] -> Term fn [a]
++. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
zs
]
overconstrainedSuffixes :: Specification BaseFn ([Int], [Int], [Int])
overconstrainedSuffixes :: Specification BaseFn ([Int], [Int], [Int])
overconstrainedSuffixes = forall a (fn :: Univ) p.
(Cases (SimpleRep a) ~ '[SimpleRep a],
TypeSpec fn a ~ TypeSpec fn (SimpleRep a),
HasSpec fn (SimpleRep a), HasSimpleRep a,
All (HasSpec fn) (Args (SimpleRep a)), IsProd (SimpleRep a),
HasSpec fn a, IsPred p fn) =>
FunTy (MapList (Term fn) (Args (SimpleRep a))) p
-> Specification fn a
constrained' forall a b. (a -> b) -> a -> b
$ \ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var| xs |] Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var| ys |] Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var| zs |] ->
[ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
xs forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
ys forall (fn :: Univ) a.
HasSpec fn a =>
Term fn [a] -> Term fn [a] -> Term fn [a]
++. forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
1, Int
2, Int
3]
, Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
xs forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
zs forall (fn :: Univ) a.
HasSpec fn a =>
Term fn [a] -> Term fn [a] -> Term fn [a]
++. forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
3, Int
4, Int
5]
]
appendForAllBad :: Specification BaseFn ([Int], [Int])
appendForAllBad :: Specification BaseFn ([Int], [Int])
appendForAllBad = forall a (fn :: Univ) p.
(Cases (SimpleRep a) ~ '[SimpleRep a],
TypeSpec fn a ~ TypeSpec fn (SimpleRep a),
HasSpec fn (SimpleRep a), HasSimpleRep a,
All (HasSpec fn) (Args (SimpleRep a)), IsProd (SimpleRep a),
HasSpec fn a, IsPred p fn) =>
FunTy (MapList (Term fn) (Args (SimpleRep a))) p
-> Specification fn a
constrained' forall a b. (a -> b) -> a -> b
$ \ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var| xs |] Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
[var| ys |] ->
[ forall t a (fn :: Univ) p.
(Forallable t a, HasSpec fn t, HasSpec fn a, IsPred p fn) =>
Term fn t -> (Term fn a -> p) -> Pred fn
forAll Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
xs forall a b. (a -> b) -> a -> b
$ \Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
x -> Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
Int
x forall a (fn :: Univ).
HasSpec fn a =>
Term fn a -> Term fn [a] -> Term fn Bool
`elem_` forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
1 .. Int
10]
, forall (fn :: Univ) p.
(BaseUniverse fn, IsPred p fn) =>
p -> Pred fn
assert forall a b. (a -> b) -> a -> b
$ Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
xs forall (fn :: Univ) a.
HasSpec fn a =>
Term fn a -> Term fn a -> Term fn Bool
==. Term
(Fix
(Oneof
(Oneof
(Oneof MapFn (Oneof PairFn ListFn))
(Oneof FunFn (Oneof SetFn OrdFn)))
(Oneof
(Oneof SumFn (Oneof BoolFn GenericsFn))
(Oneof SizeFn (Oneof EqFn IntFn)))))
[Int]
ys forall (fn :: Univ) a.
HasSpec fn a =>
Term fn [a] -> Term fn [a] -> Term fn [a]
++. forall a (fn :: Univ). Show a => a -> Term fn a
lit [Int
2, Int
4, Int
11]
]