I was largely poking, tongue in cheek, at the earlier syllogism: >> The point is that Lisp has a formal logic basis and, as Spad is really >> just a domain specific language implemented in Lisp then Spad shares >> the formal logic basis.
-- Gaby On Thu, Jan 12, 2017 at 10:35 PM, Tim Daly <axiom...@gmail.com> wrote: > > There were implementations of C in Lisp. So C shares that formal logic > basis, or that it was discovered? > > According to Wadler, C is an "invented" language, not a "discovered" > language. > > Wadler (https://www.youtube.com/watch?v=aeRVdYN6fE8) at around 40 minutes > shows the logician's view versus the computer science view of various > theories. > He makes a distinction betwen invented and discovered langauges. > > (begin quote of Wadler) > > Every interesting logic has a corresponding language feature: > > Natural Deduction (Gentzen) <==> Typed Lambda Calculus (Church) > Type Schemes (Hindley) <==> ML Type System (Milner) > System F (Girard) <==> Polymorphic Lambda Calculus (Reynolds) > Modal Logic (Lewis) <==> Monads (state, exceptions) (Kleisli, Moggi) > Classical-Intuitionistic Embedding (Godel) <==> Continuation Passing > (Reynolds) > Linear Logic (Girard) <==> Session Types (Honda) > > Languages which were "discovered" (based on theory): > > Lisp (McCarthy) > Iswim (Landin) > Scheme (Steele and Sussman) > ML (Milner, Gordon, Wadsworth) > Haskell (Hudak, Hughes, Peyton Jones, Wadler) > O'Caml (Leroy) > Erlang (Armstrong, Virding, Williams) > Scala (Odersky) > F# (Syme) > Clojure (Hickey) > Elm (Czaplicki) > > At about minute 43 we hear: > > "Not all of these languages are based on lambda calculus ... > but there is a core that is "discovered". Now most of you work > in languages like Java, C++, or Python and those languages I will > claim are not discovered; they are "invented". Looking at them > you can tell they are invented. So this is my invitation to you > to work in languages that are "discovered". > > Somebody asked before about "dependent types". It turns out that > when you extend into dependent types you now get languages that > have "for all" and "there exists" that corresponds to a feature > called "dependent types". So this means that you can encode very > sophisticated proofs, pretty much everything you can name as a > program. And so the standard way to get a computer to check a > proof for you and to help you with that proof is to represent that > as a program in typed lambda calculus. > > All of these systems are based on a greater or lesser extent on > that idea: > > Automath (de Bruijn) > Type Theory (Martin Lof) > Mizar (Trybulec) > ML/LCF (Milner, Gordon, Wadsworth) > NuPrl (COnstable) > HOL (Gordon, Melham) > Coq (Huet, Coquand) > Isabelle (Paulson) > Epigram (McBride, McKinna) > Agda (Norell) > > (end quote) > > Axiom is using Coq for its proof platform because Axiom needs > dependent types (e.g. specifying matrix sizes by parameters). > > In addition, Coq is capable of generating a program from a > proof and the plan is to reshape the Spad solution to more > closely mirror the proof-generated code. Also, of course, we need > to remove any errors in the Spad code found during proofs. > > It seems there must be an isomorphism between Coq and Spad. > > At the moment it seems that Coq's 'nat' matches Axiom's > NonNegativeInteger. Coq also has a 'Group' type which needs > to be matched with the Axiom type. The idea is to find many > isomorphisms of primitive types which will generate lemmas > that can be used to prove more complex code. > > Given that Axiom has an abstract algebra scaffold it seems likely > that a reasonable subset can be proven (modulo the fact that there > are arguable differences from the abstract algebra type hierarchy). > > Currently Coq is run during the Axiom build to check any proofs > of Spad code that are included. ACL2 is also run during the build > to check any proofs of Lisp code that are included. > > I'm taking a course at Carnegie-Mellon this semester using Lean > (a Coq offshoot) in order to try to make some working examples > of proving Spad code correct. > > > On Thu, Jan 12, 2017 at 10:14 PM, Gabriel Dos Reis < > g...@integrable-solutions.net> wrote: > >> There were implementations of C in Lisp. So C shares that formal logic >> basis, or that it was discovered? >> >> On Wed, Jan 11, 2017 at 8:17 PM, Tim Daly <axiom...@gmail.com> wrote: >> >>> I'm making progress on proving Axiom correct both at the Spad level and >>> the Lisp level. One interesting talk by Phillip Wadler on "Propositions >>> as >>> Types", a very entertaining talk, is here: >>> https://www.youtube.com/watch?v=IOiZatlZtGU >>> >>> He makes the interesting point late in the talk that some languages are >>> "discovered" based on fundamental logic principles (e.g.Lisp) and others >>> are "invented" with no formal basis (e.g. C). As he says, "you can tell >>> whether your language is discovered or invented". >>> >>> The point is that Lisp has a formal logic basis and, as Spad is really >>> just a domain specific language implemented in Lisp then Spad shares >>> the formal logic basis. >>> >>> >>> >>> _______________________________________________ >>> Axiom-developer mailing list >>> Axiom-developer@nongnu.org >>> https://lists.nongnu.org/mailman/listinfo/axiom-developer >>> >>> >> >
_______________________________________________ Axiom-developer mailing list Axiom-developer@nongnu.org https://lists.nongnu.org/mailman/listinfo/axiom-developer