Skip to content

Commit 8a0549d

Browse files
feat(Algebra/Polynomial/Bivariate): more API for swap (leanprover-community#35974)
1 parent 4250d1a commit 8a0549d

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

Mathlib/Algebra/Polynomial/Bivariate.lean

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,9 @@ def Bivariate.swap : R[X][Y] ≃ₐ[R] R[X][Y] := by
247247
apply AlgEquiv.ofAlgHom (aevalAeval (Y : R[X][Y]) (C X)) (aevalAeval (Y : R[X][Y]) (C X))
248248
<;> (ext n m <;> simp)
249249

250+
@[simp]
251+
theorem Bivariate.swap_symm : swap.symm = (swap (R := R)) := rfl
252+
250253
@[simp]
251254
theorem Bivariate.swap_apply (p : R[X][Y]) : swap p = p.aevalAeval (A := R[X][Y]) Y (C X) := rfl
252255

@@ -259,12 +262,19 @@ theorem Bivariate.swap_C_C (r : R) : swap (C (C r)) = C (C r) := by simp
259262
theorem Bivariate.swap_C (f : R[X]) : swap (C f) = f.map C := by
260263
simpa [← algebraMap_eq] using aeval_X_left_eq_map f
261264

265+
theorem Bivariate.swap_swap_apply (p : R[X][Y]) : swap (swap p) = p :=
266+
AlgEquiv.symm_apply_apply swap p
267+
262268
theorem Bivariate.swap_map_C (f : R[X]) : swap (f.map C) = C f := by
263269
induction f using Polynomial.induction_on' with
264270
| add => aesop
265271
| monomial n a => rw [map_monomial, ← C_mul_X_pow_eq_monomial, ← C_mul_X_pow_eq_monomial,
266272
map_mul, map_pow, swap_Y, C_mul, C_pow, Bivariate.swap_C_C]
267273

274+
theorem Bivariate.swap_monomial (n : ℕ) (f : R[X]) :
275+
swap (monomial n f) = f.map C * C (X ^ n) := by
276+
simp [← C_mul_X_pow_eq_monomial, aeval_X_left_eq_map]
277+
268278
theorem Bivariate.swap_monomial_monomial (n m : ℕ) (r : R) :
269279
swap (monomial n (monomial m r)) = (monomial m (monomial n r)) := by
270280
simp [← C_mul_X_pow_eq_monomial]; ac_rfl

0 commit comments

Comments
 (0)