Edinburgh LCF was an automatic proof assistant theorem prover designed by Robin Milner for the logic, for reasoning formally using the logic introduced by Scott for domain theory. The functional language ML was originally designed as the metalanguage for designing proof strategies in the system LCF. For instance, the theorem was an abstract data type. Tactics were functions from goals to subgoals. Tactics could fail raising appropriate error messages. As you can see here we have the origin of many of the ingredients of modern Standard ML.
Edinburgh ML is in fact the seminal typed call-by-value functional programming language. Its most prominent descendants are Standard ML, as we are going to see today, New Jersey ML which is implemented using the functional abstract machine. The CAML the French version of this language implemented using the categorical abstract machine and other programming languages. In the theorem-proving, proof-checking, proof-assisting tradition, that is the one which was initiated by the LCF system, the most prominent descendants of LCF are HOF, ISABELLE, COQ, LEGO. All of these can be used as logical frameworks.