Hi everyone,

I have to prove a goal in HOL4:

g`!(A:('a , 'b) matrix) (B:('c , 'a) matrix) (C:('d , 'c) matrix). A ** (B ** 
C) = (A ** B) ** C`;

 After having applied SRW_TAC as following,  I could not find the solution to 
prove the subgoal:


e(SRW_TAC [fcpLib.FCP_ss] [matrix_prod]);

1 subgoal:

> val it =

    sum (0,dimindex (:'a))

      (\k.

         A ' i ' k *

         (FCP i j. sum (0,dimindex (:'c)) (\k. B ' i ' k * C ' k ' j)) ' k '

         i') =

    sum (0,dimindex (:'c))

      (\k.

         (FCP j. sum (0,dimindex (:'a)) (\k. A ' i ' k * B ' k ' j)) ' k *

         C ' k ' i')

    ------------------------------------

      0.  i < dimindex (:'b)

      1.  i' < dimindex (:'d)

     : proof

And I have failed to use “e(MATCH_MP_TAC SUM_EQ)”, because the “dimindex(:’a)” 
was not equal to “dimindex(:’c)”.

Could anybody give me some hints?

I really appreciate your help!

The loaded libraries are listed here:

app 
load["HolKernel","bossLib","fcpTheory","listTheory","wordsLib","realTheory","realLib","simpLib","boolTheory","boolLib","mesonLib","Parse","fcpLib"];

open bossLib fcpTheory listTheory wordsLib realTheory realLib simpLib 
boolTheory boolLib mesonLib Parse fcpLib;

 val _ = type_abbrev ("matrix", ``:(real ** 'a) ** 'b``);

val matrix_prod = Define`matrix_prod (A:('p , 'm) matrix) (B:('n, 'p) matrix) = 
(FCP i j. (sum(0,dimindex(:'p)) (\k. (A %% i %% k) * (B %% k %% j)))):('n , 'm) 
matrix`;

val _ = overload_on ("**",``matrix_prod:('p , 'm) matrix -> ('n , 'p) matrix -> 
('n , 'm) matrix``);

 

Amy
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to