Re: [Proving Axiom Correct] Bootstrapping a library

Tim Daly <[email protected]>
Newsgroups gmane.comp.mathematics.axiom.devel
Message-ID <CAJn5L=K-n63sODed3KpcQWA2i8z-eiV54xiR_9BgOs4QjE6V=A@mail.gmail.com>
Renaud,

I'm just getting around to the FoCal information. Obviously you've done a
lot of
work on this subject already. I have the papers and the reference manual
near
the top of the reading stack. I'm certain to have questions.

Yes, BasicType requires properties for = such as symmetry which would have
to be proven at the Domain level for each implementation. Of course, = is
not
actually implemented directly in NNI but somewhere up the inheritance chain.
For example, the domain ANY has

  x = y ==
    (x.dm = y.dm) and EQUAL(x.ob, y.ob)$Lisp

where dm is a field in the Record implementation of ANY

   Rep := Record(dm: SExpression, ob: None)

which depends on the Lisp definition of EQUAL and SExpression
is one of String, Symbol, Integer, DoubleFloat, OutputForm

Whereas the domain IndexedList implements

  x = y ==
    Qeq(x,y) => true
    while not Qnull x and not Qnull y repeat
      Qfirst x ^=$S Qfirst y => return fase
      x := Qrest x
      y := Qrest y
    Qnull x and Qnull y

where
  Qeq   ==> EQ$Lisp
  Qnull ==> NULL$Lisp
  Qfirst ==> QCAR$Lisp
  Qrest ==> QCDR$Lisp
and
  S : Type
is a dependent argument type. Sigh.

The proofs of = in each domain will involve an appeal to the Lisp
definition of a small number of functions. I'm using ACL2 for Lisp.

This is where the ACL2 and Coq proofs meet.

There is no such thing as a simple job.

Tim



On Fri, Feb 10, 2017 at 5:13 AM, Renaud Rioboo <[email protected]>
wrote:

> Dear Axiom gurus,
>
> Axiom's NNI inherits from a dozen Category objects, one of which
>> is BasicType which contains two signatures:
>>
>>  ?=?: (%,%) -> Boolean       ?~=?: (%,%) -> Boolean
>>
>> In the ideal case we would decorate BasicType with the existing
>> definitions of = and ~= so we could create a new library structure
>> for the logic system. So BasicType would contain
>>
>> theorem = (a, b : Type) : Boolean := .....
>> theorem ~= (a, b : Type) : Boolean := ....
>>
>
> Since BasicType is not an implementation you need to write a specification
> for equal and different. These specifictions should be inherited and proved
> at the domain level. You can see the standard library of FoCaLiZe for
> details.
>
> In practice you need a language for writing logical statements and a
> language to prove these statements. Again see the FoCaLiZe library (for
> instance lattices) to see how a statement can be used in a proof.
>
> Unfortunately it appears the Coq and Lean will not take kindly to
>> removing the existing libraries and replacing them with a new version
>> that only contains a limited number of theorems. I'm not yet sure about
>> FoCaL but I suspect it has the same bootstrap problem.
>>
>
> Inheritance is managed by the FoCaLiZe compiler together with dependencies
> which enables to have statements and proofs in a coherent way.
>
>
> --
> Renaud Rioboo
>

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