Jacques, I'm reading your paper "The MathScheme Library: Some Preliminary Experiments". https://arxiv.org/pdf/1106.1862.pdf
The LeftNearSemiring description on page 4 is essentially what I'm aiming to implement in Axiom. We differ on the choice of 'axiom' vs 'proposition'. I see what you label as 'axiom' as a continuation of the type signatures. You have * : (U, U) -> U which in Type Theory is basically U : Type F : ( Type x Type ) -> Type Similarly what you label as 'axiom' is really just another type signature (per Curry-Howard) and I'd label it as a 'proposition' So where '*' needs to be implemented in any Domain that inherits from LeftNearSemiring the 'proposition' associative_* := forall x,y,z:U (x * y) * z = x * (y * z) means any Domain which inherits from LeftNearSemiring would have to prove those propositions using operations from the Domain being constructed. Comments? Tim On Sat, May 6, 2017 at 11:32 AM, Jacques Carette <care...@mcmaster.ca> wrote: > Hello Tim. > > I believe we've met -- but 10+ years ago, at either an ISSAC or an ECCAD. > > In any case, Bill and I are quite familiar with Axiom. We've had many > conversations about it with James Davenport, Stephen Watt and Gabriel Dos > Reis. > > Yes, MathScheme is a current project. Its main web site is available at > http://mathscheme.cas.mcmaster.ca. [The list of papers is out of date, > we're working on that; and we are also open-sourcing various bits of it as > we clean the implementation]. > > Personally, I would encourage you to build a proof-of-concept using Axiom > and Agda (rather than Coq); or even Idris. I believe the approach to > proofs there is much closer to Axiom than what you will get with Coq. Or, > since you are at CMU, Lean ? > > What you will undoubtedly encounter is that Axiom's current "batteries > included" approach to library building where, for example, the Category > AbelianGroup [Book Volume 10.2, Category Layer 6, AbelianGroup.input on > p.667 of the pdf at www.axiom-developer.org/axiom-website/bookvol10.2.pdf > ] really builds abelian group as a Z-module. While this is mathematically > correct, it is not very modular. At [1] we show how we have made this > quite a bit more modular, using the combinators of [2]. To recover the > "batteries included" version (which we believe in [3]), we have 'invented' > Realms [4]. To us, Axioms' AbelianGroup Category is closer the > AbelianGroup Realm than the fundamental 'theory' of AbelianGroup as found > in textbooks. > > We are also actively working on what you'd understand as rep/per. PL and > logic people refer to this as reflection/reification (or quote and eval if > you come from LISP). In Coq, you have likely encountered ssreflect. These > are all instances of the same idea. Extremely powerful but also very > dangerous. > > Lastly, and perhaps most importantly, we have spent years thinking about > how to have a properly typed Expr type. In Axiom, this really has root in > the 'eval' operation of InnerEvalable (and then Evalable and > ExpressionSpace). Expr is both absolutely essential, but extremely > problematic as it 1) internalizes semantics, and 2) generally involves > partiality (undefinedness) in deep ways. If this interests you, we can > forward a number of papers where we start to deal with that. > > Sincerely, > Jacques > > [1] https://arxiv.org/abs/1106.1862 > [2] https://arxiv.org/abs/1204.0053 > [3] http://imps.mcmaster.ca/doc/hlt.pdf > [4] https://arxiv.org/abs/1405.5956 > > On 2017-05-05 1:22 AM, Tim Daly wrote: > >> I'm Tim Daly, Lead Developer on Axiom. >> >> I just came across this posting: >> http://www.cas.mcmaster.ca/~carette/IR-MathScheme-Standard.pdf < >> http://www.cas.mcmaster.ca/%7Ecarette/IR-MathScheme-Standard.pdf> >> >> Is this a current project? >> >> I'm currently at Carnegie-Mellon doing research on proving Axiom >> correct. As you're certainly aware, Axiom's category structure is >> based on group theory. >> >> In Type Theory you find the concept of typeclasses which have >> three distinct parts: >> 1) the "carrier" (aka the representation) >> 2) the signatures of functions for the typeclass >> 3) the propositions (aka types) that these fulfill. >> >> Axiom has a domain called NonNegativeInteger (NNI) which is very >> close to the usual 'nat' type in COQ. Lean, and other systems. >> >> Currently in Axiom the Category supplies the signatures (2 above) >> which a Domain (e.g. NNI) which inherits from the Category must >> implement (e.g. =) >> >> In Axiom the carrier (1 above) is a property of the Domain, which >> allows Domains (aka Types) to have different representation. That >> enables Axiom to have a sparse poly representation, a dense >> poly representation, a recursive poly rep, etc., all of which inherit >> from the same category structure, each in its own Domain. >> >> Axiom is currently missing the propositions (3 above). Since Types >> are Propostiion (Curry-Howard) there is a way to integrate the >> propositions into the Category hierarchy. >> >> A Category that requires a signature such as >> = : (x, y) -> Boolean >> needs to also provide propositions for symmetry, reflexivity, and >> associativity. >> >> Any Domain that inherits from the Category would have to provide >> proofs for the symmetry, reflexivity, and associativity propositions >> using operations from the newly defined domain. >> >> My current goal is to construct a proof-of-concept example using >> Axiom and COQ. >> >> I'd be interested in more information on your MathScheme project. >> >> Tim Daly >> >> >
_______________________________________________ Axiom-developer mailing list Axiom-developer@nongnu.org https://lists.nongnu.org/mailman/listinfo/axiom-developer