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 <care...@mcmaster.ca <mailto: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
    <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
Axiom-developer@nongnu.org
https://lists.nongnu.org/mailman/listinfo/axiom-developer

Reply via email to