tyrolean complexity tool features and usage
play

Tyrolean Complexity Tool: Features and Usage Georg Moser Andreas - PowerPoint PPT Presentation

Tyrolean Complexity Tool: Features and Usage Georg Moser Andreas Schnabl Martin Avanzini Institute of Computer Science University of Innsbruck, Austria June 16, 2013 Tyrolean Complexity Tool T T C (runtime) complexity analyser for term


  1. Tyrolean Complexity Tool: Features and Usage Georg Moser Andreas Schnabl Martin Avanzini Institute of Computer Science University of Innsbruck, Austria June 16, 2013

  2. Tyrolean Complexity Tool T T C ◮ (runtime) complexity analyser for term rewrite systems (TRSs) http://cl-informatik.uibk.ac.at/software/tct

  3. Tyrolean Complexity Tool T T C ◮ (runtime) complexity analyser for term rewrite systems (TRSs) http://cl-informatik.uibk.ac.at/software/tct T T C mergesort ( nil ) → nil O( n k ) mergesort (x : nil ) → x : nil mergesort (x : y : ys) → mergesort ’( msplit (x : y : ys)) mergesort ’(pair(xs,ys)) → don’t merge ( mergesort (xs), mer . know . .

  4. History version 1.0 extension to termination prover T T 2008 T 2 ◮ 3 dedicated complexity techniques

  5. History version 1.0 extension to termination prover T T 2008 T 2 ◮ 3 dedicated complexity techniques version 1.5 new implementation 2009 ◮ in Haskell ◮ 9 methods implemented ◮ ≈ 3.400 lines of code

  6. History version 1.0 extension to termination prover T T 2008 T 2 ◮ 3 dedicated complexity techniques version 1.5 new implementation 2009 ◮ in Haskell ◮ 9 methods implemented ◮ ≈ 3.400 lines of code version 2.0 current version 2013 ◮ 23 methods implemented ◮ ≈ 13.000 lines of code / 4.000 lines of comment

  7. Interfaces 1 web http://cl-informatik.uibk.ac.at/software/tct 2 command line • automatic mode • customisable through search strategies 3 interactive • semi-automatic mode

  8. Interfaces 1 web http://cl-informatik.uibk.ac.at/software/tct 2 command line • automatic mode • customisable through search strategies 3 interactive • semi-automatic mode

  9. Interfaces 1 web http://cl-informatik.uibk.ac.at/software/tct 2 command line • automatic mode demo • customisable through search strategies 3 interactive • semi-automatic mode

  10. Interfaces 1 web http://cl-informatik.uibk.ac.at/software/tct 2 command line • automatic mode • customisable through search strategies 3 interactive • semi-automatic mode

  11. Interfaces 1 web http://cl-informatik.uibk.ac.at/software/tct 2 command line • automatic mode • customisable through search strategies 3 interactive • semi-automatic mode

  12. Command Line Interface termcomp or tpdb format 1 runs on GNU/Linux $ tct [ options ] <file>

  13. Command Line Interface termcomp or tpdb format 1 runs on GNU/Linux $ tct [ options , -s <search strategy> ] <file> S-expression syntax (<name> [:<argname> <arg>] * [<arg>] * ) ◮ matrix ◮ matrix :degree 2 ◮ fastest (matrix :degree 2) (timeout 3 (bounds :enrichment match))

  14. Command Line Interface 1 runs on GNU/Linux $ tct [ options , -s <search strategy> ] <file> demo

  15. Command Line Interface 1 runs on GNU/Linux $ tct [ options , -s <search strategy> ] <file>

  16. Command Line Interface 1 runs on GNU/Linux $ tct [ options , -s <search strategy> ] <file> 2 configured in ~/.tct/tct.hs import Tct.Configuration import Tct.Interactive import Tct.Instances import qualified Termlib.Repl as TR main :: IO () main = tct config config :: Config config = defaultConfig

  17. Customisation import Tct.Configuration import Tct.Interactive import Tct.Instances import qualified Termlib.Repl as TR main = tct config config = defaultConfig { strategies = strategies } where strategies = [ matrices : : : strategy "matrices" ( optional naturalArg "start" (Nat 1) : + : naturalArg ) , withDP : : : strategy "withDP" ] matrices (Nat start : + : Nat n ) = fastest [ matrix ‘withDimension‘ d ‘withBits‘ bitsForDimension d | d <- [ start .. start + n ] ] where bitsForDimension d | d < 3 = 2 | otherwise = 1 withDP = ...

  18. Customisation import Tct.Configuration import Tct.Interactive import Tct.Instances import qualified Termlib.Repl as TR search strategy declaration main = tct config <code> : : : strategy "<name>" [<parameters-declaration>] config = defaultConfig { strategies = strategies } where strategies = [ matrices : : : strategy "matrices" ( optional naturalArg "start" (Nat 1) : + : naturalArg ) , withDP : : : strategy "withDP" ] matrices (Nat start : + : Nat n ) = fastest [ matrix ‘withDimension‘ d ‘withBits‘ bitsForDimension d | d <- [ start .. start + n ] ] where bitsForDimension d | d < 3 = 2 search strategy implementation | otherwise = 1 withDP = ...

  19. Proof Search Strategies ◮ processors • matrix • poly • popstar • . . . ◮ processor modifiers • <processor> ‘withDegree‘ <deg> • <processor> ‘withBits‘ <bits> • . . . ◮ combinators • timeout <secs> <strategy> • best <strategy> · · · <strategy> • fastest <strategy> · · · <strategy> • ite <strategy> <strategy> <strategy> • . . .

  20. Customisation import Tct.Configuration import Tct.Interactive import Tct.Instances import qualified Termlib.Repl as TR main = tct config config = defaultConfig { strategies = strategies } where strategies = [ matrices : : : strategy "matrices" ( optional naturalArg "start" (Nat 1) : + : naturalArg ) , withDP : : : strategy "withDP" ] matrices (Nat start : + : Nat n ) = fastest [ matrix ‘withDimension‘ d ‘withBits‘ bitsForDimension d | d <- [ start .. start + n ] ] where bitsForDimension d | d < 3 = 2 | otherwise = 1 withDP = ...

  21. Transformations ◮ processors often generate sub-problems ⊢ P 1 : f 1 · · · ⊢ P n : f n ⊢ P : f

  22. Transformations ◮ processors often generate sub-problems ⊢ P 1 : f 1 · · · ⊢ P n : f n ⊢ P : f ◮ implemented as transformations in T T C • dependencyPairs and dependencyTuples • decompose and decomposeDG • pathAnalysis • weightGap • . . .

  23. Transformations Lifting and Combinators ◮ lifting to strategies • t > | s and t > > > | | s s s . . . . . . . . ⊢ P 1 : f 1 ⊢ P n : f n · · · t ⊢ P : f

  24. Transformations Lifting and Combinators ◮ lifting to strategies • t > | s and t > > > | | s ◮ combinators • t 1 > > > t 2 ⊢ Q 1 : g 1 · · · ⊢ Q k : g k ⊢ Q l : g l · · · ⊢ Q m : g m t 2 · · · t 2 ⊢ P 1 : f 1 ⊢ P n : f n t 1 ⊢ P : f

  25. Transformations Lifting and Combinators ◮ lifting to strategies • t > | s and t > > > | | s ◮ combinators • t 1 > > > t 2 • t 1 <> t 2 and t 1 < | > t 2 ⊢ P 1 : f 1 · · · ⊢ P m : f m ⊢ Q 1 : g 1 · · · ⊢ Q n : g n or t 1 t 2 ⊢ P : f ⊢ P : f

  26. Transformations Lifting and Combinators ◮ lifting to strategies • t > | s and t > > > | | s ◮ combinators • t 1 > > > t 2 • t 1 <> t 2 and t 1 < | > t 2 • try t and force t

  27. Transformations Lifting and Combinators ◮ lifting to strategies • t > | s and t > > > | | s ◮ combinators • t 1 > > > t 2 • t 1 <> t 2 and t 1 < | > t 2 • try t and force t • exhaustively t = t > > > try (exhaustively t )

  28. Transformations Example withDP = (dps <> dts) > > > try (exhaustively decomposeIndependent) > > > try cleanSuffix > > > try usableRules where dps = dependencyPairs > > > try usableRules > > > timeout 5 wgOnRules dts = dependencyTuples wgOnRules = weightgap ‘withDimension‘ 1 ‘wgOn‘ WgOnTrs

  29. Transformations Example withDP = (dps <> dts) > > > try (exhaustively decomposeIndependent) > > > try cleanSuffix > > > try usableRules where dps = dependencyPairs > > > try usableRules > > > timeout 5 wgOnRules dts = dependencyTuples wgOnRules = weightgap ‘withDimension‘ 1 ‘wgOn‘ WgOnTrs

  30. Transformations Example withDP = (dps <> dts) abort if timeout 5 wgOnRules fails > > > try (exhaustively decomposeIndependent) > > > try cleanSuffix > > > try usableRules where dps = dependencyPairs > > > try usableRules > > > timeout 5 wgOnRules dts = dependencyTuples wgOnRules = weightgap ‘withDimension‘ 1 ‘wgOn‘ WgOnTrs continue if usableRules fails

  31. Transformations Example withDP = (dps <> dts) > > > try (exhaustively decomposeIndependent) > > > try cleanSuffix > > > try usableRules where dps = dependencyPairs > > > try usableRules > > > timeout 5 wgOnRules dts = dependencyTuples wgOnRules = weightgap ‘withDimension‘ 1 ‘wgOn‘ WgOnTrs

  32. Transformations Example withDP = (dps <> dts) > > > try (exhaustively decomposeIndependent) > > > try cleanSuffix > > > try usableRules where dps = dependencyPairs > > > try usableRules > > > timeout 5 wgOnRules dts = dependencyTuples wgOnRules = weightgap ‘withDimension‘ 1 ‘wgOn‘ WgOnTrs

  33. Interfaces 1 web http://cl-informatik.uibk.ac.at/software/tct 2 command line • automatic mode • customisable through search strategies 3 interactive • semi-automatic mode

  34. Interactive Interface ◮ run by command tct -i

Recommend


More recommend