@@ -73,7 +73,8 @@ lemma offunvK pv: tofunv (offunv pv) = vclamp pv.
7373proof. by rewrite /tofunv /offunv eqv_repr vclamp_idemp. qed.
7474
7575lemma vectorW (P : vector -> bool):
76- (forall pv, P (offunv pv)) => forall v, P v by smt(tofunvK).
76+ (forall pv, P (offunv pv)) => forall v, P v.
77+ proof. by move=> P_pv v; rewrite -tofunvK; apply: P_pv. qed.
7778
7879(* Dimension of the vector *)
7980op size v = (tofunv v).`2.
@@ -593,8 +594,10 @@ qed.
593594lemma dvector1E (d : R distr) (v : vector) : mu1 (dvector d (size v)) v =
594595 BRM.bigi predT (fun i => mu1 d v.[i]) 0 (size v).
595596proof.
596- rewrite -{2}[v]tolistK dmapE /(\o) /pred1.
597- rewrite (@mu_eq _ _ (pred1 (tolist v))); 1: smt(oflist_inj).
597+ rewrite -{2}[v]tolistK dmapE /(\o) /pred1.
598+ rewrite (@mu_eq _ _ (pred1 (tolist v))).
599+ + move=> x; rewrite eq_iff /pred1 /=; split=> />.
600+ exact: oflist_inj.
598601rewrite dlist1E 1:/# size_tolist max0size /=.
599602by rewrite BRM.big_mapT /(\o) &BRM.eq_big.
600603qed.
@@ -694,7 +697,8 @@ proof. by rewrite /tofunm /offunm eqv_repr. qed.
694697hint simplify offunmK.
695698
696699lemma matrixW (P : matrix -> bool) : (forall pm, P (offunm pm)) =>
697- forall m, P m by smt(tofunmK).
700+ forall m, P m.
701+ proof. by move=> P_pm m; rewrite -tofunmK; exact: P_pm. qed.
698702
699703(* Number of rows and columns of matrices *)
700704op rows m = (tofunm m).`2.
@@ -1451,16 +1455,17 @@ qed.
14511455lemma catmrA (m1 m2 m3: matrix): ((m1 || m2) || m3) = (m1 || (m2 || m3)).
14521456proof.
14531457rewrite eq_matrixP.
1454- split => [| i j bound]; 1: smt(size_catmr).
1458+ split => [| i j bound]; 1:smt(size_catmr rows_catmr cols_catmr ).
14551459rewrite 4!get_catmr cols_catmr // addrA.
1456- algebra.
1460+ by algebra.
14571461qed.
14581462
14591463lemma catmrDr (m1 m2 m3: matrix): m1 * (m2 || m3) = ((m1 * m2) || (m1 * m3)).
14601464proof.
14611465rewrite eq_matrixP.
14621466rewrite rows_mulmx cols_mulmx cols_catmr.
1463- split => [| i j bound]; 1: smt(size_mulmx size_catmr).
1467+ split => [| i j bound].
1468+ + by rewrite !size_catmr !rows_mulmx !cols_mulmx /#.
14641469rewrite get_catmr 3!get_mulmx.
14651470case (j < cols m2) => bound2.
14661471- rewrite [col m3 _]col0E 1:/# dotpv0 addr0 !dotpE 2!size_col rows_catmr.
@@ -1667,7 +1672,9 @@ case (j < n) => j_bound.
16671672 + smt(size_catmr size_subm).
16681673 by rewrite addr0.
16691674- rewrite getm0E; 1: smt(size_catmr size_subm).
1670- rewrite add0r get_subm; smt(size_catmr size_subm).
1675+ rewrite add0r get_subm; [3:smt()].
1676+ + smt(rows_catmr rows_subm).
1677+ + smt(cols_catmr cols_subm).
16711678qed.
16721679
16731680lemma subm_colmx (m: matrix) l :
@@ -1908,7 +1915,8 @@ move => r_ge0 c_ge0; split => [m_supp|]; last first.
19081915- case => -[r_m c_m] m_d; rewrite /support -r_m -c_m dmatrix1E.
19091916 apply prodr_gt0_seq => i i_row _ /=.
19101917 by apply prodr_gt0_seq => j j_col _ /=; apply m_d; smt(mem_iota).
1911- have [r_m c_m] : size m = (r,c) by smt(size_dmatrix).
1918+ have [r_m c_m] : size m = (r,c).
1919+ + exact: (size_dmatrix d).
19121920split => [//|i j range_ij]; move: m_supp.
19131921rewrite -r_m -c_m /support dmatrix1E => gt0_big.
19141922pose G i0 := (fun (j0 : int) => mu1 d m.[i0, j0]).
0 commit comments