traq
Safe HaskellSafe-Inferred
LanguageHaskell2010

Traq.Analysis.Cost.Quantum

Contents

Synopsis

Documentation

class CostU ext size prec => CostQ ext size prec | ext -> size prec where #

Havoc Cost w.r.t. quantum compiler

Methods

costQ :: forall ext' cost m. (m ~ CostAnalysisMonad ext', CostQ ext' size prec, CostModelReqs size prec cost) => ext -> m cost #

Instances

Instances details
(UnitaryCostPrim prim size prec, QuantumHavocCostPrim prim size prec, CostReqs size prec) => CostQ (AnnFailProb (Primitive prim)) size prec # 
Instance details

Defined in Traq.Primitives.Class

Methods

costQ :: forall ext' cost m. (m ~ CostAnalysisMonad ext', CostQ ext' size prec, CostModelReqs size prec cost) => AnnFailProb (Primitive prim) -> m cost #

CostQ ext size prec => CostQ (Expr ext) size prec # 
Instance details

Defined in Traq.Analysis.Cost.Quantum

Methods

costQ :: forall ext' cost m. (m ~ CostAnalysisMonad ext', CostQ ext' size prec, CostModelReqs size prec cost) => Expr ext -> m cost #

CostQ ext size prec => CostQ (NamedFunDef ext) size prec # 
Instance details

Defined in Traq.Analysis.Cost.Quantum

Methods

costQ :: forall ext' cost m. (m ~ CostAnalysisMonad ext', CostQ ext' size prec, CostModelReqs size prec cost) => NamedFunDef ext -> m cost #

CostQ ext size prec => CostQ (Stmt ext) size prec # 
Instance details

Defined in Traq.Analysis.Cost.Quantum

Methods

costQ :: forall ext' cost m. (m ~ CostAnalysisMonad ext', CostQ ext' size prec, CostModelReqs size prec cost) => Stmt ext -> m cost #

CostReqs size prec => CostQ (Core size prec) size prec # 
Instance details

Defined in Traq.Analysis.Cost.Quantum

Methods

costQ :: forall ext' cost m. (m ~ CostAnalysisMonad ext', CostQ ext' size prec, CostModelReqs size prec cost) => Core size prec -> m cost #

costQProg :: forall cost ext size prec. (CostQ ext size prec, CostModelReqs size prec cost) => Program ext -> cost #

Havoc (worst-case) quantum cost of the entire program (i.e. last function as entry-point)

class (CostQ ext size prec, Evaluatable ext size prec) => ExpCostQ ext size prec | ext -> size prec where #

Expected Cost w.r.t. quantum compiler

Methods

expCostQ :: forall ext' cost m. (m ~ CostAnalysisMonad ext', ExpCostQ ext' size prec, CostModelReqs size prec cost) => ext -> ProgramState size -> m cost #

Instances

Instances details
(UnitaryCostPrim prim size prec, QuantumHavocCostPrim prim size prec, QuantumExpCostPrim prim size prec, EvalPrim prim size prec, CostReqs size prec, EvalReqs size prec) => ExpCostQ (AnnFailProb (Primitive prim)) size prec # 
Instance details

Defined in Traq.Primitives.Class

Methods

expCostQ :: forall ext' cost m. (m ~ CostAnalysisMonad ext', ExpCostQ ext' size prec, CostModelReqs size prec cost) => AnnFailProb (Primitive prim) -> ProgramState size -> m cost #

ExpCostQ ext size prec => ExpCostQ (Expr ext) size prec # 
Instance details

Defined in Traq.Analysis.Cost.Quantum

Methods

expCostQ :: forall ext' cost m. (m ~ CostAnalysisMonad ext', ExpCostQ ext' size prec, CostModelReqs size prec cost) => Expr ext -> ProgramState size -> m cost #

ExpCostQ ext size prec => ExpCostQ (NamedFunDef ext) size prec # 
Instance details

Defined in Traq.Analysis.Cost.Quantum

Methods

expCostQ :: forall ext' cost m. (m ~ CostAnalysisMonad ext', ExpCostQ ext' size prec, CostModelReqs size prec cost) => NamedFunDef ext -> ProgramState size -> m cost #

(CostReqs size prec, EvalReqs size prec) => ExpCostQ (Core size prec) size prec # 
Instance details

Defined in Traq.Analysis.Cost.Quantum

Methods

expCostQ :: forall ext' cost m. (m ~ CostAnalysisMonad ext', ExpCostQ ext' size prec, CostModelReqs size prec cost) => Core size prec -> ProgramState size -> m cost #

expCostQProg #

Arguments

:: forall cost ext size prec. (ExpCostQ ext size prec, CostModelReqs size prec cost, EvalReqs size prec) 
=> Program ext

program

-> [Value size]

args to main

-> FunInterpCtx size

external function interpretations

-> cost 

Expected quantum cost of the entire program (i.e. last function as entry-point)

Types

type CostModelReqs size prec cost = (CostModel cost, prec ~ PrecType cost, SizeToPrec size prec, Ord cost) #