equal
deleted
inserted
replaced
133 proof (subst bij_betw_same_card) |
133 proof (subst bij_betw_same_card) |
134 show "bij_betw vec_nth UNIV (Pi (UNIV :: 'b set) (\<lambda>_. UNIV :: 'a set))" |
134 show "bij_betw vec_nth UNIV (Pi (UNIV :: 'b set) (\<lambda>_. UNIV :: 'a set))" |
135 by (intro bij_betwI[of _ _ _ vec_lambda]) (auto simp: vec_eq_iff) |
135 by (intro bij_betwI[of _ _ _ vec_lambda]) (auto simp: vec_eq_iff) |
136 have "CARD('a) ^ CARD('b) = card (PiE (UNIV :: 'b set) (\<lambda>_. UNIV :: 'a set))" |
136 have "CARD('a) ^ CARD('b) = card (PiE (UNIV :: 'b set) (\<lambda>_. UNIV :: 'a set))" |
137 (is "_ = card ?A") |
137 (is "_ = card ?A") |
138 by (subst card_PiE) (auto simp: prod_constant) |
138 by (subst card_PiE) (auto) |
139 |
|
140 also have "?A = Pi UNIV (\<lambda>_. UNIV)" |
139 also have "?A = Pi UNIV (\<lambda>_. UNIV)" |
141 by auto |
140 by auto |
142 finally show "card \<dots> = CARD('a) ^ CARD('b)" .. |
141 finally show "card \<dots> = CARD('a) ^ CARD('b)" .. |
143 qed |
142 qed |
144 qed (simp_all add: infinite_UNIV_vec) |
143 qed (simp_all add: infinite_UNIV_vec) |
1073 shows "A ** (k *\<^sub>R B) = k *\<^sub>R A ** B" |
1072 shows "A ** (k *\<^sub>R B) = k *\<^sub>R A ** B" |
1074 by (simp add: matrix_matrix_mult_def sum_distrib_left mult_ac vec_eq_iff) |
1073 by (simp add: matrix_matrix_mult_def sum_distrib_left mult_ac vec_eq_iff) |
1075 |
1074 |
1076 lemma matrix_vector_mul_lid [simp]: "mat 1 *v x = (x::'a::semiring_1 ^ 'n)" |
1075 lemma matrix_vector_mul_lid [simp]: "mat 1 *v x = (x::'a::semiring_1 ^ 'n)" |
1077 apply (vector matrix_vector_mult_def mat_def) |
1076 apply (vector matrix_vector_mult_def mat_def) |
1078 apply (simp add: if_distrib if_distribR sum.delta' cong del: if_weak_cong) |
1077 apply (simp add: if_distrib if_distribR cong del: if_weak_cong) |
1079 done |
1078 done |
1080 |
1079 |
1081 lemma matrix_transpose_mul: |
1080 lemma matrix_transpose_mul: |
1082 "transpose(A ** B) = transpose B ** transpose (A::'a::comm_semiring_1^_^_)" |
1081 "transpose(A ** B) = transpose B ** transpose (A::'a::comm_semiring_1^_^_)" |
1083 by (simp add: matrix_matrix_mult_def transpose_def vec_eq_iff mult.commute) |
1082 by (simp add: matrix_matrix_mult_def transpose_def vec_eq_iff mult.commute) |