Sorry if my question is elementary but I want to know more about model checking and certified program development.
What is the difference between model checking and certified program development? As I know, in model checking we make a model of a system and verify that our model meets our specification, for example we write a program in an imperative programming language like C and make a model of the program and check the model meets desired specification. But in certified program development we prove (constructively) our desired specification in a proof assistant like Coq and then (because of Curry-Howard correspondence) automatically extract a program in a functional program like Haskell.
Every program which has been written in programming language like C (for example a sorting program), can be developed in a proof assistance like Coq?