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

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend