❌ Latest Build Failed: banach-tarski

📚 Stale docs available: The documentation from 2026-02-17T02:56:00-08:00 is still accessible.

Error Summary

Project build failed

Build Log

⚠ [8262/8270] Built BanachTarski.Common (6.2s)
warning: BanachTarski/Common.lean:4:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                               ↓
  ⏎/-- Defs used throughout. -/⏎⏎-- -- Misc⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Common.lean:16:2: 'simp at eq' is a flexible tactic modifying 'eq'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Common.lean:17:2: 'exact eq' uses 'eq'!
warning: BanachTarski/Common.lean:87:8: `Matrix.invertibleOfRightInverse` has been deprecated: Use `invertibleOfRightInverse` instead

Note: The updated constant has a different type:
  {α : Type u} → [inst : Monoid α] → [IsDedekindFiniteMonoid α] → (a b : α) → a * b = 1 → Invertible a
instead of
  {n : Type u_1} →
    {R : Type u_3} →
      [inst : Fintype n] →
        [inst_1 : DecidableEq n] → [inst_2 : CommSemiring R] → (A B : Matrix n n R) → A * B = 1 → Invertible A

Note: The updated constant is in a different namespace. Dot notation may need to be changed (e.g., from `x.invertibleOfRightInverse` to `invertibleOfRightInverse x`).
warning: BanachTarski/Common.lean:97:4: 'simp at part' is a flexible tactic modifying 'part'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Common.lean:98:4: 'rw [← mul_assoc] at part' uses 'part'!
warning: BanachTarski/Common.lean:97:4: 'simp at part' is a flexible tactic modifying 'part'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Common.lean:100:4: 'rw [Matrix.inv_mul_of_invertible] at part' uses 'part'!
warning: BanachTarski/Common.lean:97:4: 'simp at part' is a flexible tactic modifying 'part'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Common.lean:101:4: 'have part2 : _ := congrArg (fun x ↦ x * (Matrix.transpose g)⁻¹) part' uses 'part'!
warning: BanachTarski/Common.lean:102:4: 'simp at part2' is a flexible tactic modifying 'part2'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Common.lean:105:4: 'exact part2' uses 'part2'!
warning: BanachTarski/Common.lean:106:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Common.lean:106:4: Try this:
  [apply] simp only [Matrix.det_nonsing_inv, Ring.inverse_eq_inv', inv_eq_one]
info: BanachTarski/Common.lean:107:4: 'exact a_tr.right' uses '⊢'!
warning: BanachTarski/Common.lean:123:2: 'simp [normed, S2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Common.lean:124:2: 'rw [norm_smul]' uses '⊢'!
warning: BanachTarski/Common.lean:123:2: 'simp [normed, S2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Common.lean:129:2: 'apply inv_mul_cancel_of_invertible' uses '⊢'!
warning: BanachTarski/Common.lean:135:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                      ↓
  ⏎  (m.divNat = n.divNat ∧ m.modNat ≠ n.modNat) := by⏎⏎  contrapose!⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Common.lean:144:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                    ↓
  ⏎    · exact eqmod⏎⏎  have resm : _ := finProdFinEquiv.right_inv m⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
⚠ [8263/8270] Built BanachTarski.SatoUtils (21s)
warning: BanachTarski/SatoUtils.lean:6:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                               ↓
  ⏎/-- A bunch of definitions and lemmas used in defining the Sato subgroup. -/⏎⏎abbrev ZMAT:= Matrix (Fin 3) (Fin 3) ℤ⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:27:41: 'simp [to_MAT_mul]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:27:41: Try this:
  [apply] simp only [List.map_cons, List.prod_cons]
info: BanachTarski/SatoUtils.lean:27:60: 'apply congrArg' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:27:41: 'simp [to_MAT_mul]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:27:41: Try this:
  [apply] simp only [List.map_cons, List.prod_cons]
info: BanachTarski/SatoUtils.lean:27:76: 'exact ih' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:48:4: 'simp [ML]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:49:4: 'apply congrArg' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:77:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                      ↓
  ⏎    <;> exact Int.dvd_self_sub_emod⏎⏎  obtain ⟨w1, w2, w3, prr⟩ := rrr⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:73:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:73:8: Try this:
  [apply] simp only [Fin.zero_eta, Fin.isValue, Nat.succ_eq_add_one, Nat.reduceAdd, Matrix.smul_cons, Int.zsmul_eq_mul,
    Matrix.smul_empty, Pi.add_apply, Matrix.cons_val_zero]
info: BanachTarski/SatoUtils.lean:74:8: 'rw [Int.mul_ediv_cancel']' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:73:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:73:8: Try this:
  [apply] simp only [Fin.mk_one, Fin.isValue, Nat.succ_eq_add_one, Nat.reduceAdd, Matrix.smul_cons, Int.zsmul_eq_mul,
    Matrix.smul_empty, Pi.add_apply, Matrix.cons_val_one, Matrix.cons_val_zero]
info: BanachTarski/SatoUtils.lean:74:8: 'rw [Int.mul_ediv_cancel']' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:73:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:73:8: Try this:
  [apply] simp only [Fin.reduceFinMk, Fin.isValue, Nat.succ_eq_add_one, Nat.reduceAdd, Matrix.smul_cons,
    Int.zsmul_eq_mul, Matrix.smul_empty, Pi.add_apply, Matrix.cons_val]
info: BanachTarski/SatoUtils.lean:74:8: 'rw [Int.mul_ediv_cancel']' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:73:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:73:8: Try this:
  [apply] simp only [Fin.zero_eta, Fin.isValue, Nat.succ_eq_add_one, Nat.reduceAdd, Matrix.smul_cons, Int.zsmul_eq_mul,
    Matrix.smul_empty, Pi.add_apply, Matrix.cons_val_zero]
info: BanachTarski/SatoUtils.lean:76:8: 'exact Int.dvd_self_sub_emod' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:73:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:73:8: Try this:
  [apply] simp only [Fin.mk_one, Fin.isValue, Nat.succ_eq_add_one, Nat.reduceAdd, Matrix.smul_cons, Int.zsmul_eq_mul,
    Matrix.smul_empty, Pi.add_apply, Matrix.cons_val_one, Matrix.cons_val_zero]
info: BanachTarski/SatoUtils.lean:76:8: 'exact Int.dvd_self_sub_emod' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:73:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:73:8: Try this:
  [apply] simp only [Fin.reduceFinMk, Fin.isValue, Nat.succ_eq_add_one, Nat.reduceAdd, Matrix.smul_cons,
    Int.zsmul_eq_mul, Matrix.smul_empty, Pi.add_apply, Matrix.cons_val]
info: BanachTarski/SatoUtils.lean:76:8: 'exact Int.dvd_self_sub_emod' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:86:2: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:86:2: Try this:
  [apply] simp only [add_zero]
info: BanachTarski/SatoUtils.lean:87:2: 'rw [mod7_Z_idempotent]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:95:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                           ↓
  ⏎    L.drop M = [X] := by⏎⏎  rintro M⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:100:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                 ↓
  ⏎    · rintro L X ⟨hlen, hlast⟩⏎⏎      have : ∃ Linit, L = Linit ++ [X] := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:103:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                        ↓
  ⏎        simpa [List.getLast?_eq_some_iff] using hlast⏎⏎      obtain ⟨Linit, pLinit⟩ :=this⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:105:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                      ↓
  ⏎      obtain ⟨Linit, pLinit⟩ :=this⏎⏎      simp⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:109:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
             ↓
  ⏎      simp⏎⏎      have sublen : Linit.length = 0 := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:114:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                         ↓
  ⏎        linarith [lem]⏎⏎      exact List.length_eq_zero_iff.mp sublen⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:118:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                       ↓
  ⏎    -- now compute drop on an append⏎⏎    · rintro L X ⟨hlen, hlast⟩⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:120:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                 ↓
  ⏎    · rintro L X ⟨hlen, hlast⟩⏎⏎      have head_tail: ∃ head: α, ∃ tail : List α,  L= head::tail := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:130:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                  ↓
  ⏎        _ = tail.length + 1 := List.length_cons⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:133:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                 ↓
  ⏎      have len_lem: tail.length = M + 1 := by linarith [inter]⏎⏎      have last_lem: tail.getLast? = some X := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:144:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                     ↓
  ⏎          linarith⏎⏎        simp at hlast⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:147:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                    ↓
  ⏎        have not_none:_ := mt List.getLast?_eq_none_iff.mp netail⏎⏎        have r0:_ := Option.getD_eq_iff.mp hlast⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:153:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                    ↓
  ⏎          trivial⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:106:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:106:6: Try this:
  [apply] simp only [List.drop_zero]
info: BanachTarski/SatoUtils.lean:107:6: 'rw [pLinit]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:106:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:106:6: Try this:
  [apply] simp only [List.drop_zero]
