/- Copyright (c) Heather Macbeth, 2022. All rights reserved. -/
import Mathlib.Tactic.GCongr
import Library.Tactic.Cancel
import Library.Theory.Division
import Library.Tactic.Extra
import Library.Tactic.Numbers
import Library.Tactic.Use
attribute [-instance] Int.instDivInt_1 Int.instDivInt Nat.instDivNat
example : (11 : ℕ) ∣ 88 := by
example : (-2 : ℤ) ∣ 6 := by
example {a b : ℤ} (hab : a ∣ b) : a ∣ b ^ 2 + 2 * b := by
b ^ 2 + 2 * b = (a * k) ^ 2 + 2 * (a * k) := by rw [hk]
_ = a * (k * (a * k + 2)) := by ring
example {a b c : ℕ} (hab : a ∣ b) (hbc : b ^ 2 ∣ c) : a ^ 2 ∣ c := by
example {x y z : ℕ} (h : x * y ∣ z) : x ∣ z := by
example : ¬(5 : ℤ) ∣ 12 := by
apply Int.not_dvd_of_exists_lt_and_lt
· numbers -- show `5 * 2 < 12`
· numbers -- show `12 < 5 * (2 + 1)`
example {a b : ℕ} (hb : 0 < b) (hab : a ∣ b) : a ≤ b := by
example {a b : ℕ} (hab : a ∣ b) (hb : 0 < b) : 0 < a := by
example (t : ℤ) : t ∣ 0 := by
example : ¬(3 : ℤ) ∣ -10 := by
example {x y : ℤ} (h : x ∣ y) : x ∣ 3 * y - 4 * y ^ 2 := by
example {m n : ℤ} (h : m ∣ n) : m ∣ 2 * n ^ 3 + n := by
example {a b : ℤ} (hab : a ∣ b) : a ∣ 2 * b ^ 3 - b ^ 2 + 3 * b := by
example {k l m : ℤ} (h1 : k ∣ l) (h2 : l ^ 3 ∣ m) : k ^ 3 ∣ m := by
example {p q r : ℤ} (hpq : p ^ 3 ∣ q) (hqr : q ^ 2 ∣ r) : p ^ 6 ∣ r := by
example : ∃ n : ℕ, 0 < n ∧ 9 ∣ 2 ^ n - 1 := by
example : ∃ a b : ℤ, 0 < b ∧ b < a ∧ a - b ∣ a + b := by