HaskellForMaths-0.4.0: Math/Test/TProjects/TMiniquaternionGeometry.hs
-- Copyright (c) David Amos, 2009-2011. All rights reserved.
module Math.Test.TProjects.TMiniquaternionGeometry where
{-
import qualified Data.List as L
import Math.Common.ListSet as LS
import Math.Algebra.Field.Base
import Math.Combinatorics.FiniteGeometry (pnf, ispnf, orderPGL)
import Math.Combinatorics.Graph (combinationsOf)
import Math.Combinatorics.GraphAuts
import Math.Algebra.Group.PermutationGroup hiding (order)
import qualified Math.Algebra.Group.SchreierSims as SS
import Math.Algebra.Group.RandomSchreierSims
import Math.Combinatorics.Design as D
import Math.Algebra.LinearAlgebra -- ( (<.>), (<+>) )
import Math.Projects.ChevalleyGroup.Classical
-}
import Test.QuickCheck
import Math.Projects.MiniquaternionGeometry
-- Near fields
prop_NearField (a,b,c) =
a+(b+c) == (a+b)+c && -- addition is associative
a+b == b+a && -- addition is commutative
a+0 == a && -- additive identity
a+(-a) == 0 && -- additive inverse
a*(b*c) == (a*b)*c && -- multiplication is associative
a*1 == a && 1*a == a && -- multiplicative identity
(a+b)*c == a*c + b*c && -- right-distributivity
a*0 == 0
instance Arbitrary F9 where
arbitrary = do x <- arbitrary :: Gen Int
return (f9 !! (x `mod` 9))
instance Arbitrary J9 where
arbitrary = do x <- arbitrary :: Gen Int
return (j9 !! (x `mod` 9))
prop_NearFieldF9 (a,b,c) = prop_NearField (a,b,c) where
types = (a,b,c) :: (F9,F9,F9)
prop_NearFieldJ9 (a,b,c) = prop_NearField (a,b,c) where
types = (a,b,c) :: (J9,J9,J9)