traq
Safe HaskellSafe-Inferred
LanguageHaskell2010

Traq.Primitives.Simons.Prelude

Contents

Synopsis

Primitive

data FindXorPeriod size prec #

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 :: size
     
  • p_0 :: prec
     

Instances

Instances details
(Read size, Read prec) => Read (FindXorPeriod size prec) # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

Methods

readsPrec :: Int -> ReadS (FindXorPeriod size prec) #

readList :: ReadS [FindXorPeriod size prec] #

readPrec :: ReadPrec (FindXorPeriod size prec) #

readListPrec :: ReadPrec [FindXorPeriod size prec] #

(Show size, Show prec) => Show (FindXorPeriod size prec) # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

Methods

showsPrec :: Int -> FindXorPeriod size prec -> ShowS #

show :: FindXorPeriod size prec -> String #

showList :: [FindXorPeriod size prec] -> ShowS #

(Eq size, Eq prec) => Eq (FindXorPeriod size prec) # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

Methods

(==) :: FindXorPeriod size prec -> FindXorPeriod size prec -> Bool #

(/=) :: FindXorPeriod size prec -> FindXorPeriod size prec -> Bool #

Show size => SerializePrim (FindXorPeriod size 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 size, Num prec, Ord prec, Show prec) => TypeCheckPrim (FindXorPeriod size prec) size # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

Methods

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

(FindXorPeriod size prec) :<: (SimonsFindXorPeriod size prec) # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

Methods

inject :: FindXorPeriod size prec -> SimonsFindXorPeriod size prec #

project :: SimonsFindXorPeriod size prec -> Maybe (FindXorPeriod size prec) #

IsA (FindXorPeriod size prec) (SimonsFindXorPeriod size prec) # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

Methods

extract :: SimonsFindXorPeriod size prec -> FindXorPeriod size prec #

type PrecType (FindXorPeriod size prec) # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

type PrecType (FindXorPeriod size prec) = prec
type SizeType (FindXorPeriod size prec) # 
Instance details

Defined in Traq.Primitives.Simons.Prelude

type SizeType (FindXorPeriod size prec) = size
type PrimFnShape (FindXorPeriod size prec) # 
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