Portability | unportable |
---|---|
Stability | unstable |
Maintainer | Martin Avanzini <martin.avanzini@uibk.ac.at> |
Safe Haskell | Safe-Infered |
This module defines various processor combinators.
- success :: ProcessorInstance Success
- fail :: ProcessorInstance Fail
- empty :: ProcessorInstance EmptyRules
- open :: ProcessorInstance Open
- data TrivialProof
- data OpenProof = OpenProof
- data Success
- successProcessor :: StdProcessor Success
- data Fail
- failProcessor :: StdProcessor Fail
- data EmptyRules
- emptyProcessor :: StdProcessor EmptyRules
- data Open
- openProcessor :: StdProcessor Open
- before :: (Processor a, Processor b) => InstanceOf a -> InstanceOf b -> ProcessorInstance (OneOf SomeProcessor)
- orFaster :: (Processor a, Processor b) => InstanceOf a -> InstanceOf b -> ProcessorInstance (OneOf SomeProcessor)
- orBetter :: (Processor a, Processor b) => InstanceOf a -> InstanceOf b -> ProcessorInstance (OneOf SomeProcessor)
- sequentially :: Processor p => [InstanceOf p] -> ProcessorInstance (OneOf p)
- fastest :: Processor p => [InstanceOf p] -> ProcessorInstance (OneOf p)
- best :: Processor p => [InstanceOf p] -> ProcessorInstance (OneOf p)
- data OneOfProof p
- = OneOfFailed (OneOf p) [Proof p]
- | OneOfSucceeded (OneOf p) (Proof p)
- data OneOf p
- = Best
- | Fastest
- | Sequentially
- sequentiallyProcessor :: StdProcessor (OneOf AnyProcessor)
- fastestProcessor :: StdProcessor (OneOf AnyProcessor)
- bestProcessor :: StdProcessor (OneOf AnyProcessor)
- timed :: Processor p => InstanceOf p -> ProcessorInstance (Timed p)
- data TimedProof p = TimedProof {}
- data Timed p = Timed
- ite :: (Processor g, Processor t, Processor e) => InstanceOf g -> InstanceOf t -> InstanceOf e -> ProcessorInstance (Ite g t e)
- data IteProof g t e = IteProof {
- guardProof :: Proof g
- branchProof :: Either (Proof t) (Proof e)
- data Ite g t e
- iteProcessor :: StdProcessor (Ite AnyProcessor AnyProcessor AnyProcessor)
- iteProgress :: (Transformer g, Processor t, Processor e) => TheTransformer g -> InstanceOf t -> InstanceOf e -> ProcessorInstance (IteProgress g t e)
- data IteProgressProof g t e
- data IteProgress g t e
Trivial Processors
success :: ProcessorInstance Success
This processor always returns the answer Yes(?,?)
.
fail :: ProcessorInstance Fail
This processor always returns the answer No
.
empty :: ProcessorInstance EmptyRules
This processor returns the answer Yes(O(1),(1))
if the strict component is empty.
open :: ProcessorInstance Open
This processor always returns the answer Maybe
.
Proof Object
Processor Definition
Parallel / Sequential Proof Search
before :: (Processor a, Processor b) => InstanceOf a -> InstanceOf b -> ProcessorInstance (OneOf SomeProcessor)
The processor p1
first applies processor before
p2p1
, and if that fails processor p2
.
orFaster :: (Processor a, Processor b) => InstanceOf a -> InstanceOf b -> ProcessorInstance (OneOf SomeProcessor)
The processor p1
applies processor orFaster
p2p1
and p2
in parallel. Returns the
proof of that processor that finishes fastest.
orBetter :: (Processor a, Processor b) => InstanceOf a -> InstanceOf b -> ProcessorInstance (OneOf SomeProcessor)
The processor p1
applies processor orBetter
p2p1
and p2
in parallel. Returns the
proof that gives the better certificate.
sequentially :: Processor p => [InstanceOf p] -> ProcessorInstance (OneOf p)
List version of before
.
fastest :: Processor p => [InstanceOf p] -> ProcessorInstance (OneOf p)
List version of orFaster
.
Note that the type of all given processors need to agree. To mix processors
of different type, use some
on the individual arguments.
best :: Processor p => [InstanceOf p] -> ProcessorInstance (OneOf p)
List version of orBetter
.
Note that the type of all given processors need to agree. To mix processors
of different type, use some
on the individual arguments.
Proof Object
data OneOfProof p
OneOfFailed (OneOf p) [Proof p] | |
OneOfSucceeded (OneOf p) (Proof p) |
Processor p => ComplexityProof (OneOfProof p) |
Processor Definition
data OneOf p
Measure Time
timed :: Processor p => InstanceOf p -> ProcessorInstance (Timed p)
Proof Object
data TimedProof p
Processor p => ComplexityProof (TimedProof p) |
Processor Definition
Conditional
ite :: (Processor g, Processor t, Processor e) => InstanceOf g -> InstanceOf t -> InstanceOf e -> ProcessorInstance (Ite g t e)
ite g t e
applies processor t
if processor g
succeeds, otherwise processor e
is applied.
data IteProof g t e
IteProof | |
|
(Processor g, Processor t, Processor e, ComplexityProof (ProofOf g), ComplexityProof (ProofOf t), ComplexityProof (ProofOf e)) => ComplexityProof (IteProof g t e) |
iteProgress :: (Transformer g, Processor t, Processor e) => TheTransformer g -> InstanceOf t -> InstanceOf e -> ProcessorInstance (IteProgress g t e)
data IteProgressProof g t e
(Transformer g, Processor t, Processor e) => ComplexityProof (IteProgressProof g t e) |
data IteProgress g t e
(Transformer g, Processor t, Processor e) => Processor (IteProgress g t e) |