Voirol, NicolasKuncak, Viktor2016-10-262016-10-262016-10-262016https://infoscience.epfl.ch/handle/20.500.14299/130775We present the foundations of a verifier for higher-order functional programs with generics and recursive algebraic data types. Our ver- ifier supports finding sound proofs and counterexamples even in the presence of certain quantified invariants and recursive functions. Our approach uses the same language to describe programs and in- variants and uses semantic criteria for establishing termination. Our implementation makes effective use of SMT solvers by encoding first-class functions and quantifiers into a quantifier-free fragment of first-order logic with theories. We are able to specify properties of datastructure operations involving higher-order functions with minimal annotation overhead and verify them with a high degree of automation. Our system is also effective at reporting counterexam- ples, even in the presence of first-order quantification.Automated software verificationhigher-order functionsquantifier instantiationAutomating Verification of Functional Programs with Quantified Invariantstext::report