traq
Safe HaskellSafe-Inferred
LanguageHaskell2010

Traq.Primitives.Simons.Quantum

Synopsis

Primitive

newtype SimonsFindXorPeriod sizeT precT #

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

References:

  1. Breaking Symmetric Cryptosystems using Quantum Period Finding

Constructors

SimonsFindXorPeriod (FindXorPeriod sizeT precT) 

Instances

Instances details
Generic (SimonsFindXorPeriod sizeT precT) # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

Associated Types

type Rep (SimonsFindXorPeriod sizeT precT) :: Type -> Type #

Methods

from :: SimonsFindXorPeriod sizeT precT -> Rep (SimonsFindXorPeriod sizeT precT) x #

to :: Rep (SimonsFindXorPeriod sizeT precT) x -> SimonsFindXorPeriod sizeT precT #

(Read sizeT, Read precT) => Read (SimonsFindXorPeriod sizeT precT) # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

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

Defined in Traq.Primitives.Simons.Quantum

Methods

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

show :: SimonsFindXorPeriod sizeT precT -> String #

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

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

Defined in Traq.Primitives.Simons.Quantum

Methods

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

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

Show sizeT => SerializePrim (SimonsFindXorPeriod sizeT 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] #

(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 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 Rep (SimonsFindXorPeriod sizeT precT) # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

type Rep (SimonsFindXorPeriod sizeT precT) = 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 sizeT precT))))
type PrecType (SimonsFindXorPeriod sizeT precT) # 
Instance details

Defined in Traq.Primitives.Simons.Quantum

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

Defined in Traq.Primitives.Simons.Quantum

type SizeType (SimonsFindXorPeriod sizeT precT) = sizeT
type PrimFnShape (SimonsFindXorPeriod sizeT precT) # 
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 sizeT precT. (Floating precT, SizeToPrec sizeT precT) 
=> sizeT

bitsize

-> precT

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

-> FailProb precT

maximum allowed failure probability.

-> precT 

Number of queries as described in Theorem 1.