Re: MathScheme project

Jacques Carette <[email protected]>
Newsgroups gmane.comp.mathematics.axiom.devel
Message-ID <[email protected]>
Comments inline below.

On 2017-05-06 16:31 , Tim Daly wrote:
> 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.

Are you trying to do it as we are, by carefully building up the 
'signature' via combinators?  I know Axiom has most of the needed 
infrastructure, except for 1) renaming, and 2) a notion of 'join' that 
properly solves the "diamond problem".  That's the big difference 
between MathScheme and Axiom.  See paper [2] below.

> 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'

Actually, we agree.  This is just a label - we use 'axiom' to mean 
'signature of type prop'.  It's meant to be surface syntax closer to 
traditional mathematics.  As our internal core is dependently typed, 
there is no real difference.

>
> 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.

Agreed.  That is exactly what we mean.

Jacques

>
> Comments?
>
> Tim
>
>
> On Sat, May 6, 2017 at 11:32 AM, Jacques Carette <[email protected] 
> <mailto:[email protected]>> 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
>     <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
>     <http://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 <https://arxiv.org/abs/1106.1862>
>     [2] https://arxiv.org/abs/1204.0053 <https://arxiv.org/abs/1204.0053>
>     [3] http://imps.mcmaster.ca/doc/hlt.pdf
>     <http://imps.mcmaster.ca/doc/hlt.pdf>
>     [4] https://arxiv.org/abs/1405.5956 <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>
>         <http://www.cas.mcmaster.ca/%7Ecarette/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
[email protected]
https://lists.nongnu.org/mailman/listinfo/axiom-developer
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.