thanks a lot; in the meantime, I deleted this material from the AFP-entries.

Ironically, quite a few of those facts were already proven independently in other AFP entries by Wenda Li and/or me. (e.g. the ones about pcompose)


> So why should the small proof below be not integrated for the 2016 release?

This is probably a question for Florian. I introduced Euclidean rings to allow a more systematic derivation of (constructive) GCDs about two years ago or so.

Since then, Florian cleaned this up and improved it a lot, but from what I gathered, there is much to be done yet. I should probably have taken care of this already, but I never quite found the time; I shall attempt to do that this year.

As for the release, perhaps Florian can comment on whether anything speaks against moving this instance into the Polynomial theory.


Cheers,

Manuel


On 12/01/16 09:21, Thiemann, Rene wrote:
Hi Manuel,

I added the efficient code equations for fact and binomial, and similar ones 
for pochhammer and gbinomial.

I also adapted everything from Square_Free_Factorization and Missing_Polynomial 
that seemed to be of general interest to me (especially the generalisation of 
the type of pderiv).

thanks a lot; in the meantime, I deleted this material from the AFP-entries.


I also noticed the ring_gcd instance for polynomials. Finalising the changes to 
the GCD class hierarchy and updating the AFP entries that rely on half-finished 
versions of this change (such as Echelon_Form) is something that I should 
probably take care of soon, but definitely not before the 2016 release – 
hopefully before the 2017 one.

The absence of the ring_gcd instance for polynomials is strange from my 
perspective: In Isabelle 2015 we had

   instantiation poly :: (field) gcd

where the gcd-class contained the important properties of a gcd.

In Isabelle 2016-RC0 there also is

   instantiation poly :: (field) gcd

but now the gcd-class is purely syntactic. Here, to get the same properties of 
a gcd (and more), the corresponding instance would be

   instantiation poly :: (field) semiring_gcd   (or ring_gcd)

So why should the small proof below be not integrated for the 2016 release? 
Otherwise, there
is no class-based gcd for polynomials available for 2016, in contrast to 2015.

instance poly :: (field) ring_gcd
proof
   fix a b :: "'a poly"
   show "normalize (gcd a b) = gcd a b" by (simp add: normalize_poly_def 
poly_gcd_monic)
   show "lcm a b = normalize (a * b) div gcd a b"
   proof (cases "a * b = 0")
     case False
     show ?thesis unfolding lcm_poly_def normalize_poly_def
     by (subst div_smult_right, insert False, auto simp: div_smult_left)
        (metis coeff_degree_mult divide_divide_eq_left divide_inverse_commute 
inverse_eq_divide)
   next
     case True
     thus ?thesis by (metis div_0 lcm_poly_def normalize_0)
   qed
qed auto


Cheers,
René

_______________________________________________
isabelle-dev mailing list
isabelle-...@in.tum.de
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev

Reply via email to