{-# OPTIONS_HADDOCK show-extensions #-}
{-# LANGUAGE BangPatterns, FlexibleContexts, NoImplicitPrelude #-}
module Phladiprelio.Constraints (
unsafeOrderIJ
, unsafeSignDistanceIJ
, unsafeUnsignDistanceIJ
, isSignDistIJK3
, isUnsignDistIJK3
, isMixedDistIJK3
, isTripleOrdered
, isQuadrupleOrdered
, isSeveralAOrdered
, isSeveralBOrdered
, isFixedPointTup
, isFixedPoint
, notSignDistIJK3
, notUnsignDistIJK3
, notMixedDistIJK3
, notTripleOrdered
, notQuadrupleOrdered
, notSeveralAOrdered
, notSeveralBOrdered
, notFixedPointTup
, notFixedPoint
, filterOrderIJ
, unsafeTriples
, unsafeQuadruples
, unsafeSeveralA
, unsafeSeveralB
, fixedPointsG
, fixedPointsS
, filterSignDistanceIJ
, filterUnsignDistanceIJ
, filterSignDistanceIJK3
, filterUnsignDistanceIJK3
, filterMixedDistanceIJK3
) where
import GHC.Base hiding (foldr)
import GHC.Num ((-),(+))
import Data.Maybe (fromJust)
import Data.SubG (InsertLeft(..),filterG)
import GHC.Arr
import Data.Foldable (all, foldr, any)
unsafeOrderIJ :: Int -> Int -> Array Int Int -> Bool
unsafeOrderIJ :: Int -> Int -> Array Int Int -> Bool
unsafeOrderIJ Int
i Int
j = (\(Int
_,Int
_,Integer
r) -> if Integer
r forall a. Eq a => a -> a -> Bool
== Integer
0 then Bool
True else Bool
False) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr forall {c} {a}. (Num c, Eq a, Eq c) => a -> (a, a, c) -> (a, a, c)
helpG (Int
j,Int
i,Integer
0)
helpG :: a -> (a, a, c) -> (a, a, c)
helpG a
z (a
t,a
u,c
n)
| a
z forall a. Eq a => a -> a -> Bool
== a
t = (a
t,a
u,c
1)
| a
z forall a. Eq a => a -> a -> Bool
== a
u =
case c
n of
c
0 -> (a
t,a
u,c
2)
c
_ -> (a
t,a
u,c
n forall a. Num a => a -> a -> a
- c
1)
| Bool
otherwise = (a
t,a
u,c
n)
{-# INLINE helpG #-}
unsafeSignDistanceIJ
:: Int
-> Int
-> Int
-> Array Int Int
-> Bool
unsafeSignDistanceIJ :: Int -> Int -> Int -> Array Int Int -> Bool
unsafeSignDistanceIJ Int
i Int
j Int
d = (\(Int
_,Int
_,Int
r) -> if Int
r forall a. Ord a => a -> a -> Bool
> Int
100 then (Int
100 forall a. Num a => a -> a -> a
- Int
r) forall a. Eq a => a -> a -> Bool
== Int
d else Int
r forall a. Eq a => a -> a -> Bool
== Int
d) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr forall {c} {a}.
(Ord c, Ord a, Num c, Num a) =>
a -> (a, a, c) -> (a, a, c)
helpG2 (Int
j, Int
i, -Int
1)
helpG2 :: a -> (a, a, c) -> (a, a, c)
helpG2 a
z (a
t, a
u, c
n)
| c
n forall a. Ord a => a -> a -> Bool
< c
0 = if (a
z forall a. Eq a => a -> a -> Bool
/= a
t Bool -> Bool -> Bool
&& a
z forall a. Eq a => a -> a -> Bool
/= a
u) then (a
t, a
u, c
n) else (a
t, a
u, if a
z forall a. Eq a => a -> a -> Bool
== a
t then c
1 else c
101)
| a
z forall a. Eq a => a -> a -> Bool
/= a
u Bool -> Bool -> Bool
&& a
z forall a. Eq a => a -> a -> Bool
/= a
t Bool -> Bool -> Bool
&& a
t forall a. Ord a => a -> a -> Bool
>= a
0 = (a
t, a
u, c
n forall a. Num a => a -> a -> a
+ c
1)
| Bool
otherwise = (-a
1, a
u, c
n)
unsafeUnsignDistanceIJ
:: Int
-> Int
-> Int
-> Array Int Int
-> Bool
unsafeUnsignDistanceIJ :: Int -> Int -> Int -> Array Int Int -> Bool
unsafeUnsignDistanceIJ Int
i Int
j Int
d = (\(Int
_,Int
_,Int
r) -> Int
r forall a. Eq a => a -> a -> Bool
== Int
d) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr forall {c} {a}.
(Ord c, Ord a, Num c, Num a) =>
a -> (a, a, c) -> (a, a, c)
helpG3 (Int
j, Int
i, -Int
1)
helpG3 :: a -> (a, a, c) -> (a, a, c)
helpG3 a
z (a
t, a
u, c
n)
| c
n forall a. Ord a => a -> a -> Bool
< c
0 = if (a
z forall a. Eq a => a -> a -> Bool
/= a
t Bool -> Bool -> Bool
&& a
z forall a. Eq a => a -> a -> Bool
/= a
u) then (a
t, a
u, c
n) else (a
t, a
u, c
1)
| a
z forall a. Eq a => a -> a -> Bool
/= a
u Bool -> Bool -> Bool
&& a
z forall a. Eq a => a -> a -> Bool
/= a
t Bool -> Bool -> Bool
&& a
t forall a. Ord a => a -> a -> Bool
>= a
0 = (a
t, a
u, c
n forall a. Num a => a -> a -> a
+ c
1)
| Bool
otherwise = (-a
1, a
u, c
n)
filterOrderIJ :: (InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) => Int -> Int -> t (Array Int Int) -> t (Array Int Int)
filterOrderIJ :: forall (t :: * -> *).
(InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) =>
Int -> Int -> t (Array Int Int) -> t (Array Int Int)
filterOrderIJ Int
i Int
j = forall (t :: * -> *) a.
(InsertLeft t a, Monoid (t a)) =>
(a -> Bool) -> t a -> t a
filterG (Int -> Int -> Array Int Int -> Bool
unsafeOrderIJ Int
i Int
j)
filterSignDistanceIJ :: (InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) => Int -> Int -> Int -> t (Array Int Int) -> t (Array Int Int)
filterSignDistanceIJ :: forall (t :: * -> *).
(InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) =>
Int -> Int -> Int -> t (Array Int Int) -> t (Array Int Int)
filterSignDistanceIJ Int
i Int
j Int
d = forall (t :: * -> *) a.
(InsertLeft t a, Monoid (t a)) =>
(a -> Bool) -> t a -> t a
filterG (Int -> Int -> Int -> Array Int Int -> Bool
unsafeSignDistanceIJ Int
i Int
j Int
d)
filterUnsignDistanceIJ :: (InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) => Int -> Int -> Int -> t (Array Int Int) -> t (Array Int Int)
filterUnsignDistanceIJ :: forall (t :: * -> *).
(InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) =>
Int -> Int -> Int -> t (Array Int Int) -> t (Array Int Int)
filterUnsignDistanceIJ Int
i Int
j Int
d = forall (t :: * -> *) a.
(InsertLeft t a, Monoid (t a)) =>
(a -> Bool) -> t a -> t a
filterG (Int -> Int -> Int -> Array Int Int -> Bool
unsafeUnsignDistanceIJ Int
i Int
j Int
d)
filterSignDistanceIJK3 :: (InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) => Int -> Int -> Int -> Int -> Int -> t (Array Int Int) -> t (Array Int Int)
filterSignDistanceIJK3 :: forall (t :: * -> *).
(InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) =>
Int
-> Int
-> Int
-> Int
-> Int
-> t (Array Int Int)
-> t (Array Int Int)
filterSignDistanceIJK3 Int
i Int
j Int
k Int
d1 Int
d2 = forall (t :: * -> *) a.
(InsertLeft t a, Monoid (t a)) =>
(a -> Bool) -> t a -> t a
filterG (Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
isSignDistIJK3 Int
i Int
j Int
k Int
d1 Int
d2)
filterUnsignDistanceIJK3 :: (InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) => Int -> Int -> Int -> Int -> Int -> t (Array Int Int) -> t (Array Int Int)
filterUnsignDistanceIJK3 :: forall (t :: * -> *).
(InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) =>
Int
-> Int
-> Int
-> Int
-> Int
-> t (Array Int Int)
-> t (Array Int Int)
filterUnsignDistanceIJK3 Int
i Int
j Int
k Int
d1 Int
d2 = forall (t :: * -> *) a.
(InsertLeft t a, Monoid (t a)) =>
(a -> Bool) -> t a -> t a
filterG (Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
isUnsignDistIJK3 Int
i Int
j Int
k Int
d1 Int
d2)
filterMixedDistanceIJK3 :: (InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) => Int -> Int -> Int -> Int -> Int -> t (Array Int Int) -> t (Array Int Int)
filterMixedDistanceIJK3 :: forall (t :: * -> *).
(InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) =>
Int
-> Int
-> Int
-> Int
-> Int
-> t (Array Int Int)
-> t (Array Int Int)
filterMixedDistanceIJK3 Int
i Int
j Int
k Int
d1 Int
d2 = forall (t :: * -> *) a.
(InsertLeft t a, Monoid (t a)) =>
(a -> Bool) -> t a -> t a
filterG (Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
isMixedDistIJK3 Int
i Int
j Int
k Int
d1 Int
d2)
unsafeTriples :: (InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) => Int -> Int -> Int -> t (Array Int Int) -> t (Array Int Int)
unsafeTriples :: forall (t :: * -> *).
(InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) =>
Int -> Int -> Int -> t (Array Int Int) -> t (Array Int Int)
unsafeTriples Int
i Int
j Int
k = forall (t :: * -> *) a.
(InsertLeft t a, Monoid (t a)) =>
(a -> Bool) -> t a -> t a
filterG (Int -> Int -> Int -> Array Int Int -> Bool
isTripleOrdered Int
i Int
j Int
k)
unsafeQuadruples :: (InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) => Int -> Int -> Int -> Int -> t (Array Int Int) -> t (Array Int Int)
unsafeQuadruples :: forall (t :: * -> *).
(InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) =>
Int -> Int -> Int -> Int -> t (Array Int Int) -> t (Array Int Int)
unsafeQuadruples Int
i Int
j Int
k Int
l = forall (t :: * -> *) a.
(InsertLeft t a, Monoid (t a)) =>
(a -> Bool) -> t a -> t a
filterG (Int -> Int -> Int -> Int -> Array Int Int -> Bool
isQuadrupleOrdered Int
i Int
j Int
k Int
l)
unsafeSeveralA :: (InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) => Int -> Array Int Int -> t (Array Int Int) -> t (Array Int Int)
unsafeSeveralA :: forall (t :: * -> *).
(InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) =>
Int -> Array Int Int -> t (Array Int Int) -> t (Array Int Int)
unsafeSeveralA !Int
i0 Array Int Int
arr = forall (t :: * -> *) a.
(InsertLeft t a, Monoid (t a)) =>
(a -> Bool) -> t a -> t a
filterG (Int -> Array Int Int -> Array Int Int -> Bool
isSeveralAOrdered Int
i0 Array Int Int
arr)
unsafeSeveralB :: (InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) => Int -> Array Int Int -> t (Array Int Int) -> t (Array Int Int)
unsafeSeveralB :: forall (t :: * -> *).
(InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) =>
Int -> Array Int Int -> t (Array Int Int) -> t (Array Int Int)
unsafeSeveralB !Int
i0 Array Int Int
arr = forall (t :: * -> *) a.
(InsertLeft t a, Monoid (t a)) =>
(a -> Bool) -> t a -> t a
filterG (Int -> Array Int Int -> Array Int Int -> Bool
isSeveralBOrdered Int
i0 Array Int Int
arr)
fixedPointsG :: (InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) => Array Int (Int,Int) -> t (Array Int Int) -> t (Array Int Int)
fixedPointsG :: forall (t :: * -> *).
(InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) =>
Array Int (Int, Int) -> t (Array Int Int) -> t (Array Int Int)
fixedPointsG Array Int (Int, Int)
arr = forall (t :: * -> *) a.
(InsertLeft t a, Monoid (t a)) =>
(a -> Bool) -> t a -> t a
filterG (Array Int (Int, Int) -> Array Int Int -> Bool
isFixedPointTup Array Int (Int, Int)
arr)
fixedPointsS :: (InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) => Array Int Int -> t (Array Int Int) -> t (Array Int Int)
fixedPointsS :: forall (t :: * -> *).
(InsertLeft t (Array Int Int), Monoid (t (Array Int Int))) =>
Array Int Int -> t (Array Int Int) -> t (Array Int Int)
fixedPointsS Array Int Int
arr = forall (t :: * -> *) a.
(InsertLeft t a, Monoid (t a)) =>
(a -> Bool) -> t a -> t a
filterG (Array Int Int -> Array Int Int -> Bool
isFixedPoint Array Int Int
arr)
isSignDistIJK3 :: Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
isSignDistIJK3 :: Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
isSignDistIJK3 Int
i Int
j Int
k Int
d1 Int
d2 Array Int Int
arr = Int -> Int -> Int -> Array Int Int -> Bool
unsafeSignDistanceIJ Int
i Int
j Int
d1 Array Int Int
arr Bool -> Bool -> Bool
&& Int -> Int -> Int -> Array Int Int -> Bool
unsafeSignDistanceIJ Int
j Int
k Int
d2 Array Int Int
arr
{-# INLINE isSignDistIJK3 #-}
isUnsignDistIJK3 :: Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
isUnsignDistIJK3 :: Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
isUnsignDistIJK3 Int
i Int
j Int
k Int
d1 Int
d2 Array Int Int
arr = Int -> Int -> Int -> Array Int Int -> Bool
unsafeUnsignDistanceIJ Int
i Int
j Int
d1 Array Int Int
arr Bool -> Bool -> Bool
&& Int -> Int -> Int -> Array Int Int -> Bool
unsafeUnsignDistanceIJ Int
j Int
k Int
d2 Array Int Int
arr
{-# INLINE isUnsignDistIJK3 #-}
isMixedDistIJK3 :: Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
isMixedDistIJK3 :: Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
isMixedDistIJK3 Int
i Int
j Int
k Int
d1 Int
d2 Array Int Int
arr = Int -> Int -> Int -> Array Int Int -> Bool
unsafeSignDistanceIJ Int
i Int
j Int
d1 Array Int Int
arr Bool -> Bool -> Bool
&& Int -> Int -> Int -> Array Int Int -> Bool
unsafeUnsignDistanceIJ Int
j Int
k Int
d2 Array Int Int
arr
{-# INLINE isMixedDistIJK3 #-}
isTripleOrdered :: Int -> Int -> Int -> Array Int Int -> Bool
isTripleOrdered :: Int -> Int -> Int -> Array Int Int -> Bool
isTripleOrdered Int
i Int
j Int
k Array Int Int
arr = Int -> Int -> Array Int Int -> Bool
unsafeOrderIJ Int
i Int
j Array Int Int
arr Bool -> Bool -> Bool
&& Int -> Int -> Array Int Int -> Bool
unsafeOrderIJ Int
j Int
k Array Int Int
arr
{-# INLINE isTripleOrdered #-}
isQuadrupleOrdered :: Int -> Int -> Int -> Int -> Array Int Int -> Bool
isQuadrupleOrdered :: Int -> Int -> Int -> Int -> Array Int Int -> Bool
isQuadrupleOrdered Int
i Int
j Int
k Int
l Array Int Int
arr = Int -> Int -> Array Int Int -> Bool
unsafeOrderIJ Int
i Int
j Array Int Int
arr Bool -> Bool -> Bool
&& Int -> Int -> Array Int Int -> Bool
unsafeOrderIJ Int
j Int
k Array Int Int
arr Bool -> Bool -> Bool
&& Int -> Int -> Array Int Int -> Bool
unsafeOrderIJ Int
k Int
l Array Int Int
arr
{-# INLINE isQuadrupleOrdered #-}
isSeveralAOrdered :: Int -> Array Int Int -> Array Int Int -> Bool
isSeveralAOrdered :: Int -> Array Int Int -> Array Int Int -> Bool
isSeveralAOrdered !Int
i0 !Array Int Int
arr1 Array Int Int
arr2 = forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all (\Int
k -> Int -> Int -> Array Int Int -> Bool
unsafeOrderIJ Int
i0 Int
k Array Int Int
arr2) Array Int Int
arr1
{-# INLINE isSeveralAOrdered #-}
isSeveralBOrdered :: Int -> Array Int Int -> Array Int Int -> Bool
isSeveralBOrdered :: Int -> Array Int Int -> Array Int Int -> Bool
isSeveralBOrdered !Int
i0 !Array Int Int
arr1 Array Int Int
arr2 = forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all (\Int
k -> Int -> Int -> Array Int Int -> Bool
unsafeOrderIJ Int
k Int
i0 Array Int Int
arr2) Array Int Int
arr1
{-# INLINE isSeveralBOrdered #-}
isFixedPointTup :: Array Int (Int, Int) -> Array Int Int -> Bool
isFixedPointTup :: Array Int (Int, Int) -> Array Int Int -> Bool
isFixedPointTup Array Int (Int, Int)
arr1 Array Int Int
arr2 = forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all (\(Int
k,Int
j) -> forall i e. Array i e -> Int -> e
unsafeAt Array Int Int
arr2 Int
k forall a. Eq a => a -> a -> Bool
== Int
j) Array Int (Int, Int)
arr1
{-# INLINE isFixedPointTup #-}
isFixedPoint :: Array Int Int -> Array Int Int -> Bool
isFixedPoint :: Array Int Int -> Array Int Int -> Bool
isFixedPoint Array Int Int
arr1 Array Int Int
arr2 = forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all (\Int
k -> forall i e. Array i e -> Int -> e
unsafeAt Array Int Int
arr2 Int
k forall a. Eq a => a -> a -> Bool
== Int
k) Array Int Int
arr1
{-# INLINE isFixedPoint #-}
notSignDistIJK3 :: Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
notSignDistIJK3 :: Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
notSignDistIJK3 Int
i Int
j Int
k Int
d1 Int
d2 Array Int Int
arr = Int -> Int -> Int -> Array Int Int -> Bool
unsafeSignDistanceIJ Int
j Int
i Int
d1 Array Int Int
arr Bool -> Bool -> Bool
|| Int -> Int -> Int -> Array Int Int -> Bool
unsafeSignDistanceIJ Int
k Int
j Int
d2 Array Int Int
arr
{-# INLINE notSignDistIJK3 #-}
notUnsignDistIJK3 :: Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
notUnsignDistIJK3 :: Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
notUnsignDistIJK3 Int
i Int
j Int
k Int
d1 Int
d2 = Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
isUnsignDistIJK3 Int
i Int
j Int
k Int
d1 Int
d2
{-# INLINE notUnsignDistIJK3 #-}
notMixedDistIJK3 :: Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
notMixedDistIJK3 :: Int -> Int -> Int -> Int -> Int -> Array Int Int -> Bool
notMixedDistIJK3 Int
i Int
j Int
k Int
d1 Int
d2 Array Int Int
arr = Int -> Int -> Int -> Array Int Int -> Bool
unsafeSignDistanceIJ Int
j Int
i Int
d1 Array Int Int
arr Bool -> Bool -> Bool
|| Bool -> Bool
not (Int -> Int -> Int -> Array Int Int -> Bool
unsafeUnsignDistanceIJ Int
j Int
k Int
d2 Array Int Int
arr)
{-# INLINE notMixedDistIJK3 #-}
notTripleOrdered :: Int -> Int -> Int -> Array Int Int -> Bool
notTripleOrdered :: Int -> Int -> Int -> Array Int Int -> Bool
notTripleOrdered Int
i Int
j Int
k Array Int Int
arr = Int -> Int -> Array Int Int -> Bool
unsafeOrderIJ Int
j Int
i Array Int Int
arr Bool -> Bool -> Bool
|| Int -> Int -> Array Int Int -> Bool
unsafeOrderIJ Int
k Int
j Array Int Int
arr
{-# INLINE notTripleOrdered #-}
notQuadrupleOrdered :: Int -> Int -> Int -> Int -> Array Int Int -> Bool
notQuadrupleOrdered :: Int -> Int -> Int -> Int -> Array Int Int -> Bool
notQuadrupleOrdered Int
i Int
j Int
k Int
l Array Int Int
arr = Int -> Int -> Array Int Int -> Bool
unsafeOrderIJ Int
j Int
i Array Int Int
arr Bool -> Bool -> Bool
|| Int -> Int -> Array Int Int -> Bool
unsafeOrderIJ Int
k Int
j Array Int Int
arr Bool -> Bool -> Bool
|| Int -> Int -> Array Int Int -> Bool
unsafeOrderIJ Int
l Int
k Array Int Int
arr
{-# INLINE notQuadrupleOrdered #-}
notSeveralAOrdered :: Int -> Array Int Int -> Array Int Int -> Bool
notSeveralAOrdered :: Int -> Array Int Int -> Array Int Int -> Bool
notSeveralAOrdered !Int
i0 !Array Int Int
arr1 = Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Array Int Int -> Array Int Int -> Bool
isSeveralAOrdered Int
i0 Array Int Int
arr1
{-# INLINE notSeveralAOrdered #-}
notSeveralBOrdered :: Int -> Array Int Int -> Array Int Int -> Bool
notSeveralBOrdered :: Int -> Array Int Int -> Array Int Int -> Bool
notSeveralBOrdered !Int
i0 !Array Int Int
arr1 = Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Array Int Int -> Array Int Int -> Bool
isSeveralBOrdered Int
i0 Array Int Int
arr1
{-# INLINE notSeveralBOrdered #-}
notFixedPointTup :: Array Int (Int, Int) -> Array Int Int -> Bool
notFixedPointTup :: Array Int (Int, Int) -> Array Int Int -> Bool
notFixedPointTup Array Int (Int, Int)
arr1 Array Int Int
arr2 = forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any (\(Int
k,Int
j) -> forall i e. Array i e -> Int -> e
unsafeAt Array Int Int
arr2 Int
k forall a. Eq a => a -> a -> Bool
/= Int
j) Array Int (Int, Int)
arr1
{-# INLINE notFixedPointTup #-}
notFixedPoint :: Array Int Int -> Array Int Int -> Bool
notFixedPoint :: Array Int Int -> Array Int Int -> Bool
notFixedPoint Array Int Int
arr1 Array Int Int
arr2 = forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any (\Int
k -> forall i e. Array i e -> Int -> e
unsafeAt Array Int Int
arr2 Int
k forall a. Eq a => a -> a -> Bool
/= Int
k) Array Int Int
arr1
{-# INLINE notFixedPoint #-}