@@ -6,7 +6,6 @@ Authors: Kenny Lau
6
6
Algebra over Commutative Ring (under category)
7
7
-/
8
8
9
- import data.polynomial data.mv_polynomial
10
9
import data.complex.basic
11
10
import data.matrix.basic
12
11
import linear_algebra.tensor_product
@@ -103,21 +102,6 @@ by rw [smul_def, smul_def, left_comm]
103
102
(r • x) * y = r • (x * y) :=
104
103
by rw [smul_def, smul_def, mul_assoc]
105
104
106
- /-- R[ X ] is the generator of the category R-Alg. -/
107
- instance polynomial (R : Type u) [comm_ring R] : algebra R (polynomial R) :=
108
- { to_fun := polynomial.C,
109
- commutes' := λ _ _, mul_comm _ _,
110
- smul_def' := λ c p, (polynomial.C_mul' c p).symm,
111
- .. polynomial.module }
112
-
113
- /-- The algebra of multivariate polynomials. -/
114
- instance mv_polynomial (R : Type u) [comm_ring R]
115
- (ι : Type v) : algebra R (mv_polynomial ι R) :=
116
- { to_fun := mv_polynomial.C,
117
- commutes' := λ _ _, mul_comm _ _,
118
- smul_def' := λ c p, (mv_polynomial.C_mul' c p).symm,
119
- .. mv_polynomial.module }
120
-
121
105
/-- Creating an algebra from a subring. This is the dual of ring extension. -/
122
106
instance of_subring (S : set R) [is_subring S] : algebra S R :=
123
107
of_ring_hom subtype.val ⟨rfl, λ _ _, rfl, λ _ _, rfl⟩
@@ -319,74 +303,6 @@ def comap : algebra.comap R S A →ₐ[R] algebra.comap R S B :=
319
303
320
304
end alg_hom
321
305
322
- namespace polynomial
323
-
324
- variables (R : Type u) (A : Type v)
325
- variables [comm_ring R] [comm_ring A] [algebra R A]
326
- variables (x : A)
327
-
328
- /-- A → Hom[ R-Alg ] (R[X],A) -/
329
- def aeval : polynomial R →ₐ[R] A :=
330
- { commutes' := λ r, eval₂_C _ _,
331
- ..ring_hom.of (eval₂ (algebra_map A) x) }
332
-
333
- theorem aeval_def (p : polynomial R) : aeval R A x p = eval₂ (algebra_map A) x p := rfl
334
-
335
- @[simp] lemma aeval_X : aeval R A x X = x := eval₂_X _ x
336
-
337
- @[simp] lemma aeval_C (r : R) : aeval R A x (C r) = algebra_map A r := eval₂_C _ x
338
-
339
- instance aeval.is_ring_hom : is_ring_hom (aeval R A x) :=
340
- by apply_instance
341
-
342
- theorem eval_unique (φ : polynomial R →ₐ[R] A) (p) :
343
- φ p = eval₂ (algebra_map A) (φ X) p :=
344
- begin
345
- apply polynomial.induction_on p,
346
- { intro r, rw eval₂_C, exact φ.commutes r },
347
- { intros f g ih1 ih2,
348
- rw [is_ring_hom.map_add φ, ih1, ih2, eval₂_add] },
349
- { intros n r ih,
350
- rw [pow_succ', ← mul_assoc, is_ring_hom.map_mul φ, eval₂_mul (algebra_map A : R → A), eval₂_X, ih] }
351
- end
352
-
353
- end polynomial
354
-
355
- namespace mv_polynomial
356
-
357
- variables (R : Type u) (A : Type v)
358
- variables [comm_ring R] [comm_ring A] [algebra R A]
359
- variables (σ : set A)
360
-
361
- /-- (ι → A) → Hom[ R-Alg ] (R[ι],A) -/
362
- def aeval : mv_polynomial σ R →ₐ[R] A :=
363
- { commutes' := λ r, eval₂_C _ _ _
364
- ..ring_hom.of (eval₂ (algebra_map A) subtype.val) }
365
-
366
- theorem aeval_def (p : mv_polynomial σ R) : aeval R A σ p = eval₂ (algebra_map A) subtype.val p := rfl
367
-
368
- @[simp] lemma aeval_X (s : σ) : aeval R A σ (X s) = s := eval₂_X _ _ _
369
-
370
- @[simp] lemma aeval_C (r : R) : aeval R A σ (C r) = algebra_map A r := eval₂_C _ _ _
371
-
372
- instance aeval.is_ring_hom : is_ring_hom (aeval R A σ) :=
373
- by apply_instance
374
-
375
- variables (ι : Type w)
376
-
377
- theorem eval_unique (φ : mv_polynomial ι R →ₐ[R] A) (p) :
378
- φ p = eval₂ (algebra_map A) (φ ∘ X) p :=
379
- begin
380
- apply mv_polynomial.induction_on p,
381
- { intro r, rw eval₂_C, exact φ.commutes r },
382
- { intros f g ih1 ih2,
383
- rw [is_ring_hom.map_add φ, ih1, ih2, eval₂_add] },
384
- { intros p j ih,
385
- rw [is_ring_hom.map_mul φ, eval₂_mul, eval₂_X, ih] }
386
- end
387
-
388
- end mv_polynomial
389
-
390
306
namespace rat
391
307
392
308
instance algebra_rat {α} [division_ring α] [char_zero α] : algebra ℚ α :=
0 commit comments