Formalizing Refinements and Constructive Algebra in Type Theory
Anders M¨
- rtberg
December 12, 2014
Anders M¨
- rtberg
PhD Defense December 12, 2014 1 / 24
Formalizing Refinements and Constructive Algebra in Type Theory - - PowerPoint PPT Presentation
Formalizing Refinements and Constructive Algebra in Type Theory Anders M ortberg December 12, 2014 Anders M ortberg PhD Defense December 12, 2014 1 / 24 This thesis Formally verify the correctness of the implementation of algorithms
Anders M¨
PhD Defense December 12, 2014 1 / 24
Anders M¨
PhD Defense December 12, 2014 2 / 24
Anders M¨
PhD Defense December 12, 2014 3 / 24
Anders M¨
PhD Defense December 12, 2014 4 / 24
Anders M¨
PhD Defense December 12, 2014 5 / 24
Anders M¨
PhD Defense December 12, 2014 6 / 24
Anders M¨
PhD Defense December 12, 2014 7 / 24
◮ Apply the algorithm to M − xI ◮ Compute on R[x] with pseudo-division instead of division on R ◮ Put x = 0 in the result
◮ More general ◮ No problem of division by 0 (we have x along the diagonal) ◮ Get characteristic polynomial for free ◮ Algorithm is the same as Bareiss’
n
Anders M¨
PhD Defense December 12, 2014 8 / 24
Anders M¨
PhD Defense December 12, 2014 9 / 24
Anders M¨
PhD Defense December 12, 2014 10 / 24
Anders M¨
PhD Defense December 12, 2014 11 / 24
Anders M¨
PhD Defense December 12, 2014 12 / 24
Rsparse mul
Anders M¨
PhD Defense December 12, 2014 13 / 24
Rsparse mul
Anders M¨
PhD Defense December 12, 2014 13 / 24
Rsparse mul
Anders M¨
PhD Defense December 12, 2014 13 / 24
Anders M¨
PhD Defense December 12, 2014 14 / 24
Anders M¨
PhD Defense December 12, 2014 15 / 24
Anders M¨
PhD Defense December 12, 2014 16 / 24
M π
Anders M¨
PhD Defense December 12, 2014 17 / 24
Anders M¨
PhD Defense December 12, 2014 18 / 24
M ϕR ϕG ϕ N
Anders M¨
PhD Defense December 12, 2014 19 / 24
Anders M¨
PhD Defense December 12, 2014 20 / 24
(* Any monomorphism is a kernel of its cokernel *) Lemma mono_ker (M N : fpmodule R) (phi : ’Mono(M,N)) : is_kernel (coker phi) phi. Proof. split=> [|L X]; first by rewrite mulmorc. apply: (iffP idP) => [|Y /eqmorMr /eqmor_ltrans <-]; last first. by rewrite -mulmorA (eqmor_ltrans (eqmorMl _ (mulmorc _))) mulmor0. rewrite /eqmor subr0 /= mulmx1 => /dvd_col_mxP [Y Ydef]. suff Ymor : pres M %| pres L *m Y. by exists (Morphism Ymor); rewrite /= -dvdmxN opprB. have := kernel_eq0 phi; rewrite /eqmor subr0 /= => /dvdmx_trans -> //. rewrite dvd_ker -mulmxA -[Y *m phi](addrNK X%:m) mulmxDr dvdmxD. by rewrite ?dvdmx_morphism // dvdmxMl // -dvdmxN opprB. Qed.
Anders M¨
PhD Defense December 12, 2014 21 / 24
Anders M¨
PhD Defense December 12, 2014 22 / 24
1https://github.com/CoqEAL/CoqEAL/ Anders M¨
PhD Defense December 12, 2014 23 / 24
Anders M¨
PhD Defense December 12, 2014 24 / 24