info: BanachTarski/SatoUtils.lean:115:6: 'exact List.length_eq_zero_iff.mp sublen' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:145:8: 'simp at hlast' is a flexible tactic modifying 'hlast'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:148:8: 'have r0 : _ := Option.getD_eq_iff.mp hlast' uses 'hlast'!
warning: BanachTarski/SatoUtils.lean:164:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
           ↓
  ⏎    simp⏎⏎  calc (Matrix.diagonal (fun _ ↦ d))^k * M⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:196:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                           ↓
  ⏎      · intro mats d lhs⏎⏎        have hprop : ∃H : MAT, ∃T : List MAT, mats = H::T := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:203:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                 ↓
  ⏎          simp⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:223:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                           ↓
  ⏎          _ = (List.map dmap mats).prod :=  by simp [pH]⏎⏎        simp [D]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:224:8: 'simp [D]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:225:8: 'exact res' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:234:2: 'simp [sev_mat_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:235:2: 'rw [Matrix.diagonal_pow]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:234:2: 'simp [sev_mat_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:239:2: 'rw [l]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:234:2: 'simp [sev_mat_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:243:2: 'left' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:234:2: 'simp [sev_mat_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:244:2: 'exact Nnz' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:247:2: 'simp [sev_mat, seventh_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:248:2: 'rw [Matrix.diagonal_pow]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:247:2: 'simp [sev_mat, seventh_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:251:2: 'rw [Matrix.diagonal_pow]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:247:2: 'simp [sev_mat, seventh_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:252:2: 'rw [Matrix.diagonal_mul_diagonal]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:269:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                       ↓
  ⏎  (FreeGroup.toWord a2).getLast? = some (0, true) -/⏎⏎-- First some general lemmas about reducibility⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:314:2: 'simp [FreeGroup.IsReduced]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:315:2: 'apply List.isChain_append.mpr' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:314:2: 'simp [FreeGroup.IsReduced]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:317:4: 'exact lisred' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:314:2: 'simp [FreeGroup.IsReduced]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:319:4: 'exact misred' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:314:2: 'simp [FreeGroup.IsReduced]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:320:2: 'intro x xlast' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:314:2: 'simp [FreeGroup.IsReduced]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:322:2: 'intro y yfirst' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:321:2: 'simp at xlast' is a flexible tactic modifying 'xlast'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:321:2: Try this:
  [apply] simp only [Option.mem_def, Prod.forall, Bool.forall_bool] at xlast
info: BanachTarski/SatoUtils.lean:324:2: 'rw [pl] at xlast' uses 'xlast'!
warning: BanachTarski/SatoUtils.lean:323:2: 'simp at yfirst' is a flexible tactic modifying 'yfirst'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:325:2: 'rw [ph] at yfirst' uses 'yfirst'!
warning: BanachTarski/SatoUtils.lean:321:2: 'simp at xlast' is a flexible tactic modifying 'xlast'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:321:2: Try this:
  [apply] simp only [Option.mem_def, Prod.forall, Bool.forall_bool] at xlast
info: BanachTarski/SatoUtils.lean:326:2: 'have p1isx : _ := Option.some_inj.mp xlast' uses 'xlast'!
warning: BanachTarski/SatoUtils.lean:323:2: 'simp at yfirst' is a flexible tactic modifying 'yfirst'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:327:2: 'have p2isy : _ := Option.some_inj.mp yfirst' uses 'yfirst'!
warning: BanachTarski/SatoUtils.lean:314:2: 'simp [FreeGroup.IsReduced]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:328:2: 'rw [← p1isx, ← p2isy]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:314:2: 'simp [FreeGroup.IsReduced]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:329:2: 'exact arediff' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:333:2: 'simp [FreeGroup.IsReduced]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:334:2: 'intro k' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:333:2: 'simp [FreeGroup.IsReduced]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:335:2: 'induction k with
| zero => simp
| succ n ih =>
  cases n with
  | zero => simp
  | succ m =>
    apply List.IsChain.cons_cons
    · simp
    exact ih' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:383:4: 'simp [S_f]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:383:4: Try this:
  [apply] simp only [Fin.ofNat_eq_cast, Fin.natCast_zero]
info: BanachTarski/SatoUtils.lean:384:4: 'exact TP_holds_of_zero_f w' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:505:12: `List.take_succ` has been deprecated: Use `List.take_add_one` instead
warning: BanachTarski/SatoUtils.lean:706:12: `List.getLast?_eq_getLast` has been deprecated: Use `List.getLast?_eq_some_getLast` instead
warning: BanachTarski/SatoUtils.lean:443:6: 'simp [leading_others_as_nat, leading_others_as_nat_f]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:447:6: 'apply Fin.lt_last_iff_ne_last.mpr' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:443:6: 'simp [leading_others_as_nat, leading_others_as_nat_f]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:448:6: 'by_contra badeq' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:442:6: 'simp [all_sinv] at notall' is a flexible tactic modifying 'notall'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:449:6: 'rw [badeq] at notall' uses 'notall'!
warning: BanachTarski/SatoUtils.lean:455:6: 'simp [leading_others_as_nat, leading_others_as_nat_f]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:462:6: 'let cond1 := cond.left.right' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:455:6: 'simp [leading_others_as_nat, leading_others_as_nat_f]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:463:6: 'nth_rewrite 1 [← List.take_append_drop (w.length - max_fin) w]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:455:6: 'simp [leading_others_as_nat, leading_others_as_nat_f]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:464:6: 'apply congrArg' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:455:6: 'simp [leading_others_as_nat, leading_others_as_nat_f]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:465:6: 'rw [cond1]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:475:6: 'simp [case] at case_is_none' is a flexible tactic modifying 'case_is_none'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:477:6: 'exact notone case_is_none' uses 'case_is_none'!
warning: BanachTarski/SatoUtils.lean:483:4: 'simp at case_is_some' is a flexible tactic modifying 'case_is_some'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:483:4: Try this:
  [apply] simp only [Fin.isValue, Bool.exists_bool] at case_is_some
info: BanachTarski/SatoUtils.lean:484:4: 'have issome : _ := Option.isSome_iff_ne_none.mpr case_is_some' uses 'case_is_some'!
warning: BanachTarski/SatoUtils.lean:506:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:506:8: Try this:
  [apply] simp only [Nat.pred_eq_sub_one, Fin.isValue, List.append_cancel_left_eq, Option.toList_eq_singleton_iff]
info: BanachTarski/SatoUtils.lean:507:8: 'rw [cset]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:506:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:506:8: Try this:
  [apply] simp only [Nat.pred_eq_sub_one, Fin.isValue, List.append_cancel_left_eq, Option.toList_eq_singleton_iff]
info: BanachTarski/SatoUtils.lean:508:8: 'rw [List.getLast?_take]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:506:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:506:8: Try this:
  [apply] simp only [Nat.pred_eq_sub_one, Fin.isValue, List.append_cancel_left_eq, Option.toList_eq_singleton_iff]
info: BanachTarski/SatoUtils.lean:510:8: 'rw [Option.or_of_isSome]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:506:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:506:8: Try this:
  [apply] simp only [Nat.pred_eq_sub_one, Fin.isValue, List.append_cancel_left_eq, Option.toList_eq_singleton_iff]
info: BanachTarski/SatoUtils.lean:514:8: 'change w.length - (↑(max_fin_f w) + 1) < w.length' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:506:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:506:8: Try this:
  [apply] simp only [Nat.pred_eq_sub_one, Fin.isValue, List.append_cancel_left_eq, Option.toList_eq_singleton_iff]
info: BanachTarski/SatoUtils.lean:517:8: 'apply Nat.sub_lt_self gtl' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:541:10: 'simp [L2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:541:10: Try this:
  [apply] simp only [Fin.isValue, Nat.pred_eq_sub_one, List.append_assoc, List.cons_append, List.nil_append]
info: BanachTarski/SatoUtils.lean:542:10: 'apply (FreeGroup.Red.Step.append_left_iff (List.take (leading_others_as_nat - 1) w)).mpr' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:541:10: 'simp [L2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:541:10: Try this:
  [apply] simp only [Fin.isValue, Nat.pred_eq_sub_one, List.append_assoc, List.cons_append, List.nil_append]
info: BanachTarski/SatoUtils.lean:543:10: 'apply FreeGroup.Red.Step.cons_not' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:584:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:584:10: Try this:
  [apply] simp only [Fin.isValue, Option.toList_eq_singleton_iff]
info: BanachTarski/SatoUtils.lean:585:10: 'rw [cset]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:584:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:584:10: Try this:
  [apply] simp only [Fin.isValue, Option.toList_eq_singleton_iff]
info: BanachTarski/SatoUtils.lean:587:10: 'rw [List.getLast?_take]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:584:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:584:10: Try this:
  [apply] simp only [Fin.isValue, Option.toList_eq_singleton_iff]
info: BanachTarski/SatoUtils.lean:594:10: 'rw [Option.or_of_isSome]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:613:10: 'simp [all_sinv] at notall' is a flexible tactic modifying 'notall'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:615:10: 'have uu : max_fin.val < w.length := by
  apply Fin.val_lt_last
  by_contra iop
  simp [max_fin] at iop
  rw [iop] at notall
  simp at notall' uses 'notall'!
warning: BanachTarski/SatoUtils.lean:618:12: 'simp [max_fin] at iop' is a flexible tactic modifying 'iop'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:619:12: 'rw [iop] at notall' uses 'iop'!
warning: BanachTarski/SatoUtils.lean:635:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:635:10: Try this:
  [apply] simp only [Fin.isValue, Option.toList_eq_singleton_iff]
info: BanachTarski/SatoUtils.lean:636:10: 'rw [cset]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:635:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:635:10: Try this:
  [apply] simp only [Fin.isValue, Option.toList_eq_singleton_iff]
info: BanachTarski/SatoUtils.lean:639:10: 'rw [List.getLast?_take]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:635:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:635:10: Try this:
  [apply] simp only [Fin.isValue, Option.toList_eq_singleton_iff]
info: BanachTarski/SatoUtils.lean:648:10: 'rw [Option.or_of_isSome]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:656:6: 'simp [all_sinv] at notall' is a flexible tactic modifying 'notall'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:658:6: 'exact notall (congrArg (fun x ↦ x.val) even_worse)' uses 'notall'!
warning: BanachTarski/SatoUtils.lean:669:2: 'simp [some_trailing_sinv] at no_trail_sinv' is a flexible tactic modifying 'no_trail_sinv'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:669:2: Try this:
  [apply] simp only [Fin.isValue, Bool.exists_bool] at no_trail_sinv
info: BanachTarski/SatoUtils.lean:673:4: 'exact no_trail_sinv' uses 'no_trail_sinv'!
warning: BanachTarski/SatoUtils.lean:672:4: 'simp [trailing_as_nat, trailing_as_nat_f]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:672:4: Try this:
  [apply] simp only [Fin.isValue, List.self_eq_append_right, List.replicate_eq_nil_iff]
info: BanachTarski/SatoUtils.lean:673:4: 'exact no_trail_sinv' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:679:4: 'simp at last_is_none' is a flexible tactic modifying 'last_is_none'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:679:4: Try this:
  [apply] simp only [Fin.isValue, Bool.exists_bool] at last_is_none
info: BanachTarski/SatoUtils.lean:681:4: 'exact notone last_is_none' uses 'last_is_none'!
warning: BanachTarski/SatoUtils.lean:690:4: 'simp [last_is_sigma_f] at last_not_sigma' is a flexible tactic modifying 'last_not_sigma'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:690:4: Try this:
  [apply] simp only [Fin.isValue, Bool.exists_bool] at last_not_sigma
info: BanachTarski/SatoUtils.lean:692:4: 'exact last_not_sigma pr' uses 'last_not_sigma'!
warning: BanachTarski/SatoUtils.lean:700:8: 'simp at notgt1' is a flexible tactic modifying 'notgt1'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:701:8: 'exact notone notgt1' uses 'notgt1'!
warning: BanachTarski/SatoUtils.lean:703:6: 'simp [List.replicate_one]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:703:6: Try this:
  [apply] simp only [Fin.isValue, List.replicate_one]
info: BanachTarski/SatoUtils.lean:704:6: 'rw [List.drop_length_sub_one]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:703:6: 'simp [List.replicate_one]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:703:6: Try this:
  [apply] simp only [Fin.isValue, List.replicate_one]
info: BanachTarski/SatoUtils.lean:707:10: 'exact Option.some.inj pr' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:703:6: 'simp [List.replicate_one]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:703:6: Try this:
  [apply] simp only [Fin.isValue, List.replicate_one]
info: BanachTarski/SatoUtils.lean:709:8: 'exact notone' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:703:6: 'simp [List.replicate_one]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:703:6: Try this:
  [apply] simp only [Fin.isValue, List.replicate_one]
info: BanachTarski/SatoUtils.lean:711:6: 'exact notone' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:718:4: 'simp [lSet_type_f] at bnd' is a flexible tactic modifying 'bnd'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:725:4: 'rw [melem] at bnd' uses 'bnd'!
warning: BanachTarski/SatoUtils.lean:718:4: 'simp [lSet_type_f] at bnd' is a flexible tactic modifying 'bnd'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:727:4: 'have bad : 1 ≤ max_fin := bnd badel.left badel.right' uses 'bnd'!
warning: BanachTarski/SatoUtils.lean:669:2: 'simp [some_trailing_sinv] at no_trail_sinv' is a flexible tactic modifying 'no_trail_sinv'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:669:2: Try this:
  [apply] simp only [Fin.isValue, Bool.exists_bool] at no_trail_sinv
info: BanachTarski/SatoUtils.lean:732:4: 'rw [no_trail_sinv] at bad' uses 'no_trail_sinv'!
warning: BanachTarski/SatoUtils.lean:731:4: 'simp [max_fin] at bad' is a flexible tactic modifying 'bad'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:732:4: 'rw [no_trail_sinv] at bad' uses 'bad'!
warning: BanachTarski/SatoUtils.lean:731:4: 'simp [max_fin] at bad' is a flexible tactic modifying 'bad'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:733:4: 'have : _ := Fin.le_iff_val_le_val.mp bad' uses 'bad'!
warning: BanachTarski/SatoUtils.lean:734:4: 'simp at this' is a flexible tactic modifying 'this'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:735:4: 'exact notone this' uses 'this'!
warning: BanachTarski/SatoUtils.lean:751:2: 'simp [all_sinv_f, n_trail_sinv_f]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:752:2: 'intro predi' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:755:2: 'simp [S_f, TailPred_f] at cond' is a flexible tactic modifying 'cond'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:756:2: 'rw [predi] at cond' uses 'cond'!
warning: BanachTarski/SatoUtils.lean:751:2: 'simp [all_sinv_f, n_trail_sinv_f]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:759:2: 'exact res' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:758:2: 'simp at res' is a flexible tactic modifying 'res'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:759:2: 'exact res' uses 'res'!
warning: BanachTarski/SatoUtils.lean:781:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                   ↓
  ⏎        exact eq⏎⏎      rw [invlem]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:801:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                  ↓
  ⏎          omega⏎⏎        rw [xyz2]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:778:8: 'simp [A, B]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:780:8: 'exact eq' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:776:6: 'simp [eq]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:776:6: Try this:
  [apply] simp only [gt_iff_lt]
info: BanachTarski/SatoUtils.lean:782:6: 'rw [invlem]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:776:6: 'simp [eq]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:776:6: Try this:
  [apply] simp only [gt_iff_lt]
info: BanachTarski/SatoUtils.lean:783:6: 'exact FreeGroup.reduce_invRev_left_cancel' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:784:6: 'simp [neq]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:784:6: Try this:
  [apply] simp only [gt_iff_lt]
info: BanachTarski/SatoUtils.lean:785:6: 'rcases (em (nt < nf)) with tlf | flt' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:784:6: 'simp [neq]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:784:6: Try this:
  [apply] simp only [gt_iff_lt]
info: BanachTarski/SatoUtils.lean:791:8: 'rw [xyz1]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:784:6: 'simp [neq]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:784:6: Try this:
  [apply] simp only [gt_iff_lt]
info: BanachTarski/SatoUtils.lean:792:8: 'rw [List.append_assoc]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:784:6: 'simp [neq]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:784:6: Try this:
  [apply] simp only [gt_iff_lt]
info: BanachTarski/SatoUtils.lean:793:8: 'rw [← FreeGroup.reduce_append_reduce_reduce]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:784:6: 'simp [neq]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:784:6: Try this:
  [apply] simp only [gt_iff_lt]
info: BanachTarski/SatoUtils.lean:794:8: 'rw [FreeGroup.reduce_invRev_left_cancel]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:784:6: 'simp [neq]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:784:6: Try this:
  [apply] simp only [gt_iff_lt]
info: BanachTarski/SatoUtils.lean:802:8: 'rw [xyz2]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:784:6: 'simp [neq]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:784:6: Try this:
  [apply] simp only [gt_iff_lt]
info: BanachTarski/SatoUtils.lean:803:8: 'rw [← List.append_assoc]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:784:6: 'simp [neq]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:784:6: Try this:
  [apply] simp only [gt_iff_lt]
info: BanachTarski/SatoUtils.lean:804:8: 'rw [← FreeGroup.reduce_append_reduce_reduce]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:784:6: 'simp [neq]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:784:6: Try this:
  [apply] simp only [gt_iff_lt]
info: BanachTarski/SatoUtils.lean:807:8: 'rw [trt]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:832:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                          ↓
  ⏎    exact notone isempt⏎⏎  have cond2: FreeGroup.IsReduced w_inv := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:840:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                          ↓
  ⏎    exact FreeGroup.isReduced_iff_reduce_eq.mpr redtwic⏎⏎  have cond3: ¬ (all_sinv_f w_inv) := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:851:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                        ↓
  ⏎    simp [FreeGroup.invRev] at notall⏎⏎  have cond4: ¬last_is_sigma_f w_inv := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:859:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                     ↓
  ⏎    exact first_not_sinv last_is_s⏎⏎  have :_:= if_not_all_sinv_w (w_inv) ⟨cond1, cond2, cond3, cond4⟩⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:862:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                      ↓
  ⏎  obtain ⟨wc_inv, p_wc_inv⟩ := this⏎⏎  use FreeGroup.invRev wc_inv⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:864:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                ↓
  ⏎  use FreeGroup.invRev wc_inv⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:875:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                          ↓
  ⏎        simp [FreeGroup.invRev]; exact leading_trailing⏎⏎  constructor⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:878:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                   ↓
  ⏎  · exact isReduced_of_invRev_of_isReduced (p_wc_inv.right.left)⏎⏎  obtain ⟨c, pc⟩ := p_wc_inv.right.right⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:827:4: 'simp [w_inv]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:827:4: Try this:
  [apply] simp only [ne_eq]
info: BanachTarski/SatoUtils.lean:828:4: 'by_contra isempt' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:827:4: 'simp [w_inv]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:827:4: Try this:
  [apply] simp only [ne_eq]
info: BanachTarski/SatoUtils.lean:829:4: 'apply congrArg FreeGroup.invRev at isempt' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:830:4: 'simp at isempt' is a flexible tactic modifying 'isempt'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:831:4: 'exact notone isempt' uses 'isempt'!
warning: BanachTarski/SatoUtils.lean:827:4: 'simp [w_inv]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:827:4: Try this:
  [apply] simp only [ne_eq]
info: BanachTarski/SatoUtils.lean:831:4: 'exact notone isempt' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:834:4: 'simp [w_inv]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:839:4: 'exact FreeGroup.isReduced_iff_reduce_eq.mpr redtwic' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:843:4: 'simp [w_inv] at all_sigs'' is a flexible tactic modifying 'all_sigs''. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:844:4: 'have all_sigs : _ := all_sinv_equiv (FreeGroup.invRev w) all_sigs'' uses 'all_sigs''!
warning: BanachTarski/SatoUtils.lean:845:4: 'simp [all_s_f] at notall' is a flexible tactic modifying 'notall'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:848:4: 'rw [all_sigs] at notall' uses 'notall'!
warning: BanachTarski/SatoUtils.lean:847:4: 'simp [FreeGroup.invRev_invRev] at all_sigs' is a flexible tactic modifying 'all_sigs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:848:4: 'rw [all_sigs] at notall' uses 'all_sigs'!
warning: BanachTarski/SatoUtils.lean:857:4: 'simp [first_is_sinv_f] at first_not_sinv' is a flexible tactic modifying 'first_not_sinv'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:858:4: 'exact first_not_sinv last_is_s' uses 'first_not_sinv'!
warning: BanachTarski/SatoUtils.lean:854:4: 'simp [last_is_sigma_f] at last_is_s' is a flexible tactic modifying 'last_is_s'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:858:4: 'exact first_not_sinv last_is_s' uses 'last_is_s'!
warning: BanachTarski/SatoUtils.lean:874:8: 'simp [FreeGroup.invRev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:874:8: Try this:
  [apply] simp only [Fin.isValue, List.append_cancel_right_eq]
info: BanachTarski/SatoUtils.lean:874:33: 'exact leading_trailing' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:881:2: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:881:2: Try this:
  [apply] simp only [Fin.isValue, Bool.not_eq_true, Bool.decide_eq_false]
info: BanachTarski/SatoUtils.lean:883:2: 'exact pc' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:889:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                          ↓
  ⏎  (FreeGroup.toWord a2).getLast? = some (0, true) := by⏎⏎  rintro ⟨aneq1, image_is_one⟩⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:891:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                 ↓
  ⏎  rintro ⟨aneq1, image_is_one⟩⏎⏎  set w: List chartype := FreeGroup.toWord a with w_same⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:896:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                     ↓
  ⏎  set trailing_as_nat : ℕ := trailing_as_nat_f w with trailing_def⏎⏎  have nts_pos : n_trail_sinvs ≥ 0 := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:899:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                           ↓
  ⏎    simp [n_trail_sinvs, n_trail_sinv_f]⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:904:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                   ↓
  ⏎  set  last_is_sigma := w.getLast? = some (0, true) with lis_def⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:909:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                            ↓
  ⏎  set TailPred := TailPred_f w with TPdef⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:914:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                           ↓
  ⏎    rwa [←w_same] at sim⏎⏎  have notone :  w ≠ ([]: List chartype) := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:919:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                       ↓
  ⏎    exact aneq1 cont⏎⏎  have wlen: w.length ≠ 0  := (mt List.length_eq_zero_iff.mp) notone⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:921:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                       ↓
  ⏎  have wlen: w.length ≠ 0  := (mt List.length_eq_zero_iff.mp) notone⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:933:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                            ↓
  ⏎      simp [typed_length]⏎⏎    have max_has_property:_ := (cond pred).left⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:941:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                    ↓
  ⏎    simp [notone]⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:946:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                              ↓
  ⏎  -------------------------⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:950:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                                              ↓
  ⏎  have dec_last_is_sigma : Decidable last_is_sigma := Classical.propDecidable last_is_sigma⏎⏎  let a2: FG2 :=  dite last_is_sigma (fun _ => a) (fun _ =>⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:954:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                 ↓
  ⏎      σ ^ (-n_trail_sinvs - 1) * a * σ ^ (n_trail_sinvs + 1)))⏎⏎  have still_in_kernel: h a2 = 1 := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:956:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                         ↓
  ⏎  have still_in_kernel: h a2 = 1 := by⏎⏎    simp [a2]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:958:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                ↓
  ⏎    simp [a2]⏎⏎    rcases (em last_is_sigma) with last_is_sig | last_not_sig⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:974:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
               ↓
  ⏎    norm_num⏎⏎  set w2 := FreeGroup.toWord a2 with w2_same⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:976:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                               ↓
  ⏎  set w2 := FreeGroup.toWord a2 with w2_same⏎⏎  have w2_isreduced: FreeGroup.IsReduced w2 := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:980:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                            ↓
  ⏎    rwa [←w2_same] at sim⏎⏎  have check_same: a2 = FreeGroup.mk w2 := FreeGroup.mk_toWord.symm⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:982:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                      ↓
  ⏎  have check_same: a2 = FreeGroup.mk w2 := FreeGroup.mk_toWord.symm⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:985:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                       ↓
  ⏎  set N := w2.length with w2_len_lem⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:988:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                        ↓
  ⏎  have end_lemma: w2.getLast? =  some (0, true) := by⏎⏎    simp [w2]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:996:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                          ↓
  ⏎      exact last_is_sig⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:999:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                             ↓
  ⏎    rcases (em all_sinv) with all | notall⏎⏎    · simp [all]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1002:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                            ↓
  ⏎      simp [last_not_sig]⏎⏎      change (FreeGroup.invRev w).getLast? = some (0, true)⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1005:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                ↓
  ⏎      simp [FreeGroup.invRev]⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1011:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                          ↓
  ⏎    simp [last_not_sig]⏎⏎    have last_not_sigma: ¬last_is_sigma_f w := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1015:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                 ↓
  ⏎      simpa [last_is_sigma] using last_not_sig⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1019:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                ↓
  ⏎    rw [←trailing_def] at res⏎⏎    obtain ⟨wc, pwc⟩ := res⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1031:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                             ↓
  ⏎    nth_rewrite 2 [←FreeGroup.reduce_append_reduce_reduce]⏎⏎    have rrr: FreeGroup.reduce wc = wc := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1035:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                             ↓
  ⏎      exact pwc.right.left⏎⏎    rw [rrr]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1037:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
               ↓
  ⏎    rw [rrr]⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1043:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                     ↓
  ⏎    rw [replemma2]⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1058:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
             ↓
  ⏎      simp⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1061:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                     ↓
  ⏎    simp [redlem2]⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1070:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                 ↓
  ⏎      linarith⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1077:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                   ↓
  ⏎    simp [σchar]⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1084:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                      ↓
  ⏎      exact redlem2⏎⏎    rcases (em (¬first_is_sinv_f wr)) with no_first_not_sinv | yes_first_is_sinv⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1086:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                                   ↓
  ⏎    rcases (em (¬first_is_sinv_f wr)) with no_first_not_sinv | yes_first_is_sinv⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1090:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                      ↓
  ⏎      have cond2 : FreeGroup.IsReduced wr := by exact wr_is_reduced⏎⏎      have cond3 : ¬(all_s_f wr) := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1094:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                               ↓
  ⏎        simp [wr] at act_all⏎⏎        simp [all_s_f] at act_all⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1103:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                       ↓
  ⏎        simp at pwc3⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1106:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                         ↓
  ⏎      have cond4 : ¬(first_is_sinv_f wr) := by exact no_first_not_sinv⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1110:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                 ↓
  ⏎      obtain ⟨wd, wdp⟩ := res2⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1115:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                    ↓
  ⏎      rw [←FreeGroup.reduce_append_reduce_reduce]⏎⏎      have redlemagain: ∃k: ℕ, ∃b:Bool, FreeGroup.reduce⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1131:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                          ↓
  ⏎              simp [d2]⏎⏎      obtain ⟨k, b, pkb⟩ := redlemagain⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1153:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                 ↓
  ⏎          simp⏎⏎      rw [isredalready]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1155:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                          ↓
  ⏎      rw [isredalready]⏎⏎      have wdredstep : FreeGroup.reduce (wd) = wd := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1158:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                      ↓
  ⏎        exact FreeGroup.isReduced_iff_reduce_eq.mp (wdp.right.left)⏎⏎      rw [wdredstep]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1164:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                      ↓
  ⏎        simp at wdp⏎⏎      rw [List.getLast?_append_of_ne_nil _ wdne]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1171:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                     ↓
  ⏎        exact wdne⏎⏎      rw [samelast]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1173:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                      ↓
  ⏎      rw [samelast]⏎⏎      simp [wr]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1175:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                  ↓
  ⏎      simp [wr]⏎⏎    ------⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1190:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
             ↓
  ⏎      simp⏎⏎    rw [ared]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1192:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                ↓
  ⏎    rw [ared]⏎⏎    have wrne: wr ≠ [] := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1195:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                  ↓
  ⏎      simp [wr]⏎⏎    rw [List.getLast?_append_of_ne_nil _ wrne]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1198:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                ↓
  ⏎    simp [wr]⏎⏎  have a2_ne_one : a2 ≠ 1 := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:1206:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                        ↓
  ⏎    simp at end_lemma⏎⏎  exact ⟨a2, a2_ne_one, still_in_kernel, end_lemma⟩⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/SatoUtils.lean:917:4: 'simp [w] at cont' is a flexible tactic modifying 'cont'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:918:4: 'exact aneq1 cont' uses 'cont'!
warning: BanachTarski/SatoUtils.lean:925:4: 'simp [all_sinv, all_sinv_f, n_trail_sinv_f] at is_all' is a flexible tactic modifying 'is_all'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:929:4: 'have pred : S.max' ne_S = typed_length := by
  ext
  rw [is_all]
  simp [typed_length]' uses 'is_all'!
warning: BanachTarski/SatoUtils.lean:937:4: 'simp [typed_length] at drp' is a flexible tactic modifying 'drp'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:938:4: 'rw [drp]' uses 'drp'!
warning: BanachTarski/SatoUtils.lean:957:4: 'simp [a2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:959:4: 'rcases (em last_is_sigma) with last_is_sig | last_not_sig' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:957:4: 'simp [a2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:961:6: 'exact image_is_one' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:957:4: 'simp [a2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:963:4: 'rcases (em all_sinv) with all | notall' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:957:4: 'simp [a2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:966:6: 'exact image_is_one' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:957:4: 'simp [a2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:970:4: 'rw [image_is_one]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:957:4: 'simp [a2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:972:4: 'rw [← zpow_add (h σ)]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:991:4: 'rcases (em last_is_sigma) with last_is_sig | last_not_sig' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:995:6: 'exact last_is_sig' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:993:6: 'simp [last_is_sigma] at last_is_sig' is a flexible tactic modifying 'last_is_sig'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:995:6: 'exact last_is_sig' uses 'last_is_sig'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:998:4: 'rcases (em all_sinv) with all | notall' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1003:6: 'change (FreeGroup.invRev w).getLast? = some (0, true)' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1007:6: 'rw [if_all_sinv all]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1021:4: 'rw [mul_assoc]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1023:4: 'rw [← w_same]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1024:4: 'rw [pwc.left]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1025:4: 'rw [List.append_assoc wc]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1027:4: 'rw [eqpows]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1030:4: 'nth_rewrite 2 [← FreeGroup.reduce_append_reduce_reduce]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1036:4: 'rw [rrr]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1042:4: 'rw [replemma2]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:1066:6: 'simp [trailing_as_nat, trailing_as_nat_f]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1066:6: Try this:
  [apply] simp only [neg_add_rev, Int.reduceNeg]
info: BanachTarski/SatoUtils.lean:1068:6: 'apply congrArg' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1072:4: 'rw [powlem]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1073:4: 'rw [FreeGroup.toWord_pow]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1079:4: 'set wr := wc ++ [(0, true)] with wr_def' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:1081:6: 'simp [wr]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1082:6: 'apply FreeGroup.isReduced_iff_reduce_eq.mpr' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:1081:6: 'simp [wr]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1083:6: 'exact redlem2' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1085:4: 'rcases (em (¬first_is_sinv_f wr)) with no_first_not_sinv | yes_first_is_sinv' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:1093:8: 'simp [wr] at act_all' is a flexible tactic modifying 'act_all'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1096:8: 'rw [List.replicate_succ'] at act_all' uses 'act_all'!
warning: BanachTarski/SatoUtils.lean:1093:8: 'simp [wr] at act_all' is a flexible tactic modifying 'act_all'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1097:8: 'apply List.append_inj at act_all' uses 'act_all'!
warning: BanachTarski/SatoUtils.lean:1093:8: 'simp [wr] at act_all' is a flexible tactic modifying 'act_all'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1100:8: 'rw [act_all] at pwc3' uses 'act_all'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1112:6: 'rw [wdp.left]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1113:6: 'rw [← List.append_assoc]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1114:6: 'rw [← FreeGroup.reduce_append_reduce_reduce]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1116:6: 'have redlemagain :
  ∃ k : ℕ,
    ∃ b : Bool,
      FreeGroup.reduce
          (List.replicate (trailing_as_nat + 1) ((0 : Fin 2), false) ++
            List.replicate (leading_s_as_nat_f wr) ((0 : Fin 2), true)) =
        List.replicate k (0, b) :=
  by
  let a := trailing_as_nat + 1
  let b := leading_s_as_nat_f wr
  rw [← σ_def]
  rw [collapse_replics_1 a b]
  rcases (em (a = b)) with c1 | c2
  ·
    simp [c1]
      --
      
  simp [c2]
  rcases (em (b < a)) with d1 | d2
  · simp [d1]
  simp [d2]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:1127:14: 'simp [c2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1127:14: Try this:
  [apply] simp only [gt_iff_lt, Bool.exists_bool]
info: BanachTarski/SatoUtils.lean:1128:14: 'rcases (em (b < a)) with d1 | d2' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1133:6: 'rw [pkb]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1134:6: 'have isredalready :
  FreeGroup.reduce (List.replicate k (0, b) ++ FreeGroup.reduce wd) = List.replicate k (0, b) ++ FreeGroup.reduce wd :=
  by
  rcases (em (k = 0)) with k_is_zero | k_nonzero
  ·
    simp [k_is_zero]
      --
      
  apply FreeGroup.isReduced_iff_reduce_eq.mp
  obtain ⟨b', pb'⟩ := wdp.right.right
  apply isreduced_of_append_of_reduced_mismatching_boundary (0, b) (1, b')
  · simp [List.getLast?_replicate]
    exact k_nonzero
  · rw [FreeGroup.isReduced_iff_reduce_eq.mp wdp.right.left]
    exact pb'
  constructor
  · exact isReduced_of_replicate
  constructor
  · apply FreeGroup.isReduced_iff_reduce_eq.mpr
    simp
  simp' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:1142:12: 'simp [List.getLast?_replicate]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1143:12: 'exact k_nonzero' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1154:6: 'rw [isredalready]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1159:6: 'rw [wdredstep]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1165:6: 'rw [List.getLast?_append_of_ne_nil _ wdne]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1172:6: 'rw [samelast]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:1180:6: 'simp [first_is_sinv_f] at yes_first_is_sinv' is a flexible tactic modifying 'yes_first_is_sinv'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1184:8: 'exact yes_first_is_sinv' uses 'yes_first_is_sinv'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1191:4: 'rw [ared]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:989:4: 'simp [w2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1196:4: 'rw [List.getLast?_append_of_ne_nil _ wrne]' uses '⊢'!
warning: BanachTarski/SatoUtils.lean:1203:4: 'simp at badeq' is a flexible tactic modifying 'badeq'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/SatoUtils.lean:1204:4: 'rw [badeq] at end_lemma' uses 'badeq'!
✖ [8264/8270] Building BanachTarski.Rot (29s)
trace: .> LEAN_PATH=/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/Cli/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/batteries/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/Qq/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/aesop/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/importGraph/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/plausible/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/mathlib/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/build/lib/lean /home/nfr/.elan/toolchains/leanprover--lean4---v4.29.0/bin/lean /home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/BanachTarski/Rot.lean -o /home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/build/lib/lean/BanachTarski/Rot.olean -i /home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/build/lib/lean/BanachTarski/Rot.ilean -c /home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/build/ir/BanachTarski/Rot.c --setup /home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/build/ir/BanachTarski/Rot.setup.json --json
warning: BanachTarski/Rot.lean:11:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                                       ↓
  ⏎and convert back to matrices at the end (in particular, see lemma `same_action`). -/⏎⏎--  Section Goal:⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:15:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                           ↓
  ⏎-- and the space orthogonal to the axis.⏎⏎instance R3_dim_3 : Fact (Module.finrank ℝ R3 = 2 + 1) := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:17:2: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:17:2: Try this:
  [apply] simp only [finrank_euclideanSpace, Fintype.card_fin, Nat.reduceAdd]
info: BanachTarski/Rot.lean:18:2: 'trivial' uses '⊢'!
warning: BanachTarski/Rot.lean:32:2: 'simp [orth]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:33:2: 'apply Submodule.finrank_orthogonal_span_singleton' uses '⊢'!
warning: BanachTarski/Rot.lean:32:2: 'simp [orth]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:34:2: 'exact s2_nonzero ax' uses '⊢'!
warning: BanachTarski/Rot.lean:40:2: 'simp at bad' is a flexible tactic modifying 'bad'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:42:2: 'have isbot_orth : (orth ax) = ⊥ := by exact (Submodule.eq_bot_iff (orth ax)).mpr bad' uses 'bad'!
warning: BanachTarski/Rot.lean:45:2: 'simp [ax_space] at istop_ax' is a flexible tactic modifying 'istop_ax'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:46:2: 'apply congrArg (fun S : (Submodule ℝ R3) ↦ Module.finrank ℝ S) at istop_ax' uses 'istop_ax'!
warning: BanachTarski/Rot.lean:45:2: 'simp [ax_space] at istop_ax' is a flexible tactic modifying 'istop_ax'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:50:2: 'rw [istop_ax] at this' uses 'istop_ax'!
warning: BanachTarski/Rot.lean:67:2: 'simp at bad' is a flexible tactic modifying 'bad'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:68:2: 'rcases bad with c1 | c2' uses 'bad'!
warning: BanachTarski/Rot.lean:69:4: 'simp [nr] at c1' is a flexible tactic modifying 'c1'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:70:4: 'rw [c1] at prop' uses 'c1'!
error: BanachTarski/Rot.lean:107:8: Tactic `rewrite` failed: Did not find an occurrence of the pattern
  ⊤
in the target expression
  ℝ ∙ ⟨↑ax, ismem⟩ = ⊤

ax : ↑S2
ismem : ↑ax ∈ ax_space ax
gen : ↥(ax_space ax) := ⟨↑ax, ismem⟩
v : Fin 1 → ↥(ax_space ax) := ![gen]
hon : LinearIndependent ℝ v :=
  Eq.mpr (id (Eq.trans (linearIndependent_subsingleton_index_iff._simp_1 v) Fin.forall_fin_one._simp_1))
    (have this := ax.property;
    Eq.mpr (id (congrArg Not (congrFun' (congrArg Eq (Matrix.cons_val_fin_one gen ![] 0)) 0)))
      (Eq.mpr (id (congrArg Not (Submodule.mk_eq_zero._simp_1 (ax_space ax) ismem)))
        (id fun bad ↦
          False.elim
            (Eq.mp
              (Eq.trans
                (congrFun'
                  (congrArg Membership.mem
                    (congrArg setOf (funext fun y ↦ congrFun' (congrArg Eq (dist_zero_right y)) 1)))
                  0)
                (Eq.trans (congrFun' (congrArg Eq norm_zero) 1) zero_ne_one._simp_1))
              (Eq.mp (congrArg (fun _a ↦ _a ∈ {y | dist y 0 = 1}) bad) this)))))
⊢ ℝ ∙ ⟨↑ax, ismem⟩ = ⊤
warning: BanachTarski/Rot.lean:136:2: 'simp [rot_iso_plane_to_st]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:138:2: 'apply LinearIsometry.ext' uses '⊢'!
warning: BanachTarski/Rot.lean:136:2: 'simp [rot_iso_plane_to_st]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:139:2: 'intro x' uses '⊢'!
warning: BanachTarski/Rot.lean:157:2: 'simp [spar]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:158:2: 'set V := (Submodule.span ℝ { ax.val }).starProjection v with vdef' uses '⊢'!
warning: BanachTarski/Rot.lean:157:2: 'simp [spar]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:163:2: 'exact this' uses '⊢'!
warning: BanachTarski/Rot.lean:166:2: 'simp [operp]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:169:2: 'set V := (Submodule.span ℝ { ax.val }).starProjection v with vdef' uses '⊢'!
warning: BanachTarski/Rot.lean:180:2: 'simp [spar]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:181:2: 'apply (Submodule.starProjection_apply_eq_zero_iff (Submodule.span ℝ { ax.val })).mpr' uses '⊢'!
warning: BanachTarski/Rot.lean:179:2: 'simp [orth] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:182:2: 'exact lhs' uses 'lhs'!
warning: BanachTarski/Rot.lean:180:2: 'simp [spar]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:182:2: 'exact lhs' uses '⊢'!
warning: BanachTarski/Rot.lean:185:2: 'simp [ax_space, spar]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:186:2: 'intro lhs' uses '⊢'!
warning: BanachTarski/Rot.lean:185:2: 'simp [ax_space, spar]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:189:2: 'rw [← pa]' uses '⊢'!
warning: BanachTarski/Rot.lean:185:2: 'simp [ax_space, spar]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:191:2: 'apply congrArg' uses '⊢'!
warning: BanachTarski/Rot.lean:185:2: 'simp [ax_space, spar]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:192:2: 'apply Submodule.starProjection_eq_self_iff.mpr' uses '⊢'!
warning: BanachTarski/Rot.lean:196:2: 'simp [ax_space, operp]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:197:2: 'intro lhs' uses '⊢'!
warning: BanachTarski/Rot.lean:196:2: 'simp [ax_space, operp]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:199:2: 'exact lhs' uses '⊢'!
error: BanachTarski/Rot.lean:229:74: unsolved goals
ax : ↑S2
x : R3
⊢ x = ↑((ℝ ∙ ↑ax)ᗮ.orthogonalProjection x) + (ℝ ∙ ↑ax).starProjection x
warning: BanachTarski/Rot.lean:241:2: 'simp [rot_by_parts]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:241:2: Try this:
  [apply] simp only [id_eq]
info: BanachTarski/Rot.lean:242:2: 'rw [triv_rot_inner]' uses '⊢'!
warning: BanachTarski/Rot.lean:241:2: 'simp [rot_by_parts]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:241:2: Try this:
  [apply] simp only [id_eq]
info: BanachTarski/Rot.lean:244:2: 'exact (el_by_parts ax w).symm' uses '⊢'!
warning: BanachTarski/Rot.lean:249:4: 'simp [rot_by_parts]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:256:4: 'rw [rips_add]' uses '⊢'!
warning: BanachTarski/Rot.lean:263:4: 'simp [Function.LeftInverse]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:264:4: 'intro x' uses '⊢'!
warning: BanachTarski/Rot.lean:263:4: 'simp [Function.LeftInverse]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:265:4: 'rw [rot_by_parts_comp]' uses '⊢'!
warning: BanachTarski/Rot.lean:263:4: 'simp [Function.LeftInverse]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:267:4: 'rw [triv_rot_by_parts]' uses '⊢'!
warning: BanachTarski/Rot.lean:271:4: 'simp [Function.RightInverse]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:272:4: 'intro x' uses '⊢'!
warning: BanachTarski/Rot.lean:271:4: 'simp [Function.RightInverse]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:273:4: 'rw [rot_by_parts_comp]' uses '⊢'!
warning: BanachTarski/Rot.lean:271:4: 'simp [Function.RightInverse]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:275:4: 'rw [triv_rot_by_parts]' uses '⊢'!
warning: BanachTarski/Rot.lean:289:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:289:4: Try this:
  [apply] simp only [LinearEquiv.coe_mk, LinearMap.coe_mk, AddHom.coe_mk]
info: BanachTarski/Rot.lean:290:4: 'rw [← sq_eq_sq₀ (norm_nonneg _) (norm_nonneg _)]' uses '⊢'!
warning: BanachTarski/Rot.lean:289:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:289:4: Try this:
  [apply] simp only [LinearEquiv.coe_mk, LinearMap.coe_mk, AddHom.coe_mk]
info: BanachTarski/Rot.lean:291:4: 'rw [Submodule.norm_sq_eq_add_norm_sq_projection (rot_by_parts ax θ x) (orth ax)]' uses '⊢'!
warning: BanachTarski/Rot.lean:289:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:289:4: Try this:
  [apply] simp only [LinearEquiv.coe_mk, LinearMap.coe_mk, AddHom.coe_mk]
info: BanachTarski/Rot.lean:292:4: 'rw [Submodule.norm_sq_eq_add_norm_sq_projection x (orth ax)]' uses '⊢'!
warning: BanachTarski/Rot.lean:294:6: 'simp [orth, spar]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:300:6: 'rw [idem]' uses '⊢'!
warning: BanachTarski/Rot.lean:289:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:289:4: Try this:
  [apply] simp only [LinearEquiv.coe_mk, LinearMap.coe_mk, AddHom.coe_mk]
info: BanachTarski/Rot.lean:303:6: 'apply congrArg (fun x ↦ x ^ 2)' uses '⊢'!
warning: BanachTarski/Rot.lean:289:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:289:4: Try this:
  [apply] simp only [LinearEquiv.coe_mk, LinearMap.coe_mk, AddHom.coe_mk]
info: BanachTarski/Rot.lean:305:6: 'rw [zero_lem1]' uses '⊢'!
warning: BanachTarski/Rot.lean:289:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:289:4: Try this:
  [apply] simp only [LinearEquiv.coe_mk, LinearMap.coe_mk, AddHom.coe_mk]
info: BanachTarski/Rot.lean:310:4: 'apply congrArg (fun x ↦ x ^ 2)' uses '⊢'!
warning: BanachTarski/Rot.lean:289:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:289:4: Try this:
  [apply] simp only [LinearEquiv.coe_mk, LinearMap.coe_mk, AddHom.coe_mk]
info: BanachTarski/Rot.lean:312:4: 'rw [zero_lem1]' uses '⊢'!
warning: BanachTarski/Rot.lean:331:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                    ↓
  ⏎  simp [rot_iso_plane_to_st, rot_iso_plane_equiv]⏎⏎  have angcoe: Real.Angle.coe (2 * Real.pi * ↑k) = (0:ℝ) := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:328:2: 'simp [rot_iso]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:332:2: 'have angcoe : Real.Angle.coe (2 * Real.pi * ↑k) = (0 : ℝ) :=
  by
  apply Real.Angle.angle_eq_iff_two_pi_dvd_sub.mpr
  simp' uses '⊢'!
warning: BanachTarski/Rot.lean:328:2: 'simp [rot_iso]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:335:2: 'rw [angcoe]' uses '⊢'!
warning: BanachTarski/Rot.lean:328:2: 'simp [rot_iso]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:337:2: 'exact (el_by_parts axis v).symm' uses '⊢'!
warning: BanachTarski/Rot.lean:343:4: 'simp [rot_iso]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:345:4: 'rw [triv_rot_inner]' uses '⊢'!
warning: BanachTarski/Rot.lean:343:4: 'simp [rot_iso]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:347:4: 'exact (el_by_parts ax w).symm' uses '⊢'!
warning: BanachTarski/Rot.lean:355:2: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:355:2: Try this:
  [apply] simp only [finrank_euclideanSpace, Fintype.card_fin]
info: BanachTarski/Rot.lean:356:2: 'trivial' uses '⊢'!
warning: BanachTarski/Rot.lean:381:4: 'simp [mod_dim]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:381:4: Try this:
  [apply] simp only [Fin.zero_eta, Fin.isValue]
info: BanachTarski/Rot.lean:382:4: 'exact instDecidableEqFin 2' uses '⊢'!
warning: BanachTarski/Rot.lean:384:4: 'simp [mod_dim]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:384:4: Try this:
  [apply] simp only [Fin.mk_one, Fin.isValue]
info: BanachTarski/Rot.lean:385:4: 'exact instDecidableEqFin 1' uses '⊢'!
warning: BanachTarski/Rot.lean:396:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                  ↓
  ⏎      exact (ax_space ax).inf_orthogonal_eq_bot⏎⏎    simp [iSupIndep]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:399:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                  ↓
  ⏎    constructor⏎⏎    · simp [Disjoint]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:428:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                        ↓
  ⏎      simpa using bad⏎⏎  · simp [iSup]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:393:6: 'simp [orth]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:395:6: 'exact (ax_space ax).inf_orthogonal_eq_bot' uses '⊢'!
warning: BanachTarski/Rot.lean:397:4: 'simp [iSupIndep]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:401:6: 'intro x' uses '⊢'!
warning: BanachTarski/Rot.lean:397:4: 'simp [iSupIndep]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:403:6: 'intro lhs lhs2' uses '⊢'!
warning: BanachTarski/Rot.lean:397:4: 'simp [iSupIndep]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:404:6: 'apply le_iSup_iff.mp at lhs2' uses '⊢'!
warning: BanachTarski/Rot.lean:406:6: 'simp at th' is a flexible tactic modifying 'th'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:407:6: 'have bad : x ≤ ⊥ := by
  rw [← inter]
  simp
  constructor
  · exact th
  · exact lhs' uses 'th'!
warning: BanachTarski/Rot.lean:409:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:409:8: Try this:
  [apply] simp only [le_inf_iff]
info: BanachTarski/Rot.lean:411:10: 'exact th' uses '⊢'!
warning: BanachTarski/Rot.lean:409:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:409:8: Try this:
  [apply] simp only [le_inf_iff]
info: BanachTarski/Rot.lean:412:10: 'exact lhs' uses '⊢'!
warning: BanachTarski/Rot.lean:397:4: 'simp [iSupIndep]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:415:6: 'intro x' uses '⊢'!
warning: BanachTarski/Rot.lean:397:4: 'simp [iSupIndep]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:417:6: 'intro lhs lhs2' uses '⊢'!
warning: BanachTarski/Rot.lean:397:4: 'simp [iSupIndep]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:418:6: 'apply le_iSup_iff.mp at lhs2' uses '⊢'!
warning: BanachTarski/Rot.lean:420:6: 'simp at th' is a flexible tactic modifying 'th'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:421:6: 'have bad : x ≤ ⊥ := by
  rw [← inter]
  simp
  constructor
  · exact lhs
  · exact th' uses 'th'!
warning: BanachTarski/Rot.lean:423:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:423:8: Try this:
  [apply] simp only [le_inf_iff]
info: BanachTarski/Rot.lean:425:10: 'exact lhs' uses '⊢'!
warning: BanachTarski/Rot.lean:423:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:423:8: Try this:
  [apply] simp only [le_inf_iff]
info: BanachTarski/Rot.lean:426:10: 'exact th' uses '⊢'!
warning: BanachTarski/Rot.lean:429:4: 'simp [iSup]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:432:4: 'exact Submodule.sup_orthogonal_of_hasOrthogonalProjection' uses '⊢'!
warning: BanachTarski/Rot.lean:444:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:444:4: Try this:
  [apply] simp only [LinearEquiv.coe_coe, LinearIsometryEquiv.coe_toLinearEquiv, Fin.zero_eta, Fin.isValue]
info: BanachTarski/Rot.lean:449:4: 'intro x lhs' uses '⊢'!
warning: BanachTarski/Rot.lean:444:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:444:4: Try this:
  [apply] simp only [LinearEquiv.coe_coe, LinearIsometryEquiv.coe_toLinearEquiv, Fin.zero_eta, Fin.isValue]
info: BanachTarski/Rot.lean:450:4: 'rw [spar_of_orth ax x lhs]' uses '⊢'!
warning: BanachTarski/Rot.lean:444:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:444:4: Try this:
  [apply] simp only [LinearEquiv.coe_coe, LinearIsometryEquiv.coe_toLinearEquiv, Fin.zero_eta, Fin.isValue]
info: BanachTarski/Rot.lean:452:4: 'exact up_mem ax ((rot_iso_plane_to_st ax θ) (operp ax x))' uses '⊢'!
warning: BanachTarski/Rot.lean:454:2: 'simp [Set.MapsTo]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:454:2: Try this:
  [apply] simp only [LinearEquiv.coe_coe, LinearIsometryEquiv.coe_toLinearEquiv, Fin.mk_one, Fin.isValue]
info: BanachTarski/Rot.lean:455:2: 'intro x lhs' uses '⊢'!
warning: BanachTarski/Rot.lean:457:2: 'simp [submods] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:460:2: 'rw [operp_of_ax_space ax x lhs]' uses 'lhs'!
warning: BanachTarski/Rot.lean:454:2: 'simp [Set.MapsTo]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:454:2: Try this:
  [apply] simp only [LinearEquiv.coe_coe, LinearIsometryEquiv.coe_toLinearEquiv, Fin.mk_one, Fin.isValue]
info: BanachTarski/Rot.lean:460:2: 'rw [operp_of_ax_space ax x lhs]' uses '⊢'!
warning: BanachTarski/Rot.lean:457:2: 'simp [submods] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:462:2: 'have : _ := spar_of_ax_space ax x lhs' uses 'lhs'!
warning: BanachTarski/Rot.lean:454:2: 'simp [Set.MapsTo]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:454:2: Try this:
  [apply] simp only [LinearEquiv.coe_coe, LinearIsometryEquiv.coe_toLinearEquiv, Fin.mk_one, Fin.isValue]
info: BanachTarski/Rot.lean:463:2: 'rw [this]' uses '⊢'!
warning: BanachTarski/Rot.lean:454:2: 'simp [Set.MapsTo]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:454:2: Try this:
  [apply] simp only [LinearEquiv.coe_coe, LinearIsometryEquiv.coe_toLinearEquiv, Fin.mk_one, Fin.isValue]
info: BanachTarski/Rot.lean:464:2: 'exact lhs' uses '⊢'!
warning: BanachTarski/Rot.lean:457:2: 'simp [submods] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:464:2: 'exact lhs' uses 'lhs'!
warning: BanachTarski/Rot.lean:483:2: 'simp [rot_mat_block_1, rot_mat_block_2]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:484:2: 'exact
  LinearMap.toMatrix_directSum_collectedBasis_eq_blockDiagonal' (internal_pr ax) (internal_pr ax) (sm_bases ax)
    (sm_bases ax) (hf ax)' uses '⊢'!
warning: BanachTarski/Rot.lean:492:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                           ↓
  ⏎  !![θ.cos, -θ.sin; θ.sin, θ.cos]  := by⏎⏎  have restr_lem: (rot_iso ax θ).restrict (hf ax 0) =⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:495:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                   ↓
  ⏎    (rot_iso_plane_to_st ax θ).toLinearMap := by⏎⏎    apply LinearMap.ext⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:511:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
          ↓
  ⏎    rfl⏎⏎  rw [restr_lem]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:516:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                               ↓
  ⏎  simp [rot_iso_plane_equiv]⏎⏎  let x: (orth ax) := x_B ax⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:519:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                               ↓
  ⏎  have hx: x≠ 0 := x_B_nz ax⏎⏎  have inter:  ((plane_o ax).rotation θ).toLinearIsometry.toLinearMap =⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:525:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                                      ↓
  ⏎      !![θ.cos, -θ.sin; θ.sin, θ.cos] := (plane_o ax).rotation_eq_matrix_toLin θ hx⏎⏎  have sameorth: (orth_B ax) = ((plane_o ax).basisRightAngleRotation x hx ) := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:529:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
               ↓
  ⏎    simp [x]⏎⏎  rw [sameorth]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:499:4: 'simp [rot_iso_plane_to_st]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:499:4: Try this:
  [apply] simp only [Fin.isValue]
info: BanachTarski/Rot.lean:502:4: 'rw [LinearMap.restrict_apply]' uses '⊢'!
warning: BanachTarski/Rot.lean:513:2: 'simp [sm_bases]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:517:2: 'let x : (orth ax) := x_B ax' uses '⊢'!
warning: BanachTarski/Rot.lean:513:2: 'simp [sm_bases]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:530:2: 'rw [sameorth]' uses '⊢'!
warning: BanachTarski/Rot.lean:513:2: 'simp [sm_bases]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:531:2: 'rw [inter]' uses '⊢'!
warning: BanachTarski/Rot.lean:513:2: 'simp [sm_bases]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:532:2: 'set B := ((plane_o ax).basisRightAngleRotation x hx) with Bdef' uses '⊢'!
warning: BanachTarski/Rot.lean:513:2: 'simp [sm_bases]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:533:2: 'set R := !![Real.cos θ, -Real.sin θ; Real.sin θ, Real.cos θ]' uses '⊢'!
warning: BanachTarski/Rot.lean:513:2: 'simp [sm_bases]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:534:2: 'exact LinearMap.toMatrix_toLin B B R' uses '⊢'!
error: BanachTarski/Rot.lean:545:8: Tactic `rewrite` failed: Did not find an occurrence of the pattern
  (LinearMap.restrict ?m.152 ?hf) ?x
in the target expression
  ((↑(rot_iso ax θ).toLinearEquiv).restrict ⋯) ⟨x, px⟩ = 1 ⟨x, px⟩

case h
θ : ℝ
ax : ↑S2
x : R3
px : x ∈ ax_space ax
⊢ ((↑(rot_iso ax θ).toLinearEquiv).restrict ⋯) ⟨x, px⟩ = 1 ⟨x, px⟩
error: BanachTarski/Rot.lean:538:14: unsolved goals
case a.«_@»._internal._hyg.0.«0».«0»
θ : ℝ
ax : ↑S2
restr_lem : (↑(rot_iso ax θ).toLinearEquiv).restrict ⋯ = 1
⊢ 1 ((fun i ↦ i) ⟨0, ⋯⟩) ((fun i ↦ i) ⟨0, ⋯⟩) = 1
error: BanachTarski/Rot.lean:584:4: unsolved goals
case h.«0»
ax : ↑S2
θ : ℝ
this :
  (LinearMap.toMatrix (⋯.collectedBasis (sm_bases ax)) (⋯.collectedBasis (sm_bases ax))) ↑(rot_iso ax θ).toLinearEquiv =
    Matrix.blockDiagonal' fun i ↦
      (LinearMap.toMatrix (sm_bases ax i) (sm_bases ax i)) ((↑(rot_iso ax θ).toLinearEquiv).restrict ⋯)
⊢ (LinearMap.toMatrix (sm_bases ax 0) (sm_bases ax 0)) ((↑(rot_iso ax θ).toLinearEquiv).restrict ⋯) =
    (LinearMap.toMatrix (sm_bases ax 0) (sm_bases ax 0)) ((↑(rot_iso ax θ).toLinearEquiv).restrict ⋯)
error: BanachTarski/Rot.lean:585:4: unsolved goals
case h.«1»
ax : ↑S2
θ : ℝ
this :
  (LinearMap.toMatrix (⋯.collectedBasis (sm_bases ax)) (⋯.collectedBasis (sm_bases ax))) ↑(rot_iso ax θ).toLinearEquiv =
    Matrix.blockDiagonal' fun i ↦
      (LinearMap.toMatrix (sm_bases ax i) (sm_bases ax i)) ((↑(rot_iso ax θ).toLinearEquiv).restrict ⋯)
⊢ (LinearMap.toMatrix (sm_bases ax 1) (sm_bases ax 1)) ((↑(rot_iso ax θ).toLinearEquiv).restrict ⋯) =
    (LinearMap.toMatrix (sm_bases ax 1) (sm_bases ax 1)) ((↑(rot_iso ax θ).toLinearEquiv).restrict ⋯)
warning: BanachTarski/Rot.lean:610:2: 'simp [rot_mat_inner, rot_mat_inner_trans]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:611:2: 'ext i j' uses '⊢'!
warning: BanachTarski/Rot.lean:610:2: 'simp [rot_mat_inner, rot_mat_inner_trans]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:612:2: 'fin_cases i, j' uses '⊢'!
warning: BanachTarski/Rot.lean:624:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:624:4: Try this:
  [apply] simp only [mul_neg, neg_mul, neg_neg, mul_zero, add_zero, mul_one, zero_mul, neg_zero, zero_add]
info: BanachTarski/Rot.lean:625:11: 'rw [← sq]' uses '⊢'!
warning: BanachTarski/Rot.lean:624:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:624:4: Try this:
  [apply] simp only [mul_neg, neg_mul, neg_neg, mul_zero, add_zero, mul_one, zero_mul, neg_zero, zero_add]
info: BanachTarski/Rot.lean:625:11: 'rw [← sq]' uses '⊢'!
warning: BanachTarski/Rot.lean:624:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:624:4: Try this:
  [apply] simp only [mul_neg, neg_mul, neg_neg, mul_zero, add_zero, mul_one, zero_mul, neg_zero, zero_add]
info: BanachTarski/Rot.lean:626:4: 'rw [Real.sin_sq_add_cos_sq θ]' uses '⊢'!
warning: BanachTarski/Rot.lean:624:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:624:4: Try this:
  [apply] simp only [mul_neg, neg_mul, neg_neg, mul_zero, add_zero, mul_one, zero_mul, neg_zero, zero_add]
info: BanachTarski/Rot.lean:627:4: 'rw [add_comm (Real.cos θ ^ 2)]' uses '⊢'!
warning: BanachTarski/Rot.lean:624:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:624:4: Try this:
  [apply] simp only [mul_neg, neg_mul, neg_neg, mul_zero, add_zero, mul_one, zero_mul, neg_zero, zero_add]
info: BanachTarski/Rot.lean:628:4: 'rw [Real.sin_sq_add_cos_sq θ]' uses '⊢'!
warning: BanachTarski/Rot.lean:624:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:624:4: Try this:
  [apply] simp only [mul_neg, neg_mul, neg_neg, mul_zero, add_zero, mul_one, zero_mul, neg_zero, zero_add]
info: BanachTarski/Rot.lean:629:4: 'rw [mul_comm]' uses '⊢'!
warning: BanachTarski/Rot.lean:624:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:624:4: Try this:
  [apply] simp only [mul_neg, neg_mul, neg_neg, mul_zero, add_zero, mul_one, zero_mul, neg_zero, zero_add]
info: BanachTarski/Rot.lean:631:4: 'rw [Matrix.one_fin_three]' uses '⊢'!
warning: BanachTarski/Rot.lean:632:4: 'simp [rot_mat_inner]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:633:4: 'rw [Matrix.det_fin_three]' uses '⊢'!
warning: BanachTarski/Rot.lean:632:4: 'simp [rot_mat_inner]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:635:11: 'rw [← sq]' uses '⊢'!
warning: BanachTarski/Rot.lean:632:4: 'simp [rot_mat_inner]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:635:11: 'rw [← sq]' uses '⊢'!
warning: BanachTarski/Rot.lean:632:4: 'simp [rot_mat_inner]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:636:4: 'rw [add_comm]' uses '⊢'!
warning: BanachTarski/Rot.lean:632:4: 'simp [rot_mat_inner]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:637:4: 'exact Real.sin_sq_add_cos_sq θ' uses '⊢'!
error: BanachTarski/Rot.lean:655:12: Tactic `rewrite` failed: Did not find an occurrence of the pattern
  @Eq (Fin ?m.1459) ?m.1460 ?m.1461
in the target expression
  @Eq (mod_dim 0) 0 1

case left.«0».«1»
eqims : 0 = 1
⊢ False
error: BanachTarski/Rot.lean:655:12: Tactic `rewrite` failed: Did not find an occurrence of the pattern
  @Eq (Fin ?m.1459) ?m.1460 ?m.1461
in the target expression
  @Eq (mod_dim 0) 1 0

case left.«1».«0»
eqims : 1 = 0
⊢ False
warning: BanachTarski/Rot.lean:758:12: declaration uses `sorry`
warning: BanachTarski/Rot.lean:679:6: declaration uses `sorry`
warning: BanachTarski/Rot.lean:687:12: This simp argument is unused:
  Submodule.coe_subtypeₗᵢ

Hint: Omit it from the simp argument list.
  simp ̵[̵S̵u̵b̵m̵o̵d̵u̵l̵e̵.̵c̵o̵e̵_̵s̵u̵b̵t̵y̵p̵e̵ₗ̵ᵢ̵]̵

Note: This linter can be disabled with `set_option linter.unusedSimpArgs false`
warning: BanachTarski/Rot.lean:692:12: This simp argument is unused:
  Submodule.coe_subtypeₗᵢ

Hint: Omit it from the simp argument list.
  simp ̵[̵S̵u̵b̵m̵o̵d̵u̵l̵e̵.̵c̵o̵e̵_̵s̵u̵b̵t̵y̵p̵e̵ₗ̵ᵢ̵]̵

Note: This linter can be disabled with `set_option linter.unusedSimpArgs false`
warning: BanachTarski/Rot.lean:687:6: 'simp [Submodule.coe_subtypeₗᵢ]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:687:6: Try this:
  [apply] simp only [Fin.zero_eta, Fin.isValue, Fin.mk_one]
info: BanachTarski/Rot.lean:690:6: 'rw [real_inner_comm]' uses '⊢'!
warning: BanachTarski/Rot.lean:687:6: 'simp [Submodule.coe_subtypeₗᵢ]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:687:6: Try this:
  [apply] simp only [Fin.zero_eta, Fin.isValue, Fin.mk_one]
info: BanachTarski/Rot.lean:691:6: 'exact h1' uses '⊢'!
warning: BanachTarski/Rot.lean:692:6: 'simp [Submodule.coe_subtypeₗᵢ]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:692:6: Try this:
  [apply] simp only [Fin.mk_one, Fin.isValue, Fin.zero_eta]
info: BanachTarski/Rot.lean:695:6: 'exact h v v.property' uses '⊢'!
warning: BanachTarski/Rot.lean:704:8: 'simp [Orientation.coe_basisRightAngleRotation]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:704:8: Try this:
  [apply] simp only [Fin.zero_eta, Fin.isValue, Orientation.coe_basisRightAngleRotation, Nat.succ_eq_add_one,
    Nat.reduceAdd, Matrix.cons_val_zero, Submodule.coe_norm]
info: BanachTarski/Rot.lean:709:8: 'rw [norm_smul]' uses '⊢'!
warning: BanachTarski/Rot.lean:722:8: 'simp [Orientation.coe_basisRightAngleRotation]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:722:8: Try this:
  [apply] simp only [Fin.mk_one, Fin.isValue, Orientation.coe_basisRightAngleRotation, Nat.succ_eq_add_one,
    Nat.reduceAdd, Matrix.cons_val_one, Matrix.cons_val_fin_one, LinearIsometryEquiv.norm_map, Submodule.coe_norm]
info: BanachTarski/Rot.lean:726:8: 'rw [norm_smul]' uses '⊢'!
warning: BanachTarski/Rot.lean:722:8: 'simp [Orientation.coe_basisRightAngleRotation]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:722:8: Try this:
  [apply] simp only [Fin.mk_one, Fin.isValue, Orientation.coe_basisRightAngleRotation, Nat.succ_eq_add_one,
    Nat.reduceAdd, Matrix.cons_val_one, Matrix.cons_val_fin_one, LinearIsometryEquiv.norm_map, Submodule.coe_norm]
info: BanachTarski/Rot.lean:736:8: 'rw [h_coerce1] at ⊢' uses '⊢'!
warning: BanachTarski/Rot.lean:722:8: 'simp [Orientation.coe_basisRightAngleRotation]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:722:8: Try this:
  [apply] simp only [Fin.mk_one, Fin.isValue, Orientation.coe_basisRightAngleRotation, Nat.succ_eq_add_one,
    Nat.reduceAdd, Matrix.cons_val_one, Matrix.cons_val_fin_one, LinearIsometryEquiv.norm_map, Submodule.coe_norm]
info: BanachTarski/Rot.lean:737:8: 'rw [h_coerce2]' uses '⊢'!
warning: BanachTarski/Rot.lean:744:8: 'simp [Orientation.coe_basisRightAngleRotation]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:744:8: Try this:
  [apply] simp only [Fin.zero_eta, Fin.isValue, Orientation.coe_basisRightAngleRotation, Nat.succ_eq_add_one,
    Nat.reduceAdd, Matrix.cons_val_zero, Fin.mk_one, Matrix.cons_val_one, Matrix.cons_val_fin_one, Submodule.coe_inner]
info: BanachTarski/Rot.lean:748:8: 'exact h' uses '⊢'!
warning: BanachTarski/Rot.lean:749:8: 'simp [Orientation.coe_basisRightAngleRotation]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:749:8: Try this:
  [apply] simp only [Fin.mk_one, Fin.isValue, Orientation.coe_basisRightAngleRotation, Nat.succ_eq_add_one,
    Nat.reduceAdd, Matrix.cons_val_one, Matrix.cons_val_fin_one, Fin.zero_eta, Matrix.cons_val_zero,
    Submodule.coe_inner]
info: BanachTarski/Rot.lean:750:8: 'exact (plane_o ax).inner_rightAngleRotation_self (x_B ax)' uses '⊢'!
warning: BanachTarski/Rot.lean:772:4: 'simp [Module.Basis.reindex]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:772:4: Try this:
  [apply] simp only [Module.Basis.coe_reindex, DirectSum.IsInternal.collectedBasis_coe, Equiv.symm_symm,
    Function.comp_apply]
info: BanachTarski/Rot.lean:777:4: 'rw [← h_eq]' uses '⊢'!
warning: BanachTarski/Rot.lean:772:4: 'simp [Module.Basis.reindex]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:772:4: Try this:
  [apply] simp only [Module.Basis.coe_reindex, DirectSum.IsInternal.collectedBasis_coe, Equiv.symm_symm,
    Function.comp_apply]
info: BanachTarski/Rot.lean:778:4: 'exact collected_orthonormal.1 (finToSigma i)' uses '⊢'!
warning: BanachTarski/Rot.lean:780:4: 'simp [Module.Basis.reindex]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:780:4: Try this:
  [apply] simp only [Module.Basis.coe_reindex, DirectSum.IsInternal.collectedBasis_coe, Equiv.symm_symm,
    Function.comp_apply]
info: BanachTarski/Rot.lean:788:4: 'rw [← h_eq_i, ← h_eq_j]' uses '⊢'!
warning: BanachTarski/Rot.lean:780:4: 'simp [Module.Basis.reindex]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:780:4: Try this:
  [apply] simp only [Module.Basis.coe_reindex, DirectSum.IsInternal.collectedBasis_coe, Equiv.symm_symm,
    Function.comp_apply]
info: BanachTarski/Rot.lean:789:4: 'apply collected_orthonormal.2' uses '⊢'!
warning: BanachTarski/Rot.lean:780:4: 'simp [Module.Basis.reindex]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:780:4: Try this:
  [apply] simp only [Module.Basis.coe_reindex, DirectSum.IsInternal.collectedBasis_coe, Equiv.symm_symm,
    Function.comp_apply]
info: BanachTarski/Rot.lean:790:4: 'intro h' uses '⊢'!
warning: BanachTarski/Rot.lean:780:4: 'simp [Module.Basis.reindex]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:780:4: Try this:
  [apply] simp only [Module.Basis.coe_reindex, DirectSum.IsInternal.collectedBasis_coe, Equiv.symm_symm,
    Function.comp_apply]
info: BanachTarski/Rot.lean:791:4: 'apply hij' uses '⊢'!
warning: BanachTarski/Rot.lean:780:4: 'simp [Module.Basis.reindex]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:780:4: Try this:
  [apply] simp only [Module.Basis.coe_reindex, DirectSum.IsInternal.collectedBasis_coe, Equiv.symm_symm,
    Function.comp_apply]
info: BanachTarski/Rot.lean:792:4: 'exact Equiv.injective finToSigma h' uses '⊢'!
warning: BanachTarski/Rot.lean:804:2: 'simp [COB_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:805:2: 'exact LinearMap.toMatrix_id_eq_basis_toMatrix Basis3.toBasis (COB ax).toBasis' uses '⊢'!
warning: BanachTarski/Rot.lean:823:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                ↓
  ⏎  constructor⏎⏎  · apply mul_mem⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:826:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                      ↓
  ⏎    · apply mul_mem⏎⏎      · have pprop := (⟨(COB_mat ax), cob_is_orth⟩:Matrix.orthogonalGroup (Fin 3) ℝ )⁻¹.property⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:830:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                            ↓
  ⏎        simpa using pprop⏎⏎    ---⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:851:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                   ↓
  ⏎    simp at this⏎⏎  rw [this]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:818:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:820:2: 'apply Matrix.mem_specialOrthogonalGroup_iff.mpr' uses '⊢'!
warning: BanachTarski/Rot.lean:818:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:824:4: 'apply mul_mem' uses '⊢'!
warning: BanachTarski/Rot.lean:818:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:825:6: 'apply mul_mem' uses '⊢'!
warning: BanachTarski/Rot.lean:818:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:832:6: 'exact innerspecial.left' uses '⊢'!
warning: BanachTarski/Rot.lean:818:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:834:4: 'exact cob_is_orth' uses '⊢'!
warning: BanachTarski/Rot.lean:818:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:837:2: 'rw [mul_comm]' uses '⊢'!
warning: BanachTarski/Rot.lean:818:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:838:2: 'rw [← mul_assoc]' uses '⊢'!
warning: BanachTarski/Rot.lean:818:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:839:2: 'have : Matrix.det (COB_mat ax) * (Matrix.det (COB_mat ax))⁻¹ = 1 :=
  by
  apply mul_inv_cancel₀
  have : (COB_mat ax).det = 1 ∨ (COB_mat ax).det = -1 :=
    by
    rw [cob_mat_other_repr]
    rw [← Module.Basis.det_apply]
    have detlem : (COB ax).toBasis.det Basis3.toBasis = (1 : ℝ) ∨ (COB ax).toBasis.det Basis3.toBasis = (-1 : ℝ) :=
      OrthonormalBasis.det_to_matrix_orthonormalBasis_real (COB ax) Basis3
    exact detlem
  by_contra eqz
  rw [eqz] at this
  simp at this' uses '⊢'!
warning: BanachTarski/Rot.lean:818:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:852:2: 'rw [this]' uses '⊢'!
warning: BanachTarski/Rot.lean:818:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:854:2: 'exact innerspecial.right' uses '⊢'!
warning: BanachTarski/Rot.lean:860:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:866:2: 'set C := COB_mat ax with Cdef' uses '⊢'!
warning: BanachTarski/Rot.lean:860:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:868:2: 'let el := (⟨C, isorth⟩ : Matrix.orthogonalGroup (Fin 3) ℝ)' uses '⊢'!
warning: BanachTarski/Rot.lean:860:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:871:2: 'rw [cdef]' uses '⊢'!
warning: BanachTarski/Rot.lean:860:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:872:2: 'rw [unitary_invs_coe]' uses '⊢'!
warning: BanachTarski/Rot.lean:877:2: 'simp [rot_mat_inner]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:880:6: 'rw [Real.cos_add]' uses '⊢'!
warning: BanachTarski/Rot.lean:877:2: 'simp [rot_mat_inner]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:882:6: 'rw [Real.sin_add]' uses '⊢'!
warning: BanachTarski/Rot.lean:877:2: 'simp [rot_mat_inner]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:885:6: 'rw [Real.sin_add]' uses '⊢'!
warning: BanachTarski/Rot.lean:877:2: 'simp [rot_mat_inner]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:886:6: 'rw [Real.cos_add]' uses '⊢'!
warning: BanachTarski/Rot.lean:901:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
           ↓
  ⏎    simp⏎⏎  rw [mul_assoc ((COB_mat ax)⁻¹ * rot_mat_inner s )]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:891:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:892:2: 'rw [← mul_assoc ((COB_mat ax)⁻¹ * rot_mat_inner s * COB_mat ax)]' uses '⊢'!
warning: BanachTarski/Rot.lean:891:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:893:2: 'rw [← mul_assoc ((COB_mat ax)⁻¹ * rot_mat_inner s * COB_mat ax)]' uses '⊢'!
warning: BanachTarski/Rot.lean:891:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:894:2: 'have : COB_mat ax * (COB_mat ax)⁻¹ = 1 := by
  set el := COB_mat ax
  have : el ∈ Matrix.orthogonalGroup (Fin 3) ℝ := by exact COB_mat_is_ortho ax
  let E : Matrix.orthogonalGroup (Fin 3) ℝ := ⟨el, this⟩
  change E.val * E.val⁻¹ = 1
  rw [unitary_invs_coe]
  simp' uses '⊢'!
warning: BanachTarski/Rot.lean:891:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:902:2: 'rw [mul_assoc ((COB_mat ax)⁻¹ * rot_mat_inner s)]' uses '⊢'!
warning: BanachTarski/Rot.lean:891:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:903:2: 'rw [this]' uses '⊢'!
warning: BanachTarski/Rot.lean:891:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:905:2: 'rw [mul_assoc (COB_mat ax)⁻¹]' uses '⊢'!
warning: BanachTarski/Rot.lean:891:2: 'simp [rot_mat]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:906:2: 'rw [rot_mat_inner_comp_add]' uses '⊢'!
warning: BanachTarski/Rot.lean:912:2: 'simp [f]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:912:2: Try this:
  [apply] simp only [Function.comp_apply]
info: BanachTarski/Rot.lean:913:2: 'rw [smul_smul]' uses '⊢'!
warning: BanachTarski/Rot.lean:922:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:922:4: Try this:
  [apply] simp only [Function.iterate_zero, CharP.cast_eq_zero, zero_mul]
info: BanachTarski/Rot.lean:924:4: 'funext w' uses '⊢'!
warning: BanachTarski/Rot.lean:941:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:941:4: Try this:
  [apply] simp only [Function.iterate_zero, CharP.cast_eq_zero, zero_mul]
info: BanachTarski/Rot.lean:942:4: 'rw [triv_rot_iso]' uses '⊢'!
warning: BanachTarski/Rot.lean:976:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                          ↓
  ⏎  rw [toMatrix_reindex]⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:980:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                  ↓
  ⏎  rw [block_eq]⏎⏎  ext i j⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:986:4: 'simp [fTS_fun]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:986:4: Try this:
  [apply] simp only [Fin.zero_eta, Fin.isValue, Fin.reduceFinMk, Matrix.of_apply, Matrix.cons_val', Matrix.cons_val,
    Matrix.cons_val_fin_one, Matrix.cons_val_zero, Equiv.symm_symm, Matrix.submatrix_apply, Equiv.ofBijective_apply]
info: BanachTarski/Rot.lean:987:4: 'rw [Matrix.blockDiagonal'_apply_ne]' uses '⊢'!
warning: BanachTarski/Rot.lean:991:4: 'simp [fTS_fun]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:991:4: Try this:
  [apply] simp only [Fin.mk_one, Fin.isValue, Fin.reduceFinMk, Matrix.of_apply, Matrix.cons_val', Matrix.cons_val,
    Matrix.cons_val_fin_one, Matrix.cons_val_one, Matrix.cons_val_zero, Equiv.symm_symm, Matrix.submatrix_apply,
    Equiv.ofBijective_apply]
info: BanachTarski/Rot.lean:992:4: 'rw [Matrix.blockDiagonal'_apply_ne]' uses '⊢'!
warning: BanachTarski/Rot.lean:994:4: 'simp [fTS_fun]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:994:4: Try this:
  [apply] simp only [Fin.reduceFinMk, Fin.zero_eta, Fin.isValue, Matrix.of_apply, Matrix.cons_val',
    Matrix.cons_val_zero, Matrix.cons_val_fin_one, Matrix.cons_val, Matrix.cons_val_one, Equiv.symm_symm,
    Matrix.submatrix_apply, Equiv.ofBijective_apply]
info: BanachTarski/Rot.lean:995:4: 'rw [Matrix.blockDiagonal'_apply_ne]' uses '⊢'!
warning: BanachTarski/Rot.lean:997:4: 'simp [fTS_fun]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:997:4: Try this:
  [apply] simp only [Fin.reduceFinMk, Fin.mk_one, Fin.isValue, Matrix.of_apply, Matrix.cons_val', Matrix.cons_val_one,
    Matrix.cons_val_zero, Matrix.cons_val_fin_one, Matrix.cons_val, Equiv.symm_symm, Matrix.submatrix_apply,
    Equiv.ofBijective_apply]
info: BanachTarski/Rot.lean:998:4: 'rw [Matrix.blockDiagonal'_apply_ne]' uses '⊢'!
warning: BanachTarski/Rot.lean:1011:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
               ↓
  ⏎  simp [rot]⏎⏎  simp [rot_mat]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:1015:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                               ↓
  ⏎  rw [←Matrix.mulVec_mulVec]⏎⏎  simp [COB_mat]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:1020:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
          ↓
  ⏎    rfl⏎⏎  rw [sreprof]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:1027:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                               ↓
  ⏎  rw [←Matrix.mulVec_mulVec]⏎⏎  rw [inner_as_to_matrix]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:1029:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                            ↓
  ⏎  rw [inner_as_to_matrix]⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:1033:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
         ↓
  ⏎  simp⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:1037:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                 ↓
  ⏎  (LinearMap.toMatrix (COB ax).toBasis Basis3.toBasis 1) := by⏎⏎    have :  (LinearMap.id: (R3 →ₗ[ℝ] R3)) = 1 := rfl⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:1042:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                                   ↓
  ⏎    rw [LinearMap.toMatrix_id_eq_basis_toMatrix (COB ax).toBasis Basis3.toBasis]⏎⏎    have := Module.Basis.invertibleToMatrix (COB ax).toBasis Basis3.toBasis⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:1047:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                         ↓
  ⏎    set M21 := ((COB ax).toBasis.toMatrix Basis3.toBasis)  with M21def⏎⏎    rw [←mul_one M12]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:1059:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                   ↓
  ⏎    rw [Module.Basis.toMatrix_mul_toMatrix_flip]⏎⏎  rw [this]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:1061:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
              ↓
  ⏎  rw [this]⏎⏎  rw [orth_toMatrix_mulVec_repr  (COB ax) Basis3 (1: R3 →ₗ[ℝ] R3) ]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Rot.lean:1010:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:1010:2: Try this:
  [apply] simp only [WithLp.equiv_apply, WithLp.equiv_symm_apply]
info: BanachTarski/Rot.lean:1013:2: 'rw [← Matrix.mulVec_mulVec]' uses '⊢'!
warning: BanachTarski/Rot.lean:1010:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:1010:2: Try this:
  [apply] simp only [WithLp.equiv_apply, WithLp.equiv_symm_apply]
info: BanachTarski/Rot.lean:1014:2: 'rw [← Matrix.mulVec_mulVec]' uses '⊢'!
warning: BanachTarski/Rot.lean:1010:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:1010:2: Try this:
  [apply] simp only [WithLp.equiv_apply, WithLp.equiv_symm_apply]
info: BanachTarski/Rot.lean:1021:2: 'rw [sreprof]' uses '⊢'!
warning: BanachTarski/Rot.lean:1010:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:1010:2: Try this:
  [apply] simp only [WithLp.equiv_apply, WithLp.equiv_symm_apply]
info: BanachTarski/Rot.lean:1022:2: 'rw [← mul_assoc ((LinearMap.toMatrix Basis3.toBasis (COB ax).toBasis) 1)⁻¹]' uses '⊢'!
warning: BanachTarski/Rot.lean:1010:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:1010:2: Try this:
  [apply] simp only [WithLp.equiv_apply, WithLp.equiv_symm_apply]
info: BanachTarski/Rot.lean:1023:2: 'rw [← Matrix.mulVec_mulVec]' uses '⊢'!
warning: BanachTarski/Rot.lean:1010:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:1010:2: Try this:
  [apply] simp only [WithLp.equiv_apply, WithLp.equiv_symm_apply]
info: BanachTarski/Rot.lean:1024:2: 'rw [orth_toMatrix_mulVec_repr Basis3 (COB ax) (1 : R3 →ₗ[ℝ] R3)]' uses '⊢'!
warning: BanachTarski/Rot.lean:1010:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:1010:2: Try this:
  [apply] simp only [WithLp.equiv_apply, WithLp.equiv_symm_apply]
info: BanachTarski/Rot.lean:1026:2: 'rw [← Matrix.mulVec_mulVec]' uses '⊢'!
warning: BanachTarski/Rot.lean:1010:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:1010:2: Try this:
  [apply] simp only [WithLp.equiv_apply, WithLp.equiv_symm_apply]
info: BanachTarski/Rot.lean:1028:2: 'rw [inner_as_to_matrix]' uses '⊢'!
warning: BanachTarski/Rot.lean:1010:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:1010:2: Try this:
  [apply] simp only [WithLp.equiv_apply, WithLp.equiv_symm_apply]
info: BanachTarski/Rot.lean:1031:2: 'rw [orth_toMatrix_mulVec_repr (COB ax) (COB ax) (rot_iso ax T).toLinearMap]' uses '⊢'!
warning: BanachTarski/Rot.lean:1010:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:1010:2: Try this:
  [apply] simp only [WithLp.equiv_apply, WithLp.equiv_symm_apply]
info: BanachTarski/Rot.lean:1031:2: 'rw [orth_toMatrix_mulVec_repr (COB ax) (COB ax) (rot_iso ax T).toLinearMap]' uses '⊢'!
warning: BanachTarski/Rot.lean:1010:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:1010:2: Try this:
  [apply] simp only [WithLp.equiv_apply, WithLp.equiv_symm_apply]
info: BanachTarski/Rot.lean:1035:2: 'have :
  ((LinearMap.toMatrix Basis3.toBasis (COB ax).toBasis) 1)⁻¹ = (LinearMap.toMatrix (COB ax).toBasis Basis3.toBasis 1) :=
  by
  have : (LinearMap.id : (R3 →ₗ[ℝ] R3)) = 1 := rfl
  rw [← this]
  rw [LinearMap.toMatrix_id_eq_basis_toMatrix Basis3.toBasis (COB ax).toBasis]
  rw [LinearMap.toMatrix_id_eq_basis_toMatrix (COB ax).toBasis Basis3.toBasis]
  have := Module.Basis.invertibleToMatrix (COB ax).toBasis Basis3.toBasis
  symm
  set M12 := (Basis3.toBasis.toMatrix (COB ax).toBasis) with M12def
  set M21 := ((COB ax).toBasis.toMatrix Basis3.toBasis) with M21def
  rw [← mul_one M12]
  have idd : 1 = M21 * M21⁻¹ := by simp
  rw [idd]
  rw [← mul_assoc]
  nth_rewrite 2 [← one_mul M21⁻¹]
  apply congrArg (fun x ↦ x * M21⁻¹)
  rw [M12def, M21def]
  set B1 := Basis3.toBasis
  set B2 := (COB ax).toBasis
  rw [Module.Basis.toMatrix_mul_toMatrix_flip]' uses '⊢'!
warning: BanachTarski/Rot.lean:1010:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:1010:2: Try this:
  [apply] simp only [WithLp.equiv_apply, WithLp.equiv_symm_apply]
info: BanachTarski/Rot.lean:1060:2: 'rw [this]' uses '⊢'!
warning: BanachTarski/Rot.lean:1010:2: 'simp [rot]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Rot.lean:1010:2: Try this:
  [apply] simp only [WithLp.equiv_apply, WithLp.equiv_symm_apply]
info: BanachTarski/Rot.lean:1062:2: 'rw [orth_toMatrix_mulVec_repr (COB ax) Basis3 (1 : R3 →ₗ[ℝ] R3)]' uses '⊢'!
error: Lean exited with code 1
✖ [8266/8270] Building BanachTarski.FixedPointLemma (37s)
trace: .> LEAN_PATH=/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/Cli/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/batteries/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/Qq/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/aesop/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/importGraph/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/plausible/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/packages/mathlib/.lake/build/lib/lean:/home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/build/lib/lean /home/nfr/.elan/toolchains/leanprover--lean4---v4.29.0/bin/lean /home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/BanachTarski/FixedPointLemma.lean -o /home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/build/lib/lean/BanachTarski/FixedPointLemma.olean -i /home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/build/lib/lean/BanachTarski/FixedPointLemma.ilean -c /home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/build/ir/BanachTarski/FixedPointLemma.c --setup /home/nfr/actions-runner/_work/doc-verification-bridge/doc-verification-bridge/experiments/repos/banach-tarski/.lake/build/ir/BanachTarski/FixedPointLemma.setup.json --json
warning: BanachTarski/FixedPointLemma.lean:9:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
     ↓
  ⏎-/⏎⏎-- Section Goal:⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:49:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                 ↓
  ⏎  simp [cpoly]⏎⏎  simp only [as_complex]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:48:2: 'simp [cpoly]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:51:2: 'rw [mapMatrix_is_map]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:48:2: 'simp [cpoly]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:52:2: 'rw [Matrix.charpoly_map]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:48:2: 'simp [cpoly]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:53:2: 'apply congrArg' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:48:2: 'simp [cpoly]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:54:2: 'exact same_char_0 g' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:74:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
           ↓
  ⏎    simp⏎⏎  exact Eq.trans l1.symm l4⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:99:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                ↓
  ⏎    exact lhs⏎⏎  have this1: z ∈ spectrum ℂ (as_complex g.val) := Matrix.mem_spectrum_of_isRoot_charpoly isrt⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:142:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                              ↓
  ⏎      rw [←this, orth_mem1]⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:145:2: 'simp [Metric.sphere] at this' is a flexible tactic modifying 'this'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:146:2: 'exact this' uses 'this'!
warning: BanachTarski/FixedPointLemma.lean:155:2: 'simp [CONJ] at lhs2' is a flexible tactic modifying 'lhs2'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:156:2: 'symm at lhs2' uses 'lhs2'!
warning: BanachTarski/FixedPointLemma.lean:155:2: 'simp [CONJ] at lhs2' is a flexible tactic modifying 'lhs2'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:157:2: 'have : _ := Complex.conj_eq_iff_real.mp lhs2' uses 'lhs2'!
warning: BanachTarski/FixedPointLemma.lean:161:2: 'simp at normone' is a flexible tactic modifying 'normone'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:169:4: 'rw [c2.left] at normone' uses 'normone'!
warning: BanachTarski/FixedPointLemma.lean:188:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                  ↓
  ⏎    simp [CONJ]⏎⏎  have l1: (cpoly g).roots = ((cpoly g).map CONJ).roots := by nth_rewrite 1 [l0]; rfl⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:198:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                 ↓
  ⏎    · exact num_roots_eq_deg g⏎⏎  exact Eq.trans l1 l2.symm⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:184:4: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:184:4: Try this:
  [apply] simp only [Polynomial.coeff_map]
info: BanachTarski/FixedPointLemma.lean:186:4: 'rw [← px]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:193:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:193:6: Try this:
  [apply] simp only [ne_eq, Polynomial.map_eq_zero]
info: BanachTarski/FixedPointLemma.lean:194:6: 'by_contra bad' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:216:6: 'simp [CONJ]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:217:6: 'exact RingHom.injective (starRingEnd ℂ)' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:225:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                        ↓
  ⏎  ((cpoly g).roots.count z = 1) := by⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:229:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                      ↓
  ⏎  set S:= (cpoly g).roots with Sdef⏎⏎  intro zin notones⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:238:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                      ↓
  ⏎      exact bad zin⏎⏎    have c2: Multiset.count z S ≠ 1 := by exact bad⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:241:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
            ↓
  ⏎    omega⏎⏎  have bndcnj: Multiset.count (CONJ z) S ≥ 2 := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:248:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
           ↓
  ⏎    simp⏎⏎  let Pconj := fun w ↦ w = (z : ℂ) ∧ w = CONJ z⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:254:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                              ↓
  ⏎    exact Multiset.filter_add_filter (· = z) (· = CONJ z) S⏎⏎  have a7:  Multiset.filter P S = Multiset.filter (· = z) S + Multiset.filter (· = CONJ z) S := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:265:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
               ↓
  ⏎    exact a6⏎⏎  have a8 : Multiset.card (Multiset.filter P S) ≥ 4 := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:281:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
               ↓
  ⏎    linarith⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:252:4: 'simp [P, Pconj]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:253:4: 'exact Multiset.filter_add_filter (· = z) (· = CONJ z) S' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:257:6: 'simp [Pconj]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:257:6: Try this:
  [apply] simp only [Multiset.filter_eq_nil]
info: BanachTarski/FixedPointLemma.lean:258:6: 'intro a lhs1 lhs2' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:257:6: 'simp [Pconj]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:257:6: Try this:
  [apply] simp only [Multiset.filter_eq_nil]
info: BanachTarski/FixedPointLemma.lean:259:6: 'rw [lhs2]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:257:6: 'simp [Pconj]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:257:6: Try this:
  [apply] simp only [Multiset.filter_eq_nil]
info: BanachTarski/FixedPointLemma.lean:260:6: 'apply flem2 g zin notones' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:262:4: 'simp at a6' is a flexible tactic modifying 'a6'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:263:4: 'symm at a6' uses 'a6'!
warning: BanachTarski/FixedPointLemma.lean:262:4: 'simp at a6' is a flexible tactic modifying 'a6'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:264:4: 'exact a6' uses 'a6'!
warning: BanachTarski/FixedPointLemma.lean:292:2: 'simp [CONJ]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:293:2: 'rw [Complex.mul_conj]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:292:2: 'simp [CONJ]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:294:2: 'rw [Complex.normSq_eq_norm_sq]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:292:2: 'simp [CONJ]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:296:2: 'left' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:292:2: 'simp [CONJ]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:297:2: 'exact eig_norms g z lhs' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:312:2: 'simp [cpoly]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:314:2: 'rw [mapMatrix_is_map]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:312:2: 'simp [cpoly]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:315:2: 'rw [Matrix.charpoly_map]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:312:2: 'simp [cpoly]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:316:2: 'rw [same_char_0]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:312:2: 'simp [cpoly]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:317:2: 'exact cast_root_mult1 g' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:373:42: `Matrix.mul_eq_one_comm` has been deprecated: Use `mul_eq_one_comm` instead

Note: The updated constant is in a different namespace. Dot notation may need to be changed (e.g., from `x.mul_eq_one_comm` to `mul_eq_one_comm x`).
warning: BanachTarski/FixedPointLemma.lean:383:22: `Matrix.mul_eq_one_comm` has been deprecated: Use `mul_eq_one_comm` instead

Note: The updated constant is in a different namespace. Dot notation may need to be changed (e.g., from `x.mul_eq_one_comm` to `mul_eq_one_comm x`).
warning: BanachTarski/FixedPointLemma.lean:360:35: 'simp_all +decide [ Matrix.charpoly, Matrix.det_fin_three ]' is a flexible tactic modifying '⊢'. Try 'simp_all?' and use the suggested 'simp_all only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:362:4: 'have h_coeff : ∀ i j, (g.val i j : ℂ) = if i = j then 1 else 0 := by
  -- By comparing coefficients of $X^2$ on both sides of the equation,
        -- we can derive that the sum of the diagonal elements of $g$ must be 3.
  
  have h_diag_sum : (g.val 0 0 : ℂ) + (g.val 1 1 : ℂ) + (g.val 2 2 : ℂ) = 3 :=
    by
    have h₁ := congr_arg (Polynomial.eval 0) h_roots
    have h₂ := congr_arg (Polynomial.eval 1) h_roots
    have h₃ := congr_arg (Polynomial.eval (-1)) h_roots
    norm_num [Complex.ext_iff] at *
    linarith!
      -- Since $g$ is orthogonal, we have $g^T g = I$.
      
  have h_orthogonal : (g.val.transpose * g.val : Matrix (Fin 3) (Fin 3) ℝ) = 1 := by have := g.2.1;
    simp_all +decide [Matrix.mul_eq_one_comm]; exact this.2;
    -- Since $g$ is orthogonal, we have $g^T g = I$.
          -- Therefore, the sum of the squares of the entries in each row is 1.
    
  have h_row_squares : ∀ i, (g.val i 0 : ℝ) ^ 2 + (g.val i 1 : ℝ) ^ 2 + (g.val i 2 : ℝ) ^ 2 = 1 :=
    by
    intro i
    have := congr_fun (congr_fun h_orthogonal i) i
    simp_all +decide [Matrix.mul_apply, Fin.sum_univ_three]
    have :=
      congr_fun
        (congr_fun
          (show (g.val * g.val.transpose : Matrix (Fin 3) (Fin 3) ℝ) = 1 from by
            simpa [Matrix.mul_eq_one_comm] using h_orthogonal)
          i)
        i
    simp_all +decide [Matrix.mul_apply, Fin.sum_univ_three]
    ring_nf at *
    aesop
      -- Since the sum of the squares of the entries in each row is 1
            -- and the sum of the diagonal elements is 3, each diagonal element must be 1.
            -- Porting note: `refine'` needed here instead of `refine` due to placeholder synthesis
      
  have h_diag_one : ∀ i, (g.val i i : ℝ) = 1 := by norm_cast at *; simp_all +decide [Fin.forall_fin_succ];
    refine' ⟨_, _, _⟩ <;>
      nlinarith only [h_diag_sum, h_row_squares, sq_nonneg ((g.val 0 0 : ℝ) - 1), sq_nonneg ((g.val 1 1 : ℝ) - 1),
        sq_nonneg ((g.val 2 2 : ℝ) - 1)]
  simp_all +decide [Fin.forall_fin_succ];
  exact
    ⟨⟨by nlinarith only [h_row_squares.1], by nlinarith only [h_row_squares.1]⟩,
      ⟨by nlinarith only [h_row_squares.2.1], by nlinarith only [h_row_squares.2.1]⟩, by
      nlinarith only [h_row_squares.2.2], by nlinarith only [h_row_squares.2.2]⟩' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:373:23: 'simp_all +decide [ Matrix.mul_eq_one_comm ]' is a flexible tactic modifying '⊢'. Try 'simp_all?' and use the suggested 'simp_all only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:374:8: 'exact this.2' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:380:8: 'simp_all +decide [Matrix.mul_apply, Fin.sum_univ_three]' is a flexible tactic modifying '⊢'. Try 'simp_all?' and use the suggested 'simp_all only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:381:8: 'have :=
  congr_fun
    (congr_fun
      (show (g.val * g.val.transpose : Matrix (Fin 3) (Fin 3) ℝ) = 1 from by
        simpa [Matrix.mul_eq_one_comm] using h_orthogonal)
      i)
    i' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:391:24: 'simp_all +decide [ Fin.forall_fin_succ ]' is a flexible tactic modifying '⊢'. Try 'simp_all?' and use the suggested 'simp_all only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:392:8: 'refine' ⟨_, _, _⟩' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:396:6: 'simp_all +decide [ Fin.forall_fin_succ ]' is a flexible tactic modifying '⊢'. Try 'simp_all?' and use the suggested 'simp_all only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:397:6: 'exact
  ⟨⟨by nlinarith only [h_row_squares.1], by nlinarith only [h_row_squares.1]⟩,
    ⟨by nlinarith only [h_row_squares.2.1], by nlinarith only [h_row_squares.2.1]⟩, by
    nlinarith only [h_row_squares.2.2], by nlinarith only [h_row_squares.2.2]⟩' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:360:35: 'simp_all +decide [ Matrix.charpoly, Matrix.det_fin_three ]' is a flexible tactic modifying '⊢'. Try 'simp_all?' and use the suggested 'simp_all only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:403:4: 'ext i j' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:469:6: `_root_.not_imp` has been deprecated: Use `Classical.not_imp` instead
warning: BanachTarski/FixedPointLemma.lean:486:4: 'simp [P, Pconj]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:487:4: 'exact Multiset.filter_add_filter (· = 1) (· = -1) S' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:491:6: 'simp [Pconj]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:491:6: Try this:
  [apply] simp only [Multiset.filter_eq_nil]
info: BanachTarski/FixedPointLemma.lean:492:6: 'intro a lhs1 lhs2' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:491:6: 'simp [Pconj]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:491:6: Try this:
  [apply] simp only [Multiset.filter_eq_nil]
info: BanachTarski/FixedPointLemma.lean:493:6: 'rw [lhs2]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:497:4: 'simp at a6' is a flexible tactic modifying 'a6'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:498:4: 'symm at a6' uses 'a6'!
warning: BanachTarski/FixedPointLemma.lean:497:4: 'simp at a6' is a flexible tactic modifying 'a6'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:499:4: 'exact a6' uses 'a6'!
warning: BanachTarski/FixedPointLemma.lean:505:4: 'simp at a7' is a flexible tactic modifying 'a7'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:505:4: Try this:
  [apply] simp only [ge_iff_le] at a7
info: BanachTarski/FixedPointLemma.lean:506:4: 'nth_rewrite 2 [← Multiset.countP_eq_card_filter] at a7' uses 'a7'!
warning: BanachTarski/FixedPointLemma.lean:505:4: 'simp at a7' is a flexible tactic modifying 'a7'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:505:4: Try this:
  [apply] simp only [ge_iff_le] at a7
info: BanachTarski/FixedPointLemma.lean:507:4: 'nth_rewrite 2 [← Multiset.countP_eq_card_filter] at a7' uses 'a7'!
warning: BanachTarski/FixedPointLemma.lean:509:6: 'simp [Multiset.count]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:510:6: 'apply Multiset.countP_congr Sdef' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:509:6: 'simp [Multiset.count]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:511:6: 'intro x _' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:516:6: 'simp [Multiset.count]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:517:6: 'apply Multiset.countP_congr Sdef' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:516:6: 'simp [Multiset.count]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:518:6: 'intro x _' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:505:4: 'simp at a7' is a flexible tactic modifying 'a7'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:505:4: Try this:
  [apply] simp only [ge_iff_le] at a7
info: BanachTarski/FixedPointLemma.lean:522:4: 'rw [a41, a42] at a7' uses 'a7'!
warning: BanachTarski/FixedPointLemma.lean:505:4: 'simp at a7' is a flexible tactic modifying 'a7'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:505:4: Try this:
  [apply] simp only [ge_iff_le] at a7
info: BanachTarski/FixedPointLemma.lean:523:4: 'rw [a7]' uses 'a7'!
warning: BanachTarski/FixedPointLemma.lean:534:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:534:8: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_false_eq_true, List.nodup_nil,
    and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:535:8: 'apply flem2 g' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:534:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:534:8: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_false_eq_true, List.nodup_nil,
    and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:536:10: 'exact pw.left' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:534:8: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:534:8: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_false_eq_true, List.nodup_nil,
    and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:537:10: 'exact (not_or.mp pw.right)' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:549:6: 'rcases (em (a = w)) with aw1 | aw2' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:550:8: 'rw [aw1]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:551:8: 'rw [a511]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:552:8: 'apply Multiset.one_le_count_iff_mem.mpr' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:555:10: 'exact pw.left' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:557:10: 'exact (not_or.mp pw.right)' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:559:6: 'rcases (em (a = CONJ w)) with acw1 | acw2' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:560:8: 'rw [acw1]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:561:8: 'rw [a512]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:562:8: 'apply Multiset.one_le_count_iff_mem.mpr' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:565:10: 'exact conj_roots_2 g w pw.left' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:568:12: 'by_contra bad' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:569:12: 'apply congrArg CONJ at bad' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:570:12: 'simp [CONJ] at bad' is a flexible tactic modifying 'bad'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:571:12: 'exact pw.right (Or.inl bad)' uses 'bad'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:571:12: 'exact pw.right (Or.inl bad)' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:572:12: 'by_contra bad' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:573:12: 'apply congrArg CONJ at bad' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:574:12: 'simp [CONJ] at bad' is a flexible tactic modifying 'bad'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:575:12: 'exact pw.right (Or.inr bad)' uses 'bad'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:575:12: 'exact pw.right (Or.inr bad)' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:578:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:578:10: Try this:
  [apply] simp only [List.mem_cons, List.not_mem_nil, or_false, not_or]
info: BanachTarski/FixedPointLemma.lean:580:12: 'exact aw2' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:578:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:578:10: Try this:
  [apply] simp only [List.mem_cons, List.not_mem_nil, or_false, not_or]
info: BanachTarski/FixedPointLemma.lean:581:12: 'exact acw2' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:530:6: 'simp
      --have : List.count w [w, CONJ w] = 1' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:530:6: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:582:8: 'rw [bb]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:587:4: 'simp at a52' is a flexible tactic modifying 'a52'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:587:4: Try this:
  [apply] simp only [ge_iff_le] at a52
info: BanachTarski/FixedPointLemma.lean:588:4: 'exact a52' uses 'a52'!
warning: BanachTarski/FixedPointLemma.lean:609:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                    ↓
  ⏎    exact tight_space_lemma g lhs⏎⏎  let Pconj := fun w ↦ w = ((1 : ℂ)) ∧ w = -1⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:615:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                          ↓
  ⏎    exact Multiset.filter_add_filter (· = 1) (· = -1) S⏎⏎  have a7:  Multiset.filter P S = Multiset.filter (· = 1) S + Multiset.filter (· = -1) S := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:622:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                 ↓
  ⏎      norm_num⏎⏎    rw [a71] at a6⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:627:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
               ↓
  ⏎    exact a6⏎⏎  have a41 : Multiset.countP (fun x ↦ x = 1) S = Multiset.count 1 S  := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:634:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
            ↓
  ⏎    tauto⏎⏎  have a42 : Multiset.countP (fun x ↦ x = -1) S = Multiset.count (-1) S  := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:641:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
            ↓
  ⏎    tauto⏎⏎  have : Multiset.card S = Multiset.count 1 S + Multiset.count (-1) S  := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:648:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                          ↓
  ⏎    rw [Multiset.countP_eq_card_filter]⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:650:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
   ↓
  ⏎⏎⏎  simp only [S] at this⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:613:4: 'simp [P, Pconj]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:614:4: 'exact Multiset.filter_add_filter (· = 1) (· = -1) S' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:618:6: 'simp [Pconj]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:618:6: Try this:
  [apply] simp only [Multiset.filter_eq_nil]
info: BanachTarski/FixedPointLemma.lean:619:6: 'intro a lhs1 lhs2' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:618:6: 'simp [Pconj]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:618:6: Try this:
  [apply] simp only [Multiset.filter_eq_nil]
info: BanachTarski/FixedPointLemma.lean:620:6: 'rw [lhs2]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:624:4: 'simp at a6' is a flexible tactic modifying 'a6'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:625:4: 'symm at a6' uses 'a6'!
warning: BanachTarski/FixedPointLemma.lean:624:4: 'simp at a6' is a flexible tactic modifying 'a6'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:626:4: 'exact a6' uses 'a6'!
warning: BanachTarski/FixedPointLemma.lean:629:4: 'simp [Multiset.count]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:630:4: 'apply Multiset.countP_congr Sdef' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:629:4: 'simp [Multiset.count]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:631:4: 'intro x _' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:636:4: 'simp [Multiset.count]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:637:4: 'apply Multiset.countP_congr Sdef' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:636:4: 'simp [Multiset.count]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:638:4: 'intro x _' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:657:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                         ↓
  ⏎lemma spec_lem (g : SO3) : g ≠ 1 → ((cpoly g).roots.count 1) = 1 := by⏎⏎  intro gnotone⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:663:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                   ↓
  ⏎    apply Multiset.count_le_card⏎⏎  by_contra bad⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:758:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                         ↓
  ⏎              norm_num⏎⏎          apply Multiset.eq_of_le_of_card_le form_le⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:762:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                  ↓
  ⏎          rw [num_roots_eq_3 g]⏎⏎        rw [form]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:794:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                     ↓
  ⏎          norm_num⏎⏎        have :_:=  Multiset.card_le_card this⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:799:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                           ↓
  ⏎        norm_num at this⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:812:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                  ↓
  ⏎          rw [num_roots_eq_3 g]⏎⏎        apply Multiset.le_iff_count.mpr⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:835:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
               ↓
  ⏎          --⏎⏎        rcases (em (a = -1)) with imo | nimo⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:877:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                     ↓
  ⏎              simp⏎⏎      rw [form]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:884:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                         ↓
  ⏎    norm_num at negdet⏎⏎  have no_min_one: mcount = 0 := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:887:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
            ↓
  ⏎    omega⏎⏎  let cset := {x:ℂ | x ∈ (cpoly g).roots  ∧ x ≠ 1 ∧ x ≠ -1}⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:903:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                             ↓
  ⏎            exact that lhs⏎⏎          by_contra ne1⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:911:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                           ↓
  ⏎        apply neq3 other⏎⏎  set c := Classical.choose ne⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:918:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                          ↓
  ⏎  have conjdiff_c : CONJ c ≠ c := (flem2 g cspec.left cspec.right).symm⏎⏎  have countnot2: count ≠ 2 := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:931:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                     ↓
  ⏎        simp only [cset] at allone⏎⏎        have simpl: ∀ (x : ℂ),  x ∈ (cpoly g).roots → 1 = x := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:941:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                              ↓
  ⏎          exact allone this⏎⏎        have other:_:= Multiset.count_eq_card.mpr simpl⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:946:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                           ↓
  ⏎        apply neq3 other⏎⏎      set c := Classical.choose ne⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:959:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                       ↓
  ⏎    simp only [mcount] at no_min_one⏎⏎    have bbad:_:= Multiset.count_ne_zero.mpr havemin⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:963:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                       ↓
  ⏎    norm_num at bbad⏎⏎  have countnot0: count ≠ 0 := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:1010:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
               ↓
  ⏎        simp⏎⏎      have := Multiset.card_le_card this⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:1014:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                     ↓
  ⏎      simp at this⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:1016:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
   ↓
  ⏎⏎⏎    set c2 := Classical.choose ne2⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:1055:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                      ↓
  ⏎          exact bbb⏎⏎        symm at so⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:1063:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                        ↓
  ⏎        exact cspec2.right.right.left⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:1065:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
   ↓
  ⏎⏎⏎    have bigsub : big ≤ (cpoly g).roots := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:1111:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
               ↓
  ⏎        simp⏎⏎    have card_bound: big.card ≤ (cpoly g).roots.card  := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:1119:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                          ↓
  ⏎    linarith [this, (num_roots_eq_3 g)]⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/FixedPointLemma.lean:687:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:687:10: Try this:
  [apply] simp only [count_roots, Multiset.coe_count, List.count_cons_self, List.nodup_cons, List.not_mem_nil,
    not_false_eq_true, List.nodup_nil, and_self, List.mem_cons, or_false, List.count_eq_one_of_mem, Nat.reduceAdd]
info: BanachTarski/FixedPointLemma.lean:688:10: 'exact meq3' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:686:10: 'simp [mcount] at meq3' is a flexible tactic modifying 'meq3'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:686:10: Try this:
  [apply] simp only [count_roots, Multiset.coe_count, List.count_cons_self, List.nodup_cons, List.not_mem_nil,
    not_false_eq_true, List.nodup_nil, and_self, List.mem_cons, or_false, List.count_eq_one_of_mem,
    Nat.reduceAdd] at meq3
info: BanachTarski/FixedPointLemma.lean:688:10: 'exact meq3' uses 'meq3'!
warning: BanachTarski/FixedPointLemma.lean:691:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:691:10: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:692:10: 'symm' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:691:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:691:10: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:693:10: 'apply List.count_eq_zero.mpr' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:691:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:691:10: Try this:
  [apply] simp only [Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:694:10: 'by_contra inconst' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:695:10: 'simp at inconst' is a flexible tactic modifying 'inconst'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:696:10: 'rw [inconst] at notroot' uses 'inconst'!
warning: BanachTarski/FixedPointLemma.lean:717:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:717:6: Try this:
  [apply] simp only [count_roots]
info: BanachTarski/FixedPointLemma.lean:718:6: 'exact this' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:716:6: 'simp at this' is a flexible tactic modifying 'this'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:716:6: Try this:
  [apply] simp only [count_roots] at this
info: BanachTarski/FixedPointLemma.lean:718:6: 'exact this' uses 'this'!
warning: BanachTarski/FixedPointLemma.lean:729:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:729:10: Try this:
  [apply] simp only [count_roots, ge_iff_le, Nat.reduceLeDiff]
info: BanachTarski/FixedPointLemma.lean:731:10: 'exact d1' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:730:10: 'simp at d1' is a flexible tactic modifying 'd1'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:731:10: 'exact d1' uses 'd1'!
warning: BanachTarski/FixedPointLemma.lean:736:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:736:10: Try this:
  [apply] simp only [count_roots, ge_iff_le, Nat.reduceLeDiff]
info: BanachTarski/FixedPointLemma.lean:738:10: 'exact d1' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:737:10: 'simp at d1' is a flexible tactic modifying 'd1'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:738:10: 'exact d1' uses 'd1'!
warning: BanachTarski/FixedPointLemma.lean:741:8: 'simp at css2' is a flexible tactic modifying 'css2'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:742:8: 'have form : (cpoly g).roots = Multiset.ofList [-1, 1, 1] :=
  by
  have form_le : (cpoly g).roots ≤ Multiset.ofList [-1, 1, 1] :=
    by
    apply Multiset.le_iff_count.mpr
    intro a
    rcases (em (a ∈ (cpoly g).roots)) with isroot | notroot
    · rcases css a isroot with e1 | e2
      · rw [e1]
        simp
        rw [css2]
        norm_num
      · rw [e2]
        rw [misone]
        norm_num
    · have : _ := Multiset.count_eq_zero_of_notMem notroot
      rw [this]
      norm_num
  apply Multiset.eq_of_le_of_card_le form_le
  simp
  rw [num_roots_eq_3 g]' uses 'css2'!
warning: BanachTarski/FixedPointLemma.lean:749:16: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:749:16: Try this:
  [apply] simp only [count_roots, Multiset.coe_count]
info: BanachTarski/FixedPointLemma.lean:750:16: 'rw [css2]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:760:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:760:10: Try this:
  [apply] simp only [Multiset.coe_card, List.length_cons, List.length_nil, zero_add, Nat.reduceAdd]
info: BanachTarski/FixedPointLemma.lean:761:10: 'rw [num_roots_eq_3 g]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:771:8: 'simp at bbad' is a flexible tactic modifying 'bbad'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:773:8: 'have : (cpoly g).roots ≤ Multiset.ofList [-1] :=
  by
  apply Multiset.le_iff_count.mpr
  intro b
  rcases (em (b ∈ (cpoly g).roots)) with isroot | notroot
  · have that : _ := bbad b
    have tt : ¬(b ≠ 1 ∧ b ≠ -1) := by
      by_contra bbb
      exact that ⟨isroot, bbb⟩
    simp at tt
    rcases (em (b = 1)) with f1 | f2
    · rw [f1]
      rw [this]
      norm_num
        --
        
    rw [tt f2]
    simp only [mcount] at misone
    rw [misone]
    norm_num
  have : _ := Multiset.count_eq_zero_of_notMem notroot
  rw [this]
  norm_num' uses 'bbad'!
warning: BanachTarski/FixedPointLemma.lean:781:12: 'simp at tt' is a flexible tactic modifying 'tt'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:781:12: Try this:
  [apply] simp only [count_roots, Multiset.coe_singleton, Multiset.nodup_singleton, ge_iff_le] at tt
info: BanachTarski/FixedPointLemma.lean:787:12: 'rw [tt f2]' uses 'tt'!
warning: BanachTarski/FixedPointLemma.lean:796:8: 'simp at this' is a flexible tactic modifying 'this'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:797:8: 'rw [num_roots_eq_3 g] at this' uses 'this'!
warning: BanachTarski/FixedPointLemma.lean:810:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:810:10: Try this:
  [apply] simp only [Multiset.coe_card, List.length_cons, List.length_nil, zero_add, Nat.reduceAdd]
info: BanachTarski/FixedPointLemma.lean:811:10: 'rw [num_roots_eq_3 g]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:816:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:816:10: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:819:12: 'by_contra isone' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:816:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:816:10: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:821:12: 'exact cspec.right.right isone' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:816:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:816:10: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:823:12: 'by_contra bad' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:816:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:816:10: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:827:12: 'apply congrArg CONJ at bad' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:828:12: 'simp at bad' is a flexible tactic modifying 'bad'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:830:12: 'symm at bad' uses 'bad'!
warning: BanachTarski/FixedPointLemma.lean:816:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:816:10: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:831:12: 'exact cspec.right.right bad' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:828:12: 'simp at bad' is a flexible tactic modifying 'bad'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:831:12: 'exact cspec.right.right bad' uses 'bad'!
warning: BanachTarski/FixedPointLemma.lean:816:10: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:816:10: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:833:10: 'exact this' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:841:10: 'simp [this]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:841:10: Try this:
  [apply] simp only [Multiset.coe_count, List.count_cons_self, count_roots, Order.add_one_le_iff, gt_iff_lt]
info: BanachTarski/FixedPointLemma.lean:843:10: 'rw [misone]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:842:10: 'simp [mcount] at misone' is a flexible tactic modifying 'misone'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:843:10: 'rw [misone]' uses 'misone'!
warning: BanachTarski/FixedPointLemma.lean:858:14: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:858:14: Try this:
  [apply] simp only [Multiset.coe_count, count_roots, ge_iff_le]
info: BanachTarski/FixedPointLemma.lean:859:14: 'rw [this]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:869:16: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:869:16: Try this:
  [apply] simp only [List.mem_cons, List.not_mem_nil, or_false, not_or]
info: BanachTarski/FixedPointLemma.lean:871:18: 'exact nimo' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:869:16: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:869:16: Try this:
  [apply] simp only [List.mem_cons, List.not_mem_nil, or_false, not_or]
info: BanachTarski/FixedPointLemma.lean:873:18: 'exact nimc' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:869:16: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:869:16: Try this:
  [apply] simp only [List.mem_cons, List.not_mem_nil, or_false, not_or]
info: BanachTarski/FixedPointLemma.lean:874:18: 'exact nimcc' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:866:14: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:866:14: Try this:
  [apply] simp only [Multiset.coe_count, count_roots, ge_iff_le]
info: BanachTarski/FixedPointLemma.lean:875:14: 'rw [this]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:879:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:879:6: Try this:
  [apply] simp only [Multiset.prod_coe, List.prod_cons, List.prod_nil, mul_one, neg_mul, one_mul, neg_inj]
info: BanachTarski/FixedPointLemma.lean:880:6: 'apply conj_mul_roots' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:879:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:879:6: Try this:
  [apply] simp only [Multiset.prod_coe, List.prod_cons, List.prod_nil, mul_one, neg_mul, one_mul, neg_inj]
info: BanachTarski/FixedPointLemma.lean:881:6: 'exact cspec.left' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:879:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:879:6: Try this:
  [apply] simp only [Multiset.prod_coe, List.prod_cons, List.prod_nil, mul_one, neg_mul, one_mul, neg_inj]
info: BanachTarski/FixedPointLemma.lean:881:6: 'exact cspec.left' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:891:8: 'simp at bbad' is a flexible tactic modifying 'bbad'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:893:8: 'have simpl : ∀ (x : ℂ), x ∈ (cpoly g).roots → 1 = x := by
  intro x
  intro lhs
  have aa := bbad x
  have bb : x ≠ -1 := by
    simp only [mcount] at no_min_one
    have that := Multiset.count_eq_zero.mp no_min_one
    by_contra ism1
    rw [ism1] at lhs
    exact that lhs
  by_contra ne1
  have back : x ≠ 1 := by exact fun a ↦ ne1 (id (Eq.symm a))
  exact aa ⟨lhs, back, bb⟩' uses 'bbad'!
warning: BanachTarski/FixedPointLemma.lean:969:6: 'simp at bbbad' is a flexible tactic modifying 'bbbad'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:971:6: 'have : (cpoly g).roots ≤ Multiset.ofList [c, CONJ c] :=
  by
  apply Multiset.le_iff_count.mpr
  intro a
  rcases (em (a = 1)) with a1 | a2
  · rw [a1]
    simp only [count] at countiszero
    rw [countiszero]
    simp
      --
      
  rcases (em (a = -1)) with ma1 | ma2
  · rw [ma1]
    simp only [mcount] at no_min_one
    rw [no_min_one]
    simp
      --
      
  have cmult : ((cpoly g).roots.count c = 1) := by
    apply conj_roots_4
    · exact cspec.left
    exact cspec.right
  rcases (em (a = c)) with ca1 | ca2
  · rw [ca1]
    rw [cmult]
    simp
      --
      
  rcases (em (a = CONJ c)) with cca1 | cca2
  · rw [cca1]
    have cmultc : ((cpoly g).roots.count (CONJ c) = 1) :=
      by
      rw [← conj_roots_3]
      exact cmult
    rw [cmultc]
    simp
      --
      
  have : Multiset.count a (cpoly g).roots = 0 :=
    by
    apply Multiset.count_eq_zero.mpr
    by_contra isroot
    exact bbbad a ⟨isroot, a2, ma2, ca2, cca2⟩
  rw [this]
  simp' uses 'bbbad'!
warning: BanachTarski/FixedPointLemma.lean:1024:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1024:6: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:1027:8: 'by_contra eq' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1024:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1024:6: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:1029:8: 'exact conjdiff_c eq' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1024:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1024:6: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:1032:8: 'by_contra eqcs' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1024:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1024:6: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:1034:8: 'exact cspec2.right.right.right.left eqcs' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1024:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1024:6: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:1036:8: 'by_contra eqcs' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1024:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1024:6: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:1037:8: 'apply congrArg CONJ at eqcs' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1038:8: 'simp [CONJ] at eqcs' is a flexible tactic modifying 'eqcs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1039:8: 'change CONJ c = c2 at eqcs' uses 'eqcs'!
warning: BanachTarski/FixedPointLemma.lean:1038:8: 'simp [CONJ] at eqcs' is a flexible tactic modifying 'eqcs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1040:8: 'symm at eqcs' uses 'eqcs'!
warning: BanachTarski/FixedPointLemma.lean:1038:8: 'simp [CONJ] at eqcs' is a flexible tactic modifying 'eqcs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1041:8: 'exact cspec2.right.right.right.right eqcs' uses 'eqcs'!
warning: BanachTarski/FixedPointLemma.lean:1024:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1024:6: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:1041:8: 'exact cspec2.right.right.right.right eqcs' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1024:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1024:6: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:1046:8: 'by_contra bbb' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1024:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1024:6: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:1048:8: 'exact cspec2.right.right.right.right bbb' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1024:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1024:6: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:1050:8: 'by_contra bbb' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1051:8: 'simp [CONJ] at bbb' is a flexible tactic modifying 'bbb'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1052:8: 'have so : c = c2 := by
  apply star_inj.mp
  exact bbb' uses 'bbb'!
warning: BanachTarski/FixedPointLemma.lean:1024:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1024:6: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:1057:8: 'exact cspec2.right.right.right.left so' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1024:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1024:6: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:1058:8: 'apply flem2 g' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1024:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1024:6: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:1059:10: 'exact cspec2.left' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1024:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1024:6: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:1061:10: 'exact cspec2.right.left' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1024:6: 'simp' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1024:6: Try this:
  [apply] simp only [List.nodup_cons, List.mem_cons, List.not_mem_nil, or_false, not_or, not_false_eq_true,
    List.nodup_nil, and_self, and_true]
info: BanachTarski/FixedPointLemma.lean:1062:8: 'exact cspec2.right.right.left' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1068:6: 'apply Multiset.le_iff_count.mpr' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1069:6: 'intro w' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1070:6: 'rw [Multiset.coe_count]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1071:6: 'rcases (em (w = c ∨ w = c2 ∨ w = CONJ c ∨ w = CONJ c2)) with r1 | r2' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1072:8: 'rcases r1 with r11 | r12 | r13 | r14' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1073:10: 'rw [r11]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1078:10: 'rw [this]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1079:10: 'apply Multiset.one_le_count_iff_mem.mpr' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1080:10: 'exact cspec.left' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1081:10: 'rw [r12]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1086:10: 'rw [this]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1087:10: 'apply Multiset.one_le_count_iff_mem.mpr' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1088:10: 'exact cspec2.left' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1089:10: 'rw [r13]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1094:10: 'rw [this]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1095:10: 'apply Multiset.one_le_count_iff_mem.mpr' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1096:10: 'exact conjtoo' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1097:10: 'rw [r14]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1102:10: 'rw [this]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1103:10: 'apply Multiset.one_le_count_iff_mem.mpr' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1104:10: 'exact conjtoo2' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1067:6: 'simp [big]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1109:8: 'rw [this]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1116:6: 'simp [big] at card_bound' is a flexible tactic modifying 'card_bound'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1117:6: 'exact card_bound' uses 'card_bound'!
warning: BanachTarski/FixedPointLemma.lean:894:10: Try this: intro x lhs
warning: BanachTarski/FixedPointLemma.lean:933:10: Try this: intro x lhs
warning: BanachTarski/FixedPointLemma.lean:1129:2: 'simp [K, Module.End.eigenspace]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1129:2: Try this:
  [apply] simp only [Module.End.mem_genEigenspace_one, one_smul]
info: BanachTarski/FixedPointLemma.lean:1133:4: 'intro lhs' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1134:4: 'simp [kermap_raw] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1136:4: 'rw [sub_eq_iff_eq_add] at lhs' uses 'lhs'!
warning: BanachTarski/FixedPointLemma.lean:1129:2: 'simp [K, Module.End.eigenspace]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1129:2: Try this:
  [apply] simp only [Module.End.mem_genEigenspace_one, one_smul]
info: BanachTarski/FixedPointLemma.lean:1138:4: 'rw [lhs]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1134:4: 'simp [kermap_raw] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1138:4: 'rw [lhs]' uses 'lhs'!
warning: BanachTarski/FixedPointLemma.lean:1129:2: 'simp [K, Module.End.eigenspace]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1129:2: Try this:
  [apply] simp only [Module.End.mem_genEigenspace_one, one_smul]
info: BanachTarski/FixedPointLemma.lean:1139:4: 'intro lhs' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1129:2: 'simp [K, Module.End.eigenspace]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1129:2: Try this:
  [apply] simp only [Module.End.mem_genEigenspace_one, one_smul]
info: BanachTarski/FixedPointLemma.lean:1141:4: 'rw [sub_eq_iff_eq_add]' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1129:2: 'simp [K, Module.End.eigenspace]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1129:2: Try this:
  [apply] simp only [Module.End.mem_genEigenspace_one, one_smul]
info: BanachTarski/FixedPointLemma.lean:1144:4: 'apply congrArg WithLp.ofLp at lhs' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1143:4: 'simp [g_end_raw] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1144:4: 'apply congrArg WithLp.ofLp at lhs' uses 'lhs'!
warning: BanachTarski/FixedPointLemma.lean:1143:4: 'simp [g_end_raw] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1146:4: 'exact lhs' uses 'lhs'!
warning: BanachTarski/FixedPointLemma.lean:1129:2: 'simp [K, Module.End.eigenspace]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1129:2: Try this:
  [apply] simp only [Module.End.mem_genEigenspace_one, one_smul]
info: BanachTarski/FixedPointLemma.lean:1146:4: 'exact lhs' uses '⊢'!
warning: BanachTarski/FixedPointLemma.lean:1156:2: 'simp at this' is a flexible tactic modifying 'this'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1156:2: Try this:
  [apply] simp only [ge_iff_le] at this
info: BanachTarski/FixedPointLemma.lean:1157:2: 'rw [← same_char g] at this' uses 'this'!
warning: BanachTarski/FixedPointLemma.lean:1156:2: 'simp at this' is a flexible tactic modifying 'this'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1156:2: Try this:
  [apply] simp only [ge_iff_le] at this
info: BanachTarski/FixedPointLemma.lean:1158:2: 'rw [← same_mult g] at this' uses 'this'!
warning: BanachTarski/FixedPointLemma.lean:1156:2: 'simp at this' is a flexible tactic modifying 'this'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/FixedPointLemma.lean:1156:2: Try this:
  [apply] simp only [ge_iff_le] at this
info: BanachTarski/FixedPointLemma.lean:1159:2: 'rw [this] at bnd' uses 'this'!
error: BanachTarski/FixedPointLemma.lean:1391:4: unsolved goals
case h.right.inl
g : ↥SO3
notone : g ≠ 1
bnd : Module.finrank ℝ ↥(K g) ≤ 1
dim1 : Module.finrank ℝ ↥(K g) = 1
cset : Set R3 := {x | x ∈ K g ∧ x ≠ 0}
ne : ∃ z, z ∈ cset
nz : ↥(K g) :=
  let c := Classical.choose ne;
  have cspec := ⋯;
  ⟨c, ⋯⟩
is_nz : nz ≠ 0
isspan : ℝ ∙ nz = ⊤
el : R3 := ↑nz
el_neg : R3 := -el
el_nz : el ≠ 0
el_neg_nz : el_neg ≠ 0
el_normed : R3 := normed el
el_normed_neg : R3 := normed el_neg
rev_el : el = ‖el‖ • el_normed
rev_el_neg : el_neg = ‖el_neg‖ • el_normed_neg
prop : (↑g).mulVec el.ofLp - el.ofLp = 0
el_normed_in_s2 : el_normed ∈ S2
el_normed_neg_in_s2 : el_normed_neg ∈ S2
el_normed_fixed : g • el_normed = el_normed
el_normed_neg_fixed : g • el_normed_neg = el_normed_neg
cconj : el_normed ∈ S2 ∧ g • el_normed = el_normed
cconj_neg : el_normed_neg ∈ S2 ∧ g • el_normed_neg = el_normed_neg
F : ↑{x | x ∈ S2 ∧ g • x = x} := ⟨el_normed, cconj⟩
Fneg : ↑{x | x ∈ S2 ∧ g • x = x} := ⟨el_normed_neg, cconj_neg⟩
v : ↑{x | x ∈ S2 ∧ g • x = x}
vprop : ↑v ∈ {x | x ∈ {y | dist y 0 = 1} ∧ g • x = x}
k : R3 := ↑v
inker : k ∈ K g
ininsp : ⟨k, inker⟩ ∈ ℝ ∙ nz
a : ℝ
pa : a • nz = ⟨k, inker⟩
cast✝ : a • ‖el‖ • el_normed = k
normk : ‖k‖ = 1
nn : ‖‖el‖‖ = ‖el‖
obv : ‖el_normed‖ = 1
cast : |a| * ‖el‖ = 1
pos : a = ‖el‖⁻¹
cast_old : el_normed = k
this : v = F
⊢ F ∈ {F, Fneg}
error: BanachTarski/FixedPointLemma.lean:1401:4: unsolved goals
case h.right.inr
g : ↥SO3
notone : g ≠ 1
bnd : Module.finrank ℝ ↥(K g) ≤ 1
dim1 : Module.finrank ℝ ↥(K g) = 1
cset : Set R3 := {x | x ∈ K g ∧ x ≠ 0}
ne : ∃ z, z ∈ cset
nz : ↥(K g) :=
  let c := Classical.choose ne;
  have cspec := ⋯;
  ⟨c, ⋯⟩
is_nz : nz ≠ 0
isspan : ℝ ∙ nz = ⊤
el : R3 := ↑nz
el_neg : R3 := -el
el_nz : el ≠ 0
el_neg_nz : el_neg ≠ 0
el_normed : R3 := normed el
el_normed_neg : R3 := normed el_neg
rev_el : el = ‖el‖ • el_normed
rev_el_neg : el_neg = ‖el_neg‖ • el_normed_neg
prop : (↑g).mulVec el.ofLp - el.ofLp = 0
el_normed_in_s2 : el_normed ∈ S2
el_normed_neg_in_s2 : el_normed_neg ∈ S2
el_normed_fixed : g • el_normed = el_normed
el_normed_neg_fixed : g • el_normed_neg = el_normed_neg
cconj : el_normed ∈ S2 ∧ g • el_normed = el_normed
cconj_neg : el_normed_neg ∈ S2 ∧ g • el_normed_neg = el_normed_neg
F : ↑{x | x ∈ S2 ∧ g • x = x} := ⟨el_normed, cconj⟩
Fneg : ↑{x | x ∈ S2 ∧ g • x = x} := ⟨el_normed_neg, cconj_neg⟩
v : ↑{x | x ∈ S2 ∧ g • x = x}
vprop : ↑v ∈ {x | x ∈ {y | dist y 0 = 1} ∧ g • x = x}
k : R3 := ↑v
inker : k ∈ K g
ininsp : ⟨k, inker⟩ ∈ ℝ ∙ nz
a : ℝ
pa : a • nz = ⟨k, inker⟩
cast✝ : a • ‖el‖ • el_normed = k
normk : ‖k‖ = 1
nn : ‖‖el‖‖ = ‖el‖
obv : ‖el_normed‖ = 1
cast : |a| * ‖el‖ = 1
neg : a = -‖el‖⁻¹
cast_old : el_normed = -k
this✝ : el_normed_neg = k
this : v = Fneg
⊢ Fneg ∈ {F, Fneg}
error: Lean exited with code 1
⚠ [8267/8270] Built BanachTarski.Sato (25s)
warning: BanachTarski/Sato.lean:8:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                    ↓
  ⏎and show it is isomorphic to the free group on two generators. -/⏎⏎-- It will be easier to work with some integer valued matrices (not in SO(3))⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:11:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                     ↓
  ⏎-- and occassionally reduce mod 7.⏎⏎def M_s_Z : ZMAT := !![⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:37:2: 'simp [M_s_Z, M_s_Z_trans, Matrix.transpose]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:38:2: 'ext i j' uses '⊢'!
warning: BanachTarski/Sato.lean:37:2: 'simp [M_s_Z, M_s_Z_trans, Matrix.transpose]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:39:2: 'fin_cases i, j' uses '⊢'!
warning: BanachTarski/Sato.lean:44:2: 'simp [M_t_Z, M_t_Z_trans, Matrix.transpose]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:45:2: 'ext i j' uses '⊢'!
warning: BanachTarski/Sato.lean:44:2: 'simp [M_t_Z, M_t_Z_trans, Matrix.transpose]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:46:2: 'fin_cases i, j' uses '⊢'!
warning: BanachTarski/Sato.lean:52:2: 'simp [M_s_Z, M_s_Z_trans, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:53:2: 'ext i j' uses '⊢'!
warning: BanachTarski/Sato.lean:52:2: 'simp [M_s_Z, M_s_Z_trans, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:54:2: 'fin_cases i, j' uses '⊢'!
warning: BanachTarski/Sato.lean:60:2: 'simp [M_t_Z, M_t_Z_trans, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:61:2: 'ext i j' uses '⊢'!
warning: BanachTarski/Sato.lean:60:2: 'simp [M_t_Z, M_t_Z_trans, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:62:2: 'fin_cases i, j' uses '⊢'!
warning: BanachTarski/Sato.lean:100:4: 'simp [M_s_normed]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:100:4: Try this:
  [apply] simp only [one_div, Algebra.mul_smul_comm]
info: BanachTarski/Sato.lean:102:4: 'rw [← to_MAT_mul]' uses '⊢'!
warning: BanachTarski/Sato.lean:100:4: 'simp [M_s_normed]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:100:4: Try this:
  [apply] simp only [one_div, Algebra.mul_smul_comm]
info: BanachTarski/Sato.lean:103:4: 'rw [fnlem_s]' uses '⊢'!
warning: BanachTarski/Sato.lean:100:4: 'simp [M_s_normed]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:100:4: Try this:
  [apply] simp only [one_div, Algebra.mul_smul_comm]
info: BanachTarski/Sato.lean:106:4: 'rw [← Matrix.diagonal_smul]' uses '⊢'!
warning: BanachTarski/Sato.lean:100:4: 'simp [M_s_normed]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:100:4: Try this:
  [apply] simp only [one_div, Algebra.mul_smul_comm]
info: BanachTarski/Sato.lean:107:4: 'rw [← Matrix.diagonal_smul]' uses '⊢'!
warning: BanachTarski/Sato.lean:100:4: 'simp [M_s_normed]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:100:4: Try this:
  [apply] simp only [one_div, Algebra.mul_smul_comm]
info: BanachTarski/Sato.lean:108:4: 'rw [sevsevlem]' uses '⊢'!
warning: BanachTarski/Sato.lean:122:4: 'simp [M_t_normed]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:122:4: Try this:
  [apply] simp only [one_div, Algebra.mul_smul_comm]
info: BanachTarski/Sato.lean:124:4: 'rw [← to_MAT_mul]' uses '⊢'!
warning: BanachTarski/Sato.lean:122:4: 'simp [M_t_normed]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:122:4: Try this:
  [apply] simp only [one_div, Algebra.mul_smul_comm]
info: BanachTarski/Sato.lean:125:4: 'rw [fnlem_t]' uses '⊢'!
warning: BanachTarski/Sato.lean:122:4: 'simp [M_t_normed]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:122:4: Try this:
  [apply] simp only [one_div, Algebra.mul_smul_comm]
info: BanachTarski/Sato.lean:128:4: 'rw [← Matrix.diagonal_smul]' uses '⊢'!
warning: BanachTarski/Sato.lean:122:4: 'simp [M_t_normed]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:122:4: Try this:
  [apply] simp only [one_div, Algebra.mul_smul_comm]
info: BanachTarski/Sato.lean:129:4: 'rw [← Matrix.diagonal_smul]' uses '⊢'!
warning: BanachTarski/Sato.lean:122:4: 'simp [M_t_normed]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:122:4: Try this:
  [apply] simp only [one_div, Algebra.mul_smul_comm]
info: BanachTarski/Sato.lean:130:4: 'rw [sevsevlem]' uses '⊢'!
warning: BanachTarski/Sato.lean:159:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                                   ↓
  ⏎lemma msinv_lem : M_s_i * M_s = Matrix.diagonal (fun _ : (Fin 3) ↦ (49:ℝ)) := by⏎⏎  simp [M_s_i, M_s, M_s_Z, M_s_i_Z, Matrix.diagonal]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:160:2: 'simp [M_s_i, M_s, M_s_Z, M_s_i_Z, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:161:2: 'rw [← to_MAT_mul]' uses '⊢'!
warning: BanachTarski/Sato.lean:160:2: 'simp [M_s_i, M_s, M_s_Z, M_s_i_Z, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:162:2: 'ext i j' uses '⊢'!
warning: BanachTarski/Sato.lean:160:2: 'simp [M_s_i, M_s, M_s_Z, M_s_i_Z, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:163:2: 'fin_cases i, j' uses '⊢'!
warning: BanachTarski/Sato.lean:170:2: 'simp [M_s_i, M_s, M_s_Z, M_s_i_Z, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:171:2: 'rw [← to_MAT_mul]' uses '⊢'!
warning: BanachTarski/Sato.lean:170:2: 'simp [M_s_i, M_s, M_s_Z, M_s_i_Z, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:172:2: 'ext i j' uses '⊢'!
warning: BanachTarski/Sato.lean:170:2: 'simp [M_s_i, M_s, M_s_Z, M_s_i_Z, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:173:2: 'fin_cases i, j' uses '⊢'!
warning: BanachTarski/Sato.lean:179:2: 'simp [s_i_op_n]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:186:2: 'ext i j' uses '⊢'!
warning: BanachTarski/Sato.lean:179:2: 'simp [s_i_op_n]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:187:2: 'fin_cases i' uses '⊢'!
warning: BanachTarski/Sato.lean:179:2: 'simp [s_i_op_n]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:187:18: 'fin_cases j' uses '⊢'!
warning: BanachTarski/Sato.lean:179:2: 'simp [s_i_op_n]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:187:18: 'fin_cases j' uses '⊢'!
warning: BanachTarski/Sato.lean:179:2: 'simp [s_i_op_n]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:187:18: 'fin_cases j' uses '⊢'!
warning: BanachTarski/Sato.lean:204:2: 'simp [M_t_i, M_t, M_t_Z, M_t_i_Z, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:205:2: 'rw [← to_MAT_mul]' uses '⊢'!
warning: BanachTarski/Sato.lean:204:2: 'simp [M_t_i, M_t, M_t_Z, M_t_i_Z, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:206:2: 'ext i j' uses '⊢'!
warning: BanachTarski/Sato.lean:204:2: 'simp [M_t_i, M_t, M_t_Z, M_t_i_Z, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:207:2: 'fin_cases i, j' uses '⊢'!
warning: BanachTarski/Sato.lean:212:2: 'simp [M_t_i, M_t, M_t_Z, M_t_i_Z, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:213:2: 'rw [← to_MAT_mul]' uses '⊢'!
warning: BanachTarski/Sato.lean:212:2: 'simp [M_t_i, M_t, M_t_Z, M_t_i_Z, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:214:2: 'ext i j' uses '⊢'!
warning: BanachTarski/Sato.lean:212:2: 'simp [M_t_i, M_t, M_t_Z, M_t_i_Z, Matrix.diagonal]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:215:2: 'fin_cases i, j' uses '⊢'!
warning: BanachTarski/Sato.lean:220:2: 'simp [t_i_op_n]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:227:2: 'ext i j' uses '⊢'!
warning: BanachTarski/Sato.lean:220:2: 'simp [t_i_op_n]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:228:2: 'fin_cases i' uses '⊢'!
warning: BanachTarski/Sato.lean:220:2: 'simp [t_i_op_n]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:228:18: 'fin_cases j' uses '⊢'!
warning: BanachTarski/Sato.lean:220:2: 'simp [t_i_op_n]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:228:18: 'fin_cases j' uses '⊢'!
warning: BanachTarski/Sato.lean:220:2: 'simp [t_i_op_n]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:228:18: 'fin_cases j' uses '⊢'!
warning: BanachTarski/Sato.lean:239:2: 'simp [SATO]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:240:2: 'apply Subgroup.mem_closure_of_mem' uses '⊢'!
warning: BanachTarski/Sato.lean:244:2: 'simp [SATO]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:245:2: 'apply Subgroup.mem_closure_of_mem' uses '⊢'!
warning: BanachTarski/Sato.lean:258:4: 'simp [sato_generators_ss, sato_fg3_iso_seed]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:259:4: 'exact Set.pair_comm sato_s sato_t' uses '⊢'!
warning: BanachTarski/Sato.lean:266:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                  ↓
  ⏎  rw [← MonoidHom.range_eq_top]⏎⏎  rw [to_sato_range]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:270:4: 'simp [sato_generators_ss, sato_generators, Set.mem_preimage]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:270:4: Try this:
  [apply] simp only [Set.mem_preimage]
info: BanachTarski/Sato.lean:273:6: 'rintro (rfl | rfl)' uses '⊢'!
warning: BanachTarski/Sato.lean:270:4: 'simp [sato_generators_ss, sato_generators, Set.mem_preimage]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:270:4: Try this:
  [apply] simp only [Set.mem_preimage]
info: BanachTarski/Sato.lean:276:6: 'intro hx' uses '⊢'!
warning: BanachTarski/Sato.lean:270:4: 'simp [sato_generators_ss, sato_generators, Set.mem_preimage]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:270:4: Try this:
  [apply] simp only [Set.mem_preimage]
info: BanachTarski/Sato.lean:278:6: 'cases hx with
| inl h =>
  have : x = ⟨s_op_n, s_mem⟩ := Subtype.ext h
  left; exact this
| inr h =>
  have : x = ⟨t_op_n, t_mem⟩ := Subtype.ext h
  right; exact this' uses '⊢'!
warning: BanachTarski/Sato.lean:317:2: 'simp [M_s_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:317:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:319:2: 'rintro v ((inVs | inVt) | inVtinv)' uses '⊢'!
warning: BanachTarski/Sato.lean:317:2: 'simp [M_s_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:317:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:320:4: 'rcases inVs with a | b | c' uses '⊢'!
warning: BanachTarski/Sato.lean:317:2: 'simp [M_s_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:317:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:321:6: 'rw [a]' uses '⊢'!
warning: BanachTarski/Sato.lean:317:2: 'simp [M_s_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:317:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:323:6: 'rw [b]' uses '⊢'!
warning: BanachTarski/Sato.lean:317:2: 'simp [M_s_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:317:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:326:6: 'rw [c]' uses '⊢'!
warning: BanachTarski/Sato.lean:317:2: 'simp [M_s_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:317:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:329:4: 'rcases inVt with a | b | c' uses '⊢'!
warning: BanachTarski/Sato.lean:317:2: 'simp [M_s_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:317:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:330:6: 'rw [a]' uses '⊢'!
warning: BanachTarski/Sato.lean:317:2: 'simp [M_s_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:317:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:333:6: 'rw [b]' uses '⊢'!
warning: BanachTarski/Sato.lean:317:2: 'simp [M_s_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:317:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:336:6: 'rw [c]' uses '⊢'!
warning: BanachTarski/Sato.lean:317:2: 'simp [M_s_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:317:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:339:4: 'rcases inVtinv with a | b | c' uses '⊢'!
warning: BanachTarski/Sato.lean:317:2: 'simp [M_s_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:317:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:340:6: 'rw [a]' uses '⊢'!
warning: BanachTarski/Sato.lean:317:2: 'simp [M_s_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:317:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:343:6: 'rw [b]' uses '⊢'!
warning: BanachTarski/Sato.lean:317:2: 'simp [M_s_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:317:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:346:6: 'rw [c]' uses '⊢'!
warning: BanachTarski/Sato.lean:352:2: 'simp [M_s_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:352:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:354:2: 'rintro v ((inVsinv | inVt) | inVtinv)' uses '⊢'!
warning: BanachTarski/Sato.lean:352:2: 'simp [M_s_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:352:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:355:4: 'rcases inVsinv with a | b | c' uses '⊢'!
warning: BanachTarski/Sato.lean:352:2: 'simp [M_s_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:352:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:356:6: 'rw [a]' uses '⊢'!
warning: BanachTarski/Sato.lean:352:2: 'simp [M_s_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:352:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:358:6: 'rw [b]' uses '⊢'!
warning: BanachTarski/Sato.lean:352:2: 'simp [M_s_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:352:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:361:6: 'rw [c]' uses '⊢'!
warning: BanachTarski/Sato.lean:352:2: 'simp [M_s_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:352:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:364:4: 'rcases inVt with a | b | c' uses '⊢'!
warning: BanachTarski/Sato.lean:352:2: 'simp [M_s_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:352:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:365:6: 'rw [a]' uses '⊢'!
warning: BanachTarski/Sato.lean:352:2: 'simp [M_s_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:352:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:367:6: 'rw [b]' uses '⊢'!
warning: BanachTarski/Sato.lean:352:2: 'simp [M_s_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:352:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:370:6: 'rw [c]' uses '⊢'!
warning: BanachTarski/Sato.lean:352:2: 'simp [M_s_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:352:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:373:4: 'rcases inVtinv with a | b | c' uses '⊢'!
warning: BanachTarski/Sato.lean:352:2: 'simp [M_s_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:352:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:374:6: 'rw [a]' uses '⊢'!
warning: BanachTarski/Sato.lean:352:2: 'simp [M_s_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:352:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:376:6: 'rw [b]' uses '⊢'!
warning: BanachTarski/Sato.lean:352:2: 'simp [M_s_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:352:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:379:6: 'rw [c]' uses '⊢'!
warning: BanachTarski/Sato.lean:385:2: 'simp [M_t_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:385:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:387:2: 'rintro v ((inVt | inVs) | inVsinv)' uses '⊢'!
warning: BanachTarski/Sato.lean:385:2: 'simp [M_t_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:385:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:388:4: 'rcases inVt with a | b | c' uses '⊢'!
warning: BanachTarski/Sato.lean:385:2: 'simp [M_t_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:385:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:389:6: 'rw [a]' uses '⊢'!
warning: BanachTarski/Sato.lean:385:2: 'simp [M_t_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:385:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:391:6: 'rw [b]' uses '⊢'!
warning: BanachTarski/Sato.lean:385:2: 'simp [M_t_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:385:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:394:6: 'rw [c]' uses '⊢'!
warning: BanachTarski/Sato.lean:385:2: 'simp [M_t_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:385:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:397:4: 'rcases inVs with a | b | c' uses '⊢'!
warning: BanachTarski/Sato.lean:385:2: 'simp [M_t_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:385:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:398:6: 'rw [a]' uses '⊢'!
warning: BanachTarski/Sato.lean:385:2: 'simp [M_t_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:385:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:400:6: 'rw [b]' uses '⊢'!
warning: BanachTarski/Sato.lean:385:2: 'simp [M_t_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:385:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:403:6: 'rw [c]' uses '⊢'!
warning: BanachTarski/Sato.lean:385:2: 'simp [M_t_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:385:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:406:4: 'rcases inVsinv with a | b | c' uses '⊢'!
warning: BanachTarski/Sato.lean:385:2: 'simp [M_t_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:385:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:407:6: 'rw [a]' uses '⊢'!
warning: BanachTarski/Sato.lean:385:2: 'simp [M_t_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:385:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:409:6: 'rw [b]' uses '⊢'!
warning: BanachTarski/Sato.lean:385:2: 'simp [M_t_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:385:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:412:6: 'rw [c]' uses '⊢'!
warning: BanachTarski/Sato.lean:418:2: 'simp [M_t_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:418:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:420:2: 'rintro v ((inVinv | inVs) | inVsinv)' uses '⊢'!
warning: BanachTarski/Sato.lean:418:2: 'simp [M_t_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:418:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:421:4: 'rcases inVinv with a | b | c' uses '⊢'!
warning: BanachTarski/Sato.lean:418:2: 'simp [M_t_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:418:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:422:6: 'rw [a]' uses '⊢'!
warning: BanachTarski/Sato.lean:418:2: 'simp [M_t_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:418:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:424:6: 'rw [b]' uses '⊢'!
warning: BanachTarski/Sato.lean:418:2: 'simp [M_t_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:418:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:427:6: 'rw [c]' uses '⊢'!
warning: BanachTarski/Sato.lean:418:2: 'simp [M_t_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:418:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:430:4: 'rcases inVs with a | b | c' uses '⊢'!
warning: BanachTarski/Sato.lean:418:2: 'simp [M_t_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:418:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:431:6: 'rw [a]' uses '⊢'!
warning: BanachTarski/Sato.lean:418:2: 'simp [M_t_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:418:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:433:6: 'rw [b]' uses '⊢'!
warning: BanachTarski/Sato.lean:418:2: 'simp [M_t_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:418:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:436:6: 'rw [c]' uses '⊢'!
warning: BanachTarski/Sato.lean:418:2: 'simp [M_t_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:418:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:439:4: 'rcases inVsinv with a | b | c' uses '⊢'!
warning: BanachTarski/Sato.lean:418:2: 'simp [M_t_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:418:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:440:6: 'rw [a]' uses '⊢'!
warning: BanachTarski/Sato.lean:418:2: 'simp [M_t_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:418:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:442:6: 'rw [b]' uses '⊢'!
warning: BanachTarski/Sato.lean:418:2: 'simp [M_t_i_Z]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:418:2: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:445:6: 'rw [c]' uses '⊢'!
warning: BanachTarski/Sato.lean:457:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                             ↓
  ⏎  intro aneq1 image_is_one⏎⏎  have wlog : ∃b: FG2, (b ≠ 1) ∧ (to_sato b = 1) ∧ (FreeGroup.toWord b).getLast? = some (0, true) :=⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:460:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                 ↓
  ⏎    wolog_zero to_sato a ⟨aneq1, image_is_one⟩⏎⏎  obtain ⟨a2, a2_not_one, a2_image_one, a2_ends_with_sigma⟩ := wlog⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:462:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                      ↓
  ⏎  obtain ⟨a2, a2_not_one, a2_image_one, a2_ends_with_sigma⟩ := wlog⏎⏎  set w2 := FreeGroup.toWord a2 with w2_def⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:470:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                 ↓
  ⏎    simp at a2_ends_with_sigma⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:473:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                         ↓
  ⏎  let Invariant (header: chartype) (op:ZMAT) : Prop :=⏎⏎    let c1 := mod7_Z ((Matrix.col op 0))⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:475:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                           ↓
  ⏎    let c1 := mod7_Z ((Matrix.col op 0))⏎⏎    (header = (0, true) → c1 ∈ Vs) ∧⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:480:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                         ↓
  ⏎    (header = (0, false) → c1 ∈ Vsinv)⏎⏎  set tp_list : List ZMAT := w2.map fun x => (⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:488:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                      ↓
  ⏎  ) with tplist_def⏎⏎  let trunc_prod (i: ℕ): ZMAT := List.prod ((w2.drop (N - 1 - i)).map fun x =>⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:496:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
      ↓
  ⏎  )⏎⏎  let DEFAULT := ((0:Fin 2), false)⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:498:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                      ↓
  ⏎  let DEFAULT := ((0:Fin 2), false)⏎⏎  let header (i: ℕ) : chartype := w2.getD (N -i - 1) DEFAULT⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:500:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                               ↓
  ⏎  let header (i: ℕ) : chartype := w2.getD (N -i - 1) DEFAULT⏎⏎  have claim : ∀ i : ℕ, (i < N) → Invariant (header i) (trunc_prod i) := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:503:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                     ↓
  ⏎    intro i i_le_N⏎⏎    induction' i with i ih⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:505:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                             ↓
  ⏎    induction' i with i ih⏎⏎    · have triv1: (trunc_prod 0) = M_s_Z := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:508:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                            ↓
  ⏎        simp [trunc_prod]⏎⏎        rw [←tplist_def]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:511:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                         ↓
  ⏎        simp [tp_list]⏎⏎        have xl1: tp_list.length = N - 1 + 1 := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:515:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                  ↓
  ⏎          omega⏎⏎        have xl2: tp_list.getLast? = some M_s_Z := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:521:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                     ↓
  ⏎          exact a2_ends_with_sigma⏎⏎        rw [drop_eq_last (N - 1) tp_list ⟨xl1, xl2⟩]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:524:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
               ↓
  ⏎        simp⏎⏎      have triv2: header 0 = (0, true) := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:532:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                   ↓
  ⏎        exact a2_ends_with_sigma⏎⏎      rw [triv2]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:545:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
         ↓
  ⏎    --⏎⏎    simp [Invariant]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:551:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                          ↓
  ⏎    let m7prev := mod7_Z (Matrix.col (trunc_prod ↑i) 0)⏎⏎    have adj_lemma : ∀{i : Fin 2}, ∀{v : Bool}, h = (i, v) → (h_prev ≠ (i, not v)) := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:563:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                      ↓
  ⏎      have same_lens : w2.length = L3.length :=  by⏎⏎        simp [L3, A, B]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:572:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                ↓
  ⏎        omega⏎⏎      have w2_decomp: w2 = L3 := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:574:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                      ↓
  ⏎      have w2_decomp: w2 = L3 := by⏎⏎        simp [L3]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:577:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                   ↓
  ⏎        simp [A]⏎⏎        nth_rewrite 1 [←List.take_append_drop (N-i -2) w2]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:585:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                          ↓
  ⏎            constructor⏎⏎            · have h_conv : w2.getD ((N - (i+ 1)) - 1) DEFAULT = w2[N - i - 2] := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:591:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                      ↓
  ⏎                rfl⏎⏎              rw [← h_conv]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:594:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                          ↓
  ⏎              exact lhs⏎⏎            constructor⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:596:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                          ↓
  ⏎            constructor⏎⏎            · have h_conv : w2.getD (N - i - 1) DEFAULT = w2[N - i - 2 + 1] := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:603:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                             ↓
  ⏎                simp [eee]⏎⏎              rw [← h_conv]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:606:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                          ↓
  ⏎              exact bad⏎⏎            have lx :  N - i - 2 + 1 + 1 = N - i := by omega⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:608:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                               ↓
  ⏎            have lx :  N - i - 2 + 1 + 1 = N - i := by omega⏎⏎            rw [lx]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:612:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                  ↓
  ⏎          omega⏎⏎        simp [N]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:615:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                ↓
  ⏎        omega⏎⏎      have w2_isreduced: FreeGroup.IsReduced w2 := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:619:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                               ↓
  ⏎        rwa [←w2_def] at sim⏎⏎      have bb: FreeGroup.Red.Step w2 L2 := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:627:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                              ↓
  ⏎      exact (trouble L2) bb⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:635:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                               ↓
  ⏎      simp [Invariant] at ih⏎⏎      have ihtrig := ih (by linarith [i_le_N])⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:654:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                            ↓
  ⏎          exact ihtrig.right.right.left d⏎⏎      have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) =⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:659:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                              ↓
  ⏎          simp [trunc_prod]⏎⏎          let d : List MAT := (List.map (fun x ↦ sev_mat * ((bif x.2 then⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:664:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                                               ↓
  ⏎            ((sato_fg3_iso_seed x.1):MAT) else ((sato_fg3_iso_seed x.1)⁻¹:MAT)))) w2) := rfl⏎⏎          rw [←tplist_def]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:666:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                             ↓
  ⏎          rw [←tplist_def]⏎⏎          have lemm1: N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=  by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:670:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                             ↓
  ⏎            exact (Nat.succ_pred_eq_of_ne_zero  int0).symm⏎⏎          set D := Nat.pred (N - 1 - i)  with ddef⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:676:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                            ↓
  ⏎          rw [pD2, lemm1]⏎⏎          have more: (List.drop D tp_list) = M_s_Z::(List.drop (D+1) tp_list):= by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:698:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                      ↓
  ⏎              omega⏎⏎          rw [more]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:701:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                ↓
  ⏎          rfl⏎⏎        simp [m7prev]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:706:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
              ↓
  ⏎        rfl⏎⏎      rw [red]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:715:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                 ↓
  ⏎        simp [Invariant] at ih⏎⏎        have ihtrig := ih (by linarith [i_le_N])⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:734:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                                                ↓
  ⏎        have prev_lem: m7prev ∈ Vt ∪ Vs ∪ Vsinv := by rwa [Set.union_comm Vs Vt] at prev_lem0⏎⏎        have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) =⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:740:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                               ↓
  ⏎            rw [←tplist_def]⏎⏎            have lemm1: N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=  by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:744:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                               ↓
  ⏎              exact (Nat.succ_pred_eq_of_ne_zero  int0).symm⏎⏎            set D := Nat.pred (N - 1 - i)  with ddef⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:750:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                              ↓
  ⏎            rw [pD2, lemm1]⏎⏎            have more: (List.drop D tp_list) = M_t_Z::(List.drop (D+1) tp_list):= by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:773:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                        ↓
  ⏎                omega⏎⏎            rw [more]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:776:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                  ↓
  ⏎            rfl⏎⏎          simp [m7prev]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:781:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                ↓
  ⏎          rfl⏎⏎        rw [red]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:790:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                   ↓
  ⏎          simp [Invariant] at ih⏎⏎          have ihtrig := ih (by linarith [i_le_N])⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:810:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                              ↓
  ⏎            exact prev_lem0⏎⏎          have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) =⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:816:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                 ↓
  ⏎              rw [←tplist_def]⏎⏎              have lemm1: N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=  by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:820:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                 ↓
  ⏎                exact (Nat.succ_pred_eq_of_ne_zero  int0).symm⏎⏎              set D := Nat.pred (N - 1 - i)  with ddef⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:826:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                ↓
  ⏎              rw [pD2, lemm1]⏎⏎              have more: (List.drop D tp_list) = M_t_i_Z::(List.drop (D+1) tp_list):= by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:849:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                          ↓
  ⏎                  omega⏎⏎              rw [more]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:852:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                    ↓
  ⏎              rfl⏎⏎            simp [m7prev]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:857:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                  ↓
  ⏎            rfl⏎⏎          rw [red]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:865:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                   ↓
  ⏎          simp [Invariant] at ih⏎⏎          have ihtrig := ih (by linarith [i_le_N])⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:880:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                ↓
  ⏎              exact ihtrig.right.right.left d⏎⏎          have prev_lem: m7prev ∈  Vsinv ∪ Vt ∪ Vtinv := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:884:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                              ↓
  ⏎            exact prev_lem0⏎⏎          have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) =⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:890:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                 ↓
  ⏎              rw [←tplist_def]⏎⏎              have lemm1: N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=  by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:894:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                 ↓
  ⏎                exact (Nat.succ_pred_eq_of_ne_zero  int0).symm⏎⏎              set D := Nat.pred (N - 1 - i)  with ddef⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:900:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                ↓
  ⏎              rw [pD2, lemm1]⏎⏎              have more: (List.drop D tp_list) = M_s_i_Z::(List.drop (D+1) tp_list):= by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:923:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                          ↓
  ⏎                  omega⏎⏎              rw [more]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:926:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                    ↓
  ⏎              rfl⏎⏎            simp [m7prev]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:931:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                  ↓
  ⏎            rfl⏎⏎          rw [red]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:934:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                     ↓
  ⏎          exact l2 m7prev prev_lem⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:939:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                   ↓
  ⏎    exact Nat.sub_one_lt Nnezero⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:944:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                      ↓
  ⏎    ((sato_fg3_iso_seed x.1):MAT)⁻¹))) with ppm_def⏎⏎  have len_ppm : pre_prod_MAT.length = N := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:948:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                       ↓
  ⏎    exact N_def.symm⏎⏎  let my_prod:= List.prod (pre_prod)⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:951:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                               ↓
  ⏎  let my_prod_MAT:= List.prod (pre_prod_MAT)⏎⏎  have case_image_is_my_prod : (to_sato a2) = my_prod := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:956:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                ↓
  ⏎      exact FreeGroup.lift_mk⏎⏎  have case_image_is_my_prod_MAT : ((to_sato a2): MAT) = my_prod_MAT := by⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:969:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                       ↓
  ⏎    exact (so3_invs_coe t_op_n).symm⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:972:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                                                     ↓
  ⏎  have equal_prods: (sev_mat ^N) * my_prod_MAT = to_MAT (trunc_prod (N - 1)) := by⏎⏎    simp [trunc_prod]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:978:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                ↓
  ⏎    simp [sev_mat, sev_mat_Z]⏎⏎    simp [to_MAT]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:982:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                 ↓
  ⏎    rw [inter]⏎⏎    simp [pre_prod_MAT]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:997:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
               ↓
  ⏎        simp⏎⏎      rw [xyz]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:1018:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
               ↓
  ⏎        simp⏎⏎      rw [xyz]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:1042:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
               ↓
  ⏎        simp⏎⏎      rw [xyz]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:1063:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
               ↓
  ⏎        simp⏎⏎      rw [xyz]⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:1079:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                 ↓
  ⏎      norm_num⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:1085:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                           ↓
  ⏎    rw [uh] at case_image_is_my_prod_MAT⏎⏎    rw [←case_image_is_my_prod_MAT] at equal_prods⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:1087:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                                                     ↓
  ⏎    rw [←case_image_is_my_prod_MAT] at equal_prods⏎⏎    simp at equal_prods⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:1095:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                     ↓
  ⏎      exact weird1⏎⏎    rw [← weird] at last⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:1098:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                               ↓
  ⏎    simp [Invariant] at last⏎⏎⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:1145:0: Please, write a comment here or remove this line, but do not place empty lines within commands!
Context:
                      ↓
  ⏎      exact Nnezero⏎⏎  exact thus a2_image_one⏎

Note: This linter can be disabled with `set_option linter.style.emptyLine false`
warning: BanachTarski/Sato.lean:507:8: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:509:8: 'rw [← tplist_def]' uses '⊢'!
warning: BanachTarski/Sato.lean:517:10: 'simp [tp_list]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:518:10: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:517:10: 'simp [tp_list]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:519:10: 'right' uses '⊢'!
warning: BanachTarski/Sato.lean:517:10: 'simp [tp_list]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:520:10: 'exact a2_ends_with_sigma' uses '⊢'!
warning: BanachTarski/Sato.lean:507:8: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:522:8: 'rw [drop_eq_last (N - 1) tp_list ⟨xl1, xl2⟩]' uses '⊢'!
warning: BanachTarski/Sato.lean:526:8: 'simp [header]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:529:8: 'apply Option.getD_eq_iff.mpr' uses '⊢'!
warning: BanachTarski/Sato.lean:526:8: 'simp [header]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:530:8: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:526:8: 'simp [header]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:531:8: 'exact a2_ends_with_sigma' uses '⊢'!
warning: BanachTarski/Sato.lean:535:6: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:540:6: 'right' uses '⊢'!
warning: BanachTarski/Sato.lean:535:6: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:541:6: 'right' uses '⊢'!
warning: BanachTarski/Sato.lean:535:6: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:542:6: 'ext i' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:547:4: 'let h := header (i + 1)' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:548:4: 'let h_prev := header (i)' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:550:4: 'let m7prev := mod7_Z (Matrix.col (trunc_prod ↑i) 0)' uses '⊢'!
warning: BanachTarski/Sato.lean:549:4: 'simp at h' is a flexible tactic modifying 'h'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:552:4: 'have adj_lemma : ∀ {i : Fin 2}, ∀ {v : Bool}, h = (i, v) → (h_prev ≠ (i, not v)) :=
  by
  intro j vt
  simp [h, h_prev]
  simp only [header]
  intro lhs
  intro bad
  let A := w2.take (N - i - 2)
  let B := w2.drop (N - i)
  let L2 := A ++ B
  let L3 := A ++ (j, vt) :: (j, not vt) :: B
  have same_lens : w2.length = L3.length := by
    simp [L3, A, B]
    have min1 : N - i - 2 ≤ w2.length := by simp [N]; omega
    have min11 : min (N - i - 2) w2.length = N - i - 2 := by simp [min1]
    simp [min11]
    rw [add_comm]
    nth_rewrite 1 [← add_zero w2.length]
    norm_num
    omega
  have w2_decomp : w2 = L3 := by
    simp [L3]
    simp [A]
    nth_rewrite 1 [← List.take_append_drop (N - i - 2) w2]
    rw [List.append_cancel_left_eq]
    simp [B]
    nth_rewrite 1 [← List.cons_getElem_drop_succ]
    · nth_rewrite 1 [← List.cons_getElem_drop_succ]
      · simp
        constructor
        · have h_conv : w2.getD ((N - (i + 1)) - 1) DEFAULT = w2[N - i - 2] :=
            by
            rw [List.getD_eq_getElem?_getD, List.getD_getElem?]
            have ll : N - (i + 1) - 1 < w2.length := by simp [N]; omega
            simp [ll]
            rfl
          rw [← h_conv]
          exact lhs
        constructor
        · have h_conv : w2.getD (N - i - 1) DEFAULT = w2[N - i - 2 + 1] :=
            by
            rw [List.getD_eq_getElem?_getD, List.getD_getElem?]
            have ll : N - i - 1 < w2.length := by simp [N]; omega
            simp [ll]
            have eee : N - i - 2 + 1 = N - i - 1 := by omega
            simp [eee]
          rw [← h_conv]
          exact bad
        have lx : N - i - 2 + 1 + 1 = N - i := by omega
        rw [lx]
      simp [N]
      omega
    simp [N]
    omega
  have w2_isreduced : FreeGroup.IsReduced w2 :=
    by
    have sim : FreeGroup.IsReduced (FreeGroup.toWord a2) := FreeGroup.isReduced_toWord
    rwa [← w2_def] at sim
  have bb : FreeGroup.Red.Step w2 L2 := by
    rw [w2_decomp]
    have step : FreeGroup.Red.Step ((j, vt) :: (j, not vt) :: B) B := FreeGroup.Red.Step.cons_not
    exact FreeGroup.Red.Step.append_left step
  have trouble : _ := FreeGroup.isReduced_iff_not_step.mp w2_isreduced
  exact (trouble L2) bb' uses 'h'!
warning: BanachTarski/Sato.lean:554:6: 'simp [h, h_prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:554:6: Try this:
  [apply] simp only [ne_eq]
info: BanachTarski/Sato.lean:556:6: 'intro lhs' uses '⊢'!
warning: BanachTarski/Sato.lean:554:6: 'simp [h, h_prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:554:6: Try this:
  [apply] simp only [ne_eq]
info: BanachTarski/Sato.lean:557:6: 'intro bad' uses '⊢'!
warning: BanachTarski/Sato.lean:554:6: 'simp [h, h_prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:554:6: Try this:
  [apply] simp only [ne_eq]
info: BanachTarski/Sato.lean:558:6: 'let A := w2.take (N - i - 2)' uses '⊢'!
warning: BanachTarski/Sato.lean:554:6: 'simp [h, h_prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:554:6: Try this:
  [apply] simp only [ne_eq]
info: BanachTarski/Sato.lean:559:6: 'let B := w2.drop (N - i)' uses '⊢'!
warning: BanachTarski/Sato.lean:554:6: 'simp [h, h_prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:554:6: Try this:
  [apply] simp only [ne_eq]
info: BanachTarski/Sato.lean:560:6: 'let L2 := A ++ B' uses '⊢'!
warning: BanachTarski/Sato.lean:554:6: 'simp [h, h_prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:554:6: Try this:
  [apply] simp only [ne_eq]
info: BanachTarski/Sato.lean:561:6: 'let L3 := A ++ (j, vt) :: (j, not vt) :: B' uses '⊢'!
warning: BanachTarski/Sato.lean:564:8: 'simp [L3, A, B]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:568:8: 'rw [add_comm]' uses '⊢'!
warning: BanachTarski/Sato.lean:564:8: 'simp [L3, A, B]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:569:8: 'nth_rewrite 1 [← add_zero w2.length]' uses '⊢'!
warning: BanachTarski/Sato.lean:575:8: 'simp [L3]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:578:8: 'nth_rewrite 1 [← List.take_append_drop (N - i - 2) w2]' uses '⊢'!
warning: BanachTarski/Sato.lean:575:8: 'simp [L3]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:579:8: 'rw [List.append_cancel_left_eq]' uses '⊢'!
warning: BanachTarski/Sato.lean:575:8: 'simp [L3]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:581:8: 'nth_rewrite 1 [← List.cons_getElem_drop_succ]' uses '⊢'!
warning: BanachTarski/Sato.lean:575:8: 'simp [L3]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:582:10: 'nth_rewrite 1 [← List.cons_getElem_drop_succ]' uses '⊢'!
warning: BanachTarski/Sato.lean:575:8: 'simp [L3]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:592:14: 'rw [← h_conv]' uses '⊢'!
warning: BanachTarski/Sato.lean:575:8: 'simp [L3]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:593:14: 'exact lhs' uses '⊢'!
warning: BanachTarski/Sato.lean:575:8: 'simp [L3]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:604:14: 'rw [← h_conv]' uses '⊢'!
warning: BanachTarski/Sato.lean:575:8: 'simp [L3]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:605:14: 'exact bad' uses '⊢'!
warning: BanachTarski/Sato.lean:575:8: 'simp [L3]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:609:12: 'rw [lx]' uses '⊢'!
warning: BanachTarski/Sato.lean:554:6: 'simp [h, h_prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:554:6: Try this:
  [apply] simp only [ne_eq]
info: BanachTarski/Sato.lean:626:6: 'exact (trouble L2) bb' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:631:6: 'intro lhs' uses '⊢'!
warning: BanachTarski/Sato.lean:634:6: 'simp [Invariant] at ih' is a flexible tactic modifying 'ih'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:636:6: 'have ihtrig := ih (by linarith [i_le_N])' uses 'ih'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:637:6: 'have prev_lem : m7prev ∈ Vs ∪ Vt ∪ Vtinv := by
  simp [m7prev]
  rcases (wopts h_prev) with a | b | c | d
  · simp [h_prev] at a
    left
    left
    exact ihtrig.left a
  · simp [h_prev] at b
    absurd lim1 b
    trivial
  · simp [h_prev] at c
    left
    right
    exact ihtrig.right.left c
  · simp [h_prev] at d
    right
    exact ihtrig.right.right.left d' uses '⊢'!
warning: BanachTarski/Sato.lean:633:6: 'simp [h_prev] at lim1' is a flexible tactic modifying 'lim1'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:637:6: 'have prev_lem : m7prev ∈ Vs ∪ Vt ∪ Vtinv := by
  simp [m7prev]
  rcases (wopts h_prev) with a | b | c | d
  · simp [h_prev] at a
    left
    left
    exact ihtrig.left a
  · simp [h_prev] at b
    absurd lim1 b
    trivial
  · simp [h_prev] at c
    left
    right
    exact ihtrig.right.left c
  · simp [h_prev] at d
    right
    exact ihtrig.right.right.left d' uses 'lim1'!
warning: BanachTarski/Sato.lean:638:8: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:638:8: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:639:8: 'rcases (wopts h_prev) with a | b | c | d' uses '⊢'!
warning: BanachTarski/Sato.lean:638:8: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:638:8: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:641:10: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:638:8: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:638:8: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:642:10: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:640:10: 'simp [h_prev] at a' is a flexible tactic modifying 'a'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:643:10: 'exact ihtrig.left a' uses 'a'!
warning: BanachTarski/Sato.lean:638:8: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:638:8: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:643:10: 'exact ihtrig.left a' uses '⊢'!
warning: BanachTarski/Sato.lean:638:8: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:638:8: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:645:10: 'absurd lim1 b' uses '⊢'!
warning: BanachTarski/Sato.lean:644:10: 'simp [h_prev] at b' is a flexible tactic modifying 'b'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:645:10: 'absurd lim1 b' uses 'b'!
warning: BanachTarski/Sato.lean:638:8: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:638:8: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:646:10: 'trivial' uses '⊢'!
warning: BanachTarski/Sato.lean:638:8: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:638:8: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:648:10: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:638:8: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:638:8: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:649:10: 'right' uses '⊢'!
warning: BanachTarski/Sato.lean:647:10: 'simp [h_prev] at c' is a flexible tactic modifying 'c'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:650:10: 'exact ihtrig.right.left c' uses 'c'!
warning: BanachTarski/Sato.lean:638:8: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:638:8: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:650:10: 'exact ihtrig.right.left c' uses '⊢'!
warning: BanachTarski/Sato.lean:638:8: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:638:8: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:652:10: 'right' uses '⊢'!
warning: BanachTarski/Sato.lean:638:8: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:638:8: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:653:10: 'exact ihtrig.right.right.left d' uses '⊢'!
warning: BanachTarski/Sato.lean:651:10: 'simp [h_prev] at d' is a flexible tactic modifying 'd'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:653:10: 'exact ihtrig.right.right.left d' uses 'd'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:655:6: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_s_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_s_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    let d : List MAT :=
      (List.map
        (fun x ↦ sev_mat * ((bif x.2 then ((sato_fg3_iso_seed x.1) : MAT) else ((sato_fg3_iso_seed x.1)⁻¹ : MAT)))) w2)
    have simpler :
      d =
        (List.map
          (fun x ↦ sev_mat * ((bif x.2 then ((sato_fg3_iso_seed x.1) : MAT) else ((sato_fg3_iso_seed x.1)⁻¹ : MAT))))
          w2) :=
      rfl
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_s_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D d with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [D]
      simp [tplist_def]
      left
      right
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses '⊢'!
warning: BanachTarski/Sato.lean:633:6: 'simp [h_prev] at lim1' is a flexible tactic modifying 'lim1'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:655:6: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_s_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_s_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    let d : List MAT :=
      (List.map
        (fun x ↦ sev_mat * ((bif x.2 then ((sato_fg3_iso_seed x.1) : MAT) else ((sato_fg3_iso_seed x.1)⁻¹ : MAT)))) w2)
    have simpler :
      d =
        (List.map
          (fun x ↦ sev_mat * ((bif x.2 then ((sato_fg3_iso_seed x.1) : MAT) else ((sato_fg3_iso_seed x.1)⁻¹ : MAT))))
          w2) :=
      rfl
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_s_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D d with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [D]
      simp [tplist_def]
      left
      right
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses 'lim1'!
warning: BanachTarski/Sato.lean:634:6: 'simp [Invariant] at ih' is a flexible tactic modifying 'ih'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:655:6: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_s_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_s_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    let d : List MAT :=
      (List.map
        (fun x ↦ sev_mat * ((bif x.2 then ((sato_fg3_iso_seed x.1) : MAT) else ((sato_fg3_iso_seed x.1)⁻¹ : MAT)))) w2)
    have simpler :
      d =
        (List.map
          (fun x ↦ sev_mat * ((bif x.2 then ((sato_fg3_iso_seed x.1) : MAT) else ((sato_fg3_iso_seed x.1)⁻¹ : MAT))))
          w2) :=
      rfl
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_s_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D d with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [D]
      simp [tplist_def]
      left
      right
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses 'ih'!
warning: BanachTarski/Sato.lean:549:4: 'simp at h' is a flexible tactic modifying 'h'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:655:6: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_s_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_s_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    let d : List MAT :=
      (List.map
        (fun x ↦ sev_mat * ((bif x.2 then ((sato_fg3_iso_seed x.1) : MAT) else ((sato_fg3_iso_seed x.1)⁻¹ : MAT)))) w2)
    have simpler :
      d =
        (List.map
          (fun x ↦ sev_mat * ((bif x.2 then ((sato_fg3_iso_seed x.1) : MAT) else ((sato_fg3_iso_seed x.1)⁻¹ : MAT))))
          w2) :=
      rfl
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_s_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D d with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [D]
      simp [tplist_def]
      left
      right
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses 'h'!
warning: BanachTarski/Sato.lean:658:10: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:660:10: 'let d : List MAT :=
  (List.map (fun x ↦ sev_mat * ((bif x.2 then ((sato_fg3_iso_seed x.1) : MAT) else ((sato_fg3_iso_seed x.1)⁻¹ : MAT))))
    w2)' uses '⊢'!
warning: BanachTarski/Sato.lean:658:10: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:662:10: 'have simpler :
  d =
    (List.map
      (fun x ↦ sev_mat * ((bif x.2 then ((sato_fg3_iso_seed x.1) : MAT) else ((sato_fg3_iso_seed x.1)⁻¹ : MAT)))) w2) :=
  rfl' uses '⊢'!
warning: BanachTarski/Sato.lean:658:10: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:665:10: 'rw [← tplist_def]' uses '⊢'!
warning: BanachTarski/Sato.lean:658:10: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:671:10: 'set D := Nat.pred (N - 1 - i) with ddef' uses '⊢'!
warning: BanachTarski/Sato.lean:658:10: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:675:10: 'rw [pD2, lemm1]' uses '⊢'!
warning: BanachTarski/Sato.lean:658:10: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:677:10: 'have more : (List.drop D tp_list) = M_s_Z :: (List.drop (D + 1) tp_list) :=
  by
  rw [List.drop_add_one_eq_tail_drop]
  set DD := List.drop D d with dddef
  apply List.eq_cons_of_mem_head?
  simp [header] at lhs
  have sm : N - (i + 1) - 1 = D := by omega
  have sm2 : N - 1 - i - 1 = D := by omega
  rw [sm] at lhs
  simp [D]
  simp [tplist_def]
  left
  right
  rw [sm2]
  have more0 : _ := Option.getD_eq_iff.mp lhs
  rcases more0 with L | R
  · exact L
  · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
    simp [D] at evenmore
    simp [N] at evenmore
    exfalso
    omega' uses '⊢'!
warning: BanachTarski/Sato.lean:681:12: 'simp [header] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:681:12: Try this:
  [apply] simp only [List.head?_drop, Option.mem_def] at lhs
info: BanachTarski/Sato.lean:684:12: 'rw [sm] at lhs' uses 'lhs'!
warning: BanachTarski/Sato.lean:685:12: 'simp [D]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:685:12: Try this:
  [apply] simp only [List.head?_drop, Option.mem_def]
info: BanachTarski/Sato.lean:687:12: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:685:12: 'simp [D]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:685:12: Try this:
  [apply] simp only [List.head?_drop, Option.mem_def]
info: BanachTarski/Sato.lean:688:12: 'right' uses '⊢'!
warning: BanachTarski/Sato.lean:685:12: 'simp [D]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:685:12: Try this:
  [apply] simp only [List.head?_drop, Option.mem_def]
info: BanachTarski/Sato.lean:689:12: 'rw [sm2]' uses '⊢'!
warning: BanachTarski/Sato.lean:681:12: 'simp [header] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:681:12: Try this:
  [apply] simp only [List.head?_drop, Option.mem_def] at lhs
info: BanachTarski/Sato.lean:690:12: 'have more0 : _ := Option.getD_eq_iff.mp lhs' uses 'lhs'!
warning: BanachTarski/Sato.lean:685:12: 'simp [D]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:685:12: Try this:
  [apply] simp only [List.head?_drop, Option.mem_def]
info: BanachTarski/Sato.lean:691:12: 'rcases more0 with L | R' uses '⊢'!
warning: BanachTarski/Sato.lean:685:12: 'simp [D]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:685:12: Try this:
  [apply] simp only [List.head?_drop, Option.mem_def]
info: BanachTarski/Sato.lean:692:14: 'exact L' uses '⊢'!
warning: BanachTarski/Sato.lean:685:12: 'simp [D]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:685:12: Try this:
  [apply] simp only [List.head?_drop, Option.mem_def]
info: BanachTarski/Sato.lean:696:14: 'exfalso' uses '⊢'!
warning: BanachTarski/Sato.lean:658:10: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:699:10: 'rw [more]' uses '⊢'!
warning: BanachTarski/Sato.lean:702:8: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:703:8: 'rw [mod_lemma_Z]' uses '⊢'!
warning: BanachTarski/Sato.lean:702:8: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:704:8: 'rw [lem]' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:707:6: 'rw [red]' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:708:6: 'exact l1 m7prev prev_lem' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:710:8: 'intro lhs' uses '⊢'!
warning: BanachTarski/Sato.lean:714:8: 'simp [Invariant] at ih' is a flexible tactic modifying 'ih'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:716:8: 'have ihtrig := ih (by linarith [i_le_N])' uses 'ih'!
warning: BanachTarski/Sato.lean:713:8: 'simp [h_prev] at lim1' is a flexible tactic modifying 'lim1'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:717:8: 'have prev_lem0 : m7prev ∈ Vs ∪ Vt ∪ Vsinv := by
  simp [m7prev]
  rcases (wopts h_prev) with a | b | c | d
  · left
    left
    exact ihtrig.left a
  · simp [h_prev] at b
    right
    exact ihtrig.right.right.right b
  · simp [h_prev] at c
    left
    right
    exact ihtrig.right.left c
  · simp [h_prev] at d
    absurd lim1 d
    trivial' uses 'lim1'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:717:8: 'have prev_lem0 : m7prev ∈ Vs ∪ Vt ∪ Vsinv := by
  simp [m7prev]
  rcases (wopts h_prev) with a | b | c | d
  · left
    left
    exact ihtrig.left a
  · simp [h_prev] at b
    right
    exact ihtrig.right.right.right b
  · simp [h_prev] at c
    left
    right
    exact ihtrig.right.left c
  · simp [h_prev] at d
    absurd lim1 d
    trivial' uses '⊢'!
warning: BanachTarski/Sato.lean:718:10: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:718:10: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:719:10: 'rcases (wopts h_prev) with a | b | c | d' uses '⊢'!
warning: BanachTarski/Sato.lean:718:10: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:718:10: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:720:12: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:718:10: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:718:10: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:721:12: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:718:10: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:718:10: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:722:12: 'exact ihtrig.left a' uses '⊢'!
warning: BanachTarski/Sato.lean:718:10: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:718:10: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:724:12: 'right' uses '⊢'!
warning: BanachTarski/Sato.lean:718:10: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:718:10: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:725:12: 'exact ihtrig.right.right.right b' uses '⊢'!
warning: BanachTarski/Sato.lean:723:12: 'simp [h_prev] at b' is a flexible tactic modifying 'b'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:725:12: 'exact ihtrig.right.right.right b' uses 'b'!
warning: BanachTarski/Sato.lean:718:10: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:718:10: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:727:12: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:718:10: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:718:10: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:728:12: 'right' uses '⊢'!
warning: BanachTarski/Sato.lean:726:12: 'simp [h_prev] at c' is a flexible tactic modifying 'c'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:729:12: 'exact ihtrig.right.left c' uses 'c'!
warning: BanachTarski/Sato.lean:718:10: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:718:10: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:729:12: 'exact ihtrig.right.left c' uses '⊢'!
warning: BanachTarski/Sato.lean:730:12: 'simp [h_prev] at d' is a flexible tactic modifying 'd'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:731:12: 'absurd lim1 d' uses 'd'!
warning: BanachTarski/Sato.lean:718:10: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:718:10: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:731:12: 'absurd lim1 d' uses '⊢'!
warning: BanachTarski/Sato.lean:718:10: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:718:10: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:732:12: 'trivial' uses '⊢'!
warning: BanachTarski/Sato.lean:713:8: 'simp [h_prev] at lim1' is a flexible tactic modifying 'lim1'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:735:8: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_t_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_t_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_t_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D tp_list with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [DD]
      simp [D]
      simp [tplist_def]
      right
      right
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses 'lim1'!
warning: BanachTarski/Sato.lean:714:8: 'simp [Invariant] at ih' is a flexible tactic modifying 'ih'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:735:8: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_t_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_t_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_t_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D tp_list with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [DD]
      simp [D]
      simp [tplist_def]
      right
      right
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses 'ih'!
warning: BanachTarski/Sato.lean:549:4: 'simp at h' is a flexible tactic modifying 'h'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:735:8: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_t_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_t_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_t_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D tp_list with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [DD]
      simp [D]
      simp [tplist_def]
      right
      right
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses 'h'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:735:8: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_t_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_t_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_t_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D tp_list with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [DD]
      simp [D]
      simp [tplist_def]
      right
      right
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses '⊢'!
warning: BanachTarski/Sato.lean:738:12: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:739:12: 'rw [← tplist_def]' uses '⊢'!
warning: BanachTarski/Sato.lean:738:12: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:745:12: 'set D := Nat.pred (N - 1 - i) with ddef' uses '⊢'!
warning: BanachTarski/Sato.lean:738:12: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:749:12: 'rw [pD2, lemm1]' uses '⊢'!
warning: BanachTarski/Sato.lean:738:12: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:751:12: 'have more : (List.drop D tp_list) = M_t_Z :: (List.drop (D + 1) tp_list) :=
  by
  rw [List.drop_add_one_eq_tail_drop]
  set DD := List.drop D tp_list with dddef
  apply List.eq_cons_of_mem_head?
  simp [header] at lhs
  have sm : N - (i + 1) - 1 = D := by omega
  have sm2 : N - 1 - i - 1 = D := by omega
  rw [sm] at lhs
  simp [DD]
  simp [D]
  simp [tplist_def]
  right
  right
  rw [sm2]
  have more0 : _ := Option.getD_eq_iff.mp lhs
  rcases more0 with L | R
  · exact L
  · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
    simp [D] at evenmore
    simp [N] at evenmore
    exfalso
    omega' uses '⊢'!
warning: BanachTarski/Sato.lean:755:14: 'simp [header] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:755:14: Try this:
  [apply] simp only [Option.mem_def] at lhs
info: BanachTarski/Sato.lean:758:14: 'rw [sm] at lhs' uses 'lhs'!
warning: BanachTarski/Sato.lean:759:14: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:759:14: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:762:14: 'right' uses '⊢'!
warning: BanachTarski/Sato.lean:759:14: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:759:14: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:763:14: 'right' uses '⊢'!
warning: BanachTarski/Sato.lean:759:14: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:759:14: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:764:14: 'rw [sm2]' uses '⊢'!
warning: BanachTarski/Sato.lean:755:14: 'simp [header] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:755:14: Try this:
  [apply] simp only [Option.mem_def] at lhs
info: BanachTarski/Sato.lean:765:14: 'have more0 : _ := Option.getD_eq_iff.mp lhs' uses 'lhs'!
warning: BanachTarski/Sato.lean:759:14: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:759:14: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:766:14: 'rcases more0 with L | R' uses '⊢'!
warning: BanachTarski/Sato.lean:759:14: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:759:14: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:767:16: 'exact L' uses '⊢'!
warning: BanachTarski/Sato.lean:759:14: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:759:14: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:771:16: 'exfalso' uses '⊢'!
warning: BanachTarski/Sato.lean:738:12: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:774:12: 'rw [more]' uses '⊢'!
warning: BanachTarski/Sato.lean:777:10: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:778:10: 'rw [mod_lemma_Z]' uses '⊢'!
warning: BanachTarski/Sato.lean:777:10: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:779:10: 'rw [lem]' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:782:8: 'rw [red]' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:783:8: 'exact l3 m7prev prev_lem' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:785:10: 'intro lhs' uses '⊢'!
warning: BanachTarski/Sato.lean:789:10: 'simp [Invariant] at ih' is a flexible tactic modifying 'ih'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:791:10: 'have ihtrig := ih (by linarith [i_le_N])' uses 'ih'!
warning: BanachTarski/Sato.lean:788:10: 'simp [h_prev] at lim1' is a flexible tactic modifying 'lim1'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:792:10: 'have prev_lem0 : m7prev ∈ Vs ∪ Vsinv ∪ Vtinv := by
  simp [m7prev]
  rcases (wopts h_prev) with a | b | c | d
  · left
    left
    exact ihtrig.left a
  · left
    right
    exact ihtrig.right.right.right b
  · simp [h_prev] at c
    absurd lim1 c
    trivial
  · right
    exact ihtrig.right.right.left d' uses 'lim1'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:792:10: 'have prev_lem0 : m7prev ∈ Vs ∪ Vsinv ∪ Vtinv := by
  simp [m7prev]
  rcases (wopts h_prev) with a | b | c | d
  · left
    left
    exact ihtrig.left a
  · left
    right
    exact ihtrig.right.right.right b
  · simp [h_prev] at c
    absurd lim1 c
    trivial
  · right
    exact ihtrig.right.right.left d' uses '⊢'!
warning: BanachTarski/Sato.lean:793:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:793:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:794:12: 'rcases (wopts h_prev) with a | b | c | d' uses '⊢'!
warning: BanachTarski/Sato.lean:793:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:793:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:795:14: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:793:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:793:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:796:14: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:793:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:793:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:797:14: 'exact ihtrig.left a' uses '⊢'!
warning: BanachTarski/Sato.lean:793:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:793:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:798:14: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:793:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:793:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:799:14: 'right' uses '⊢'!
warning: BanachTarski/Sato.lean:793:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:793:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:800:14: 'exact ihtrig.right.right.right b' uses '⊢'!
warning: BanachTarski/Sato.lean:793:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:793:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:802:14: 'absurd lim1 c' uses '⊢'!
warning: BanachTarski/Sato.lean:801:14: 'simp [h_prev] at c' is a flexible tactic modifying 'c'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:802:14: 'absurd lim1 c' uses 'c'!
warning: BanachTarski/Sato.lean:793:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:793:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:803:14: 'trivial' uses '⊢'!
warning: BanachTarski/Sato.lean:793:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:793:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:804:14: 'right' uses '⊢'!
warning: BanachTarski/Sato.lean:793:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:793:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:805:14: 'exact ihtrig.right.right.left d' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:811:10: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_t_i_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_t_i_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_t_i_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D tp_list with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [DD]
      simp [D]
      simp [tp_list]
      right
      left
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses '⊢'!
warning: BanachTarski/Sato.lean:789:10: 'simp [Invariant] at ih' is a flexible tactic modifying 'ih'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:811:10: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_t_i_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_t_i_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_t_i_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D tp_list with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [DD]
      simp [D]
      simp [tp_list]
      right
      left
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses 'ih'!
warning: BanachTarski/Sato.lean:788:10: 'simp [h_prev] at lim1' is a flexible tactic modifying 'lim1'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:811:10: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_t_i_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_t_i_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_t_i_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D tp_list with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [DD]
      simp [D]
      simp [tp_list]
      right
      left
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses 'lim1'!
warning: BanachTarski/Sato.lean:549:4: 'simp at h' is a flexible tactic modifying 'h'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:811:10: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_t_i_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_t_i_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_t_i_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D tp_list with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [DD]
      simp [D]
      simp [tp_list]
      right
      left
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses 'h'!
warning: BanachTarski/Sato.lean:814:14: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:815:14: 'rw [← tplist_def]' uses '⊢'!
warning: BanachTarski/Sato.lean:814:14: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:821:14: 'set D := Nat.pred (N - 1 - i) with ddef' uses '⊢'!
warning: BanachTarski/Sato.lean:814:14: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:825:14: 'rw [pD2, lemm1]' uses '⊢'!
warning: BanachTarski/Sato.lean:814:14: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:827:14: 'have more : (List.drop D tp_list) = M_t_i_Z :: (List.drop (D + 1) tp_list) :=
  by
  rw [List.drop_add_one_eq_tail_drop]
  set DD := List.drop D tp_list with dddef
  apply List.eq_cons_of_mem_head?
  simp [header] at lhs
  have sm : N - (i + 1) - 1 = D := by omega
  have sm2 : N - 1 - i - 1 = D := by omega
  rw [sm] at lhs
  simp [DD]
  simp [D]
  simp [tp_list]
  right
  left
  rw [sm2]
  have more0 : _ := Option.getD_eq_iff.mp lhs
  rcases more0 with L | R
  · exact L
  · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
    simp [D] at evenmore
    simp [N] at evenmore
    exfalso
    omega' uses '⊢'!
warning: BanachTarski/Sato.lean:831:16: 'simp [header] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:831:16: Try this:
  [apply] simp only [Option.mem_def] at lhs
info: BanachTarski/Sato.lean:834:16: 'rw [sm] at lhs' uses 'lhs'!
warning: BanachTarski/Sato.lean:835:16: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:835:16: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:838:16: 'right' uses '⊢'!
warning: BanachTarski/Sato.lean:835:16: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:835:16: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:839:16: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:835:16: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:835:16: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:840:16: 'rw [sm2]' uses '⊢'!
warning: BanachTarski/Sato.lean:831:16: 'simp [header] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:831:16: Try this:
  [apply] simp only [Option.mem_def] at lhs
info: BanachTarski/Sato.lean:841:16: 'have more0 : _ := Option.getD_eq_iff.mp lhs' uses 'lhs'!
warning: BanachTarski/Sato.lean:835:16: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:835:16: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:842:16: 'rcases more0 with L | R' uses '⊢'!
warning: BanachTarski/Sato.lean:835:16: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:835:16: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:843:18: 'exact L' uses '⊢'!
warning: BanachTarski/Sato.lean:835:16: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:835:16: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:847:18: 'exfalso' uses '⊢'!
warning: BanachTarski/Sato.lean:814:14: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:850:14: 'rw [more]' uses '⊢'!
warning: BanachTarski/Sato.lean:853:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:854:12: 'rw [mod_lemma_Z]' uses '⊢'!
warning: BanachTarski/Sato.lean:853:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:855:12: 'rw [lem]' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:858:10: 'rw [red]' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:859:10: 'exact l4 m7prev prev_lem' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:860:10: 'intro lhs' uses '⊢'!
warning: BanachTarski/Sato.lean:864:10: 'simp [Invariant] at ih' is a flexible tactic modifying 'ih'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:866:10: 'have ihtrig := ih (by linarith [i_le_N])' uses 'ih'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:867:10: 'have prev_lem0 : m7prev ∈ Vt ∪ Vsinv ∪ Vtinv := by
  simp [m7prev]
  rcases (wopts h_prev) with a | b | c | d
  · absurd lim1 a
    trivial
  · left
    right
    exact ihtrig.right.right.right b
  · left
    left
    exact ihtrig.right.left c
  · right
    exact ihtrig.right.right.left d' uses '⊢'!
warning: BanachTarski/Sato.lean:863:10: 'simp [h_prev] at lim1' is a flexible tactic modifying 'lim1'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:867:10: 'have prev_lem0 : m7prev ∈ Vt ∪ Vsinv ∪ Vtinv := by
  simp [m7prev]
  rcases (wopts h_prev) with a | b | c | d
  · absurd lim1 a
    trivial
  · left
    right
    exact ihtrig.right.right.right b
  · left
    left
    exact ihtrig.right.left c
  · right
    exact ihtrig.right.right.left d' uses 'lim1'!
warning: BanachTarski/Sato.lean:868:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:868:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:869:12: 'rcases (wopts h_prev) with a | b | c | d' uses '⊢'!
warning: BanachTarski/Sato.lean:868:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:868:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:870:14: 'absurd lim1 a' uses '⊢'!
warning: BanachTarski/Sato.lean:868:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:868:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:871:14: 'trivial' uses '⊢'!
warning: BanachTarski/Sato.lean:868:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:868:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:872:14: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:868:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:868:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:873:14: 'right' uses '⊢'!
warning: BanachTarski/Sato.lean:868:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:868:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:874:14: 'exact ihtrig.right.right.right b' uses '⊢'!
warning: BanachTarski/Sato.lean:868:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:868:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:875:14: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:868:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:868:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:876:14: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:868:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:868:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:877:14: 'exact ihtrig.right.left c' uses '⊢'!
warning: BanachTarski/Sato.lean:868:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:868:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:878:14: 'right' uses '⊢'!
warning: BanachTarski/Sato.lean:868:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:868:12: Try this:
  [apply] simp only [Set.mem_union]
info: BanachTarski/Sato.lean:879:14: 'exact ihtrig.right.right.left d' uses '⊢'!
warning: BanachTarski/Sato.lean:864:10: 'simp [Invariant] at ih' is a flexible tactic modifying 'ih'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:885:10: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_s_i_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_s_i_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_s_i_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D tp_list with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [DD]
      simp [D]
      simp [tp_list]
      left
      left
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses 'ih'!
warning: BanachTarski/Sato.lean:863:10: 'simp [h_prev] at lim1' is a flexible tactic modifying 'lim1'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:885:10: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_s_i_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_s_i_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_s_i_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D tp_list with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [DD]
      simp [D]
      simp [tp_list]
      left
      left
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses 'lim1'!
warning: BanachTarski/Sato.lean:549:4: 'simp at h' is a flexible tactic modifying 'h'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:885:10: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_s_i_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_s_i_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_s_i_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D tp_list with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [DD]
      simp [D]
      simp [tp_list]
      left
      left
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses 'h'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:885:10: 'have red : mod7_Z (Matrix.col (trunc_prod (↑i + 1)) 0) = mod7_Z (Matrix.mulVec M_s_i_Z m7prev) :=
  by
  have lem : trunc_prod (↑i + 1) = M_s_i_Z * trunc_prod ↑i :=
    by
    simp [trunc_prod]
    rw [← tplist_def]
    have lemm1 : N - 1 - i = Nat.succ (Nat.pred (N - 1 - i)) :=
      by
      have int0 : N - 1 - i ≠ 0 := by omega
      exact (Nat.succ_pred_eq_of_ne_zero int0).symm
    set D := Nat.pred (N - 1 - i) with ddef
    have pD2 : N - 1 - (i + 1) = D := by
      simp [D]
      omega
    rw [pD2, lemm1]
    have more : (List.drop D tp_list) = M_s_i_Z :: (List.drop (D + 1) tp_list) :=
      by
      rw [List.drop_add_one_eq_tail_drop]
      set DD := List.drop D tp_list with dddef
      apply List.eq_cons_of_mem_head?
      simp [header] at lhs
      have sm : N - (i + 1) - 1 = D := by omega
      have sm2 : N - 1 - i - 1 = D := by omega
      rw [sm] at lhs
      simp [DD]
      simp [D]
      simp [tp_list]
      left
      left
      rw [sm2]
      have more0 : _ := Option.getD_eq_iff.mp lhs
      rcases more0 with L | R
      · exact L
      · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
        simp [D] at evenmore
        simp [N] at evenmore
        exfalso
        omega
    rw [more]
    rfl
  simp [m7prev]
  rw [mod_lemma_Z]
  rw [lem]
  rfl' uses '⊢'!
warning: BanachTarski/Sato.lean:888:14: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:889:14: 'rw [← tplist_def]' uses '⊢'!
warning: BanachTarski/Sato.lean:888:14: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:895:14: 'set D := Nat.pred (N - 1 - i) with ddef' uses '⊢'!
warning: BanachTarski/Sato.lean:888:14: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:899:14: 'rw [pD2, lemm1]' uses '⊢'!
warning: BanachTarski/Sato.lean:888:14: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:901:14: 'have more : (List.drop D tp_list) = M_s_i_Z :: (List.drop (D + 1) tp_list) :=
  by
  rw [List.drop_add_one_eq_tail_drop]
  set DD := List.drop D tp_list with dddef
  apply List.eq_cons_of_mem_head?
  simp [header] at lhs
  have sm : N - (i + 1) - 1 = D := by omega
  have sm2 : N - 1 - i - 1 = D := by omega
  rw [sm] at lhs
  simp [DD]
  simp [D]
  simp [tp_list]
  left
  left
  rw [sm2]
  have more0 : _ := Option.getD_eq_iff.mp lhs
  rcases more0 with L | R
  · exact L
  · have evenmore : _ := List.getElem?_eq_none_iff.mp R.left
    simp [D] at evenmore
    simp [N] at evenmore
    exfalso
    omega' uses '⊢'!
warning: BanachTarski/Sato.lean:905:16: 'simp [header] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:905:16: Try this:
  [apply] simp only [Option.mem_def] at lhs
info: BanachTarski/Sato.lean:908:16: 'rw [sm] at lhs' uses 'lhs'!
warning: BanachTarski/Sato.lean:909:16: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:909:16: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:912:16: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:909:16: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:909:16: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:913:16: 'left' uses '⊢'!
warning: BanachTarski/Sato.lean:909:16: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:909:16: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:914:16: 'rw [sm2]' uses '⊢'!
warning: BanachTarski/Sato.lean:905:16: 'simp [header] at lhs' is a flexible tactic modifying 'lhs'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:905:16: Try this:
  [apply] simp only [Option.mem_def] at lhs
info: BanachTarski/Sato.lean:915:16: 'have more0 : _ := Option.getD_eq_iff.mp lhs' uses 'lhs'!
warning: BanachTarski/Sato.lean:909:16: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:909:16: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:916:16: 'rcases more0 with L | R' uses '⊢'!
warning: BanachTarski/Sato.lean:909:16: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:909:16: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:917:18: 'exact L' uses '⊢'!
warning: BanachTarski/Sato.lean:909:16: 'simp [DD]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:909:16: Try this:
  [apply] simp only [Option.mem_def]
info: BanachTarski/Sato.lean:921:18: 'exfalso' uses '⊢'!
warning: BanachTarski/Sato.lean:888:14: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:924:14: 'rw [more]' uses '⊢'!
warning: BanachTarski/Sato.lean:927:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:928:12: 'rw [mod_lemma_Z]' uses '⊢'!
warning: BanachTarski/Sato.lean:927:12: 'simp [m7prev]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:929:12: 'rw [lem]' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:932:10: 'rw [red]' uses '⊢'!
warning: BanachTarski/Sato.lean:546:4: 'simp [Invariant]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:933:10: 'exact l2 m7prev prev_lem' uses '⊢'!
warning: BanachTarski/Sato.lean:946:4: 'simp [pre_prod_MAT]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:947:4: 'exact N_def.symm' uses '⊢'!
warning: BanachTarski/Sato.lean:953:6: 'simp [to_sato]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:954:6: 'rw [a2_eq_mk_w2]' uses '⊢'!
warning: BanachTarski/Sato.lean:953:6: 'simp [to_sato]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:955:6: 'exact FreeGroup.lift_mk' uses '⊢'!
warning: BanachTarski/Sato.lean:958:4: 'simp [case_image_is_my_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:960:4: 'apply congrArg List.prod' uses '⊢'!
warning: BanachTarski/Sato.lean:958:4: 'simp [case_image_is_my_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:965:6: 'intro lhs' uses '⊢'!
warning: BanachTarski/Sato.lean:958:4: 'simp [case_image_is_my_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:966:6: 'exact (so3_invs_coe s_op_n).symm' uses '⊢'!
warning: BanachTarski/Sato.lean:958:4: 'simp [case_image_is_my_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:967:4: 'intro lhs' uses '⊢'!
warning: BanachTarski/Sato.lean:958:4: 'simp [case_image_is_my_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:968:4: 'exact (so3_invs_coe t_op_n).symm' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:974:4: 'rw [to_MAT_prod]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:981:4: 'rw [inter]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:984:4: 'apply congrArg List.prod' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:990:6: 'intro _' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:991:6: 'rw [← mul_one (to_MAT M_s_i_Z)]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:992:6: 'have xyz : (1 : MAT) = (s_op_n : MAT) * (s_op_n : MAT)⁻¹ :=
  by
  rw [so3_invs_coe s_op_n]
  have cm : s_op_n.val * s_op_n⁻¹.val = (s_op_n * s_op_n⁻¹).val := rfl
  rw [cm]
  simp' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:998:6: 'rw [xyz]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:999:6: 'rw [← mul_assoc]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1000:6: 'apply congrArg (fun M ↦ M * (s_op_n : MAT)⁻¹)' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1001:6: 'rw [← msi_def]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1004:6: 'rw [msinv_lem]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1006:6: 'rw [← Matrix.diagonal_smul]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1007:6: 'apply congrArg' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1008:6: 'ext x' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1011:6: 'intro _' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1012:6: 'rw [← mul_one (to_MAT M_s_Z)]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1013:6: 'have xyz : (1 : MAT) = (s_op_n : MAT)⁻¹ * (s_op_n : MAT) :=
  by
  rw [so3_invs_coe s_op_n]
  have cm : (s_op_n⁻¹).val * s_op_n.val = (s_op_n⁻¹ * s_op_n).val := rfl
  rw [cm]
  simp' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1019:6: 'rw [xyz]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1020:6: 'rw [← mul_assoc]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1021:6: 'apply congrArg (fun M ↦ M * (s_op_n : MAT))' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1022:6: 'rw [← ms_def]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1023:6: 'rw [so3_invs_coe s_op_n]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1024:6: 'rw [← s_i_op_n_def]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1025:6: 'rw [s_i_op_n_equiv]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1027:6: 'rw [msinv_lem2]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1029:6: 'rw [← Matrix.diagonal_smul]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1030:6: 'apply congrArg' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1031:6: 'ext x' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1035:6: 'intro _' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1036:6: 'rw [← mul_one (to_MAT M_t_i_Z)]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1037:6: 'have xyz : (1 : MAT) = (t_op_n : MAT) * (t_op_n : MAT)⁻¹ :=
  by
  rw [so3_invs_coe t_op_n]
  have cm : t_op_n.val * t_op_n⁻¹.val = (t_op_n * t_op_n⁻¹).val := rfl
  rw [cm]
  simp' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1043:6: 'rw [xyz]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1044:6: 'rw [← mul_assoc]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1045:6: 'apply congrArg (fun M ↦ M * (t_op_n⁻¹ : MAT))' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1046:6: 'rw [← mti_def]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1049:6: 'rw [mtinv_lem]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1051:6: 'rw [← Matrix.diagonal_smul]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1052:6: 'apply congrArg' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1053:6: 'ext x' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1056:6: 'intro _' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1057:6: 'rw [← mul_one (to_MAT M_t_Z)]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1058:6: 'have xyz : (1 : MAT) = (t_op_n : MAT)⁻¹ * (t_op_n : MAT) :=
  by
  rw [so3_invs_coe t_op_n]
  have cm : t_op_n⁻¹.val * t_op_n.val = (t_op_n⁻¹ * t_op_n).val := rfl
  rw [cm]
  simp' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1064:6: 'rw [xyz]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1065:6: 'rw [← mul_assoc]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1066:6: 'apply congrArg (fun M ↦ M * (t_op_n : MAT))' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1067:6: 'rw [← mt_def]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1068:6: 'rw [so3_invs_coe t_op_n]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1069:6: 'rw [← t_i_op_n_def]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1070:6: 'rw [t_i_op_n_equiv]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1072:6: 'rw [mtinv_lem2]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1074:6: 'rw [← Matrix.diagonal_smul]' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1075:6: 'apply congrArg' uses '⊢'!
warning: BanachTarski/Sato.lean:973:4: 'simp [trunc_prod]' is a flexible tactic modifying '⊢'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1076:6: 'ext x' uses '⊢'!
warning: BanachTarski/Sato.lean:1088:4: 'simp at equal_prods' is a flexible tactic modifying 'equal_prods'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1089:4: 'have weird1 : sev_mat ^ N = to_MAT (trunc_prod (N - 1)) := by exact equal_prods' uses 'equal_prods'!
warning: BanachTarski/Sato.lean:1103:8: 'simp [Vs] at bad1' is a flexible tactic modifying 'bad1'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1104:10: 'rcases bad1 with b1 | b2 | b3' uses 'bad1'!
warning: BanachTarski/Sato.lean:1114:8: 'simp [Vsinv] at bad2' is a flexible tactic modifying 'bad2'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1115:10: 'rcases bad2 with b1 | b2 | b3' uses 'bad2'!
warning: BanachTarski/Sato.lean:1125:8: 'simp [Vt] at bad3' is a flexible tactic modifying 'bad3'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1126:10: 'rcases bad3 with b1 | b2 | b3' uses 'bad3'!
warning: BanachTarski/Sato.lean:1136:8: 'simp [Vtinv] at bad4' is a flexible tactic modifying 'bad4'. Try 'simp?' and use the suggested 'simp only [...]'. Alternatively, use `suffices` to explicitly state the simplified form.

Note: This linter can be disabled with `set_option linter.flexible false`
info: BanachTarski/Sato.lean:1137:10: 'rcases bad4 with b1 | b2 | b3' uses 'bad4'!
warning: BanachTarski/Sato.lean:556:6: Try this: intro lhs bad
Some required targets logged failures:
- BanachTarski.Rot
- BanachTarski.FixedPointLemma
error: build failed

📋 View full command log (YAML)

← Back to Summary