tct-2.0.1: A Complexity Analyser for Term Rewrite Systems

Portabilityunportable
Stabilityunstable
MaintainerMartin Avanzini <martin.avanzini@uibk.ac.at>
Safe HaskellSafe-Infered

Tct.Method.Combinator

Contents

Description

This module defines various processor combinators.

Synopsis

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

data OpenProof

Constructors

OpenProof 

Processor Definition

data Fail

Instances

data Open

Instances

Parallel / Sequential Proof Search

before :: (Processor a, Processor b) => InstanceOf a -> InstanceOf b -> ProcessorInstance (OneOf SomeProcessor)

The processor p1 before p2 first applies processor p1, and if that fails processor p2.

orFaster :: (Processor a, Processor b) => InstanceOf a -> InstanceOf b -> ProcessorInstance (OneOf SomeProcessor)

The processor p1 orFaster p2 applies processor p1 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 orBetter p2 applies processor p1 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

Constructors

OneOfFailed (OneOf p) [Proof p] 
OneOfSucceeded (OneOf p) (Proof p) 

Processor Definition

data OneOf p

Constructors

Best 
Fastest 
Sequentially 

Instances

Eq (OneOf p) 
Show (OneOf p) 
Processor p => Processor (OneOf p) 

Measure Time

Proof Object

data TimedProof p

Constructors

TimedProof 

Fields

tpCpu :: Double
 
tpWall :: Double
 
tpProof :: ProofOf p
 

Processor Definition

data Timed p

Constructors

Timed 

Instances

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 Ite g t e

Instances

(Processor g, Processor t, Processor e) => Processor (Ite g t e) 

data IteProgress g t e

Instances