2011 · 24 citations · 24 references
ComputingComputer ScienceFormal MethodsLogicProgramming LanguagesAbstract Syntax TreesData-flow AnalysisDeductive VerificationPredicate LogicProof AssistantsType SystemsMonadic Second-order LogicMonadic SemanticsMonadsPath Constraint SolvingString Analysis
We propose a novel technique for statically verifying the strings generated by a program. The verification is conducted by encoding the program in Monadic Second-Order Logic (M2L). We use M2L to describe constraints among program variables and to abstract built-in string operations. Once we encode a program in M2L, a theorem prover for M2L, such as MONA, can automatically check if a string generated by the program satisfies a given specification, and if not, exhibit a counterexample. With this approach, we can naturally encode relationships among strings, accounting also for cases in which a program manipulates strings using indices. In addition, our string analysis is path sensitive in that it accounts for the effects of string and Boolean comparisons, as well as regular-expression matches.
24
Regular models of phonological rule systems
Ronald M. Kaplan, Martin Kay · 1994 · 816 citations
Global value numbers and redundant computations
Barry K. Rosen, Mark N. Wegman, F. K. Zadeck · 1988 · 483 citations