| |
| |
| |
|
|
| module Core.Predicates where |
|
|
| open import Data.Nat using (β; _β€_; _<_; _β‘_; _mod_; zero; suc) |
| open import Data.Real using (β; _β€_; _<_; _β₯_; _+_; _*_; _-_) |
| open import Data.Bool using (Bool; true; false) |
| open import Relation.Binary.PropositionalEquality using (_β‘_; refl) |
| open import Data.Vec using (Vec; _[_]; map) |
|
|
| |
| stepCounterAt : (k : β) (target : β) β Set |
| stepCounterAt k target = k β‘ target |
|
|
| |
| stepInRange : (k : β) (num_steps : β) β Set |
| stepInRange k num_steps = k β€ num_steps |
|
|
| |
| errorIsClear : (err : β) β Set |
| errorIsClear err = err β‘ 0 |
|
|
| |
| timeIsPositive : (t : β) β Set |
| timeIsPositive t = 0 < t |
|
|
| |
| dtIsPositive : (dt : β) β Set |
| dtIsPositive dt = 0 < dt |
|
|
| |
| needsNormalization : (step : β) (period : β) β Set |
| needsNormalization step period = (step mod period) β‘ 0 |
|
|
| |
| canContinueLoop : (step : β) (num_steps : β) β Set |
| canContinueLoop step num_steps = step < num_steps |
|
|
| |
| qubitIndexValid : (idx : β) (num_qubits : β) β Set |
| qubitIndexValid idx num_qubits = idx < num_qubits |
|
|
| |
| basisStateInRange : (i : β) (dim : β) β Set |
| basisStateInRange i dim = i < dim |
|
|
| |
| taylorTermIndex : (k : β) (max_terms : β) β Set |
| taylorTermIndex k max_terms = k β€ max_terms |
|
|
| |
| isPowerOfTwo : (n : β) β Set |
| data IsPowerOfTwo : β β Set where |
| base : IsPowerOfTwo 1 |
| step : β {n} β IsPowerOfTwo n β IsPowerOfTwo (n * 2) |
|
|
| |
| dimensionPreserved : (dimβ dimβ : β) β Set |
| dimensionPreserved dimβ dimβ = dimβ β‘ dimβ |
|
|
| |
| loopCompleted : (current : β) (limit : β) β Set |
| loopCompleted current limit = current β‘ limit |
|
|