traq
Safe HaskellSafe-Inferred
LanguageHaskell2010

Traq.Primitives.Simons.Prelude

Contents

Synopsis

Primitive

data FindXorPeriod sizeT precT #

Primitive to solve Simon's problem. Simon's Problem: Given a function f : {0, 1}^n -> {0, 1}^n, find an s : {0, 1}^n such that f(x) = f(x ^ s) for every x.

Promise of default variant: Either (1) f is two-to-one and there is exactly one such s, or (2) f is one-one.

Promise of Robust variant (used in the primitive below): f is allowed to have at most p_0 fraction of spurious collisions (i.e. f(x) = f(x') and x ^ x' /= s).

References: "On the Power of Quantum Computation" https://epubs.siam.org/doi/10.1137/S0097539796298637

Constructors

FindXorPeriod 

Fields

  • n :: sizeT
     
  • p_0 :: precT
     

Instances

Instances details
(Read sizeT, Read precT) => Read (FindXorPeriod sizeT precT) # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

Methods

readsPrec :: Int -> ReadS (FindXorPeriod sizeT precT) #

readList :: ReadS [FindXorPeriod sizeT precT] #

readPrec :: ReadPrec (FindXorPeriod sizeT precT) #

readListPrec :: ReadPrec [FindXorPeriod sizeT precT] #

(Show sizeT, Show precT) => Show (FindXorPeriod sizeT precT) # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

Methods

showsPrec :: Int -> FindXorPeriod sizeT precT -> ShowS #

show :: FindXorPeriod sizeT precT -> String #

showList :: [FindXorPeriod sizeT precT] -> ShowS #

(Eq sizeT, Eq precT) => Eq (FindXorPeriod sizeT precT) # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

Methods

(==) :: FindXorPeriod sizeT precT -> FindXorPeriod sizeT precT -> Bool #

(/=) :: FindXorPeriod sizeT precT -> FindXorPeriod sizeT precT -> Bool #

Show sizeT => SerializePrim (FindXorPeriod sizeT Double) # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

MapSize (FindXorPeriod size prec) # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

Associated Types

type MappedSize (FindXorPeriod size prec) size' #

Methods

mapSize :: (size0 ~ SizeType (FindXorPeriod size prec), size' ~ SizeType ext', ext' ~ MappedSize (FindXorPeriod size prec) size') => (size0 -> size') -> FindXorPeriod size prec -> ext' #

(TypingReqs sizeT, Num precT, Ord precT, Show precT) => TypeCheckPrim (FindXorPeriod sizeT precT) sizeT # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

Methods

inferRetTypesPrim :: forall ext' shape m. (m ~ TypeChecker ext', sizeT ~ SizeType ext', shape ~ PrimFnShape (FindXorPeriod sizeT precT)) => FindXorPeriod sizeT precT -> shape (FnType sizeT) -> m [VarType sizeT] #

(FindXorPeriod sizeT precT) :<: (SimonsFindXorPeriod sizeT precT) # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

Methods

inject :: FindXorPeriod sizeT precT -> SimonsFindXorPeriod sizeT precT #

project :: SimonsFindXorPeriod sizeT precT -> Maybe (FindXorPeriod sizeT precT) #

IsA (FindXorPeriod sizeT precT) (SimonsFindXorPeriod sizeT precT) # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

Methods

extract :: SimonsFindXorPeriod sizeT precT -> FindXorPeriod sizeT precT #

type PrecType (FindXorPeriod sizeT precT) # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

type PrecType (FindXorPeriod sizeT precT) = precT
type SizeType (FindXorPeriod sizeT precT) # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

type SizeType (FindXorPeriod sizeT precT) = sizeT
type PrimFnShape (FindXorPeriod sizeT precT) # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

type MappedSize (FindXorPeriod size prec) size' # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

type MappedSize (FindXorPeriod size prec) size' = FindXorPeriod size' prec

newtype FindXorPeriodArg a #

Constructors

FindXorPeriodArg 

Fields