[Agda] Ringsolver seems ok, but how to get NF?
Christoph HERRMANN
ch at cs.st-andrews.ac.uk
Sun Aug 22 23:34:21 CEST 2010
Hi Nils,
the aim to let (Normal n p) appear in the type signature of
particular functions is to have a certificate that the object
is really semantically equivalent to p. Maybe we can have
something like (Normal n (normalised n p)) with *normalised*
being a function (instead of a constructor) and a proof connected
with the definition of *normalised* that (normalised n p) is
semantically equivalent to p. This would be convincing enough I
believe. Is this what you mean by deannotation?
Cheers
--
Christoph
On 22 Aug 2010, at 10:13, Nils Anders Danielsson wrote:
> On 2010-08-20 16:54, Christoph HERRMANN wrote:
>> I want to use natural numbers expressed as arithmetic expressions
>> with unknown variables as type indices.
>>
>> [...]
>>
>> What is the problem in adding a function to the RingSolver which
>> delivers a normal form, i.e.,not only a polynomial but also with
>> a unique ordering of the products?
>
> The function normalise does deliver a normal form:
>
> normalise : ∀ {n} (p : Polynomial n) → Normal n p
>
> The result of normalise p is a normal form /which is equivalent to p/.
>
> I suspect that the "p" argument to Normal gets in your way, though, and
> the proof components which are part of the normal form mean that normal
> forms are not unique. You may be better off with an unannotated normal
> form. Defining a new type and a function which deannotates the result of
> normalise should be very easy. (Another option is to use such a type in
> the ring solver, and use a separate correctness proof: this could lead
> to a substantial speedup.)
>
> I have made some definitions in Algebra.RingSolver public, by the way.
>
> --
> /NAD
>
More information about the Agda
mailing list