Skip to content

Instantly share code, notes, and snippets.

Avatar

Kevin Buzzard kbuzzard

View GitHub Profile
View sqrt2.lean
import data.real.irrational
import tactic
open real
example : irrational (sqrt 2) :=
begin
rintro ⟨q, hq⟩,
have hqnum : 0 ≤ q.num,
{ rw rat.num_nonneg_iff_zero_le,
@kbuzzard
kbuzzard / slow.lean
Created December 29, 2022 03:13
Very slow LinearOrderedCommGroup instance
View slow.lean
-- See https://github.com/leanprover-community/mathlib4/blob/489f10454a7ae53fdc6a95d2ac237cbc20e69b36/Mathlib/Algebra/Order/Positive/Field.lean#L42-L46
-- for the actual mathlib problem, which is even slower
universe u
class Preorder (α : Type u) extends LE α, LT α where
le_refl : ∀ a : α, a ≤ a
le_trans : ∀ a b c : α, a ≤ b → b ≤ c → a ≤ c
lt := λ a b => a ≤ b ∧ ¬ b ≤ a
lt_iff_le_not_le : ∀ a b : α, a < b ↔ (a ≤ b ∧ ¬ b ≤ a) := by intros; rfl
@kbuzzard
kbuzzard / slow.lean
Last active December 22, 2022 13:16
The { } structure constructor is taking far longer than `mk` for some reason
View slow.lean
-- see https://github.com/leanprover-community/mathlib4/pull/1099#discussion_r1051747996
import Mathlib.Mathport.Notation -- I don't understand this file well enough to remove it, but it's only notation
set_option autoImplicit false
universe u v
instance {ι : Type u} {α : ι → Type v} [∀ i, LE (α i)] : LE (∀ i, α i) where
le x y := ∀ i, x i ≤ y i
@kbuzzard
kbuzzard / noetherian.lean
Created October 31, 2022 15:58
TCC lecture 4
View noetherian.lean
import tactic -- a bunch of tactics
import ring_theory.noetherian -- Noetherian rings
/-
# Using ideals in Lean
Throughout, `R` is a commutative ring.
## The type of ideals of a ring
View gist:4ff9d7812efacd34433ee8ebe1190a46
import geometry.euclidean.monge_point
-- let's look at the definition of the monge point of a simplex.
/-
We don't have an explicit definition of `euler_line`, but
`affine_span ℝ {s.circumcenter, (univ : finset (fin (n + 1))).centroid ℝ s.points}`
seems like a reasonable definition to go in `geometry.euclidean.monge_point`
for the Euler line of a simplex. It should then be straightforward to prove that
this really is a line (i.e., its `direction` has `finrank` equal to 1) if the
View term.txt
@is_scalar_tower 𝕜 C^⊤⟮I, M; 𝓘(𝕜, 𝕜), 𝕜⟯ C^⊤⟮I, M; 𝓘(𝕜, 𝕜), 𝕜⟯
(@smul_with_zero.to_has_scalar 𝕜 C^⊤⟮I, M; 𝓘(𝕜, 𝕜), 𝕜⟯
(@mul_zero_class.to_has_zero 𝕜
(@mul_zero_one_class.to_mul_zero_class 𝕜
(@monoid_with_zero.to_mul_zero_one_class 𝕜
(@semiring.to_monoid_with_zero 𝕜
(@comm_semiring.to_semiring 𝕜
(@comm_ring.to_comm_semiring 𝕜
(@semi_normed_comm_ring.to_comm_ring 𝕜
(@normed_comm_ring.to_semi_normed_comm_ring 𝕜
@kbuzzard
kbuzzard / rw_example.lean
Last active May 11, 2021 15:19
rw is painfully slow without hints
View rw_example.lean
universe u
set_option old_structure_cmd true
/- 0,+ -/
class add_zero_class (M : Type u) extends has_zero M, has_add M :=
(zero_add : ∀ (a : M), 0 + a = a)
(add_zero : ∀ (a : M), a + 0 = a)
class add_semigroup (G : Type u) extends has_add G :=
@kbuzzard
kbuzzard / MWE
Created May 11, 2021 13:21
350 lines of mathlib defs in a self-contained file so I could debug an issue
View MWE
universe u
set_option old_structure_cmd true
/- 0,+ -/
class add_zero_class (M : Type u) extends has_zero M, has_add M :=
(zero_add : ∀ (a : M), 0 + a = a)
(add_zero : ∀ (a : M), a + 0 = a)
class add_semigroup (G : Type u) extends has_add G :=
View gist:226abffabe7ee22f464977128b9157ed
[class_instances] class-instance resolution trace
[class_instances] (0) ?x_3 : has_coe_to_sort
(@subsemiring (ℕ → R) (@pi.semiring ℕ (λ (ᾰ : ℕ), R) (λ (i : ℕ), @comm_semiring.to_semiring R _inst_1))) := @category_theory.induced_category.has_coe_to_sort ?x_4 ?x_5 ?x_6 ?x_7 ?x_8
failed is_def_eq
[class_instances] (0) ?x_3 : has_coe_to_sort
(@subsemiring (ℕ → R) (@pi.semiring ℕ (λ (ᾰ : ℕ), R) (λ (i : ℕ), @comm_semiring.to_semiring R _inst_1))) := @wide_subquiver_has_coe_to_sort ?x_9 ?x_10
failed is_def_eq
[class_instances] (0) ?x_3 : has_coe_to_sort
(@subsemiring (ℕ → R) (@pi.semiring ℕ (λ (ᾰ : ℕ), R) (λ (i : ℕ), @comm_semiring.to_semiring R _inst_1))) := @set.has_coe_to_sort ?x_11
failed is_def_eq
@kbuzzard
kbuzzard / puzzles.lean
Last active March 24, 2021 15:14
some Lean maths puzzles
View puzzles.lean
import tactic
import data.real.basic
/-
# Some puzzles.
1) (easy logic). If `P`, `Q` and `R` are true-false statements, then show
that `(P → (Q → R)) → ((P → Q) → (P → R))` (where `→` means "implies")
2) (group theory) If `G` is a group such that `∀ g, g^2 = 1`