traq
Safe HaskellSafe-Inferred
LanguageHaskell2010

Traq.Primitives.Simons.Quantum

Synopsis

Primitive

newtype SimonsFindXorPeriod size prec #

Simon's Quantum Algorithm with an approximate promise ([1], Theorem 1)

References:

  1. Breaking Symmetric Cryptosystems using Quantum Period Finding

Constructors

SimonsFindXorPeriod (FindXorPeriod size prec) 

Instances

Instances details
Generic (SimonsFindXorPeriod size prec) # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

Associated Types

type Rep (SimonsFindXorPeriod size prec) :: Type -> Type #

Methods

from :: SimonsFindXorPeriod size prec -> Rep (SimonsFindXorPeriod size prec) x #

to :: Rep (SimonsFindXorPeriod size prec) x -> SimonsFindXorPeriod size prec #

(Read size, Read prec) => Read (SimonsFindXorPeriod size prec) # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

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

Defined in Traq.Primitives.Simons.Quantum

Methods

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

show :: SimonsFindXorPeriod size prec -> String #

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

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

Defined in Traq.Primitives.Simons.Quantum

Methods

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

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

Show size => SerializePrim (SimonsFindXorPeriod size Double) # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

MapSize (SimonsFindXorPeriod size prec) # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

Associated Types

type MappedSize (SimonsFindXorPeriod size prec) size' #

Methods

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

(TypingReqs size, Num prec, Ord prec, Show prec) => TypeCheckPrim (SimonsFindXorPeriod size prec) size # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

Methods

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

(size ~ SizeT, RealFloat prec, Show prec) => QuantumCompilePrim (SimonsFindXorPeriod size prec) size prec # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

Methods

compileQPrim :: forall ext' m (shape :: Type -> Type). (m ~ PrimCompileMonad ext' (SimonsFindXorPeriod size prec), size ~ SizeType ext', prec ~ PrecType ext', shape ~ PrimFnShape (SimonsFindXorPeriod size prec)) => SimonsFindXorPeriod size prec -> FailProb prec -> m (ProcDef size) #

(size ~ SizeT, RealFloat prec, Show prec) => UnitaryCompilePrim (SimonsFindXorPeriod size prec) size prec # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

Methods

compileUPrim :: forall ext' m (shape :: Type -> Type). (m ~ PrimCompileMonad ext' (SimonsFindXorPeriod size prec), size ~ SizeType ext', prec ~ PrecType ext', shape ~ PrimFnShape (SimonsFindXorPeriod size prec)) => SimonsFindXorPeriod size prec -> FailProb prec -> m (ProcDef size) #

(TypingReqs size, Floating prec, Ord prec, Show prec, SizeToPrec size prec) => QuantumHavocCostPrim (SimonsFindXorPeriod size prec) size prec #

Same as unitary compilation.

Instance details

Defined in Traq.Primitives.Simons.Quantum

(TypingReqs size, Floating prec, Ord prec, Show prec, SizeToPrec size prec) => UnitaryCostPrim (SimonsFindXorPeriod size prec) size prec # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

Methods

unitaryQueryCosts :: SimonsFindXorPeriod size prec -> FailProb prec -> PrimFnShape (SimonsFindXorPeriod size prec) (UnitaryQueries prec) #

unitaryExprCosts :: (CostModel cost, prec ~ PrecType cost) => SimonsFindXorPeriod size prec -> FailProb prec -> cost #

(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 Rep (SimonsFindXorPeriod size prec) # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

type Rep (SimonsFindXorPeriod size prec) = D1 ('MetaData "SimonsFindXorPeriod" "Traq.Primitives.Simons.Quantum" "traq-0.2.0.0-inplace" 'True) (C1 ('MetaCons "SimonsFindXorPeriod" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (FindXorPeriod size prec))))
type PrecType (SimonsFindXorPeriod size prec) # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

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

Defined in Traq.Primitives.Simons.Quantum

type SizeType (SimonsFindXorPeriod size prec) = size
type PrimFnShape (SimonsFindXorPeriod size prec) # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

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

Defined in Traq.Primitives.Simons.Quantum

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

Query Formulas

_SimonsQueries #

Arguments

:: forall size prec. (Floating prec, SizeToPrec size prec) 
=> size

bitsize

-> prec

p_0: maximum probability of spurious collisions for non-period values.

-> FailProb prec

maximum allowed failure probability.

-> prec 

Number of queries as described in Theorem 1.