#pragma CIVL ACSL typedef double T; $input int B1, B2, B3, N1, N2, N3; $assume(1<=N1 && N1<=B1 && 1<=N2 && N2<=B2 && 1<=N3 && N3<=B3); $input T A[N1][N2], B[N2][N3]; T C[N1][N3]; void mul(T a[][], T b[][], T c[][], int n1, int n2, int n3) { /*@ loop assigns c[0..n1-1][0..n3-1]; @ focus I | c[I][0..n3-1]; @*/ for (int i=0; i