Re: Catching up on internals
Eugene Surowtz <[email protected]> Sat, 25 Nov 2017 12:43:47 -0500
| Newsgroups | gmane.comp.mathematics.axiom.devel |
|---|---|
| Message-ID | <[email protected]> |
OK somehow it never arrived here. Gene On 11/21/2017 12:07 PM, Martin Baker wrote: > Gene, > > Yes, Tim posted the following reply, I think saying ML-related languages also have > some knowledge of partial functions. > > I think I am coming around to the view that the easiest way to to prove axiom correct > and get better type system, parallel code, etc. would be to put the Axiom library on > top of a more modern language such as Idris but I think Tim has made it very clear he > is not interested in going in that direction. > > Martin > > -------- Forwarded Message -------- > > Subject: Re: [Axiom-developer] Catching up on internals > Date: Wed, 8 Nov 2017 08:13:00 -0500 > From: Tim Daly <[email protected]> > To: Martin Baker <[email protected]> > CC: axiom-dev <[email protected]>, Tim Daly <[email protected]> > > > > Partial function checking happens in ML-fathered languages also. It complains > when I fail to fill out a pattern match with all the cases, for example. > > Proving partial functions implies a set of provisos (checks on the input). > These checks could be inserted as an 'assert' on the calling arguments > automatically. In addition, or as an alternative in a closed system, you > could prove that every caller respects the preconditions and will not ever > make a call with an invalid argument. > > This is problematic in cases where the user chooses the input rather > than calls between internal functions. In that case, adding 'assert' > statements would provide a place to insert your user-level error message. > > Tim > > On 21/11/17 15:37, Eugene Surowtz wrote: >> Martin: >> >> Did you get any response from Tim on these notes? >> >> Gene >> >> On 11/7/2017 10:34 AM, Martin Baker wrote: >>> On 04/11/17 00:42, Tim Daly wrote: >>>> How would you model handling errors in Spad? >>>> >>>> I do think that there might be an interesting research question of how to >>>> handle classes of errors in computational mathematics. I had proposed >>>> using Provisos to handle side-conditions on formulas. Hoon Hong and >>>> Chris Brown have done a lot of work on QEPCAD for handling these. >>>> Manuel Bronstein and I had long discussions about a SUCHTHAT domain >>>> for encapsulating Provisos but little code resulted as the QEPCAD work >>>> was still in the future at the time. >>> >>> Tim, >>> >>> Since you asked this question I've been thinking about it (although I don't claim >>> any expert knowledge). >>> >>> It seems to me that there are at least 2 types of errors: >>> 1) An error where the programmer just does something wrong. >>> 2) An error where a partial function is called with an invalid value. >>> >>> If the program is proved correct then I assume type 1 can't happen so we are >>> mainly concerned with type 2 errors. >>> >>> I have been looking at a programming language called 'Idris'. This language >>> classifies each function as being either 'total' or 'partial', if it is partial >>> then perhaps we can say something about which inputs are invalid. >>> >>> Of course the compiler can't always determine that a function is total (because of >>> the halting problem). However, for most simple functions (without recursion, >>> dependent types, etc.) it is possible (at least it is in 'Idris') and perhaps the >>> other functions could be classified manually. >>> >>> Of course any function could be made 'total' by returning Maybe % or >>> Union(%,"Fail") but that just pushes the problem upto the next level. The >>> advantage of the above ideas is that the error might be explained to the user in >>> much more appropriate detail, for example: >>> "function x called with value y which caused division by 0" >>> Also it could avoid lots of error handling boilerplate code. >>> >>> Martin B >>> >>> >>> >>> _______________________________________________ >>> Axiom-developer mailing list >>> [email protected] >>> https://lists.nongnu.org/mailman/listinfo/axiom-developer >>> >>> >> >> > > > _______________________________________________ Axiom-developer mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/axiom-developer