linear_algebra.affine_space.finite_dimensional
⟷
Mathlib.LinearAlgebra.AffineSpace.FiniteDimensional
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -98,7 +98,7 @@ theorem finite_of_fin_dim_affineIndependent [FiniteDimensional k V] {p : ι →
(hi : AffineIndependent k p) : Finite ι :=
by
nontriviality ι; inhabit ι
- rw [affineIndependent_iff_linearIndependent_vsub k p default] at hi
+ rw [affineIndependent_iff_linearIndependent_vsub k p default] at hi
letI : IsNoetherian k V := IsNoetherian.iff_fg.2 inferInstance
exact
(Set.finite_singleton default).finite_of_compl (Set.finite_coe_iff.1 hi.finite_of_is_noetherian)
@@ -131,7 +131,7 @@ theorem AffineIndependent.finrank_vectorSpan_image_finset {p : ι → P} (hi : A
have hp₁' : p₁ ∈ p '' s := by simpa using hp₁
rw [affineIndependent_set_iff_linearIndependent_vsub k hp₁', ← Finset.coe_singleton, ←
Finset.coe_image, ← Finset.coe_sdiff, Finset.sdiff_singleton_eq_erase, ← Finset.coe_image] at
- hi'
+ hi'
have hc : (Finset.image (fun p : P => p -ᵥ p₁) ((Finset.image p s).eraseₓ p₁)).card = n :=
by
rw [Finset.card_image_of_injective _ (vsub_left_injective _), Finset.card_erase_of_mem hp₁]
@@ -146,7 +146,7 @@ dimension one less than its cardinality. -/
theorem AffineIndependent.finrank_vectorSpan [Fintype ι] {p : ι → P} (hi : AffineIndependent k p)
{n : ℕ} (hc : Fintype.card ι = n + 1) : finrank k (vectorSpan k (Set.range p)) = n :=
by
- rw [← Finset.card_univ] at hc
+ rw [← Finset.card_univ] at hc
rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image]
exact hi.finrank_vector_span_image_finset hc
#align affine_independent.finrank_vector_span AffineIndependent.finrank_vectorSpan
@@ -189,7 +189,7 @@ theorem finrank_vectorSpan_range_le [Fintype ι] (p : ι → P) {n : ℕ} (hc :
finrank k (vectorSpan k (Set.range p)) ≤ n :=
by
rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image]
- rw [← Finset.card_univ] at hc
+ rw [← Finset.card_univ] at hc
exact finrank_vectorSpan_image_finset_le _ _ _ hc
#align finrank_vector_span_range_le finrank_vectorSpan_range_le
-/
@@ -207,7 +207,7 @@ theorem affineIndependent_iff_finrank_vectorSpan_eq [Fintype ι] (p : ι → P)
linearIndependent_iff_card_eq_finrank_span, eq_comm,
vectorSpan_range_eq_span_range_vsub_right_ne k p i₁]
congr
- rw [← Finset.card_univ] at hc
+ rw [← Finset.card_univ] at hc
rw [Fintype.subtype_card]
simp [Finset.filter_ne', Finset.card_erase_of_mem, hc]
#align affine_independent_iff_finrank_vector_span_eq affineIndependent_iff_finrank_vectorSpan_eq
@@ -300,7 +300,7 @@ theorem AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one [Fintyp
(hle : affineSpan k (Set.range p) ≤ sp) (hc : Fintype.card ι = finrank k sp.direction + 1) :
affineSpan k (Set.range p) = sp :=
by
- rw [← Finset.card_univ] at hc
+ rw [← Finset.card_univ] at hc
rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image] at hle ⊢
exact hi.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one hle hc
#align affine_independent.affine_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one
@@ -321,7 +321,7 @@ theorem AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one [FiniteD
rw [hn, ← finrank_top, ← (vector_span_eq_top_of_affine_span_eq_top k V P) h_tot, ←
hi.finrank_vector_span hn]
· intro hc
- rw [← finrank_top, ← direction_top k V P] at hc
+ rw [← finrank_top, ← direction_top k V P] at hc
exact hi.affine_span_eq_of_le_of_card_eq_finrank_add_one le_top hc
#align affine_independent.affine_span_eq_top_iff_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one
-/
@@ -342,7 +342,7 @@ instance finiteDimensional_vectorSpan_insert (s : AffineSubspace k P)
by
rw [← direction_affineSpan, ← affineSpan_insert_affineSpan]
rcases(s : Set P).eq_empty_or_nonempty with (hs | ⟨p₀, hp₀⟩)
- · rw [coe_eq_bot_iff] at hs
+ · rw [coe_eq_bot_iff] at hs
rw [hs, bot_coe, span_empty, bot_coe, direction_affineSpan]
convert finiteDimensional_bot _ _ <;> simp
· rw [affine_span_coe, direction_affine_span_insert hp₀]
@@ -401,7 +401,7 @@ theorem collinear_iff_finrank_le_one {s : Set P} [FiniteDimensional k (vectorSpa
Collinear k s ↔ finrank k (vectorSpan k s) ≤ 1 :=
by
have h := collinear_iff_rank_le_one k s
- rw [← finrank_eq_rank] at h
+ rw [← finrank_eq_rank] at h
exact_mod_cast h
#align collinear_iff_finrank_le_one collinear_iff_finrank_le_one
-/
@@ -481,13 +481,13 @@ theorem collinear_iff_of_mem {s : Set P} {p₀ : P} (h : p₀ ∈ s) :
rw [vectorSpan_eq_span_vsub_set_right k h, Submodule.span_le, Set.subset_def]
intro x hx
rw [SetLike.mem_coe, Submodule.mem_span_singleton]
- rw [Set.mem_image] at hx
+ rw [Set.mem_image] at hx
rcases hx with ⟨p, hp, rfl⟩
rcases hp₀v p hp with ⟨r, rfl⟩
use r
simp
have hw' := SetLike.le_def.1 hs hw
- rwa [Submodule.mem_span_singleton] at hw'
+ rwa [Submodule.mem_span_singleton] at hw'
#align collinear_iff_of_mem collinear_iff_of_mem
-/
@@ -522,7 +522,7 @@ theorem collinear_pair (p₁ p₂ : P) : Collinear k ({p₁, p₂} : Set P) :=
rw [collinear_iff_exists_forall_eq_smul_vadd]
use p₁, p₂ -ᵥ p₁
intro p hp
- rw [Set.mem_insert_iff, Set.mem_singleton_iff] at hp
+ rw [Set.mem_insert_iff, Set.mem_singleton_iff] at hp
cases hp
· use 0
simp [hp]
@@ -617,7 +617,7 @@ that set. -/
theorem Collinear.mem_affineSpan_of_mem_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂ p₃ : P}
(hp₁ : p₁ ∈ s) (hp₂ : p₂ ∈ s) (hp₃ : p₃ ∈ s) (hp₁p₂ : p₁ ≠ p₂) : p₃ ∈ line[k, p₁, p₂] :=
by
- rw [collinear_iff_of_mem hp₁] at h
+ rw [collinear_iff_of_mem hp₁] at h
rcases h with ⟨v, h⟩
rcases h p₂ hp₂ with ⟨r₂, rfl⟩
rcases h p₃ hp₃ with ⟨r₃, rfl⟩
@@ -759,7 +759,7 @@ theorem coplanar_iff_finrank_le_two {s : Set P} [FiniteDimensional k (vectorSpan
Coplanar k s ↔ finrank k (vectorSpan k s) ≤ 2 :=
by
have h : Coplanar k s ↔ Module.rank k (vectorSpan k s) ≤ 2 := Iff.rfl
- rw [← finrank_eq_rank] at h
+ rw [← finrank_eq_rank] at h
exact_mod_cast h
#align coplanar_iff_finrank_le_two coplanar_iff_finrank_le_two
-/
@@ -845,7 +845,7 @@ theorem finrank_vectorSpan_insert_le (s : AffineSubspace k P) (p : P) :
haveI := hf
rw [← direction_affineSpan, ← affineSpan_insert_affineSpan]
rcases(s : Set P).eq_empty_or_nonempty with (hs | ⟨p₀, hp₀⟩)
- · rw [coe_eq_bot_iff] at hs
+ · rw [coe_eq_bot_iff] at hs
rw [hs, bot_coe, span_empty, bot_coe, direction_affineSpan, direction_bot, finrank_bot,
zero_add]
convert zero_le_one' ℕ
@@ -855,7 +855,7 @@ theorem finrank_vectorSpan_insert_le (s : AffineSubspace k P) (p : P) :
refine' (Submodule.finrank_add_le_finrank_add_finrank _ _).trans (add_le_add_right _ _)
refine' finrank_le_one ⟨p -ᵥ p₀, Submodule.mem_span_singleton_self _⟩ fun v => _
have h := v.property
- rw [Submodule.mem_span_singleton] at h
+ rw [Submodule.mem_span_singleton] at h
rcases h with ⟨c, hc⟩
refine' ⟨c, _⟩
ext
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -171,7 +171,7 @@ dimension at most `n`. -/
theorem finrank_vectorSpan_image_finset_le (p : ι → P) (s : Finset ι) {n : ℕ}
(hc : Finset.card s = n + 1) : finrank k (vectorSpan k (s.image p : Set P)) ≤ n :=
by
- have hn : (s.image p).Nonempty := by rw [Finset.Nonempty.image_iff, ← Finset.card_pos, hc];
+ have hn : (s.image p).Nonempty := by rw [Finset.image_nonempty, ← Finset.card_pos, hc];
apply Nat.succ_pos
rcases hn with ⟨p₁, hp₁⟩
rw [vectorSpan_eq_span_vsub_finset_right_ne k hp₁]
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2020 Joseph Myers. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Myers
-/
-import Mathbin.LinearAlgebra.AffineSpace.Basis
-import Mathbin.LinearAlgebra.FiniteDimensional
+import LinearAlgebra.AffineSpace.Basis
+import LinearAlgebra.FiniteDimensional
#align_import linear_algebra.affine_space.finite_dimensional from "leanprover-community/mathlib"@"fe8d0ff42c3c24d789f491dc2622b6cac3d61564"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -406,7 +406,7 @@ theorem collinear_iff_finrank_le_one {s : Set P} [FiniteDimensional k (vectorSpa
#align collinear_iff_finrank_le_one collinear_iff_finrank_le_one
-/
-alias collinear_iff_finrank_le_one ↔ Collinear.finrank_le_one _
+alias ⟨Collinear.finrank_le_one, _⟩ := collinear_iff_finrank_le_one
#align collinear.finrank_le_one Collinear.finrank_le_one
#print Collinear.subset /-
@@ -764,7 +764,7 @@ theorem coplanar_iff_finrank_le_two {s : Set P} [FiniteDimensional k (vectorSpan
#align coplanar_iff_finrank_le_two coplanar_iff_finrank_le_two
-/
-alias coplanar_iff_finrank_le_two ↔ Coplanar.finrank_le_two _
+alias ⟨Coplanar.finrank_le_two, _⟩ := coplanar_iff_finrank_le_two
#align coplanar.finrank_le_two Coplanar.finrank_le_two
#print Coplanar.subset /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2020 Joseph Myers. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Myers
-
-! This file was ported from Lean 3 source module linear_algebra.affine_space.finite_dimensional
-! leanprover-community/mathlib commit fe8d0ff42c3c24d789f491dc2622b6cac3d61564
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.LinearAlgebra.AffineSpace.Basis
import Mathbin.LinearAlgebra.FiniteDimensional
+#align_import linear_algebra.affine_space.finite_dimensional from "leanprover-community/mathlib"@"fe8d0ff42c3c24d789f491dc2622b6cac3d61564"
+
/-!
# Finite-dimensional subspaces of affine spaces.
mathlib commit https://github.com/leanprover-community/mathlib/commit/8b981918a93bc45a8600de608cde7944a80d92b9
@@ -638,7 +638,7 @@ theorem Collinear.mem_affineSpan_of_mem_of_ne {s : Set P} (h : Collinear k s) {p
span of the whole set. -/
theorem Collinear.affineSpan_eq_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂ : P} (hp₁ : p₁ ∈ s)
(hp₂ : p₂ ∈ s) (hp₁p₂ : p₁ ≠ p₂) : line[k, p₁, p₂] = affineSpan k s :=
- le_antisymm (affineSpan_mono _ (Set.insert_subset.2 ⟨hp₁, Set.singleton_subset_iff.2 hp₂⟩))
+ le_antisymm (affineSpan_mono _ (Set.insert_subset_iff.2 ⟨hp₁, Set.singleton_subset_iff.2 hp₂⟩))
(affineSpan_le.2 fun p hp => h.mem_affineSpan_of_mem_of_ne hp₁ hp₂ hp hp₁p₂)
#align collinear.affine_span_eq_of_ne Collinear.affineSpan_eq_of_ne
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -38,17 +38,17 @@ variable (k : Type _) {V : Type _} {P : Type _}
variable {ι : Type _}
-include V
-
open AffineSubspace FiniteDimensional Module
variable [DivisionRing k] [AddCommGroup V] [Module k V] [affine_space V P]
+#print finiteDimensional_vectorSpan_of_finite /-
/-- The `vector_span` of a finite set is finite-dimensional. -/
theorem finiteDimensional_vectorSpan_of_finite {s : Set P} (h : Set.Finite s) :
FiniteDimensional k (vectorSpan k s) :=
span_of_finite k <| h.vsub h
#align finite_dimensional_vector_span_of_finite finiteDimensional_vectorSpan_of_finite
+-/
#print finiteDimensional_vectorSpan_range /-
/-- The `vector_span` of a family indexed by a `fintype` is
@@ -68,12 +68,14 @@ instance finiteDimensional_vectorSpan_image_of_finite [Finite ι] (p : ι → P)
#align finite_dimensional_vector_span_image_of_finite finiteDimensional_vectorSpan_image_of_finite
-/
+#print finiteDimensional_direction_affineSpan_of_finite /-
/-- The direction of the affine span of a finite set is
finite-dimensional. -/
theorem finiteDimensional_direction_affineSpan_of_finite {s : Set P} (h : Set.Finite s) :
FiniteDimensional k (affineSpan k s).direction :=
(direction_affineSpan k s).symm ▸ finiteDimensional_vectorSpan_of_finite k h
#align finite_dimensional_direction_affine_span_of_finite finiteDimensional_direction_affineSpan_of_finite
+-/
#print finiteDimensional_direction_affineSpan_range /-
/-- The direction of the affine span of a family indexed by a
@@ -93,6 +95,7 @@ instance finiteDimensional_direction_affineSpan_image_of_finite [Finite ι] (p :
#align finite_dimensional_direction_affine_span_image_of_finite finiteDimensional_direction_affineSpan_image_of_finite
-/
+#print finite_of_fin_dim_affineIndependent /-
/-- An affine-independent family of points in a finite-dimensional affine space is finite. -/
theorem finite_of_fin_dim_affineIndependent [FiniteDimensional k V] {p : ι → P}
(hi : AffineIndependent k p) : Finite ι :=
@@ -103,17 +106,21 @@ theorem finite_of_fin_dim_affineIndependent [FiniteDimensional k V] {p : ι →
exact
(Set.finite_singleton default).finite_of_compl (Set.finite_coe_iff.1 hi.finite_of_is_noetherian)
#align finite_of_fin_dim_affine_independent finite_of_fin_dim_affineIndependent
+-/
+#print finite_set_of_fin_dim_affineIndependent /-
/-- An affine-independent subset of a finite-dimensional affine space is finite. -/
theorem finite_set_of_fin_dim_affineIndependent [FiniteDimensional k V] {s : Set ι} {f : s → P}
(hi : AffineIndependent k f) : s.Finite :=
@Set.toFinite _ s (finite_of_fin_dim_affineIndependent k hi)
#align finite_set_of_fin_dim_affine_independent finite_set_of_fin_dim_affineIndependent
+-/
open scoped Classical
variable {k}
+#print AffineIndependent.finrank_vectorSpan_image_finset /-
/-- The `vector_span` of a finite subset of an affinely independent
family has dimension one less than its cardinality. -/
theorem AffineIndependent.finrank_vectorSpan_image_finset {p : ι → P} (hi : AffineIndependent k p)
@@ -134,7 +141,9 @@ theorem AffineIndependent.finrank_vectorSpan_image_finset {p : ι → P} (hi : A
exact Nat.pred_eq_of_eq_succ hc'
rwa [vectorSpan_eq_span_vsub_finset_right_ne k hp₁, finrank_span_finset_eq_card, hc]
#align affine_independent.finrank_vector_span_image_finset AffineIndependent.finrank_vectorSpan_image_finset
+-/
+#print AffineIndependent.finrank_vectorSpan /-
/-- The `vector_span` of a finite affinely independent family has
dimension one less than its cardinality. -/
theorem AffineIndependent.finrank_vectorSpan [Fintype ι] {p : ι → P} (hi : AffineIndependent k p)
@@ -144,7 +153,9 @@ theorem AffineIndependent.finrank_vectorSpan [Fintype ι] {p : ι → P} (hi : A
rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image]
exact hi.finrank_vector_span_image_finset hc
#align affine_independent.finrank_vector_span AffineIndependent.finrank_vectorSpan
+-/
+#print AffineIndependent.vectorSpan_eq_top_of_card_eq_finrank_add_one /-
/-- The `vector_span` of a finite affinely independent family whose
cardinality is one more than that of the finite-dimensional space is
`⊤`. -/
@@ -153,9 +164,11 @@ theorem AffineIndependent.vectorSpan_eq_top_of_card_eq_finrank_add_one [FiniteDi
vectorSpan k (Set.range p) = ⊤ :=
eq_top_of_finrank_eq <| hi.finrank_vectorSpan hc
#align affine_independent.vector_span_eq_top_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_eq_top_of_card_eq_finrank_add_one
+-/
variable (k)
+#print finrank_vectorSpan_image_finset_le /-
/-- The `vector_span` of `n + 1` points in an indexed family has
dimension at most `n`. -/
theorem finrank_vectorSpan_image_finset_le (p : ι → P) (s : Finset ι) {n : ℕ}
@@ -170,7 +183,9 @@ theorem finrank_vectorSpan_image_finset_le (p : ι → P) (s : Finset ι) {n :
tsub_le_iff_right, ← hc]
apply Finset.card_image_le
#align finrank_vector_span_image_finset_le finrank_vectorSpan_image_finset_le
+-/
+#print finrank_vectorSpan_range_le /-
/-- The `vector_span` of an indexed family of `n + 1` points has
dimension at most `n`. -/
theorem finrank_vectorSpan_range_le [Fintype ι] (p : ι → P) {n : ℕ} (hc : Fintype.card ι = n + 1) :
@@ -180,7 +195,9 @@ theorem finrank_vectorSpan_range_le [Fintype ι] (p : ι → P) {n : ℕ} (hc :
rw [← Finset.card_univ] at hc
exact finrank_vectorSpan_image_finset_le _ _ _ hc
#align finrank_vector_span_range_le finrank_vectorSpan_range_le
+-/
+#print affineIndependent_iff_finrank_vectorSpan_eq /-
/-- `n + 1` points are affinely independent if and only if their
`vector_span` has dimension `n`. -/
theorem affineIndependent_iff_finrank_vectorSpan_eq [Fintype ι] (p : ι → P) {n : ℕ}
@@ -197,7 +214,9 @@ theorem affineIndependent_iff_finrank_vectorSpan_eq [Fintype ι] (p : ι → P)
rw [Fintype.subtype_card]
simp [Finset.filter_ne', Finset.card_erase_of_mem, hc]
#align affine_independent_iff_finrank_vector_span_eq affineIndependent_iff_finrank_vectorSpan_eq
+-/
+#print affineIndependent_iff_le_finrank_vectorSpan /-
/-- `n + 1` points are affinely independent if and only if their
`vector_span` has dimension at least `n`. -/
theorem affineIndependent_iff_le_finrank_vectorSpan [Fintype ι] (p : ι → P) {n : ℕ}
@@ -210,7 +229,9 @@ theorem affineIndependent_iff_le_finrank_vectorSpan [Fintype ι] (p : ι → P)
rfl
· exact fun hle => le_antisymm (finrank_vectorSpan_range_le k p hc) hle
#align affine_independent_iff_le_finrank_vector_span affineIndependent_iff_le_finrank_vectorSpan
+-/
+#print affineIndependent_iff_not_finrank_vectorSpan_le /-
/-- `n + 2` points are affinely independent if and only if their
`vector_span` does not have dimension at most `n`. -/
theorem affineIndependent_iff_not_finrank_vectorSpan_le [Fintype ι] (p : ι → P) {n : ℕ}
@@ -218,7 +239,9 @@ theorem affineIndependent_iff_not_finrank_vectorSpan_le [Fintype ι] (p : ι →
AffineIndependent k p ↔ ¬finrank k (vectorSpan k (Set.range p)) ≤ n := by
rw [affineIndependent_iff_le_finrank_vectorSpan k p hc, ← Nat.lt_iff_add_one_le, lt_iff_not_ge]
#align affine_independent_iff_not_finrank_vector_span_le affineIndependent_iff_not_finrank_vectorSpan_le
+-/
+#print finrank_vectorSpan_le_iff_not_affineIndependent /-
/-- `n + 2` points have a `vector_span` with dimension at most `n` if
and only if they are not affinely independent. -/
theorem finrank_vectorSpan_le_iff_not_affineIndependent [Fintype ι] (p : ι → P) {n : ℕ}
@@ -226,9 +249,11 @@ theorem finrank_vectorSpan_le_iff_not_affineIndependent [Fintype ι] (p : ι →
finrank k (vectorSpan k (Set.range p)) ≤ n ↔ ¬AffineIndependent k p :=
(not_iff_comm.1 (affineIndependent_iff_not_finrank_vectorSpan_le k p hc).symm).symm
#align finrank_vector_span_le_iff_not_affine_independent finrank_vectorSpan_le_iff_not_affineIndependent
+-/
variable {k}
+#print AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one /-
/-- If the `vector_span` of a finite subset of an affinely independent
family lies in a submodule with dimension one less than its
cardinality, it equals that submodule. -/
@@ -238,7 +263,9 @@ theorem AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_ad
vectorSpan k (s.image p : Set P) = sm :=
eq_of_le_of_finrank_eq hle <| hi.finrank_vectorSpan_image_finset hc
#align affine_independent.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one
+-/
+#print AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_one /-
/-- If the `vector_span` of a finite affinely independent
family lies in a submodule with dimension one less than its
cardinality, it equals that submodule. -/
@@ -248,7 +275,9 @@ theorem AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_one [Fintyp
vectorSpan k (Set.range p) = sm :=
eq_of_le_of_finrank_eq hle <| hi.finrank_vectorSpan hc
#align affine_independent.vector_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_one
+-/
+#print AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one /-
/-- If the `affine_span` of a finite subset of an affinely independent
family lies in an affine subspace whose direction has dimension one
less than its cardinality, it equals that subspace. -/
@@ -263,7 +292,9 @@ theorem AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_ad
rw [direction_affineSpan] at hd ⊢
exact hi.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one hd hc
#align affine_independent.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one
+-/
+#print AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one /-
/-- If the `affine_span` of a finite affinely independent family lies
in an affine subspace whose direction has dimension one less than its
cardinality, it equals that subspace. -/
@@ -276,7 +307,9 @@ theorem AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one [Fintyp
rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image] at hle ⊢
exact hi.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one hle hc
#align affine_independent.affine_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one
+-/
+#print AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one /-
/-- The `affine_span` of a finite affinely independent family is `⊤` iff the
family's cardinality is one more than that of the finite-dimensional space. -/
theorem AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one [FiniteDimensional k V]
@@ -294,12 +327,15 @@ theorem AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one [FiniteD
rw [← finrank_top, ← direction_top k V P] at hc
exact hi.affine_span_eq_of_le_of_card_eq_finrank_add_one le_top hc
#align affine_independent.affine_span_eq_top_iff_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one
+-/
+#print Affine.Simplex.span_eq_top /-
theorem Affine.Simplex.span_eq_top [FiniteDimensional k V] {n : ℕ} (T : Affine.Simplex k V n)
(hrank : finrank k V = n) : affineSpan k (Set.range T.points) = ⊤ := by
rw [AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one T.independent,
Fintype.card_fin, hrank]
#align affine.simplex.span_eq_top Affine.Simplex.span_eq_top
+-/
#print finiteDimensional_vectorSpan_insert /-
/-- The `vector_span` of adding a point to a finite-dimensional subspace is finite-dimensional. -/
@@ -350,14 +386,17 @@ def Collinear (s : Set P) : Prop :=
#align collinear Collinear
-/
+#print collinear_iff_rank_le_one /-
/-- The definition of `collinear`. -/
theorem collinear_iff_rank_le_one (s : Set P) :
Collinear k s ↔ Module.rank k (vectorSpan k s) ≤ 1 :=
Iff.rfl
#align collinear_iff_rank_le_one collinear_iff_rank_le_one
+-/
variable {k}
+#print collinear_iff_finrank_le_one /-
/-- A set of points, whose `vector_span` is finite-dimensional, is
collinear if and only if their `vector_span` has dimension at most
`1`. -/
@@ -368,48 +407,60 @@ theorem collinear_iff_finrank_le_one {s : Set P} [FiniteDimensional k (vectorSpa
rw [← finrank_eq_rank] at h
exact_mod_cast h
#align collinear_iff_finrank_le_one collinear_iff_finrank_le_one
+-/
alias collinear_iff_finrank_le_one ↔ Collinear.finrank_le_one _
#align collinear.finrank_le_one Collinear.finrank_le_one
+#print Collinear.subset /-
/-- A subset of a collinear set is collinear. -/
theorem Collinear.subset {s₁ s₂ : Set P} (hs : s₁ ⊆ s₂) (h : Collinear k s₂) : Collinear k s₁ :=
(rank_le_of_submodule (vectorSpan k s₁) (vectorSpan k s₂) (vectorSpan_mono k hs)).trans h
#align collinear.subset Collinear.subset
+-/
+#print Collinear.finiteDimensional_vectorSpan /-
/-- The `vector_span` of collinear points is finite-dimensional. -/
theorem Collinear.finiteDimensional_vectorSpan {s : Set P} (h : Collinear k s) :
FiniteDimensional k (vectorSpan k s) :=
IsNoetherian.iff_fg.1
(IsNoetherian.iff_rank_lt_aleph0.2 (lt_of_le_of_lt h Cardinal.one_lt_aleph0))
#align collinear.finite_dimensional_vector_span Collinear.finiteDimensional_vectorSpan
+-/
+#print Collinear.finiteDimensional_direction_affineSpan /-
/-- The direction of the affine span of collinear points is finite-dimensional. -/
theorem Collinear.finiteDimensional_direction_affineSpan {s : Set P} (h : Collinear k s) :
FiniteDimensional k (affineSpan k s).direction :=
(direction_affineSpan k s).symm ▸ h.finiteDimensional_vectorSpan
#align collinear.finite_dimensional_direction_affine_span Collinear.finiteDimensional_direction_affineSpan
+-/
variable (k P)
+#print collinear_empty /-
/-- The empty set is collinear. -/
theorem collinear_empty : Collinear k (∅ : Set P) :=
by
rw [collinear_iff_rank_le_one, vectorSpan_empty]
simp
#align collinear_empty collinear_empty
+-/
variable {P}
+#print collinear_singleton /-
/-- A single point is collinear. -/
theorem collinear_singleton (p : P) : Collinear k ({p} : Set P) :=
by
rw [collinear_iff_rank_le_one, vectorSpan_singleton]
simp
#align collinear_singleton collinear_singleton
+-/
variable {k}
+#print collinear_iff_of_mem /-
/-- Given a point `p₀` in a set of points, that set is collinear if and
only if the points can all be expressed as multiples of the same
vector, added to `p₀`. -/
@@ -441,7 +492,9 @@ theorem collinear_iff_of_mem {s : Set P} {p₀ : P} (h : p₀ ∈ s) :
have hw' := SetLike.le_def.1 hs hw
rwa [Submodule.mem_span_singleton] at hw'
#align collinear_iff_of_mem collinear_iff_of_mem
+-/
+#print collinear_iff_exists_forall_eq_smul_vadd /-
/-- A set of points is collinear if and only if they can all be
expressed as multiples of the same vector, added to the same base
point. -/
@@ -461,9 +514,11 @@ theorem collinear_iff_exists_forall_eq_smul_vadd (s : Set P) :
use r - r₁
simp [vadd_vadd, ← add_smul]
#align collinear_iff_exists_forall_eq_smul_vadd collinear_iff_exists_forall_eq_smul_vadd
+-/
variable (k)
+#print collinear_pair /-
/-- Two points are collinear. -/
theorem collinear_pair (p₁ p₂ : P) : Collinear k ({p₁, p₂} : Set P) :=
by
@@ -477,9 +532,11 @@ theorem collinear_pair (p₁ p₂ : P) : Collinear k ({p₁, p₂} : Set P) :=
· use 1
simp [hp]
#align collinear_pair collinear_pair
+-/
variable {k}
+#print affineIndependent_iff_not_collinear /-
/-- Three points are affinely independent if and only if they are not
collinear. -/
theorem affineIndependent_iff_not_collinear {p : Fin 3 → P} :
@@ -487,7 +544,9 @@ theorem affineIndependent_iff_not_collinear {p : Fin 3 → P} :
rw [collinear_iff_finrank_le_one,
affineIndependent_iff_not_finrank_vectorSpan_le k p (Fintype.card_fin 3)]
#align affine_independent_iff_not_collinear affineIndependent_iff_not_collinear
+-/
+#print collinear_iff_not_affineIndependent /-
/-- Three points are collinear if and only if they are not affinely
independent. -/
theorem collinear_iff_not_affineIndependent {p : Fin 3 → P} :
@@ -495,19 +554,25 @@ theorem collinear_iff_not_affineIndependent {p : Fin 3 → P} :
rw [collinear_iff_finrank_le_one,
finrank_vectorSpan_le_iff_not_affineIndependent k p (Fintype.card_fin 3)]
#align collinear_iff_not_affine_independent collinear_iff_not_affineIndependent
+-/
+#print affineIndependent_iff_not_collinear_set /-
/-- Three points are affinely independent if and only if they are not collinear. -/
theorem affineIndependent_iff_not_collinear_set {p₁ p₂ p₃ : P} :
AffineIndependent k ![p₁, p₂, p₃] ↔ ¬Collinear k ({p₁, p₂, p₃} : Set P) := by
simp [affineIndependent_iff_not_collinear, -Set.union_singleton]
#align affine_independent_iff_not_collinear_set affineIndependent_iff_not_collinear_set
+-/
+#print collinear_iff_not_affineIndependent_set /-
/-- Three points are collinear if and only if they are not affinely independent. -/
theorem collinear_iff_not_affineIndependent_set {p₁ p₂ p₃ : P} :
Collinear k ({p₁, p₂, p₃} : Set P) ↔ ¬AffineIndependent k ![p₁, p₂, p₃] :=
affineIndependent_iff_not_collinear_set.not_left.symm
#align collinear_iff_not_affine_independent_set collinear_iff_not_affineIndependent_set
+-/
+#print affineIndependent_iff_not_collinear_of_ne /-
/-- Three points are affinely independent if and only if they are not collinear. -/
theorem affineIndependent_iff_not_collinear_of_ne {p : Fin 3 → P} {i₁ i₂ i₃ : Fin 3} (h₁₂ : i₁ ≠ i₂)
(h₁₃ : i₁ ≠ i₃) (h₂₃ : i₂ ≠ i₃) :
@@ -517,29 +582,39 @@ theorem affineIndependent_iff_not_collinear_of_ne {p : Fin 3 → P} {i₁ i₂ i
rw [affineIndependent_iff_not_collinear, ← Set.image_univ, ← Finset.coe_univ, hu,
Finset.coe_insert, Finset.coe_insert, Finset.coe_singleton, Set.image_insert_eq, Set.image_pair]
#align affine_independent_iff_not_collinear_of_ne affineIndependent_iff_not_collinear_of_ne
+-/
+#print collinear_iff_not_affineIndependent_of_ne /-
/-- Three points are collinear if and only if they are not affinely independent. -/
theorem collinear_iff_not_affineIndependent_of_ne {p : Fin 3 → P} {i₁ i₂ i₃ : Fin 3} (h₁₂ : i₁ ≠ i₂)
(h₁₃ : i₁ ≠ i₃) (h₂₃ : i₂ ≠ i₃) :
Collinear k ({p i₁, p i₂, p i₃} : Set P) ↔ ¬AffineIndependent k p :=
(affineIndependent_iff_not_collinear_of_ne h₁₂ h₁₃ h₂₃).not_left.symm
#align collinear_iff_not_affine_independent_of_ne collinear_iff_not_affineIndependent_of_ne
+-/
+#print ne₁₂_of_not_collinear /-
/-- If three points are not collinear, the first and second are different. -/
theorem ne₁₂_of_not_collinear {p₁ p₂ p₃ : P} (h : ¬Collinear k ({p₁, p₂, p₃} : Set P)) : p₁ ≠ p₂ :=
by rintro rfl; simpa [collinear_pair] using h
#align ne₁₂_of_not_collinear ne₁₂_of_not_collinear
+-/
+#print ne₁₃_of_not_collinear /-
/-- If three points are not collinear, the first and third are different. -/
theorem ne₁₃_of_not_collinear {p₁ p₂ p₃ : P} (h : ¬Collinear k ({p₁, p₂, p₃} : Set P)) : p₁ ≠ p₃ :=
by rintro rfl; simpa [collinear_pair] using h
#align ne₁₃_of_not_collinear ne₁₃_of_not_collinear
+-/
+#print ne₂₃_of_not_collinear /-
/-- If three points are not collinear, the second and third are different. -/
theorem ne₂₃_of_not_collinear {p₁ p₂ p₃ : P} (h : ¬Collinear k ({p₁, p₂, p₃} : Set P)) : p₂ ≠ p₃ :=
by rintro rfl; simpa [collinear_pair] using h
#align ne₂₃_of_not_collinear ne₂₃_of_not_collinear
+-/
+#print Collinear.mem_affineSpan_of_mem_of_ne /-
/-- A point in a collinear set of points lies in the affine span of any two distinct points of
that set. -/
theorem Collinear.mem_affineSpan_of_mem_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂ p₃ : P}
@@ -556,7 +631,9 @@ theorem Collinear.mem_affineSpan_of_mem_of_ne {s : Set P} (h : Collinear k s) {p
simpa using hp₁p₂
simp [smul_smul, h₂]
#align collinear.mem_affine_span_of_mem_of_ne Collinear.mem_affineSpan_of_mem_of_ne
+-/
+#print Collinear.affineSpan_eq_of_ne /-
/-- The affine span of any two distinct points of a collinear set of points equals the affine
span of the whole set. -/
theorem Collinear.affineSpan_eq_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂ : P} (hp₁ : p₁ ∈ s)
@@ -564,7 +641,9 @@ theorem Collinear.affineSpan_eq_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂
le_antisymm (affineSpan_mono _ (Set.insert_subset.2 ⟨hp₁, Set.singleton_subset_iff.2 hp₂⟩))
(affineSpan_le.2 fun p hp => h.mem_affineSpan_of_mem_of_ne hp₁ hp₂ hp hp₁p₂)
#align collinear.affine_span_eq_of_ne Collinear.affineSpan_eq_of_ne
+-/
+#print Collinear.collinear_insert_iff_of_ne /-
/-- Given a collinear set of points, and two distinct points `p₂` and `p₃` in it, a point `p₁` is
collinear with the set if and only if it is collinear with `p₂` and `p₃`. -/
theorem Collinear.collinear_insert_iff_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂ p₃ : P}
@@ -578,13 +657,17 @@ theorem Collinear.collinear_insert_iff_of_ne {s : Set P} (h : Collinear k s) {p
rw [h.affine_span_eq_of_ne hp₂ hp₃ hp₂p₃]
rw [Collinear, Collinear, hv]
#align collinear.collinear_insert_iff_of_ne Collinear.collinear_insert_iff_of_ne
+-/
+#print collinear_insert_iff_of_mem_affineSpan /-
/-- Adding a point in the affine span of a set does not change whether that set is collinear. -/
theorem collinear_insert_iff_of_mem_affineSpan {s : Set P} {p : P} (h : p ∈ affineSpan k s) :
Collinear k (insert p s) ↔ Collinear k s := by
rw [Collinear, Collinear, vectorSpan_insert_eq_vectorSpan h]
#align collinear_insert_iff_of_mem_affine_span collinear_insert_iff_of_mem_affineSpan
+-/
+#print collinear_insert_of_mem_affineSpan_pair /-
/-- If a point lies in the affine span of two points, those three points are collinear. -/
theorem collinear_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ : P} (h : p₁ ∈ line[k, p₂, p₃]) :
Collinear k ({p₁, p₂, p₃} : Set P) :=
@@ -592,7 +675,9 @@ theorem collinear_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ : P} (h : p₁
rw [collinear_insert_iff_of_mem_affineSpan h]
exact collinear_pair _ _ _
#align collinear_insert_of_mem_affine_span_pair collinear_insert_of_mem_affineSpan_pair
+-/
+#print collinear_insert_insert_of_mem_affineSpan_pair /-
/-- If two points lie in the affine span of two points, those four points are collinear. -/
theorem collinear_insert_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ : P} (h₁ : p₁ ∈ line[k, p₃, p₄])
(h₂ : p₂ ∈ line[k, p₃, p₄]) : Collinear k ({p₁, p₂, p₃, p₄} : Set P) :=
@@ -602,7 +687,9 @@ theorem collinear_insert_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ : P}
collinear_insert_iff_of_mem_affineSpan h₂]
exact collinear_pair _ _ _
#align collinear_insert_insert_of_mem_affine_span_pair collinear_insert_insert_of_mem_affineSpan_pair
+-/
+#print collinear_insert_insert_insert_of_mem_affineSpan_pair /-
/-- If three points lie in the affine span of two points, those five points are collinear. -/
theorem collinear_insert_insert_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ p₅ : P}
(h₁ : p₁ ∈ line[k, p₄, p₅]) (h₂ : p₂ ∈ line[k, p₄, p₅]) (h₃ : p₃ ∈ line[k, p₄, p₅]) :
@@ -616,7 +703,9 @@ theorem collinear_insert_insert_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ p
collinear_insert_iff_of_mem_affineSpan h₃]
exact collinear_pair _ _ _
#align collinear_insert_insert_insert_of_mem_affine_span_pair collinear_insert_insert_insert_of_mem_affineSpan_pair
+-/
+#print collinear_insert_insert_insert_left_of_mem_affineSpan_pair /-
/-- If three points lie in the affine span of two points, the first four points are collinear. -/
theorem collinear_insert_insert_insert_left_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ p₅ : P}
(h₁ : p₁ ∈ line[k, p₄, p₅]) (h₂ : p₂ ∈ line[k, p₄, p₅]) (h₃ : p₃ ∈ line[k, p₄, p₅]) :
@@ -625,7 +714,9 @@ theorem collinear_insert_insert_insert_left_of_mem_affineSpan_pair {p₁ p₂ p
refine' (collinear_insert_insert_insert_of_mem_affineSpan_pair h₁ h₂ h₃).Subset _
simp [Set.insert_subset_insert]
#align collinear_insert_insert_insert_left_of_mem_affine_span_pair collinear_insert_insert_insert_left_of_mem_affineSpan_pair
+-/
+#print collinear_triple_of_mem_affineSpan_pair /-
/-- If three points lie in the affine span of two points, the first three points are collinear. -/
theorem collinear_triple_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ p₅ : P} (h₁ : p₁ ∈ line[k, p₄, p₅])
(h₂ : p₂ ∈ line[k, p₄, p₅]) (h₃ : p₃ ∈ line[k, p₄, p₅]) : Collinear k ({p₁, p₂, p₃} : Set P) :=
@@ -633,6 +724,7 @@ theorem collinear_triple_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ p₅ : P} (
refine' (collinear_insert_insert_insert_left_of_mem_affineSpan_pair h₁ h₂ h₃).Subset _
simp [Set.insert_subset_insert]
#align collinear_triple_of_mem_affine_span_pair collinear_triple_of_mem_affineSpan_pair
+-/
variable (k)
@@ -645,6 +737,7 @@ def Coplanar (s : Set P) : Prop :=
variable {k}
+#print Coplanar.finiteDimensional_vectorSpan /-
/-- The `vector_span` of coplanar points is finite-dimensional. -/
theorem Coplanar.finiteDimensional_vectorSpan {s : Set P} (h : Coplanar k s) :
FiniteDimensional k (vectorSpan k s) :=
@@ -652,13 +745,17 @@ theorem Coplanar.finiteDimensional_vectorSpan {s : Set P} (h : Coplanar k s) :
refine' IsNoetherian.iff_fg.1 (IsNoetherian.iff_rank_lt_aleph0.2 (lt_of_le_of_lt h _))
simp
#align coplanar.finite_dimensional_vector_span Coplanar.finiteDimensional_vectorSpan
+-/
+#print Coplanar.finiteDimensional_direction_affineSpan /-
/-- The direction of the affine span of coplanar points is finite-dimensional. -/
theorem Coplanar.finiteDimensional_direction_affineSpan {s : Set P} (h : Coplanar k s) :
FiniteDimensional k (affineSpan k s).direction :=
(direction_affineSpan k s).symm ▸ h.finiteDimensional_vectorSpan
#align coplanar.finite_dimensional_direction_affine_span Coplanar.finiteDimensional_direction_affineSpan
+-/
+#print coplanar_iff_finrank_le_two /-
/-- A set of points, whose `vector_span` is finite-dimensional, is coplanar if and only if their
`vector_span` has dimension at most `2`. -/
theorem coplanar_iff_finrank_le_two {s : Set P} [FiniteDimensional k (vectorSpan k s)] :
@@ -668,46 +765,59 @@ theorem coplanar_iff_finrank_le_two {s : Set P} [FiniteDimensional k (vectorSpan
rw [← finrank_eq_rank] at h
exact_mod_cast h
#align coplanar_iff_finrank_le_two coplanar_iff_finrank_le_two
+-/
alias coplanar_iff_finrank_le_two ↔ Coplanar.finrank_le_two _
#align coplanar.finrank_le_two Coplanar.finrank_le_two
+#print Coplanar.subset /-
/-- A subset of a coplanar set is coplanar. -/
theorem Coplanar.subset {s₁ s₂ : Set P} (hs : s₁ ⊆ s₂) (h : Coplanar k s₂) : Coplanar k s₁ :=
(rank_le_of_submodule (vectorSpan k s₁) (vectorSpan k s₂) (vectorSpan_mono k hs)).trans h
#align coplanar.subset Coplanar.subset
+-/
+#print Collinear.coplanar /-
/-- Collinear points are coplanar. -/
theorem Collinear.coplanar {s : Set P} (h : Collinear k s) : Coplanar k s :=
le_trans h one_le_two
#align collinear.coplanar Collinear.coplanar
+-/
variable (k) (P)
+#print coplanar_empty /-
/-- The empty set is coplanar. -/
theorem coplanar_empty : Coplanar k (∅ : Set P) :=
(collinear_empty k P).Coplanar
#align coplanar_empty coplanar_empty
+-/
variable {P}
+#print coplanar_singleton /-
/-- A single point is coplanar. -/
theorem coplanar_singleton (p : P) : Coplanar k ({p} : Set P) :=
(collinear_singleton k p).Coplanar
#align coplanar_singleton coplanar_singleton
+-/
+#print coplanar_pair /-
/-- Two points are coplanar. -/
theorem coplanar_pair (p₁ p₂ : P) : Coplanar k ({p₁, p₂} : Set P) :=
(collinear_pair k p₁ p₂).Coplanar
#align coplanar_pair coplanar_pair
+-/
variable {k}
+#print coplanar_insert_iff_of_mem_affineSpan /-
/-- Adding a point in the affine span of a set does not change whether that set is coplanar. -/
theorem coplanar_insert_iff_of_mem_affineSpan {s : Set P} {p : P} (h : p ∈ affineSpan k s) :
Coplanar k (insert p s) ↔ Coplanar k s := by
rw [Coplanar, Coplanar, vectorSpan_insert_eq_vectorSpan h]
#align coplanar_insert_iff_of_mem_affine_span coplanar_insert_iff_of_mem_affineSpan
+-/
end AffineSpace'
@@ -715,12 +825,11 @@ section DivisionRing
variable {k : Type _} {V : Type _} {P : Type _}
-include V
-
open AffineSubspace FiniteDimensional Module
variable [DivisionRing k] [AddCommGroup V] [Module k V] [affine_space V P]
+#print finrank_vectorSpan_insert_le /-
/-- Adding a point to a finite-dimensional subspace increases the dimension by at most one. -/
theorem finrank_vectorSpan_insert_le (s : AffineSubspace k P) (p : P) :
finrank k (vectorSpan k (insert p (s : Set P))) ≤ finrank k s.direction + 1 :=
@@ -755,9 +864,11 @@ theorem finrank_vectorSpan_insert_le (s : AffineSubspace k P) (p : P) :
ext
exact hc
#align finrank_vector_span_insert_le finrank_vectorSpan_insert_le
+-/
variable (k)
+#print finrank_vectorSpan_insert_le_set /-
/-- Adding a point to a set with a finite-dimensional span increases the dimension by at most
one. -/
theorem finrank_vectorSpan_insert_le_set (s : Set P) (p : P) :
@@ -767,9 +878,11 @@ theorem finrank_vectorSpan_insert_le_set (s : Set P) (p : P) :
refine' (finrank_vectorSpan_insert_le _ _).trans (add_le_add_right _ _)
rw [direction_affineSpan]
#align finrank_vector_span_insert_le_set finrank_vectorSpan_insert_le_set
+-/
variable {k}
+#print Collinear.coplanar_insert /-
/-- Adding a point to a collinear set produces a coplanar set. -/
theorem Collinear.coplanar_insert {s : Set P} (h : Collinear k s) (p : P) :
Coplanar k (insert p s) :=
@@ -778,7 +891,9 @@ theorem Collinear.coplanar_insert {s : Set P} (h : Collinear k s) (p : P) :
rw [coplanar_iff_finrank_le_two]
exact (finrank_vectorSpan_insert_le_set k s p).trans (add_le_add_right h.finrank_le_one _)
#align collinear.coplanar_insert Collinear.coplanar_insert
+-/
+#print coplanar_of_finrank_eq_two /-
/-- A set of points in a two-dimensional space is coplanar. -/
theorem coplanar_of_finrank_eq_two (s : Set P) (h : finrank k V = 2) : Coplanar k s :=
by
@@ -786,18 +901,23 @@ theorem coplanar_of_finrank_eq_two (s : Set P) (h : finrank k V = 2) : Coplanar
rw [coplanar_iff_finrank_le_two, ← h]
exact Submodule.finrank_le _
#align coplanar_of_finrank_eq_two coplanar_of_finrank_eq_two
+-/
+#print coplanar_of_fact_finrank_eq_two /-
/-- A set of points in a two-dimensional space is coplanar. -/
theorem coplanar_of_fact_finrank_eq_two (s : Set P) [h : Fact (finrank k V = 2)] : Coplanar k s :=
coplanar_of_finrank_eq_two s h.out
#align coplanar_of_fact_finrank_eq_two coplanar_of_fact_finrank_eq_two
+-/
variable (k)
+#print coplanar_triple /-
/-- Three points are coplanar. -/
theorem coplanar_triple (p₁ p₂ p₃ : P) : Coplanar k ({p₁, p₂, p₃} : Set P) :=
(collinear_pair k p₂ p₃).coplanar_insert p₁
#align coplanar_triple coplanar_triple
+-/
end DivisionRing
@@ -813,8 +933,6 @@ section DivisionRing
variable [DivisionRing k] [Module k V]
-include V
-
#print AffineBasis.finiteDimensional /-
protected theorem finiteDimensional [Finite ι] (b : AffineBasis ι k P) : FiniteDimensional k V :=
let ⟨i⟩ := b.Nonempty
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -98,7 +98,7 @@ theorem finite_of_fin_dim_affineIndependent [FiniteDimensional k V] {p : ι →
(hi : AffineIndependent k p) : Finite ι :=
by
nontriviality ι; inhabit ι
- rw [affineIndependent_iff_linearIndependent_vsub k p default] at hi
+ rw [affineIndependent_iff_linearIndependent_vsub k p default] at hi
letI : IsNoetherian k V := IsNoetherian.iff_fg.2 inferInstance
exact
(Set.finite_singleton default).finite_of_compl (Set.finite_coe_iff.1 hi.finite_of_is_noetherian)
@@ -127,7 +127,7 @@ theorem AffineIndependent.finrank_vectorSpan_image_finset {p : ι → P} (hi : A
have hp₁' : p₁ ∈ p '' s := by simpa using hp₁
rw [affineIndependent_set_iff_linearIndependent_vsub k hp₁', ← Finset.coe_singleton, ←
Finset.coe_image, ← Finset.coe_sdiff, Finset.sdiff_singleton_eq_erase, ← Finset.coe_image] at
- hi'
+ hi'
have hc : (Finset.image (fun p : P => p -ᵥ p₁) ((Finset.image p s).eraseₓ p₁)).card = n :=
by
rw [Finset.card_image_of_injective _ (vsub_left_injective _), Finset.card_erase_of_mem hp₁]
@@ -140,7 +140,7 @@ dimension one less than its cardinality. -/
theorem AffineIndependent.finrank_vectorSpan [Fintype ι] {p : ι → P} (hi : AffineIndependent k p)
{n : ℕ} (hc : Fintype.card ι = n + 1) : finrank k (vectorSpan k (Set.range p)) = n :=
by
- rw [← Finset.card_univ] at hc
+ rw [← Finset.card_univ] at hc
rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image]
exact hi.finrank_vector_span_image_finset hc
#align affine_independent.finrank_vector_span AffineIndependent.finrank_vectorSpan
@@ -177,7 +177,7 @@ theorem finrank_vectorSpan_range_le [Fintype ι] (p : ι → P) {n : ℕ} (hc :
finrank k (vectorSpan k (Set.range p)) ≤ n :=
by
rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image]
- rw [← Finset.card_univ] at hc
+ rw [← Finset.card_univ] at hc
exact finrank_vectorSpan_image_finset_le _ _ _ hc
#align finrank_vector_span_range_le finrank_vectorSpan_range_le
@@ -193,7 +193,7 @@ theorem affineIndependent_iff_finrank_vectorSpan_eq [Fintype ι] (p : ι → P)
linearIndependent_iff_card_eq_finrank_span, eq_comm,
vectorSpan_range_eq_span_range_vsub_right_ne k p i₁]
congr
- rw [← Finset.card_univ] at hc
+ rw [← Finset.card_univ] at hc
rw [Fintype.subtype_card]
simp [Finset.filter_ne', Finset.card_erase_of_mem, hc]
#align affine_independent_iff_finrank_vector_span_eq affineIndependent_iff_finrank_vectorSpan_eq
@@ -260,7 +260,7 @@ theorem AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_ad
have hn : s.nonempty := by rw [← Finset.card_pos, hc]; apply Nat.succ_pos
refine' eq_of_direction_eq_of_nonempty_of_le _ ((hn.image _).to_set.affineSpan _) hle
have hd := direction_le hle
- rw [direction_affineSpan] at hd⊢
+ rw [direction_affineSpan] at hd ⊢
exact hi.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one hd hc
#align affine_independent.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one
@@ -272,8 +272,8 @@ theorem AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one [Fintyp
(hle : affineSpan k (Set.range p) ≤ sp) (hc : Fintype.card ι = finrank k sp.direction + 1) :
affineSpan k (Set.range p) = sp :=
by
- rw [← Finset.card_univ] at hc
- rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image] at hle⊢
+ rw [← Finset.card_univ] at hc
+ rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image] at hle ⊢
exact hi.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one hle hc
#align affine_independent.affine_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one
@@ -291,7 +291,7 @@ theorem AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one [FiniteD
rw [hn, ← finrank_top, ← (vector_span_eq_top_of_affine_span_eq_top k V P) h_tot, ←
hi.finrank_vector_span hn]
· intro hc
- rw [← finrank_top, ← direction_top k V P] at hc
+ rw [← finrank_top, ← direction_top k V P] at hc
exact hi.affine_span_eq_of_le_of_card_eq_finrank_add_one le_top hc
#align affine_independent.affine_span_eq_top_iff_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one
@@ -309,7 +309,7 @@ instance finiteDimensional_vectorSpan_insert (s : AffineSubspace k P)
by
rw [← direction_affineSpan, ← affineSpan_insert_affineSpan]
rcases(s : Set P).eq_empty_or_nonempty with (hs | ⟨p₀, hp₀⟩)
- · rw [coe_eq_bot_iff] at hs
+ · rw [coe_eq_bot_iff] at hs
rw [hs, bot_coe, span_empty, bot_coe, direction_affineSpan]
convert finiteDimensional_bot _ _ <;> simp
· rw [affine_span_coe, direction_affine_span_insert hp₀]
@@ -365,7 +365,7 @@ theorem collinear_iff_finrank_le_one {s : Set P} [FiniteDimensional k (vectorSpa
Collinear k s ↔ finrank k (vectorSpan k s) ≤ 1 :=
by
have h := collinear_iff_rank_le_one k s
- rw [← finrank_eq_rank] at h
+ rw [← finrank_eq_rank] at h
exact_mod_cast h
#align collinear_iff_finrank_le_one collinear_iff_finrank_le_one
@@ -433,20 +433,20 @@ theorem collinear_iff_of_mem {s : Set P} {p₀ : P} (h : p₀ ∈ s) :
rw [vectorSpan_eq_span_vsub_set_right k h, Submodule.span_le, Set.subset_def]
intro x hx
rw [SetLike.mem_coe, Submodule.mem_span_singleton]
- rw [Set.mem_image] at hx
+ rw [Set.mem_image] at hx
rcases hx with ⟨p, hp, rfl⟩
rcases hp₀v p hp with ⟨r, rfl⟩
use r
simp
have hw' := SetLike.le_def.1 hs hw
- rwa [Submodule.mem_span_singleton] at hw'
+ rwa [Submodule.mem_span_singleton] at hw'
#align collinear_iff_of_mem collinear_iff_of_mem
/-- A set of points is collinear if and only if they can all be
expressed as multiples of the same vector, added to the same base
point. -/
theorem collinear_iff_exists_forall_eq_smul_vadd (s : Set P) :
- Collinear k s ↔ ∃ (p₀ : P)(v : V), ∀ p ∈ s, ∃ r : k, p = r • v +ᵥ p₀ :=
+ Collinear k s ↔ ∃ (p₀ : P) (v : V), ∀ p ∈ s, ∃ r : k, p = r • v +ᵥ p₀ :=
by
rcases Set.eq_empty_or_nonempty s with (rfl | ⟨⟨p₁, hp₁⟩⟩)
· simp [collinear_empty]
@@ -470,7 +470,7 @@ theorem collinear_pair (p₁ p₂ : P) : Collinear k ({p₁, p₂} : Set P) :=
rw [collinear_iff_exists_forall_eq_smul_vadd]
use p₁, p₂ -ᵥ p₁
intro p hp
- rw [Set.mem_insert_iff, Set.mem_singleton_iff] at hp
+ rw [Set.mem_insert_iff, Set.mem_singleton_iff] at hp
cases hp
· use 0
simp [hp]
@@ -545,7 +545,7 @@ that set. -/
theorem Collinear.mem_affineSpan_of_mem_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂ p₃ : P}
(hp₁ : p₁ ∈ s) (hp₂ : p₂ ∈ s) (hp₃ : p₃ ∈ s) (hp₁p₂ : p₁ ≠ p₂) : p₃ ∈ line[k, p₁, p₂] :=
by
- rw [collinear_iff_of_mem hp₁] at h
+ rw [collinear_iff_of_mem hp₁] at h
rcases h with ⟨v, h⟩
rcases h p₂ hp₂ with ⟨r₂, rfl⟩
rcases h p₃ hp₃ with ⟨r₃, rfl⟩
@@ -665,7 +665,7 @@ theorem coplanar_iff_finrank_le_two {s : Set P} [FiniteDimensional k (vectorSpan
Coplanar k s ↔ finrank k (vectorSpan k s) ≤ 2 :=
by
have h : Coplanar k s ↔ Module.rank k (vectorSpan k s) ≤ 2 := Iff.rfl
- rw [← finrank_eq_rank] at h
+ rw [← finrank_eq_rank] at h
exact_mod_cast h
#align coplanar_iff_finrank_le_two coplanar_iff_finrank_le_two
@@ -739,7 +739,7 @@ theorem finrank_vectorSpan_insert_le (s : AffineSubspace k P) (p : P) :
haveI := hf
rw [← direction_affineSpan, ← affineSpan_insert_affineSpan]
rcases(s : Set P).eq_empty_or_nonempty with (hs | ⟨p₀, hp₀⟩)
- · rw [coe_eq_bot_iff] at hs
+ · rw [coe_eq_bot_iff] at hs
rw [hs, bot_coe, span_empty, bot_coe, direction_affineSpan, direction_bot, finrank_bot,
zero_add]
convert zero_le_one' ℕ
@@ -749,7 +749,7 @@ theorem finrank_vectorSpan_insert_le (s : AffineSubspace k P) (p : P) :
refine' (Submodule.finrank_add_le_finrank_add_finrank _ _).trans (add_le_add_right _ _)
refine' finrank_le_one ⟨p -ᵥ p₀, Submodule.mem_span_singleton_self _⟩ fun v => _
have h := v.property
- rw [Submodule.mem_span_singleton] at h
+ rw [Submodule.mem_span_singleton] at h
rcases h with ⟨c, hc⟩
refine' ⟨c, _⟩
ext
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -30,7 +30,7 @@ subspaces of affine spaces.
noncomputable section
-open BigOperators Affine
+open scoped BigOperators Affine
section AffineSpace'
@@ -110,7 +110,7 @@ theorem finite_set_of_fin_dim_affineIndependent [FiniteDimensional k V] {s : Set
@Set.toFinite _ s (finite_of_fin_dim_affineIndependent k hi)
#align finite_set_of_fin_dim_affine_independent finite_set_of_fin_dim_affineIndependent
-open Classical
+open scoped Classical
variable {k}
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -44,12 +44,6 @@ open AffineSubspace FiniteDimensional Module
variable [DivisionRing k] [AddCommGroup V] [Module k V] [affine_space V P]
-/- warning: finite_dimensional_vector_span_of_finite -> finiteDimensional_vectorSpan_of_finite is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Set.Finite.{u3} P s) -> (FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
-but is expected to have type
- forall (k : Type.{u2}) {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Set.Finite.{u3} P s) -> (FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
-Case conversion may be inaccurate. Consider using '#align finite_dimensional_vector_span_of_finite finiteDimensional_vectorSpan_of_finiteₓ'. -/
/-- The `vector_span` of a finite set is finite-dimensional. -/
theorem finiteDimensional_vectorSpan_of_finite {s : Set P} (h : Set.Finite s) :
FiniteDimensional k (vectorSpan k s) :=
@@ -74,12 +68,6 @@ instance finiteDimensional_vectorSpan_image_of_finite [Finite ι] (p : ι → P)
#align finite_dimensional_vector_span_image_of_finite finiteDimensional_vectorSpan_image_of_finite
-/
-/- warning: finite_dimensional_direction_affine_span_of_finite -> finiteDimensional_direction_affineSpan_of_finite is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Set.Finite.{u3} P s) -> (FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))))
-but is expected to have type
- forall (k : Type.{u2}) {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Set.Finite.{u3} P s) -> (FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))))
-Case conversion may be inaccurate. Consider using '#align finite_dimensional_direction_affine_span_of_finite finiteDimensional_direction_affineSpan_of_finiteₓ'. -/
/-- The direction of the affine span of a finite set is
finite-dimensional. -/
theorem finiteDimensional_direction_affineSpan_of_finite {s : Set P} (h : Set.Finite s) :
@@ -105,12 +93,6 @@ instance finiteDimensional_direction_affineSpan_image_of_finite [Finite ι] (p :
#align finite_dimensional_direction_affine_span_image_of_finite finiteDimensional_direction_affineSpan_image_of_finite
-/
-/- warning: finite_of_fin_dim_affine_independent -> finite_of_fin_dim_affineIndependent is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : FiniteDimensional.{u1, u2} k V _inst_1 _inst_2 _inst_3] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (Finite.{succ u4} ι)
-but is expected to have type
- forall (k : Type.{u4}) {V : Type.{u3}} {P : Type.{u2}} {ι : Type.{u1}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u2} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] [_inst_5 : FiniteDimensional.{u4, u3} k V _inst_1 _inst_2 _inst_3] {p : ι -> P}, (AffineIndependent.{u4, u3, u2, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (Finite.{succ u1} ι)
-Case conversion may be inaccurate. Consider using '#align finite_of_fin_dim_affine_independent finite_of_fin_dim_affineIndependentₓ'. -/
/-- An affine-independent family of points in a finite-dimensional affine space is finite. -/
theorem finite_of_fin_dim_affineIndependent [FiniteDimensional k V] {p : ι → P}
(hi : AffineIndependent k p) : Finite ι :=
@@ -122,12 +104,6 @@ theorem finite_of_fin_dim_affineIndependent [FiniteDimensional k V] {p : ι →
(Set.finite_singleton default).finite_of_compl (Set.finite_coe_iff.1 hi.finite_of_is_noetherian)
#align finite_of_fin_dim_affine_independent finite_of_fin_dim_affineIndependent
-/- warning: finite_set_of_fin_dim_affine_independent -> finite_set_of_fin_dim_affineIndependent is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : FiniteDimensional.{u1, u2} k V _inst_1 _inst_2 _inst_3] {s : Set.{u4} ι} {f : (coeSort.{succ u4, succ (succ u4)} (Set.{u4} ι) Type.{u4} (Set.hasCoeToSort.{u4} ι) s) -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (coeSort.{succ u4, succ (succ u4)} (Set.{u4} ι) Type.{u4} (Set.hasCoeToSort.{u4} ι) s) f) -> (Set.Finite.{u4} ι s)
-but is expected to have type
- forall (k : Type.{u4}) {V : Type.{u3}} {P : Type.{u1}} {ι : Type.{u2}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u1} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] [_inst_5 : FiniteDimensional.{u4, u3} k V _inst_1 _inst_2 _inst_3] {s : Set.{u2} ι} {f : (Set.Elem.{u2} ι s) -> P}, (AffineIndependent.{u4, u3, u1, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.Elem.{u2} ι s) f) -> (Set.Finite.{u2} ι s)
-Case conversion may be inaccurate. Consider using '#align finite_set_of_fin_dim_affine_independent finite_set_of_fin_dim_affineIndependentₓ'. -/
/-- An affine-independent subset of a finite-dimensional affine space is finite. -/
theorem finite_set_of_fin_dim_affineIndependent [FiniteDimensional k V] {s : Set ι} {f : s → P}
(hi : AffineIndependent k f) : s.Finite :=
@@ -138,9 +114,6 @@ open Classical
variable {k}
-/- warning: affine_independent.finrank_vector_span_image_finset -> AffineIndependent.finrank_vectorSpan_image_finset is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align affine_independent.finrank_vector_span_image_finset AffineIndependent.finrank_vectorSpan_image_finsetₓ'. -/
/-- The `vector_span` of a finite subset of an affinely independent
family has dimension one less than its cardinality. -/
theorem AffineIndependent.finrank_vectorSpan_image_finset {p : ι → P} (hi : AffineIndependent k p)
@@ -162,9 +135,6 @@ theorem AffineIndependent.finrank_vectorSpan_image_finset {p : ι → P} (hi : A
rwa [vectorSpan_eq_span_vsub_finset_right_ne k hp₁, finrank_span_finset_eq_card, hc]
#align affine_independent.finrank_vector_span_image_finset AffineIndependent.finrank_vectorSpan_image_finset
-/- warning: affine_independent.finrank_vector_span -> AffineIndependent.finrank_vectorSpan is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align affine_independent.finrank_vector_span AffineIndependent.finrank_vectorSpanₓ'. -/
/-- The `vector_span` of a finite affinely independent family has
dimension one less than its cardinality. -/
theorem AffineIndependent.finrank_vectorSpan [Fintype ι] {p : ι → P} (hi : AffineIndependent k p)
@@ -175,12 +145,6 @@ theorem AffineIndependent.finrank_vectorSpan [Fintype ι] {p : ι → P} (hi : A
exact hi.finrank_vector_span_image_finset hc
#align affine_independent.finrank_vector_span AffineIndependent.finrank_vectorSpan
-/- warning: affine_independent.vector_span_eq_top_of_card_eq_finrank_add_one -> AffineIndependent.vectorSpan_eq_top_of_card_eq_finrank_add_one is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : FiniteDimensional.{u1, u2} k V _inst_1 _inst_2 _inst_3] [_inst_6 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_6) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) (Top.top.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.hasTop.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))
-but is expected to have type
- forall {k : Type.{u4}} {V : Type.{u3}} {P : Type.{u1}} {ι : Type.{u2}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u1} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] [_inst_5 : FiniteDimensional.{u4, u3} k V _inst_1 _inst_2 _inst_3] [_inst_6 : Fintype.{u2} ι] {p : ι -> P}, (AffineIndependent.{u4, u3, u1, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (Eq.{1} Nat (Fintype.card.{u2} ι _inst_6) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{succ u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (vectorSpan.{u4, u3, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u2} P ι p)) (Top.top.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (Submodule.instTopSubmodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)))
-Case conversion may be inaccurate. Consider using '#align affine_independent.vector_span_eq_top_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_eq_top_of_card_eq_finrank_add_oneₓ'. -/
/-- The `vector_span` of a finite affinely independent family whose
cardinality is one more than that of the finite-dimensional space is
`⊤`. -/
@@ -192,9 +156,6 @@ theorem AffineIndependent.vectorSpan_eq_top_of_card_eq_finrank_add_one [FiniteDi
variable (k)
-/- warning: finrank_vector_span_image_finset_le -> finrank_vectorSpan_image_finset_le is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align finrank_vector_span_image_finset_le finrank_vectorSpan_image_finset_leₓ'. -/
/-- The `vector_span` of `n + 1` points in an indexed family has
dimension at most `n`. -/
theorem finrank_vectorSpan_image_finset_le (p : ι → P) (s : Finset ι) {n : ℕ}
@@ -210,9 +171,6 @@ theorem finrank_vectorSpan_image_finset_le (p : ι → P) (s : Finset ι) {n :
apply Finset.card_image_le
#align finrank_vector_span_image_finset_le finrank_vectorSpan_image_finset_le
-/- warning: finrank_vector_span_range_le -> finrank_vectorSpan_range_le is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align finrank_vector_span_range_le finrank_vectorSpan_range_leₓ'. -/
/-- The `vector_span` of an indexed family of `n + 1` points has
dimension at most `n`. -/
theorem finrank_vectorSpan_range_le [Fintype ι] (p : ι → P) {n : ℕ} (hc : Fintype.card ι = n + 1) :
@@ -223,9 +181,6 @@ theorem finrank_vectorSpan_range_le [Fintype ι] (p : ι → P) {n : ℕ} (hc :
exact finrank_vectorSpan_image_finset_le _ _ _ hc
#align finrank_vector_span_range_le finrank_vectorSpan_range_le
-/- warning: affine_independent_iff_finrank_vector_span_eq -> affineIndependent_iff_finrank_vectorSpan_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align affine_independent_iff_finrank_vector_span_eq affineIndependent_iff_finrank_vectorSpan_eqₓ'. -/
/-- `n + 1` points are affinely independent if and only if their
`vector_span` has dimension `n`. -/
theorem affineIndependent_iff_finrank_vectorSpan_eq [Fintype ι] (p : ι → P) {n : ℕ}
@@ -243,9 +198,6 @@ theorem affineIndependent_iff_finrank_vectorSpan_eq [Fintype ι] (p : ι → P)
simp [Finset.filter_ne', Finset.card_erase_of_mem, hc]
#align affine_independent_iff_finrank_vector_span_eq affineIndependent_iff_finrank_vectorSpan_eq
-/- warning: affine_independent_iff_le_finrank_vector_span -> affineIndependent_iff_le_finrank_vectorSpan is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align affine_independent_iff_le_finrank_vector_span affineIndependent_iff_le_finrank_vectorSpanₓ'. -/
/-- `n + 1` points are affinely independent if and only if their
`vector_span` has dimension at least `n`. -/
theorem affineIndependent_iff_le_finrank_vectorSpan [Fintype ι] (p : ι → P) {n : ℕ}
@@ -259,9 +211,6 @@ theorem affineIndependent_iff_le_finrank_vectorSpan [Fintype ι] (p : ι → P)
· exact fun hle => le_antisymm (finrank_vectorSpan_range_le k p hc) hle
#align affine_independent_iff_le_finrank_vector_span affineIndependent_iff_le_finrank_vectorSpan
-/- warning: affine_independent_iff_not_finrank_vector_span_le -> affineIndependent_iff_not_finrank_vectorSpan_le is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align affine_independent_iff_not_finrank_vector_span_le affineIndependent_iff_not_finrank_vectorSpan_leₓ'. -/
/-- `n + 2` points are affinely independent if and only if their
`vector_span` does not have dimension at most `n`. -/
theorem affineIndependent_iff_not_finrank_vectorSpan_le [Fintype ι] (p : ι → P) {n : ℕ}
@@ -270,9 +219,6 @@ theorem affineIndependent_iff_not_finrank_vectorSpan_le [Fintype ι] (p : ι →
rw [affineIndependent_iff_le_finrank_vectorSpan k p hc, ← Nat.lt_iff_add_one_le, lt_iff_not_ge]
#align affine_independent_iff_not_finrank_vector_span_le affineIndependent_iff_not_finrank_vectorSpan_le
-/- warning: finrank_vector_span_le_iff_not_affine_independent -> finrank_vectorSpan_le_iff_not_affineIndependent is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align finrank_vector_span_le_iff_not_affine_independent finrank_vectorSpan_le_iff_not_affineIndependentₓ'. -/
/-- `n + 2` points have a `vector_span` with dimension at most `n` if
and only if they are not affinely independent. -/
theorem finrank_vectorSpan_le_iff_not_affineIndependent [Fintype ι] (p : ι → P) {n : ℕ}
@@ -283,9 +229,6 @@ theorem finrank_vectorSpan_le_iff_not_affineIndependent [Fintype ι] (p : ι →
variable {k}
-/- warning: affine_independent.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align affine_independent.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
/-- If the `vector_span` of a finite subset of an affinely independent
family lies in a submodule with dimension one less than its
cardinality, it equals that submodule. -/
@@ -296,9 +239,6 @@ theorem AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_ad
eq_of_le_of_finrank_eq hle <| hi.finrank_vectorSpan_image_finset hc
#align affine_independent.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one
-/- warning: affine_independent.vector_span_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align affine_independent.vector_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
/-- If the `vector_span` of a finite affinely independent
family lies in a submodule with dimension one less than its
cardinality, it equals that submodule. -/
@@ -309,9 +249,6 @@ theorem AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_one [Fintyp
eq_of_le_of_finrank_eq hle <| hi.finrank_vectorSpan hc
#align affine_independent.vector_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_one
-/- warning: affine_independent.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align affine_independent.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
/-- If the `affine_span` of a finite subset of an affinely independent
family lies in an affine subspace whose direction has dimension one
less than its cardinality, it equals that subspace. -/
@@ -327,9 +264,6 @@ theorem AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_ad
exact hi.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one hd hc
#align affine_independent.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one
-/- warning: affine_independent.affine_span_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align affine_independent.affine_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
/-- If the `affine_span` of a finite affinely independent family lies
in an affine subspace whose direction has dimension one less than its
cardinality, it equals that subspace. -/
@@ -343,12 +277,6 @@ theorem AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one [Fintyp
exact hi.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one hle hc
#align affine_independent.affine_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one
-/- warning: affine_independent.affine_span_eq_top_iff_card_eq_finrank_add_one -> AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : FiniteDimensional.{u1, u2} k V _inst_1 _inst_2 _inst_3] [_inst_6 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (Iff (Eq.{succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) (Top.top.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (CompleteLattice.toHasTop.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (AffineSubspace.completeLattice.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) (Eq.{1} Nat (Fintype.card.{u4} ι _inst_6) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))
-but is expected to have type
- forall {k : Type.{u4}} {V : Type.{u3}} {P : Type.{u1}} {ι : Type.{u2}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u1} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] [_inst_5 : FiniteDimensional.{u4, u3} k V _inst_1 _inst_2 _inst_3] [_inst_6 : Fintype.{u2} ι] {p : ι -> P}, (AffineIndependent.{u4, u3, u1, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (Iff (Eq.{succ u1} (AffineSubspace.{u4, u3, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u4, u3, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u2} P ι p)) (Top.top.{u1} (AffineSubspace.{u4, u3, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (CompleteLattice.toTop.{u1} (AffineSubspace.{u4, u3, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (AffineSubspace.instCompleteLatticeAffineSubspace.{u4, u3, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4)))) (Eq.{1} Nat (Fintype.card.{u2} ι _inst_6) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))
-Case conversion may be inaccurate. Consider using '#align affine_independent.affine_span_eq_top_iff_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_oneₓ'. -/
/-- The `affine_span` of a finite affinely independent family is `⊤` iff the
family's cardinality is one more than that of the finite-dimensional space. -/
theorem AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one [FiniteDimensional k V]
@@ -367,12 +295,6 @@ theorem AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one [FiniteD
exact hi.affine_span_eq_of_le_of_card_eq_finrank_add_one le_top hc
#align affine_independent.affine_span_eq_top_iff_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one
-/- warning: affine.simplex.span_eq_top -> Affine.Simplex.span_eq_top is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_5 : FiniteDimensional.{u1, u2} k V _inst_1 _inst_2 _inst_3] {n : Nat} (T : Affine.Simplex.{u1, u2, u2} k V V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2)) n), (Eq.{1} Nat (FiniteDimensional.finrank.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) _inst_2 _inst_3) n) -> (Eq.{succ u2} (AffineSubspace.{u1, u2, u2} k V V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2))) (affineSpan.{u1, u2, u2} k V V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2)) (Set.range.{u2, 1} V (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Affine.Simplex.points.{u1, u2, u2} k V V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2)) n T))) (Top.top.{u2} (AffineSubspace.{u1, u2, u2} k V V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2))) (CompleteLattice.toHasTop.{u2} (AffineSubspace.{u1, u2, u2} k V V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2))) (AffineSubspace.completeLattice.{u1, u2, u2} k V V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2))))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_5 : FiniteDimensional.{u2, u1} k V _inst_1 _inst_2 _inst_3] {n : Nat} (T : Affine.Simplex.{u2, u1, u1} k V V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2)) n), (Eq.{1} Nat (FiniteDimensional.finrank.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) _inst_2 _inst_3) n) -> (Eq.{succ u1} (AffineSubspace.{u2, u1, u1} k V V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2))) (affineSpan.{u2, u1, u1} k V V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2)) (Set.range.{u1, 1} V (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Affine.Simplex.points.{u2, u1, u1} k V V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2)) n T))) (Top.top.{u1} (AffineSubspace.{u2, u1, u1} k V V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2))) (CompleteLattice.toTop.{u1} (AffineSubspace.{u2, u1, u1} k V V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2))) (AffineSubspace.instCompleteLatticeAffineSubspace.{u2, u1, u1} k V V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2))))))
-Case conversion may be inaccurate. Consider using '#align affine.simplex.span_eq_top Affine.Simplex.span_eq_topₓ'. -/
theorem Affine.Simplex.span_eq_top [FiniteDimensional k V] {n : ℕ} (T : Affine.Simplex k V n)
(hrank : finrank k V = n) : affineSpan k (Set.range T.points) = ⊤ := by
rw [AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one T.independent,
@@ -428,12 +350,6 @@ def Collinear (s : Set P) : Prop :=
#align collinear Collinear
-/
-/- warning: collinear_iff_rank_le_one -> collinear_iff_rank_le_one is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (s : Set.{u3} P), Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (LE.le.{succ u2} Cardinal.{u2} Cardinal.hasLe.{u2} (Module.rank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommMonoid.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{succ u2} Cardinal.{u2} 1 (OfNat.mk.{succ u2} Cardinal.{u2} 1 (One.one.{succ u2} Cardinal.{u2} Cardinal.hasOne.{u2}))))
-but is expected to have type
- forall (k : Type.{u2}) {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] (s : Set.{u3} P), Iff (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (LE.le.{succ u1} Cardinal.{u1} Cardinal.instLECardinal.{u1} (Module.rank.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (Submodule.addCommMonoid.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{succ u1} Cardinal.{u1} 1 (One.toOfNat1.{succ u1} Cardinal.{u1} Cardinal.instOneCardinal.{u1})))
-Case conversion may be inaccurate. Consider using '#align collinear_iff_rank_le_one collinear_iff_rank_le_oneₓ'. -/
/-- The definition of `collinear`. -/
theorem collinear_iff_rank_le_one (s : Set P) :
Collinear k s ↔ Module.rank k (vectorSpan k s) ≤ 1 :=
@@ -442,12 +358,6 @@ theorem collinear_iff_rank_le_one (s : Set P) :
variable {k}
-/- warning: collinear_iff_finrank_le_one -> collinear_iff_finrank_le_one is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))], Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))], Iff (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))
-Case conversion may be inaccurate. Consider using '#align collinear_iff_finrank_le_one collinear_iff_finrank_le_oneₓ'. -/
/-- A set of points, whose `vector_span` is finite-dimensional, is
collinear if and only if their `vector_span` has dimension at most
`1`. -/
@@ -459,32 +369,14 @@ theorem collinear_iff_finrank_le_one {s : Set P} [FiniteDimensional k (vectorSpa
exact_mod_cast h
#align collinear_iff_finrank_le_one collinear_iff_finrank_le_one
-/- warning: collinear.finrank_le_one -> Collinear.finrank_le_one is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))], (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))], (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))
-Case conversion may be inaccurate. Consider using '#align collinear.finrank_le_one Collinear.finrank_le_oneₓ'. -/
alias collinear_iff_finrank_le_one ↔ Collinear.finrank_le_one _
#align collinear.finrank_le_one Collinear.finrank_le_one
-/- warning: collinear.subset -> Collinear.subset is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s₁ : Set.{u3} P} {s₂ : Set.{u3} P}, (HasSubset.Subset.{u3} (Set.{u3} P) (Set.hasSubset.{u3} P) s₁ s₂) -> (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₂) -> (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₁)
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s₁ : Set.{u3} P} {s₂ : Set.{u3} P}, (HasSubset.Subset.{u3} (Set.{u3} P) (Set.instHasSubsetSet.{u3} P) s₁ s₂) -> (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₂) -> (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₁)
-Case conversion may be inaccurate. Consider using '#align collinear.subset Collinear.subsetₓ'. -/
/-- A subset of a collinear set is collinear. -/
theorem Collinear.subset {s₁ s₂ : Set P} (hs : s₁ ⊆ s₂) (h : Collinear k s₂) : Collinear k s₁ :=
(rank_le_of_submodule (vectorSpan k s₁) (vectorSpan k s₂) (vectorSpan_mono k hs)).trans h
#align collinear.subset Collinear.subset
-/- warning: collinear.finite_dimensional_vector_span -> Collinear.finiteDimensional_vectorSpan is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
-Case conversion may be inaccurate. Consider using '#align collinear.finite_dimensional_vector_span Collinear.finiteDimensional_vectorSpanₓ'. -/
/-- The `vector_span` of collinear points is finite-dimensional. -/
theorem Collinear.finiteDimensional_vectorSpan {s : Set P} (h : Collinear k s) :
FiniteDimensional k (vectorSpan k s) :=
@@ -492,12 +384,6 @@ theorem Collinear.finiteDimensional_vectorSpan {s : Set P} (h : Collinear k s) :
(IsNoetherian.iff_rank_lt_aleph0.2 (lt_of_le_of_lt h Cardinal.one_lt_aleph0))
#align collinear.finite_dimensional_vector_span Collinear.finiteDimensional_vectorSpan
-/- warning: collinear.finite_dimensional_direction_affine_span -> Collinear.finiteDimensional_direction_affineSpan is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))))
-Case conversion may be inaccurate. Consider using '#align collinear.finite_dimensional_direction_affine_span Collinear.finiteDimensional_direction_affineSpanₓ'. -/
/-- The direction of the affine span of collinear points is finite-dimensional. -/
theorem Collinear.finiteDimensional_direction_affineSpan {s : Set P} (h : Collinear k s) :
FiniteDimensional k (affineSpan k s).direction :=
@@ -506,12 +392,6 @@ theorem Collinear.finiteDimensional_direction_affineSpan {s : Set P} (h : Collin
variable (k P)
-/- warning: collinear_empty -> collinear_empty is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} (P : Type.{u3}) [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)], Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (EmptyCollection.emptyCollection.{u3} (Set.{u3} P) (Set.hasEmptyc.{u3} P))
-but is expected to have type
- forall (k : Type.{u3}) {V : Type.{u2}} (P : Type.{u1}) [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)], Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (EmptyCollection.emptyCollection.{u1} (Set.{u1} P) (Set.instEmptyCollectionSet.{u1} P))
-Case conversion may be inaccurate. Consider using '#align collinear_empty collinear_emptyₓ'. -/
/-- The empty set is collinear. -/
theorem collinear_empty : Collinear k (∅ : Set P) :=
by
@@ -521,12 +401,6 @@ theorem collinear_empty : Collinear k (∅ : Set P) :=
variable {P}
-/- warning: collinear_singleton -> collinear_singleton is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p : P), Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p)
-but is expected to have type
- forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p : P), Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p)
-Case conversion may be inaccurate. Consider using '#align collinear_singleton collinear_singletonₓ'. -/
/-- A single point is collinear. -/
theorem collinear_singleton (p : P) : Collinear k ({p} : Set P) :=
by
@@ -536,9 +410,6 @@ theorem collinear_singleton (p : P) : Collinear k ({p} : Set P) :=
variable {k}
-/- warning: collinear_iff_of_mem -> collinear_iff_of_mem is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align collinear_iff_of_mem collinear_iff_of_memₓ'. -/
/-- Given a point `p₀` in a set of points, that set is collinear if and
only if the points can all be expressed as multiples of the same
vector, added to `p₀`. -/
@@ -571,9 +442,6 @@ theorem collinear_iff_of_mem {s : Set P} {p₀ : P} (h : p₀ ∈ s) :
rwa [Submodule.mem_span_singleton] at hw'
#align collinear_iff_of_mem collinear_iff_of_mem
-/- warning: collinear_iff_exists_forall_eq_smul_vadd -> collinear_iff_exists_forall_eq_smul_vadd is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align collinear_iff_exists_forall_eq_smul_vadd collinear_iff_exists_forall_eq_smul_vaddₓ'. -/
/-- A set of points is collinear if and only if they can all be
expressed as multiples of the same vector, added to the same base
point. -/
@@ -596,12 +464,6 @@ theorem collinear_iff_exists_forall_eq_smul_vadd (s : Set P) :
variable (k)
-/- warning: collinear_pair -> collinear_pair is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p₁ : P) (p₂ : P), Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₂))
-but is expected to have type
- forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p₁ : P) (p₂ : P), Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₂))
-Case conversion may be inaccurate. Consider using '#align collinear_pair collinear_pairₓ'. -/
/-- Two points are collinear. -/
theorem collinear_pair (p₁ p₂ : P) : Collinear k ({p₁, p₂} : Set P) :=
by
@@ -618,12 +480,6 @@ theorem collinear_pair (p₁ p₂ : P) : Collinear k ({p₁, p₂} : Set P) :=
variable {k}
-/- warning: affine_independent_iff_not_collinear -> affineIndependent_iff_not_collinear is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> P}, Iff (AffineIndependent.{u1, u2, u3, 0} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) p) (Not (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Set.range.{u3, 1} P (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) p)))
-but is expected to have type
- forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> P}, Iff (AffineIndependent.{u3, u2, u1, 0} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) p) (Not (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Set.range.{u1, 1} P (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) p)))
-Case conversion may be inaccurate. Consider using '#align affine_independent_iff_not_collinear affineIndependent_iff_not_collinearₓ'. -/
/-- Three points are affinely independent if and only if they are not
collinear. -/
theorem affineIndependent_iff_not_collinear {p : Fin 3 → P} :
@@ -632,12 +488,6 @@ theorem affineIndependent_iff_not_collinear {p : Fin 3 → P} :
affineIndependent_iff_not_finrank_vectorSpan_le k p (Fintype.card_fin 3)]
#align affine_independent_iff_not_collinear affineIndependent_iff_not_collinear
-/- warning: collinear_iff_not_affine_independent -> collinear_iff_not_affineIndependent is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> P}, Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Set.range.{u3, 1} P (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) p)) (Not (AffineIndependent.{u1, u2, u3, 0} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) p))
-but is expected to have type
- forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> P}, Iff (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Set.range.{u1, 1} P (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) p)) (Not (AffineIndependent.{u3, u2, u1, 0} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) p))
-Case conversion may be inaccurate. Consider using '#align collinear_iff_not_affine_independent collinear_iff_not_affineIndependentₓ'. -/
/-- Three points are collinear if and only if they are not affinely
independent. -/
theorem collinear_iff_not_affineIndependent {p : Fin 3 → P} :
@@ -646,36 +496,18 @@ theorem collinear_iff_not_affineIndependent {p : Fin 3 → P} :
finrank_vectorSpan_le_iff_not_affineIndependent k p (Fintype.card_fin 3)]
#align collinear_iff_not_affine_independent collinear_iff_not_affineIndependent
-/- warning: affine_independent_iff_not_collinear_set -> affineIndependent_iff_not_collinear_set is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, Iff (AffineIndependent.{u1, u2, u3, 0} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (Nat.succ (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))))))) (Matrix.vecCons.{u3} P (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))))) p₁ (Matrix.vecCons.{u3} P (Nat.succ (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) p₂ (Matrix.vecCons.{u3} P (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) p₃ (Matrix.vecEmpty.{u3} P))))) (Not (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃)))))
-but is expected to have type
- forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, Iff (AffineIndependent.{u3, u2, u1, 0} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (Nat.succ (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)))))) (Matrix.vecCons.{u1} P (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)))) p₁ (Matrix.vecCons.{u1} P (Nat.succ (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) p₂ (Matrix.vecCons.{u1} P (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) p₃ (Matrix.vecEmpty.{u1} P))))) (Not (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₂ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₃)))))
-Case conversion may be inaccurate. Consider using '#align affine_independent_iff_not_collinear_set affineIndependent_iff_not_collinear_setₓ'. -/
/-- Three points are affinely independent if and only if they are not collinear. -/
theorem affineIndependent_iff_not_collinear_set {p₁ p₂ p₃ : P} :
AffineIndependent k ![p₁, p₂, p₃] ↔ ¬Collinear k ({p₁, p₂, p₃} : Set P) := by
simp [affineIndependent_iff_not_collinear, -Set.union_singleton]
#align affine_independent_iff_not_collinear_set affineIndependent_iff_not_collinear_set
-/- warning: collinear_iff_not_affine_independent_set -> collinear_iff_not_affineIndependent_set is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃)))) (Not (AffineIndependent.{u1, u2, u3, 0} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (Nat.succ (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))))))) (Matrix.vecCons.{u3} P (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))))) p₁ (Matrix.vecCons.{u3} P (Nat.succ (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) p₂ (Matrix.vecCons.{u3} P (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) p₃ (Matrix.vecEmpty.{u3} P))))))
-but is expected to have type
- forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, Iff (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₂ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₃)))) (Not (AffineIndependent.{u3, u2, u1, 0} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (Nat.succ (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)))))) (Matrix.vecCons.{u1} P (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)))) p₁ (Matrix.vecCons.{u1} P (Nat.succ (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) p₂ (Matrix.vecCons.{u1} P (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) p₃ (Matrix.vecEmpty.{u1} P))))))
-Case conversion may be inaccurate. Consider using '#align collinear_iff_not_affine_independent_set collinear_iff_not_affineIndependent_setₓ'. -/
/-- Three points are collinear if and only if they are not affinely independent. -/
theorem collinear_iff_not_affineIndependent_set {p₁ p₂ p₃ : P} :
Collinear k ({p₁, p₂, p₃} : Set P) ↔ ¬AffineIndependent k ![p₁, p₂, p₃] :=
affineIndependent_iff_not_collinear_set.not_left.symm
#align collinear_iff_not_affine_independent_set collinear_iff_not_affineIndependent_set
-/- warning: affine_independent_iff_not_collinear_of_ne -> affineIndependent_iff_not_collinear_of_ne is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> P} {i₁ : Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))} {i₂ : Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))} {i₃ : Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))}, (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) i₁ i₂) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) i₁ i₃) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) i₂ i₃) -> (Iff (AffineIndependent.{u1, u2, u3, 0} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) p) (Not (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) (p i₁) (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) (p i₂) (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) (p i₃)))))))
-but is expected to have type
- forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> P} {i₁ : Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))} {i₂ : Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))} {i₃ : Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))}, (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) i₁ i₂) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) i₁ i₃) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) i₂ i₃) -> (Iff (AffineIndependent.{u3, u2, u1, 0} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) p) (Not (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) (p i₁) (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) (p i₂) (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) (p i₃)))))))
-Case conversion may be inaccurate. Consider using '#align affine_independent_iff_not_collinear_of_ne affineIndependent_iff_not_collinear_of_neₓ'. -/
/-- Three points are affinely independent if and only if they are not collinear. -/
theorem affineIndependent_iff_not_collinear_of_ne {p : Fin 3 → P} {i₁ i₂ i₃ : Fin 3} (h₁₂ : i₁ ≠ i₂)
(h₁₃ : i₁ ≠ i₃) (h₂₃ : i₂ ≠ i₃) :
@@ -686,12 +518,6 @@ theorem affineIndependent_iff_not_collinear_of_ne {p : Fin 3 → P} {i₁ i₂ i
Finset.coe_insert, Finset.coe_insert, Finset.coe_singleton, Set.image_insert_eq, Set.image_pair]
#align affine_independent_iff_not_collinear_of_ne affineIndependent_iff_not_collinear_of_ne
-/- warning: collinear_iff_not_affine_independent_of_ne -> collinear_iff_not_affineIndependent_of_ne is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> P} {i₁ : Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))} {i₂ : Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))} {i₃ : Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))}, (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) i₁ i₂) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) i₁ i₃) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) i₂ i₃) -> (Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) (p i₁) (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) (p i₂) (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) (p i₃))))) (Not (AffineIndependent.{u1, u2, u3, 0} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) p)))
-but is expected to have type
- forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> P} {i₁ : Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))} {i₂ : Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))} {i₃ : Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))}, (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) i₁ i₂) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) i₁ i₃) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) i₂ i₃) -> (Iff (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) (p i₁) (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) (p i₂) (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) (p i₃))))) (Not (AffineIndependent.{u3, u2, u1, 0} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) p)))
-Case conversion may be inaccurate. Consider using '#align collinear_iff_not_affine_independent_of_ne collinear_iff_not_affineIndependent_of_neₓ'. -/
/-- Three points are collinear if and only if they are not affinely independent. -/
theorem collinear_iff_not_affineIndependent_of_ne {p : Fin 3 → P} {i₁ i₂ i₃ : Fin 3} (h₁₂ : i₁ ≠ i₂)
(h₁₃ : i₁ ≠ i₃) (h₂₃ : i₂ ≠ i₃) :
@@ -699,45 +525,21 @@ theorem collinear_iff_not_affineIndependent_of_ne {p : Fin 3 → P} {i₁ i₂ i
(affineIndependent_iff_not_collinear_of_ne h₁₂ h₁₃ h₂₃).not_left.symm
#align collinear_iff_not_affine_independent_of_ne collinear_iff_not_affineIndependent_of_ne
-/- warning: ne₁₂_of_not_collinear -> ne₁₂_of_not_collinear is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Not (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃))))) -> (Ne.{succ u3} P p₁ p₂)
-but is expected to have type
- forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Not (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₂ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₃))))) -> (Ne.{succ u1} P p₁ p₂)
-Case conversion may be inaccurate. Consider using '#align ne₁₂_of_not_collinear ne₁₂_of_not_collinearₓ'. -/
/-- If three points are not collinear, the first and second are different. -/
theorem ne₁₂_of_not_collinear {p₁ p₂ p₃ : P} (h : ¬Collinear k ({p₁, p₂, p₃} : Set P)) : p₁ ≠ p₂ :=
by rintro rfl; simpa [collinear_pair] using h
#align ne₁₂_of_not_collinear ne₁₂_of_not_collinear
-/- warning: ne₁₃_of_not_collinear -> ne₁₃_of_not_collinear is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Not (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃))))) -> (Ne.{succ u3} P p₁ p₃)
-but is expected to have type
- forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Not (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₂ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₃))))) -> (Ne.{succ u1} P p₁ p₃)
-Case conversion may be inaccurate. Consider using '#align ne₁₃_of_not_collinear ne₁₃_of_not_collinearₓ'. -/
/-- If three points are not collinear, the first and third are different. -/
theorem ne₁₃_of_not_collinear {p₁ p₂ p₃ : P} (h : ¬Collinear k ({p₁, p₂, p₃} : Set P)) : p₁ ≠ p₃ :=
by rintro rfl; simpa [collinear_pair] using h
#align ne₁₃_of_not_collinear ne₁₃_of_not_collinear
-/- warning: ne₂₃_of_not_collinear -> ne₂₃_of_not_collinear is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Not (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃))))) -> (Ne.{succ u3} P p₂ p₃)
-but is expected to have type
- forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Not (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₂ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₃))))) -> (Ne.{succ u1} P p₂ p₃)
-Case conversion may be inaccurate. Consider using '#align ne₂₃_of_not_collinear ne₂₃_of_not_collinearₓ'. -/
/-- If three points are not collinear, the second and third are different. -/
theorem ne₂₃_of_not_collinear {p₁ p₂ p₃ : P} (h : ¬Collinear k ({p₁, p₂, p₃} : Set P)) : p₂ ≠ p₃ :=
by rintro rfl; simpa [collinear_pair] using h
#align ne₂₃_of_not_collinear ne₂₃_of_not_collinear
-/- warning: collinear.mem_affine_span_of_mem_of_ne -> Collinear.mem_affineSpan_of_mem_of_ne is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall {p₁ : P} {p₂ : P} {p₃ : P}, (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₁ s) -> (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₂ s) -> (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₃ s) -> (Ne.{succ u3} P p₁ p₂) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₂)))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall {p₁ : P} {p₂ : P} {p₃ : P}, (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₁ s) -> (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₂ s) -> (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₃ s) -> (Ne.{succ u3} P p₁ p₂) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₂)))))
-Case conversion may be inaccurate. Consider using '#align collinear.mem_affine_span_of_mem_of_ne Collinear.mem_affineSpan_of_mem_of_neₓ'. -/
/-- A point in a collinear set of points lies in the affine span of any two distinct points of
that set. -/
theorem Collinear.mem_affineSpan_of_mem_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂ p₃ : P}
@@ -755,12 +557,6 @@ theorem Collinear.mem_affineSpan_of_mem_of_ne {s : Set P} (h : Collinear k s) {p
simp [smul_smul, h₂]
#align collinear.mem_affine_span_of_mem_of_ne Collinear.mem_affineSpan_of_mem_of_ne
-/- warning: collinear.affine_span_eq_of_ne -> Collinear.affineSpan_eq_of_ne is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall {p₁ : P} {p₂ : P}, (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₁ s) -> (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₂ s) -> (Ne.{succ u3} P p₁ p₂) -> (Eq.{succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₂))) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall {p₁ : P} {p₂ : P}, (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₁ s) -> (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₂ s) -> (Ne.{succ u3} P p₁ p₂) -> (Eq.{succ u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₂))) (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
-Case conversion may be inaccurate. Consider using '#align collinear.affine_span_eq_of_ne Collinear.affineSpan_eq_of_neₓ'. -/
/-- The affine span of any two distinct points of a collinear set of points equals the affine
span of the whole set. -/
theorem Collinear.affineSpan_eq_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂ : P} (hp₁ : p₁ ∈ s)
@@ -769,12 +565,6 @@ theorem Collinear.affineSpan_eq_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂
(affineSpan_le.2 fun p hp => h.mem_affineSpan_of_mem_of_ne hp₁ hp₂ hp hp₁p₂)
#align collinear.affine_span_eq_of_ne Collinear.affineSpan_eq_of_ne
-/- warning: collinear.collinear_insert_iff_of_ne -> Collinear.collinear_insert_iff_of_ne is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall {p₁ : P} {p₂ : P} {p₃ : P}, (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₂ s) -> (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₃ s) -> (Ne.{succ u3} P p₂ p₃) -> (Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ s)) (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃))))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall {p₁ : P} {p₂ : P} {p₃ : P}, (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₂ s) -> (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₃ s) -> (Ne.{succ u3} P p₂ p₃) -> (Iff (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ s)) (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₃))))))
-Case conversion may be inaccurate. Consider using '#align collinear.collinear_insert_iff_of_ne Collinear.collinear_insert_iff_of_neₓ'. -/
/-- Given a collinear set of points, and two distinct points `p₂` and `p₃` in it, a point `p₁` is
collinear with the set if and only if it is collinear with `p₂` and `p₃`. -/
theorem Collinear.collinear_insert_iff_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂ p₃ : P}
@@ -789,24 +579,12 @@ theorem Collinear.collinear_insert_iff_of_ne {s : Set P} (h : Collinear k s) {p
rw [Collinear, Collinear, hv]
#align collinear.collinear_insert_iff_of_ne Collinear.collinear_insert_iff_of_ne
-/- warning: collinear_insert_iff_of_mem_affine_span -> collinear_insert_iff_of_mem_affineSpan is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P} {p : P}, (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) -> (Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p s)) (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P} {p : P}, (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) -> (Iff (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p s)) (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s))
-Case conversion may be inaccurate. Consider using '#align collinear_insert_iff_of_mem_affine_span collinear_insert_iff_of_mem_affineSpanₓ'. -/
/-- Adding a point in the affine span of a set does not change whether that set is collinear. -/
theorem collinear_insert_iff_of_mem_affineSpan {s : Set P} {p : P} (h : p ∈ affineSpan k s) :
Collinear k (insert p s) ↔ Collinear k s := by
rw [Collinear, Collinear, vectorSpan_insert_eq_vectorSpan h]
#align collinear_insert_iff_of_mem_affine_span collinear_insert_iff_of_mem_affineSpan
-/- warning: collinear_insert_of_mem_affine_span_pair -> collinear_insert_of_mem_affineSpan_pair is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃)))) -> (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₃)))) -> (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₃))))
-Case conversion may be inaccurate. Consider using '#align collinear_insert_of_mem_affine_span_pair collinear_insert_of_mem_affineSpan_pairₓ'. -/
/-- If a point lies in the affine span of two points, those three points are collinear. -/
theorem collinear_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ : P} (h : p₁ ∈ line[k, p₂, p₃]) :
Collinear k ({p₁, p₂, p₃} : Set P) :=
@@ -815,12 +593,6 @@ theorem collinear_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ : P} (h : p₁
exact collinear_pair _ _ _
#align collinear_insert_of_mem_affine_span_pair collinear_insert_of_mem_affineSpan_pair
-/- warning: collinear_insert_insert_of_mem_affine_span_pair -> collinear_insert_insert_of_mem_affineSpan_pair is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P}, (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₄)))) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₄)))) -> (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₄)))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P}, (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₄)))) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₄)))) -> (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₂ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₄)))))
-Case conversion may be inaccurate. Consider using '#align collinear_insert_insert_of_mem_affine_span_pair collinear_insert_insert_of_mem_affineSpan_pairₓ'. -/
/-- If two points lie in the affine span of two points, those four points are collinear. -/
theorem collinear_insert_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ : P} (h₁ : p₁ ∈ line[k, p₃, p₄])
(h₂ : p₂ ∈ line[k, p₃, p₄]) : Collinear k ({p₁, p₂, p₃, p₄} : Set P) :=
@@ -831,12 +603,6 @@ theorem collinear_insert_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ : P}
exact collinear_pair _ _ _
#align collinear_insert_insert_of_mem_affine_span_pair collinear_insert_insert_of_mem_affineSpan_pair
-/- warning: collinear_insert_insert_insert_of_mem_affine_span_pair -> collinear_insert_insert_insert_of_mem_affineSpan_pair is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P} {p₅ : P}, (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₃ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅))))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P} {p₅ : P}, (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₂ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₃ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅))))))
-Case conversion may be inaccurate. Consider using '#align collinear_insert_insert_insert_of_mem_affine_span_pair collinear_insert_insert_insert_of_mem_affineSpan_pairₓ'. -/
/-- If three points lie in the affine span of two points, those five points are collinear. -/
theorem collinear_insert_insert_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ p₅ : P}
(h₁ : p₁ ∈ line[k, p₄, p₅]) (h₂ : p₂ ∈ line[k, p₄, p₅]) (h₃ : p₃ ∈ line[k, p₄, p₅]) :
@@ -851,12 +617,6 @@ theorem collinear_insert_insert_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ p
exact collinear_pair _ _ _
#align collinear_insert_insert_insert_of_mem_affine_span_pair collinear_insert_insert_insert_of_mem_affineSpan_pair
-/- warning: collinear_insert_insert_insert_left_of_mem_affine_span_pair -> collinear_insert_insert_insert_left_of_mem_affineSpan_pair is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P} {p₅ : P}, (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₄)))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P} {p₅ : P}, (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₂ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₄)))))
-Case conversion may be inaccurate. Consider using '#align collinear_insert_insert_insert_left_of_mem_affine_span_pair collinear_insert_insert_insert_left_of_mem_affineSpan_pairₓ'. -/
/-- If three points lie in the affine span of two points, the first four points are collinear. -/
theorem collinear_insert_insert_insert_left_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ p₅ : P}
(h₁ : p₁ ∈ line[k, p₄, p₅]) (h₂ : p₂ ∈ line[k, p₄, p₅]) (h₃ : p₃ ∈ line[k, p₄, p₅]) :
@@ -866,12 +626,6 @@ theorem collinear_insert_insert_insert_left_of_mem_affineSpan_pair {p₁ p₂ p
simp [Set.insert_subset_insert]
#align collinear_insert_insert_insert_left_of_mem_affine_span_pair collinear_insert_insert_insert_left_of_mem_affineSpan_pair
-/- warning: collinear_triple_of_mem_affine_span_pair -> collinear_triple_of_mem_affineSpan_pair is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P} {p₅ : P}, (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P} {p₅ : P}, (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₃))))
-Case conversion may be inaccurate. Consider using '#align collinear_triple_of_mem_affine_span_pair collinear_triple_of_mem_affineSpan_pairₓ'. -/
/-- If three points lie in the affine span of two points, the first three points are collinear. -/
theorem collinear_triple_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ p₅ : P} (h₁ : p₁ ∈ line[k, p₄, p₅])
(h₂ : p₂ ∈ line[k, p₄, p₅]) (h₃ : p₃ ∈ line[k, p₄, p₅]) : Collinear k ({p₁, p₂, p₃} : Set P) :=
@@ -891,12 +645,6 @@ def Coplanar (s : Set P) : Prop :=
variable {k}
-/- warning: coplanar.finite_dimensional_vector_span -> Coplanar.finiteDimensional_vectorSpan is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
-Case conversion may be inaccurate. Consider using '#align coplanar.finite_dimensional_vector_span Coplanar.finiteDimensional_vectorSpanₓ'. -/
/-- The `vector_span` of coplanar points is finite-dimensional. -/
theorem Coplanar.finiteDimensional_vectorSpan {s : Set P} (h : Coplanar k s) :
FiniteDimensional k (vectorSpan k s) :=
@@ -905,24 +653,12 @@ theorem Coplanar.finiteDimensional_vectorSpan {s : Set P} (h : Coplanar k s) :
simp
#align coplanar.finite_dimensional_vector_span Coplanar.finiteDimensional_vectorSpan
-/- warning: coplanar.finite_dimensional_direction_affine_span -> Coplanar.finiteDimensional_direction_affineSpan is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))))
-Case conversion may be inaccurate. Consider using '#align coplanar.finite_dimensional_direction_affine_span Coplanar.finiteDimensional_direction_affineSpanₓ'. -/
/-- The direction of the affine span of coplanar points is finite-dimensional. -/
theorem Coplanar.finiteDimensional_direction_affineSpan {s : Set P} (h : Coplanar k s) :
FiniteDimensional k (affineSpan k s).direction :=
(direction_affineSpan k s).symm ▸ h.finiteDimensional_vectorSpan
#align coplanar.finite_dimensional_direction_affine_span Coplanar.finiteDimensional_direction_affineSpan
-/- warning: coplanar_iff_finrank_le_two -> coplanar_iff_finrank_le_two is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))], Iff (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))], Iff (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))
-Case conversion may be inaccurate. Consider using '#align coplanar_iff_finrank_le_two coplanar_iff_finrank_le_twoₓ'. -/
/-- A set of points, whose `vector_span` is finite-dimensional, is coplanar if and only if their
`vector_span` has dimension at most `2`. -/
theorem coplanar_iff_finrank_le_two {s : Set P} [FiniteDimensional k (vectorSpan k s)] :
@@ -933,32 +669,14 @@ theorem coplanar_iff_finrank_le_two {s : Set P} [FiniteDimensional k (vectorSpan
exact_mod_cast h
#align coplanar_iff_finrank_le_two coplanar_iff_finrank_le_two
-/- warning: coplanar.finrank_le_two -> Coplanar.finrank_le_two is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))], (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))], (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))
-Case conversion may be inaccurate. Consider using '#align coplanar.finrank_le_two Coplanar.finrank_le_twoₓ'. -/
alias coplanar_iff_finrank_le_two ↔ Coplanar.finrank_le_two _
#align coplanar.finrank_le_two Coplanar.finrank_le_two
-/- warning: coplanar.subset -> Coplanar.subset is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s₁ : Set.{u3} P} {s₂ : Set.{u3} P}, (HasSubset.Subset.{u3} (Set.{u3} P) (Set.hasSubset.{u3} P) s₁ s₂) -> (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₂) -> (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₁)
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s₁ : Set.{u3} P} {s₂ : Set.{u3} P}, (HasSubset.Subset.{u3} (Set.{u3} P) (Set.instHasSubsetSet.{u3} P) s₁ s₂) -> (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₂) -> (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₁)
-Case conversion may be inaccurate. Consider using '#align coplanar.subset Coplanar.subsetₓ'. -/
/-- A subset of a coplanar set is coplanar. -/
theorem Coplanar.subset {s₁ s₂ : Set P} (hs : s₁ ⊆ s₂) (h : Coplanar k s₂) : Coplanar k s₁ :=
(rank_le_of_submodule (vectorSpan k s₁) (vectorSpan k s₂) (vectorSpan_mono k hs)).trans h
#align coplanar.subset Coplanar.subset
-/- warning: collinear.coplanar -> Collinear.coplanar is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s)
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s)
-Case conversion may be inaccurate. Consider using '#align collinear.coplanar Collinear.coplanarₓ'. -/
/-- Collinear points are coplanar. -/
theorem Collinear.coplanar {s : Set P} (h : Collinear k s) : Coplanar k s :=
le_trans h one_le_two
@@ -966,12 +684,6 @@ theorem Collinear.coplanar {s : Set P} (h : Collinear k s) : Coplanar k s :=
variable (k) (P)
-/- warning: coplanar_empty -> coplanar_empty is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} (P : Type.{u3}) [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)], Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (EmptyCollection.emptyCollection.{u3} (Set.{u3} P) (Set.hasEmptyc.{u3} P))
-but is expected to have type
- forall (k : Type.{u3}) {V : Type.{u2}} (P : Type.{u1}) [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)], Coplanar.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (EmptyCollection.emptyCollection.{u1} (Set.{u1} P) (Set.instEmptyCollectionSet.{u1} P))
-Case conversion may be inaccurate. Consider using '#align coplanar_empty coplanar_emptyₓ'. -/
/-- The empty set is coplanar. -/
theorem coplanar_empty : Coplanar k (∅ : Set P) :=
(collinear_empty k P).Coplanar
@@ -979,23 +691,11 @@ theorem coplanar_empty : Coplanar k (∅ : Set P) :=
variable {P}
-/- warning: coplanar_singleton -> coplanar_singleton is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p : P), Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p)
-but is expected to have type
- forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p : P), Coplanar.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p)
-Case conversion may be inaccurate. Consider using '#align coplanar_singleton coplanar_singletonₓ'. -/
/-- A single point is coplanar. -/
theorem coplanar_singleton (p : P) : Coplanar k ({p} : Set P) :=
(collinear_singleton k p).Coplanar
#align coplanar_singleton coplanar_singleton
-/- warning: coplanar_pair -> coplanar_pair is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p₁ : P) (p₂ : P), Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₂))
-but is expected to have type
- forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p₁ : P) (p₂ : P), Coplanar.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₂))
-Case conversion may be inaccurate. Consider using '#align coplanar_pair coplanar_pairₓ'. -/
/-- Two points are coplanar. -/
theorem coplanar_pair (p₁ p₂ : P) : Coplanar k ({p₁, p₂} : Set P) :=
(collinear_pair k p₁ p₂).Coplanar
@@ -1003,12 +703,6 @@ theorem coplanar_pair (p₁ p₂ : P) : Coplanar k ({p₁, p₂} : Set P) :=
variable {k}
-/- warning: coplanar_insert_iff_of_mem_affine_span -> coplanar_insert_iff_of_mem_affineSpan is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P} {p : P}, (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) -> (Iff (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p s)) (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P} {p : P}, (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) -> (Iff (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p s)) (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s))
-Case conversion may be inaccurate. Consider using '#align coplanar_insert_iff_of_mem_affine_span coplanar_insert_iff_of_mem_affineSpanₓ'. -/
/-- Adding a point in the affine span of a set does not change whether that set is coplanar. -/
theorem coplanar_insert_iff_of_mem_affineSpan {s : Set P} {p : P} (h : p ∈ affineSpan k s) :
Coplanar k (insert p s) ↔ Coplanar k s := by
@@ -1027,9 +721,6 @@ open AffineSubspace FiniteDimensional Module
variable [DivisionRing k] [AddCommGroup V] [Module k V] [affine_space V P]
-/- warning: finrank_vector_span_insert_le -> finrank_vectorSpan_insert_le is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align finrank_vector_span_insert_le finrank_vectorSpan_insert_leₓ'. -/
/-- Adding a point to a finite-dimensional subspace increases the dimension by at most one. -/
theorem finrank_vectorSpan_insert_le (s : AffineSubspace k P) (p : P) :
finrank k (vectorSpan k (insert p (s : Set P))) ≤ finrank k s.direction + 1 :=
@@ -1067,12 +758,6 @@ theorem finrank_vectorSpan_insert_le (s : AffineSubspace k P) (p : P) :
variable (k)
-/- warning: finrank_vector_span_insert_le_set -> finrank_vectorSpan_insert_le_set is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (s : Set.{u3} P) (p : P), LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p s))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p s))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p s)))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))
-but is expected to have type
- forall (k : Type.{u2}) {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] (s : Set.{u3} P) (p : P), LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p s)))) (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p s))) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p s)))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))
-Case conversion may be inaccurate. Consider using '#align finrank_vector_span_insert_le_set finrank_vectorSpan_insert_le_setₓ'. -/
/-- Adding a point to a set with a finite-dimensional span increases the dimension by at most
one. -/
theorem finrank_vectorSpan_insert_le_set (s : Set P) (p : P) :
@@ -1085,12 +770,6 @@ theorem finrank_vectorSpan_insert_le_set (s : Set P) (p : P) :
variable {k}
-/- warning: collinear.coplanar_insert -> Collinear.coplanar_insert is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall (p : P), Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p s))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall (p : P), Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p s))
-Case conversion may be inaccurate. Consider using '#align collinear.coplanar_insert Collinear.coplanar_insertₓ'. -/
/-- Adding a point to a collinear set produces a coplanar set. -/
theorem Collinear.coplanar_insert {s : Set P} (h : Collinear k s) (p : P) :
Coplanar k (insert p s) :=
@@ -1100,12 +779,6 @@ theorem Collinear.coplanar_insert {s : Set P} (h : Collinear k s) (p : P) :
exact (finrank_vectorSpan_insert_le_set k s p).trans (add_le_add_right h.finrank_le_one _)
#align collinear.coplanar_insert Collinear.coplanar_insert
-/- warning: coplanar_of_finrank_eq_two -> coplanar_of_finrank_eq_two is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (s : Set.{u3} P), (Eq.{1} Nat (FiniteDimensional.finrank.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s)
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] (s : Set.{u3} P), (Eq.{1} Nat (FiniteDimensional.finrank.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) -> (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s)
-Case conversion may be inaccurate. Consider using '#align coplanar_of_finrank_eq_two coplanar_of_finrank_eq_twoₓ'. -/
/-- A set of points in a two-dimensional space is coplanar. -/
theorem coplanar_of_finrank_eq_two (s : Set P) (h : finrank k V = 2) : Coplanar k s :=
by
@@ -1114,12 +787,6 @@ theorem coplanar_of_finrank_eq_two (s : Set P) (h : finrank k V = 2) : Coplanar
exact Submodule.finrank_le _
#align coplanar_of_finrank_eq_two coplanar_of_finrank_eq_two
-/- warning: coplanar_of_fact_finrank_eq_two -> coplanar_of_fact_finrank_eq_two is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (s : Set.{u3} P) [h : Fact (Eq.{1} Nat (FiniteDimensional.finrank.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))], Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] (s : Set.{u3} P) [h : Fact (Eq.{1} Nat (FiniteDimensional.finrank.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))], Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s
-Case conversion may be inaccurate. Consider using '#align coplanar_of_fact_finrank_eq_two coplanar_of_fact_finrank_eq_twoₓ'. -/
/-- A set of points in a two-dimensional space is coplanar. -/
theorem coplanar_of_fact_finrank_eq_two (s : Set P) [h : Fact (finrank k V = 2)] : Coplanar k s :=
coplanar_of_finrank_eq_two s h.out
@@ -1127,12 +794,6 @@ theorem coplanar_of_fact_finrank_eq_two (s : Set P) [h : Fact (finrank k V = 2)]
variable (k)
-/- warning: coplanar_triple -> coplanar_triple is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p₁ : P) (p₂ : P) (p₃ : P), Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃)))
-but is expected to have type
- forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p₁ : P) (p₂ : P) (p₃ : P), Coplanar.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₂ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₃)))
-Case conversion may be inaccurate. Consider using '#align coplanar_triple coplanar_tripleₓ'. -/
/-- Three points are coplanar. -/
theorem coplanar_triple (p₁ p₂ p₃ : P) : Coplanar k ({p₁, p₂, p₃} : Set P) :=
(collinear_pair k p₂ p₃).coplanar_insert p₁
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -200,9 +200,7 @@ dimension at most `n`. -/
theorem finrank_vectorSpan_image_finset_le (p : ι → P) (s : Finset ι) {n : ℕ}
(hc : Finset.card s = n + 1) : finrank k (vectorSpan k (s.image p : Set P)) ≤ n :=
by
- have hn : (s.image p).Nonempty :=
- by
- rw [Finset.Nonempty.image_iff, ← Finset.card_pos, hc]
+ have hn : (s.image p).Nonempty := by rw [Finset.Nonempty.image_iff, ← Finset.card_pos, hc];
apply Nat.succ_pos
rcases hn with ⟨p₁, hp₁⟩
rw [vectorSpan_eq_span_vsub_finset_right_ne k hp₁]
@@ -322,9 +320,7 @@ theorem AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_ad
[FiniteDimensional k sp.direction] (hle : affineSpan k (s.image p : Set P) ≤ sp)
(hc : Finset.card s = finrank k sp.direction + 1) : affineSpan k (s.image p : Set P) = sp :=
by
- have hn : s.nonempty := by
- rw [← Finset.card_pos, hc]
- apply Nat.succ_pos
+ have hn : s.nonempty := by rw [← Finset.card_pos, hc]; apply Nat.succ_pos
refine' eq_of_direction_eq_of_nonempty_of_le _ ((hn.image _).to_set.affineSpan _) hle
have hd := direction_le hle
rw [direction_affineSpan] at hd⊢
@@ -711,9 +707,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align ne₁₂_of_not_collinear ne₁₂_of_not_collinearₓ'. -/
/-- If three points are not collinear, the first and second are different. -/
theorem ne₁₂_of_not_collinear {p₁ p₂ p₃ : P} (h : ¬Collinear k ({p₁, p₂, p₃} : Set P)) : p₁ ≠ p₂ :=
- by
- rintro rfl
- simpa [collinear_pair] using h
+ by rintro rfl; simpa [collinear_pair] using h
#align ne₁₂_of_not_collinear ne₁₂_of_not_collinear
/- warning: ne₁₃_of_not_collinear -> ne₁₃_of_not_collinear is a dubious translation:
@@ -724,9 +718,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align ne₁₃_of_not_collinear ne₁₃_of_not_collinearₓ'. -/
/-- If three points are not collinear, the first and third are different. -/
theorem ne₁₃_of_not_collinear {p₁ p₂ p₃ : P} (h : ¬Collinear k ({p₁, p₂, p₃} : Set P)) : p₁ ≠ p₃ :=
- by
- rintro rfl
- simpa [collinear_pair] using h
+ by rintro rfl; simpa [collinear_pair] using h
#align ne₁₃_of_not_collinear ne₁₃_of_not_collinear
/- warning: ne₂₃_of_not_collinear -> ne₂₃_of_not_collinear is a dubious translation:
@@ -737,9 +729,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align ne₂₃_of_not_collinear ne₂₃_of_not_collinearₓ'. -/
/-- If three points are not collinear, the second and third are different. -/
theorem ne₂₃_of_not_collinear {p₁ p₂ p₃ : P} (h : ¬Collinear k ({p₁, p₂, p₃} : Set P)) : p₂ ≠ p₃ :=
- by
- rintro rfl
- simpa [collinear_pair] using h
+ by rintro rfl; simpa [collinear_pair] using h
#align ne₂₃_of_not_collinear ne₂₃_of_not_collinear
/- warning: collinear.mem_affine_span_of_mem_of_ne -> Collinear.mem_affineSpan_of_mem_of_ne is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -139,10 +139,7 @@ open Classical
variable {k}
/- warning: affine_independent.finrank_vector_span_image_finset -> AffineIndependent.finrank_vectorSpan_image_finset is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u4} ι} {n : Nat}, (Eq.{1} Nat (Finset.card.{u4} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{1} Nat (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s)))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s)))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))))) n))
-but is expected to have type
- forall {k : Type.{u4}} {V : Type.{u3}} {P : Type.{u2}} {ι : Type.{u1}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u2} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u4, u3, u2, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u1} ι} {n : Nat}, (Eq.{1} Nat (Finset.card.{u1} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{1} Nat (FiniteDimensional.finrank.{u4, u3} k (Subtype.{succ u3} V (fun (x : V) => Membership.mem.{u3, u3} V (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (SetLike.instMembership.{u3, u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) V (Submodule.setLike.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)) x (vectorSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))))) (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (Submodule.addCommGroup.{u4, u3} k V (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s)))) (Submodule.module.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3 (vectorSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))))) n))
+<too large>
Case conversion may be inaccurate. Consider using '#align affine_independent.finrank_vector_span_image_finset AffineIndependent.finrank_vectorSpan_image_finsetₓ'. -/
/-- The `vector_span` of a finite subset of an affinely independent
family has dimension one less than its cardinality. -/
@@ -166,10 +163,7 @@ theorem AffineIndependent.finrank_vectorSpan_image_finset {p : ι → P} (hi : A
#align affine_independent.finrank_vector_span_image_finset AffineIndependent.finrank_vectorSpan_image_finset
/- warning: affine_independent.finrank_vector_span -> AffineIndependent.finrank_vectorSpan is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{1} Nat (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)))) n))
-but is expected to have type
- forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{1} Nat (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) n))
+<too large>
Case conversion may be inaccurate. Consider using '#align affine_independent.finrank_vector_span AffineIndependent.finrank_vectorSpanₓ'. -/
/-- The `vector_span` of a finite affinely independent family has
dimension one less than its cardinality. -/
@@ -199,10 +193,7 @@ theorem AffineIndependent.vectorSpan_eq_top_of_card_eq_finrank_add_one [FiniteDi
variable (k)
/- warning: finrank_vector_span_image_finset_le -> finrank_vectorSpan_image_finset_le is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p : ι -> P) (s : Finset.{u4} ι) {n : Nat}, (Eq.{1} Nat (Finset.card.{u4} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s)))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s)))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))))) n)
-but is expected to have type
- forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p : ι -> P) (s : Finset.{u4} ι) {n : Nat}, (Eq.{1} Nat (Finset.card.{u4} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u1} P (Finset.image.{u4, u1} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u1} P a b)) p s))))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u1} P (Finset.image.{u4, u1} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u1} P a b)) p s)))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u1} P (Finset.image.{u4, u1} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u1} P a b)) p s))))) n)
+<too large>
Case conversion may be inaccurate. Consider using '#align finrank_vector_span_image_finset_le finrank_vectorSpan_image_finset_leₓ'. -/
/-- The `vector_span` of `n + 1` points in an indexed family has
dimension at most `n`. -/
@@ -222,10 +213,7 @@ theorem finrank_vectorSpan_image_finset_le (p : ι → P) (s : Finset ι) {n :
#align finrank_vector_span_image_finset_le finrank_vectorSpan_image_finset_le
/- warning: finrank_vector_span_range_le -> finrank_vectorSpan_range_le is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)))) n)
-but is expected to have type
- forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) n)
+<too large>
Case conversion may be inaccurate. Consider using '#align finrank_vector_span_range_le finrank_vectorSpan_range_leₓ'. -/
/-- The `vector_span` of an indexed family of `n + 1` points has
dimension at most `n`. -/
@@ -238,10 +226,7 @@ theorem finrank_vectorSpan_range_le [Fintype ι] (p : ι → P) {n : ℕ} (hc :
#align finrank_vector_span_range_le finrank_vectorSpan_range_le
/- warning: affine_independent_iff_finrank_vector_span_eq -> affineIndependent_iff_finrank_vectorSpan_eq is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Iff (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) (Eq.{1} Nat (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)))) n))
-but is expected to have type
- forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Iff (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) (Eq.{1} Nat (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) n))
+<too large>
Case conversion may be inaccurate. Consider using '#align affine_independent_iff_finrank_vector_span_eq affineIndependent_iff_finrank_vectorSpan_eqₓ'. -/
/-- `n + 1` points are affinely independent if and only if their
`vector_span` has dimension `n`. -/
@@ -261,10 +246,7 @@ theorem affineIndependent_iff_finrank_vectorSpan_eq [Fintype ι] (p : ι → P)
#align affine_independent_iff_finrank_vector_span_eq affineIndependent_iff_finrank_vectorSpan_eq
/- warning: affine_independent_iff_le_finrank_vector_span -> affineIndependent_iff_le_finrank_vectorSpan is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Iff (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) (LE.le.{0} Nat Nat.hasLe n (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))))))
-but is expected to have type
- forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Iff (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) (LE.le.{0} Nat instLENat n (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align affine_independent_iff_le_finrank_vector_span affineIndependent_iff_le_finrank_vectorSpanₓ'. -/
/-- `n + 1` points are affinely independent if and only if their
`vector_span` has dimension at least `n`. -/
@@ -280,10 +262,7 @@ theorem affineIndependent_iff_le_finrank_vectorSpan [Fintype ι] (p : ι → P)
#align affine_independent_iff_le_finrank_vector_span affineIndependent_iff_le_finrank_vectorSpan
/- warning: affine_independent_iff_not_finrank_vector_span_le -> affineIndependent_iff_not_finrank_vectorSpan_le is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) -> (Iff (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) (Not (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)))) n)))
-but is expected to have type
- forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) -> (Iff (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) (Not (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) n)))
+<too large>
Case conversion may be inaccurate. Consider using '#align affine_independent_iff_not_finrank_vector_span_le affineIndependent_iff_not_finrank_vectorSpan_leₓ'. -/
/-- `n + 2` points are affinely independent if and only if their
`vector_span` does not have dimension at most `n`. -/
@@ -294,10 +273,7 @@ theorem affineIndependent_iff_not_finrank_vectorSpan_le [Fintype ι] (p : ι →
#align affine_independent_iff_not_finrank_vector_span_le affineIndependent_iff_not_finrank_vectorSpan_le
/- warning: finrank_vector_span_le_iff_not_affine_independent -> finrank_vectorSpan_le_iff_not_affineIndependent is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) -> (Iff (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)))) n) (Not (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p)))
-but is expected to have type
- forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) -> (Iff (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) n) (Not (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p)))
+<too large>
Case conversion may be inaccurate. Consider using '#align finrank_vector_span_le_iff_not_affine_independent finrank_vectorSpan_le_iff_not_affineIndependentₓ'. -/
/-- `n + 2` points have a `vector_span` with dimension at most `n` if
and only if they are not affinely independent. -/
@@ -310,10 +286,7 @@ theorem finrank_vectorSpan_le_iff_not_affineIndependent [Fintype ι] (p : ι →
variable {k}
/- warning: affine_independent.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u4} ι} {sm : Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)], (LE.le.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toHasLe.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sm) -> (Eq.{1} Nat (Finset.card.{u4} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sm))
-but is expected to have type
- forall {k : Type.{u4}} {V : Type.{u3}} {P : Type.{u2}} {ι : Type.{u1}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u2} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u4, u3, u2, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u1} ι} {sm : Submodule.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3} [_inst_5 : FiniteDimensional.{u4, u3} k (Subtype.{succ u3} V (fun (x : V) => Membership.mem.{u3, u3} V (Submodule.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (SetLike.instMembership.{u3, u3} (Submodule.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) V (Submodule.setLike.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)) x sm)) _inst_1 (Submodule.addCommGroup.{u4, u3} k V (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3 sm)], (LE.le.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (Preorder.toLE.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (OmegaCompletePartialOrder.toPartialOrder.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (CompleteLattice.instOmegaCompletePartialOrder.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (Submodule.completeLattice.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3))))) (vectorSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))) sm) -> (Eq.{1} Nat (Finset.card.{u1} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u4, u3} k (Subtype.{succ u3} V (fun (x : V) => Membership.mem.{u3, u3} V (Submodule.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (SetLike.instMembership.{u3, u3} (Submodule.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) V (Submodule.setLike.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)) x sm)) (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (Submodule.addCommGroup.{u4, u3} k V (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3 sm)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{succ u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (vectorSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))) sm))
+<too large>
Case conversion may be inaccurate. Consider using '#align affine_independent.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
/-- If the `vector_span` of a finite subset of an affinely independent
family lies in a submodule with dimension one less than its
@@ -326,10 +299,7 @@ theorem AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_ad
#align affine_independent.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one
/- warning: affine_independent.vector_span_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {sm : Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3} [_inst_6 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)], (LE.le.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toHasLe.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sm) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sm))
-but is expected to have type
- forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {sm : Submodule.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3} [_inst_6 : FiniteDimensional.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x sm)) _inst_1 (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)], (LE.le.{u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toLE.{u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)) sm) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x sm)) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{succ u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)) sm))
+<too large>
Case conversion may be inaccurate. Consider using '#align affine_independent.vector_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
/-- If the `vector_span` of a finite affinely independent
family lies in a submodule with dimension one less than its
@@ -342,10 +312,7 @@ theorem AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_one [Fintyp
#align affine_independent.vector_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_one
/- warning: affine_independent.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u4} ι} {sp : AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))], (LE.le.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Preorder.toHasLe.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (PartialOrder.toPreorder.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.partialOrder.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sp) -> (Eq.{1} Nat (Finset.card.{u4} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sp))
-but is expected to have type
- forall {k : Type.{u4}} {V : Type.{u3}} {P : Type.{u2}} {ι : Type.{u1}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u2} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u4, u3, u2, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u1} ι} {sp : AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4} [_inst_5 : FiniteDimensional.{u4, u3} k (Subtype.{succ u3} V (fun (x : V) => Membership.mem.{u3, u3} V (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (SetLike.instMembership.{u3, u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) V (Submodule.setLike.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) _inst_1 (Submodule.addCommGroup.{u4, u3} k V (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3 (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp))], (LE.le.{u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (Preorder.toLE.{u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (PartialOrder.toPreorder.{u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (OmegaCompletePartialOrder.toPartialOrder.{u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (AffineSubspace.instCompleteLatticeAffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4))))) (affineSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))) sp) -> (Eq.{1} Nat (Finset.card.{u1} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u4, u3} k (Subtype.{succ u3} V (fun (x : V) => Membership.mem.{u3, u3} V (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (SetLike.instMembership.{u3, u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) V (Submodule.setLike.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (Submodule.addCommGroup.{u4, u3} k V (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3 (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{succ u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))) sp))
+<too large>
Case conversion may be inaccurate. Consider using '#align affine_independent.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
/-- If the `affine_span` of a finite subset of an affinely independent
family lies in an affine subspace whose direction has dimension one
@@ -365,10 +332,7 @@ theorem AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_ad
#align affine_independent.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one
/- warning: affine_independent.affine_span_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {sp : AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4} [_inst_6 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))], (LE.le.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Preorder.toHasLe.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (PartialOrder.toPreorder.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.partialOrder.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sp) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sp))
-but is expected to have type
- forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {sp : AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4} [_inst_6 : FiniteDimensional.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) _inst_1 (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp))], (LE.le.{u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (Preorder.toLE.{u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (PartialOrder.toPreorder.{u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (OmegaCompletePartialOrder.toPartialOrder.{u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (AffineSubspace.instCompleteLatticeAffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4))))) (affineSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)) sp) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{succ u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)) sp))
+<too large>
Case conversion may be inaccurate. Consider using '#align affine_independent.affine_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
/-- If the `affine_span` of a finite affinely independent family lies
in an affine subspace whose direction has dimension one less than its
@@ -577,10 +541,7 @@ theorem collinear_singleton (p : P) : Collinear k ({p} : Set P) :=
variable {k}
/- warning: collinear_iff_of_mem -> collinear_iff_of_mem is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P} {p₀ : P}, (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₀ s) -> (Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (Exists.{succ u2} V (fun (v : V) => forall (p : P), (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p s) -> (Exists.{succ u1} k (fun (r : k) => Eq.{succ u3} P p (VAdd.vadd.{u2, u3} V P (AddAction.toHasVadd.{u2, u3} V P (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2))) (AddTorsor.toAddAction.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2) _inst_4)) (SMul.smul.{u1, u2} k V (SMulZeroClass.toHasSmul.{u1, u2} k V (AddZeroClass.toHasZero.{u2} V (AddMonoid.toAddZeroClass.{u2} V (AddCommMonoid.toAddMonoid.{u2} V (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} k V (MulZeroClass.toHasZero.{u1} k (MulZeroOneClass.toMulZeroClass.{u1} k (MonoidWithZero.toMulZeroOneClass.{u1} k (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)))))) (AddZeroClass.toHasZero.{u2} V (AddMonoid.toAddZeroClass.{u2} V (AddCommMonoid.toAddMonoid.{u2} V (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} k V (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1))) (AddZeroClass.toHasZero.{u2} V (AddMonoid.toAddZeroClass.{u2} V (AddCommMonoid.toAddMonoid.{u2} V (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)))) (Module.toMulActionWithZero.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))) r v) p₀))))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P} {p₀ : P}, (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₀ s) -> (Iff (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (Exists.{succ u1} V (fun (v : V) => forall (p : P), (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p s) -> (Exists.{succ u2} k (fun (r : k) => Eq.{succ u3} P p (HVAdd.hVAdd.{u1, u3, u3} V P P (instHVAdd.{u1, u3} V P (AddAction.toVAdd.{u1, u3} V P (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2))) (AddTorsor.toAddAction.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2) _inst_4))) (HSMul.hSMul.{u2, u1, u1} k V V (instHSMul.{u2, u1} k V (SMulZeroClass.toSMul.{u2, u1} k V (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} k V (MonoidWithZero.toZero.{u2} k (Semiring.toMonoidWithZero.{u2} k (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} k V (Semiring.toMonoidWithZero.{u2} k (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_2))))) (Module.toMulActionWithZero.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3))))) r v) p₀))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align collinear_iff_of_mem collinear_iff_of_memₓ'. -/
/-- Given a point `p₀` in a set of points, that set is collinear if and
only if the points can all be expressed as multiples of the same
@@ -615,10 +576,7 @@ theorem collinear_iff_of_mem {s : Set P} {p₀ : P} (h : p₀ ∈ s) :
#align collinear_iff_of_mem collinear_iff_of_mem
/- warning: collinear_iff_exists_forall_eq_smul_vadd -> collinear_iff_exists_forall_eq_smul_vadd is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (s : Set.{u3} P), Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (Exists.{succ u3} P (fun (p₀ : P) => Exists.{succ u2} V (fun (v : V) => forall (p : P), (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p s) -> (Exists.{succ u1} k (fun (r : k) => Eq.{succ u3} P p (VAdd.vadd.{u2, u3} V P (AddAction.toHasVadd.{u2, u3} V P (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2))) (AddTorsor.toAddAction.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2) _inst_4)) (SMul.smul.{u1, u2} k V (SMulZeroClass.toHasSmul.{u1, u2} k V (AddZeroClass.toHasZero.{u2} V (AddMonoid.toAddZeroClass.{u2} V (AddCommMonoid.toAddMonoid.{u2} V (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} k V (MulZeroClass.toHasZero.{u1} k (MulZeroOneClass.toMulZeroClass.{u1} k (MonoidWithZero.toMulZeroOneClass.{u1} k (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)))))) (AddZeroClass.toHasZero.{u2} V (AddMonoid.toAddZeroClass.{u2} V (AddCommMonoid.toAddMonoid.{u2} V (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} k V (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1))) (AddZeroClass.toHasZero.{u2} V (AddMonoid.toAddZeroClass.{u2} V (AddCommMonoid.toAddMonoid.{u2} V (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)))) (Module.toMulActionWithZero.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))) r v) p₀))))))
-but is expected to have type
- forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] (s : Set.{u3} P), Iff (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (Exists.{succ u3} P (fun (p₀ : P) => Exists.{succ u1} V (fun (v : V) => forall (p : P), (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p s) -> (Exists.{succ u2} k (fun (r : k) => Eq.{succ u3} P p (HVAdd.hVAdd.{u1, u3, u3} V P P (instHVAdd.{u1, u3} V P (AddAction.toVAdd.{u1, u3} V P (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2))) (AddTorsor.toAddAction.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2) _inst_4))) (HSMul.hSMul.{u2, u1, u1} k V V (instHSMul.{u2, u1} k V (SMulZeroClass.toSMul.{u2, u1} k V (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} k V (MonoidWithZero.toZero.{u2} k (Semiring.toMonoidWithZero.{u2} k (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} k V (Semiring.toMonoidWithZero.{u2} k (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_2))))) (Module.toMulActionWithZero.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3))))) r v) p₀))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align collinear_iff_exists_forall_eq_smul_vadd collinear_iff_exists_forall_eq_smul_vaddₓ'. -/
/-- A set of points is collinear if and only if they can all be
expressed as multiples of the same vector, added to the same base
@@ -1080,10 +1038,7 @@ open AffineSubspace FiniteDimensional Module
variable [DivisionRing k] [AddCommGroup V] [Module k V] [affine_space V P]
/- warning: finrank_vector_span_insert_le -> finrank_vectorSpan_insert_le is a dubious translation:
-lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (s : AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (p : P), LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (SetLike.Set.hasCoeT.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) s)))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (SetLike.Set.hasCoeT.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) s)))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (SetLike.Set.hasCoeT.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) s))))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))
-but is expected to have type
- forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (s : AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (p : P), LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p (SetLike.coe.{u1, u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) s))))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p (SetLike.coe.{u1, u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) s)))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p (SetLike.coe.{u1, u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) s))))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))
+<too large>
Case conversion may be inaccurate. Consider using '#align finrank_vector_span_insert_le finrank_vectorSpan_insert_leₓ'. -/
/-- Adding a point to a finite-dimensional subspace increases the dimension by at most one. -/
theorem finrank_vectorSpan_insert_le (s : AffineSubspace k P) (p : P) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -311,7 +311,7 @@ variable {k}
/- warning: affine_independent.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u4} ι} {sm : Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)], (LE.le.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toLE.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sm) -> (Eq.{1} Nat (Finset.card.{u4} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sm))
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u4} ι} {sm : Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)], (LE.le.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toHasLe.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sm) -> (Eq.{1} Nat (Finset.card.{u4} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sm))
but is expected to have type
forall {k : Type.{u4}} {V : Type.{u3}} {P : Type.{u2}} {ι : Type.{u1}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u2} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u4, u3, u2, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u1} ι} {sm : Submodule.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3} [_inst_5 : FiniteDimensional.{u4, u3} k (Subtype.{succ u3} V (fun (x : V) => Membership.mem.{u3, u3} V (Submodule.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (SetLike.instMembership.{u3, u3} (Submodule.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) V (Submodule.setLike.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)) x sm)) _inst_1 (Submodule.addCommGroup.{u4, u3} k V (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3 sm)], (LE.le.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (Preorder.toLE.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (OmegaCompletePartialOrder.toPartialOrder.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (CompleteLattice.instOmegaCompletePartialOrder.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (Submodule.completeLattice.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3))))) (vectorSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))) sm) -> (Eq.{1} Nat (Finset.card.{u1} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u4, u3} k (Subtype.{succ u3} V (fun (x : V) => Membership.mem.{u3, u3} V (Submodule.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (SetLike.instMembership.{u3, u3} (Submodule.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) V (Submodule.setLike.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)) x sm)) (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (Submodule.addCommGroup.{u4, u3} k V (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3 sm)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{succ u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (vectorSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))) sm))
Case conversion may be inaccurate. Consider using '#align affine_independent.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
@@ -327,7 +327,7 @@ theorem AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_ad
/- warning: affine_independent.vector_span_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {sm : Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3} [_inst_6 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)], (LE.le.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toLE.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sm) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sm))
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {sm : Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3} [_inst_6 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)], (LE.le.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toHasLe.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sm) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sm))
but is expected to have type
forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {sm : Submodule.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3} [_inst_6 : FiniteDimensional.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x sm)) _inst_1 (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)], (LE.le.{u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toLE.{u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)) sm) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x sm)) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{succ u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)) sm))
Case conversion may be inaccurate. Consider using '#align affine_independent.vector_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
@@ -343,7 +343,7 @@ theorem AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_one [Fintyp
/- warning: affine_independent.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u4} ι} {sp : AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))], (LE.le.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Preorder.toLE.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (PartialOrder.toPreorder.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.partialOrder.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sp) -> (Eq.{1} Nat (Finset.card.{u4} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sp))
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u4} ι} {sp : AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))], (LE.le.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Preorder.toHasLe.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (PartialOrder.toPreorder.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.partialOrder.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sp) -> (Eq.{1} Nat (Finset.card.{u4} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sp))
but is expected to have type
forall {k : Type.{u4}} {V : Type.{u3}} {P : Type.{u2}} {ι : Type.{u1}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u2} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u4, u3, u2, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u1} ι} {sp : AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4} [_inst_5 : FiniteDimensional.{u4, u3} k (Subtype.{succ u3} V (fun (x : V) => Membership.mem.{u3, u3} V (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (SetLike.instMembership.{u3, u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) V (Submodule.setLike.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) _inst_1 (Submodule.addCommGroup.{u4, u3} k V (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3 (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp))], (LE.le.{u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (Preorder.toLE.{u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (PartialOrder.toPreorder.{u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (OmegaCompletePartialOrder.toPartialOrder.{u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (AffineSubspace.instCompleteLatticeAffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4))))) (affineSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))) sp) -> (Eq.{1} Nat (Finset.card.{u1} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u4, u3} k (Subtype.{succ u3} V (fun (x : V) => Membership.mem.{u3, u3} V (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (SetLike.instMembership.{u3, u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) V (Submodule.setLike.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (Submodule.addCommGroup.{u4, u3} k V (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3 (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{succ u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))) sp))
Case conversion may be inaccurate. Consider using '#align affine_independent.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
@@ -366,7 +366,7 @@ theorem AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_ad
/- warning: affine_independent.affine_span_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
lean 3 declaration is
- forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {sp : AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4} [_inst_6 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))], (LE.le.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Preorder.toLE.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (PartialOrder.toPreorder.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.partialOrder.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sp) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sp))
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {sp : AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4} [_inst_6 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))], (LE.le.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Preorder.toHasLe.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (PartialOrder.toPreorder.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.partialOrder.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sp) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sp))
but is expected to have type
forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {sp : AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4} [_inst_6 : FiniteDimensional.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) _inst_1 (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp))], (LE.le.{u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (Preorder.toLE.{u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (PartialOrder.toPreorder.{u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (OmegaCompletePartialOrder.toPartialOrder.{u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (AffineSubspace.instCompleteLatticeAffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4))))) (affineSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)) sp) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{succ u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)) sp))
Case conversion may be inaccurate. Consider using '#align affine_independent.affine_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/738054fa93d43512da144ec45ce799d18fd44248
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Myers
! This file was ported from Lean 3 source module linear_algebra.affine_space.finite_dimensional
-! leanprover-community/mathlib commit 67e606eaea14c7854bdc556bd53d98aefdf76ec0
+! leanprover-community/mathlib commit fe8d0ff42c3c24d789f491dc2622b6cac3d61564
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -14,6 +14,9 @@ import Mathbin.LinearAlgebra.FiniteDimensional
/-!
# Finite-dimensional subspaces of affine spaces.
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file provides a few results relating to finite-dimensional
subspaces of affine spaces.
mathlib commit https://github.com/leanprover-community/mathlib/commit/36b8aa61ea7c05727161f96a0532897bd72aedab
@@ -41,26 +41,42 @@ open AffineSubspace FiniteDimensional Module
variable [DivisionRing k] [AddCommGroup V] [Module k V] [affine_space V P]
+/- warning: finite_dimensional_vector_span_of_finite -> finiteDimensional_vectorSpan_of_finite is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Set.Finite.{u3} P s) -> (FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
+but is expected to have type
+ forall (k : Type.{u2}) {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Set.Finite.{u3} P s) -> (FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
+Case conversion may be inaccurate. Consider using '#align finite_dimensional_vector_span_of_finite finiteDimensional_vectorSpan_of_finiteₓ'. -/
/-- The `vector_span` of a finite set is finite-dimensional. -/
theorem finiteDimensional_vectorSpan_of_finite {s : Set P} (h : Set.Finite s) :
FiniteDimensional k (vectorSpan k s) :=
span_of_finite k <| h.vsub h
#align finite_dimensional_vector_span_of_finite finiteDimensional_vectorSpan_of_finite
+#print finiteDimensional_vectorSpan_range /-
/-- The `vector_span` of a family indexed by a `fintype` is
finite-dimensional. -/
instance finiteDimensional_vectorSpan_range [Finite ι] (p : ι → P) :
FiniteDimensional k (vectorSpan k (Set.range p)) :=
finiteDimensional_vectorSpan_of_finite k (Set.finite_range _)
#align finite_dimensional_vector_span_range finiteDimensional_vectorSpan_range
+-/
+#print finiteDimensional_vectorSpan_image_of_finite /-
/-- The `vector_span` of a subset of a family indexed by a `fintype`
is finite-dimensional. -/
instance finiteDimensional_vectorSpan_image_of_finite [Finite ι] (p : ι → P) (s : Set ι) :
FiniteDimensional k (vectorSpan k (p '' s)) :=
finiteDimensional_vectorSpan_of_finite k (Set.toFinite _)
#align finite_dimensional_vector_span_image_of_finite finiteDimensional_vectorSpan_image_of_finite
+-/
+/- warning: finite_dimensional_direction_affine_span_of_finite -> finiteDimensional_direction_affineSpan_of_finite is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Set.Finite.{u3} P s) -> (FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))))
+but is expected to have type
+ forall (k : Type.{u2}) {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Set.Finite.{u3} P s) -> (FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))))
+Case conversion may be inaccurate. Consider using '#align finite_dimensional_direction_affine_span_of_finite finiteDimensional_direction_affineSpan_of_finiteₓ'. -/
/-- The direction of the affine span of a finite set is
finite-dimensional. -/
theorem finiteDimensional_direction_affineSpan_of_finite {s : Set P} (h : Set.Finite s) :
@@ -68,20 +84,30 @@ theorem finiteDimensional_direction_affineSpan_of_finite {s : Set P} (h : Set.Fi
(direction_affineSpan k s).symm ▸ finiteDimensional_vectorSpan_of_finite k h
#align finite_dimensional_direction_affine_span_of_finite finiteDimensional_direction_affineSpan_of_finite
+#print finiteDimensional_direction_affineSpan_range /-
/-- The direction of the affine span of a family indexed by a
`fintype` is finite-dimensional. -/
instance finiteDimensional_direction_affineSpan_range [Finite ι] (p : ι → P) :
FiniteDimensional k (affineSpan k (Set.range p)).direction :=
finiteDimensional_direction_affineSpan_of_finite k (Set.finite_range _)
#align finite_dimensional_direction_affine_span_range finiteDimensional_direction_affineSpan_range
+-/
+#print finiteDimensional_direction_affineSpan_image_of_finite /-
/-- The direction of the affine span of a subset of a family indexed
by a `fintype` is finite-dimensional. -/
instance finiteDimensional_direction_affineSpan_image_of_finite [Finite ι] (p : ι → P) (s : Set ι) :
FiniteDimensional k (affineSpan k (p '' s)).direction :=
finiteDimensional_direction_affineSpan_of_finite k (Set.toFinite _)
#align finite_dimensional_direction_affine_span_image_of_finite finiteDimensional_direction_affineSpan_image_of_finite
+-/
+/- warning: finite_of_fin_dim_affine_independent -> finite_of_fin_dim_affineIndependent is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : FiniteDimensional.{u1, u2} k V _inst_1 _inst_2 _inst_3] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (Finite.{succ u4} ι)
+but is expected to have type
+ forall (k : Type.{u4}) {V : Type.{u3}} {P : Type.{u2}} {ι : Type.{u1}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u2} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] [_inst_5 : FiniteDimensional.{u4, u3} k V _inst_1 _inst_2 _inst_3] {p : ι -> P}, (AffineIndependent.{u4, u3, u2, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (Finite.{succ u1} ι)
+Case conversion may be inaccurate. Consider using '#align finite_of_fin_dim_affine_independent finite_of_fin_dim_affineIndependentₓ'. -/
/-- An affine-independent family of points in a finite-dimensional affine space is finite. -/
theorem finite_of_fin_dim_affineIndependent [FiniteDimensional k V] {p : ι → P}
(hi : AffineIndependent k p) : Finite ι :=
@@ -93,6 +119,12 @@ theorem finite_of_fin_dim_affineIndependent [FiniteDimensional k V] {p : ι →
(Set.finite_singleton default).finite_of_compl (Set.finite_coe_iff.1 hi.finite_of_is_noetherian)
#align finite_of_fin_dim_affine_independent finite_of_fin_dim_affineIndependent
+/- warning: finite_set_of_fin_dim_affine_independent -> finite_set_of_fin_dim_affineIndependent is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : FiniteDimensional.{u1, u2} k V _inst_1 _inst_2 _inst_3] {s : Set.{u4} ι} {f : (coeSort.{succ u4, succ (succ u4)} (Set.{u4} ι) Type.{u4} (Set.hasCoeToSort.{u4} ι) s) -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (coeSort.{succ u4, succ (succ u4)} (Set.{u4} ι) Type.{u4} (Set.hasCoeToSort.{u4} ι) s) f) -> (Set.Finite.{u4} ι s)
+but is expected to have type
+ forall (k : Type.{u4}) {V : Type.{u3}} {P : Type.{u1}} {ι : Type.{u2}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u1} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] [_inst_5 : FiniteDimensional.{u4, u3} k V _inst_1 _inst_2 _inst_3] {s : Set.{u2} ι} {f : (Set.Elem.{u2} ι s) -> P}, (AffineIndependent.{u4, u3, u1, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.Elem.{u2} ι s) f) -> (Set.Finite.{u2} ι s)
+Case conversion may be inaccurate. Consider using '#align finite_set_of_fin_dim_affine_independent finite_set_of_fin_dim_affineIndependentₓ'. -/
/-- An affine-independent subset of a finite-dimensional affine space is finite. -/
theorem finite_set_of_fin_dim_affineIndependent [FiniteDimensional k V] {s : Set ι} {f : s → P}
(hi : AffineIndependent k f) : s.Finite :=
@@ -103,6 +135,12 @@ open Classical
variable {k}
+/- warning: affine_independent.finrank_vector_span_image_finset -> AffineIndependent.finrank_vectorSpan_image_finset is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u4} ι} {n : Nat}, (Eq.{1} Nat (Finset.card.{u4} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{1} Nat (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s)))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s)))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))))) n))
+but is expected to have type
+ forall {k : Type.{u4}} {V : Type.{u3}} {P : Type.{u2}} {ι : Type.{u1}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u2} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u4, u3, u2, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u1} ι} {n : Nat}, (Eq.{1} Nat (Finset.card.{u1} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{1} Nat (FiniteDimensional.finrank.{u4, u3} k (Subtype.{succ u3} V (fun (x : V) => Membership.mem.{u3, u3} V (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (SetLike.instMembership.{u3, u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) V (Submodule.setLike.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)) x (vectorSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))))) (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (Submodule.addCommGroup.{u4, u3} k V (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s)))) (Submodule.module.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3 (vectorSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))))) n))
+Case conversion may be inaccurate. Consider using '#align affine_independent.finrank_vector_span_image_finset AffineIndependent.finrank_vectorSpan_image_finsetₓ'. -/
/-- The `vector_span` of a finite subset of an affinely independent
family has dimension one less than its cardinality. -/
theorem AffineIndependent.finrank_vectorSpan_image_finset {p : ι → P} (hi : AffineIndependent k p)
@@ -124,6 +162,12 @@ theorem AffineIndependent.finrank_vectorSpan_image_finset {p : ι → P} (hi : A
rwa [vectorSpan_eq_span_vsub_finset_right_ne k hp₁, finrank_span_finset_eq_card, hc]
#align affine_independent.finrank_vector_span_image_finset AffineIndependent.finrank_vectorSpan_image_finset
+/- warning: affine_independent.finrank_vector_span -> AffineIndependent.finrank_vectorSpan is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{1} Nat (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)))) n))
+but is expected to have type
+ forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{1} Nat (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) n))
+Case conversion may be inaccurate. Consider using '#align affine_independent.finrank_vector_span AffineIndependent.finrank_vectorSpanₓ'. -/
/-- The `vector_span` of a finite affinely independent family has
dimension one less than its cardinality. -/
theorem AffineIndependent.finrank_vectorSpan [Fintype ι] {p : ι → P} (hi : AffineIndependent k p)
@@ -134,6 +178,12 @@ theorem AffineIndependent.finrank_vectorSpan [Fintype ι] {p : ι → P} (hi : A
exact hi.finrank_vector_span_image_finset hc
#align affine_independent.finrank_vector_span AffineIndependent.finrank_vectorSpan
+/- warning: affine_independent.vector_span_eq_top_of_card_eq_finrank_add_one -> AffineIndependent.vectorSpan_eq_top_of_card_eq_finrank_add_one is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : FiniteDimensional.{u1, u2} k V _inst_1 _inst_2 _inst_3] [_inst_6 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_6) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) (Top.top.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.hasTop.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))
+but is expected to have type
+ forall {k : Type.{u4}} {V : Type.{u3}} {P : Type.{u1}} {ι : Type.{u2}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u1} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] [_inst_5 : FiniteDimensional.{u4, u3} k V _inst_1 _inst_2 _inst_3] [_inst_6 : Fintype.{u2} ι] {p : ι -> P}, (AffineIndependent.{u4, u3, u1, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (Eq.{1} Nat (Fintype.card.{u2} ι _inst_6) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{succ u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (vectorSpan.{u4, u3, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u2} P ι p)) (Top.top.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (Submodule.instTopSubmodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)))
+Case conversion may be inaccurate. Consider using '#align affine_independent.vector_span_eq_top_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_eq_top_of_card_eq_finrank_add_oneₓ'. -/
/-- The `vector_span` of a finite affinely independent family whose
cardinality is one more than that of the finite-dimensional space is
`⊤`. -/
@@ -145,6 +195,12 @@ theorem AffineIndependent.vectorSpan_eq_top_of_card_eq_finrank_add_one [FiniteDi
variable (k)
+/- warning: finrank_vector_span_image_finset_le -> finrank_vectorSpan_image_finset_le is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p : ι -> P) (s : Finset.{u4} ι) {n : Nat}, (Eq.{1} Nat (Finset.card.{u4} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s)))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s)))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))))) n)
+but is expected to have type
+ forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p : ι -> P) (s : Finset.{u4} ι) {n : Nat}, (Eq.{1} Nat (Finset.card.{u4} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u1} P (Finset.image.{u4, u1} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u1} P a b)) p s))))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u1} P (Finset.image.{u4, u1} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u1} P a b)) p s)))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u1} P (Finset.image.{u4, u1} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u1} P a b)) p s))))) n)
+Case conversion may be inaccurate. Consider using '#align finrank_vector_span_image_finset_le finrank_vectorSpan_image_finset_leₓ'. -/
/-- The `vector_span` of `n + 1` points in an indexed family has
dimension at most `n`. -/
theorem finrank_vectorSpan_image_finset_le (p : ι → P) (s : Finset ι) {n : ℕ}
@@ -162,6 +218,12 @@ theorem finrank_vectorSpan_image_finset_le (p : ι → P) (s : Finset ι) {n :
apply Finset.card_image_le
#align finrank_vector_span_image_finset_le finrank_vectorSpan_image_finset_le
+/- warning: finrank_vector_span_range_le -> finrank_vectorSpan_range_le is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)))) n)
+but is expected to have type
+ forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) n)
+Case conversion may be inaccurate. Consider using '#align finrank_vector_span_range_le finrank_vectorSpan_range_leₓ'. -/
/-- The `vector_span` of an indexed family of `n + 1` points has
dimension at most `n`. -/
theorem finrank_vectorSpan_range_le [Fintype ι] (p : ι → P) {n : ℕ} (hc : Fintype.card ι = n + 1) :
@@ -172,6 +234,12 @@ theorem finrank_vectorSpan_range_le [Fintype ι] (p : ι → P) {n : ℕ} (hc :
exact finrank_vectorSpan_image_finset_le _ _ _ hc
#align finrank_vector_span_range_le finrank_vectorSpan_range_le
+/- warning: affine_independent_iff_finrank_vector_span_eq -> affineIndependent_iff_finrank_vectorSpan_eq is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Iff (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) (Eq.{1} Nat (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)))) n))
+but is expected to have type
+ forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Iff (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) (Eq.{1} Nat (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) n))
+Case conversion may be inaccurate. Consider using '#align affine_independent_iff_finrank_vector_span_eq affineIndependent_iff_finrank_vectorSpan_eqₓ'. -/
/-- `n + 1` points are affinely independent if and only if their
`vector_span` has dimension `n`. -/
theorem affineIndependent_iff_finrank_vectorSpan_eq [Fintype ι] (p : ι → P) {n : ℕ}
@@ -189,6 +257,12 @@ theorem affineIndependent_iff_finrank_vectorSpan_eq [Fintype ι] (p : ι → P)
simp [Finset.filter_ne', Finset.card_erase_of_mem, hc]
#align affine_independent_iff_finrank_vector_span_eq affineIndependent_iff_finrank_vectorSpan_eq
+/- warning: affine_independent_iff_le_finrank_vector_span -> affineIndependent_iff_le_finrank_vectorSpan is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Iff (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) (LE.le.{0} Nat Nat.hasLe n (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))))))
+but is expected to have type
+ forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Iff (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) (LE.le.{0} Nat instLENat n (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p))))))
+Case conversion may be inaccurate. Consider using '#align affine_independent_iff_le_finrank_vector_span affineIndependent_iff_le_finrank_vectorSpanₓ'. -/
/-- `n + 1` points are affinely independent if and only if their
`vector_span` has dimension at least `n`. -/
theorem affineIndependent_iff_le_finrank_vectorSpan [Fintype ι] (p : ι → P) {n : ℕ}
@@ -202,6 +276,12 @@ theorem affineIndependent_iff_le_finrank_vectorSpan [Fintype ι] (p : ι → P)
· exact fun hle => le_antisymm (finrank_vectorSpan_range_le k p hc) hle
#align affine_independent_iff_le_finrank_vector_span affineIndependent_iff_le_finrank_vectorSpan
+/- warning: affine_independent_iff_not_finrank_vector_span_le -> affineIndependent_iff_not_finrank_vectorSpan_le is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) -> (Iff (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) (Not (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)))) n)))
+but is expected to have type
+ forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) -> (Iff (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) (Not (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) n)))
+Case conversion may be inaccurate. Consider using '#align affine_independent_iff_not_finrank_vector_span_le affineIndependent_iff_not_finrank_vectorSpan_leₓ'. -/
/-- `n + 2` points are affinely independent if and only if their
`vector_span` does not have dimension at most `n`. -/
theorem affineIndependent_iff_not_finrank_vectorSpan_le [Fintype ι] (p : ι → P) {n : ℕ}
@@ -210,6 +290,12 @@ theorem affineIndependent_iff_not_finrank_vectorSpan_le [Fintype ι] (p : ι →
rw [affineIndependent_iff_le_finrank_vectorSpan k p hc, ← Nat.lt_iff_add_one_le, lt_iff_not_ge]
#align affine_independent_iff_not_finrank_vector_span_le affineIndependent_iff_not_finrank_vectorSpan_le
+/- warning: finrank_vector_span_le_iff_not_affine_independent -> finrank_vectorSpan_le_iff_not_affineIndependent is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) -> (Iff (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)))) n) (Not (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p)))
+but is expected to have type
+ forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] (p : ι -> P) {n : Nat}, (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) -> (Iff (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)))) n) (Not (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p)))
+Case conversion may be inaccurate. Consider using '#align finrank_vector_span_le_iff_not_affine_independent finrank_vectorSpan_le_iff_not_affineIndependentₓ'. -/
/-- `n + 2` points have a `vector_span` with dimension at most `n` if
and only if they are not affinely independent. -/
theorem finrank_vectorSpan_le_iff_not_affineIndependent [Fintype ι] (p : ι → P) {n : ℕ}
@@ -220,6 +306,12 @@ theorem finrank_vectorSpan_le_iff_not_affineIndependent [Fintype ι] (p : ι →
variable {k}
+/- warning: affine_independent.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u4} ι} {sm : Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)], (LE.le.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toLE.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sm) -> (Eq.{1} Nat (Finset.card.{u4} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sm))
+but is expected to have type
+ forall {k : Type.{u4}} {V : Type.{u3}} {P : Type.{u2}} {ι : Type.{u1}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u2} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u4, u3, u2, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u1} ι} {sm : Submodule.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3} [_inst_5 : FiniteDimensional.{u4, u3} k (Subtype.{succ u3} V (fun (x : V) => Membership.mem.{u3, u3} V (Submodule.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (SetLike.instMembership.{u3, u3} (Submodule.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) V (Submodule.setLike.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)) x sm)) _inst_1 (Submodule.addCommGroup.{u4, u3} k V (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3 sm)], (LE.le.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (Preorder.toLE.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (OmegaCompletePartialOrder.toPartialOrder.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (CompleteLattice.instOmegaCompletePartialOrder.{u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (Submodule.completeLattice.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3))))) (vectorSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))) sm) -> (Eq.{1} Nat (Finset.card.{u1} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u4, u3} k (Subtype.{succ u3} V (fun (x : V) => Membership.mem.{u3, u3} V (Submodule.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (SetLike.instMembership.{u3, u3} (Submodule.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) V (Submodule.setLike.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)) x sm)) (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (Submodule.addCommGroup.{u4, u3} k V (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3 sm)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{succ u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (vectorSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))) sm))
+Case conversion may be inaccurate. Consider using '#align affine_independent.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
/-- If the `vector_span` of a finite subset of an affinely independent
family lies in a submodule with dimension one less than its
cardinality, it equals that submodule. -/
@@ -230,6 +322,12 @@ theorem AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_ad
eq_of_le_of_finrank_eq hle <| hi.finrank_vectorSpan_image_finset hc
#align affine_independent.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one
+/- warning: affine_independent.vector_span_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {sm : Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3} [_inst_6 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)], (LE.le.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toLE.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sm) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) sm) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sm))
+but is expected to have type
+ forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {sm : Submodule.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3} [_inst_6 : FiniteDimensional.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x sm)) _inst_1 (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)], (LE.le.{u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toLE.{u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)) sm) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x sm)) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 sm) (Submodule.module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 sm)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{succ u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)) sm))
+Case conversion may be inaccurate. Consider using '#align affine_independent.vector_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
/-- If the `vector_span` of a finite affinely independent
family lies in a submodule with dimension one less than its
cardinality, it equals that submodule. -/
@@ -240,6 +338,12 @@ theorem AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_one [Fintyp
eq_of_le_of_finrank_eq hle <| hi.finrank_vectorSpan hc
#align affine_independent.vector_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_one
+/- warning: affine_independent.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u4} ι} {sp : AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))], (LE.le.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Preorder.toLE.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (PartialOrder.toPreorder.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.partialOrder.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sp) -> (Eq.{1} Nat (Finset.card.{u4} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} P) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} P) (Set.{u3} P) (Finset.Set.hasCoeT.{u3} P))) (Finset.image.{u4, u3} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u3} P a b)) p s))) sp))
+but is expected to have type
+ forall {k : Type.{u4}} {V : Type.{u3}} {P : Type.{u2}} {ι : Type.{u1}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u2} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] {p : ι -> P}, (AffineIndependent.{u4, u3, u2, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {s : Finset.{u1} ι} {sp : AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4} [_inst_5 : FiniteDimensional.{u4, u3} k (Subtype.{succ u3} V (fun (x : V) => Membership.mem.{u3, u3} V (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (SetLike.instMembership.{u3, u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) V (Submodule.setLike.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) _inst_1 (Submodule.addCommGroup.{u4, u3} k V (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3 (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp))], (LE.le.{u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (Preorder.toLE.{u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (PartialOrder.toPreorder.{u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (OmegaCompletePartialOrder.toPartialOrder.{u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (AffineSubspace.instCompleteLatticeAffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4))))) (affineSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))) sp) -> (Eq.{1} Nat (Finset.card.{u1} ι s) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u4, u3} k (Subtype.{succ u3} V (fun (x : V) => Membership.mem.{u3, u3} V (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (SetLike.instMembership.{u3, u3} (Submodule.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) V (Submodule.setLike.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (Submodule.addCommGroup.{u4, u3} k V (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u4, u3} k V (Ring.toSemiring.{u4} k (DivisionRing.toRing.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3 (AffineSubspace.direction.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{succ u2} (AffineSubspace.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u4, u3, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Finset.toSet.{u2} P (Finset.image.{u1, u2} ι P (fun (a : P) (b : P) => Classical.propDecidable (Eq.{succ u2} P a b)) p s))) sp))
+Case conversion may be inaccurate. Consider using '#align affine_independent.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
/-- If the `affine_span` of a finite subset of an affinely independent
family lies in an affine subspace whose direction has dimension one
less than its cardinality, it equals that subspace. -/
@@ -257,6 +361,12 @@ theorem AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_ad
exact hi.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one hd hc
#align affine_independent.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one
+/- warning: affine_independent.affine_span_eq_of_le_of_card_eq_finrank_add_one -> AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {sp : AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4} [_inst_6 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))], (LE.le.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Preorder.toLE.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (PartialOrder.toPreorder.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.partialOrder.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sp) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> (Eq.{succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) sp))
+but is expected to have type
+ forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u3, u2, u1, u4} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (forall {sp : AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4} [_inst_6 : FiniteDimensional.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) _inst_1 (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp))], (LE.le.{u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (Preorder.toLE.{u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (PartialOrder.toPreorder.{u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (OmegaCompletePartialOrder.toPartialOrder.{u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (AffineSubspace.instCompleteLatticeAffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4))))) (affineSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)) sp) -> (Eq.{1} Nat (Fintype.card.{u4} ι _inst_5) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp)) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 sp))) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> (Eq.{succ u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u4} P ι p)) sp))
+Case conversion may be inaccurate. Consider using '#align affine_independent.affine_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_oneₓ'. -/
/-- If the `affine_span` of a finite affinely independent family lies
in an affine subspace whose direction has dimension one less than its
cardinality, it equals that subspace. -/
@@ -270,6 +380,12 @@ theorem AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one [Fintyp
exact hi.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one hle hc
#align affine_independent.affine_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one
+/- warning: affine_independent.affine_span_eq_top_iff_card_eq_finrank_add_one -> AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} {ι : Type.{u4}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] [_inst_5 : FiniteDimensional.{u1, u2} k V _inst_1 _inst_2 _inst_3] [_inst_6 : Fintype.{u4} ι] {p : ι -> P}, (AffineIndependent.{u1, u2, u3, u4} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (Iff (Eq.{succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u3, succ u4} P ι p)) (Top.top.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (CompleteLattice.toHasTop.{u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (AffineSubspace.completeLattice.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) (Eq.{1} Nat (Fintype.card.{u4} ι _inst_6) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))
+but is expected to have type
+ forall {k : Type.{u4}} {V : Type.{u3}} {P : Type.{u1}} {ι : Type.{u2}} [_inst_1 : DivisionRing.{u4} k] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_4 : AddTorsor.{u3, u1} V P (AddCommGroup.toAddGroup.{u3} V _inst_2)] [_inst_5 : FiniteDimensional.{u4, u3} k V _inst_1 _inst_2 _inst_3] [_inst_6 : Fintype.{u2} ι] {p : ι -> P}, (AffineIndependent.{u4, u3, u1, u2} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 ι p) -> (Iff (Eq.{succ u1} (AffineSubspace.{u4, u3, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u4, u3, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4 (Set.range.{u1, succ u2} P ι p)) (Top.top.{u1} (AffineSubspace.{u4, u3, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (CompleteLattice.toTop.{u1} (AffineSubspace.{u4, u3, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4) (AffineSubspace.instCompleteLatticeAffineSubspace.{u4, u3, u1} k V P (DivisionRing.toRing.{u4} k _inst_1) _inst_2 _inst_3 _inst_4)))) (Eq.{1} Nat (Fintype.card.{u2} ι _inst_6) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u4, u3} k V (DivisionSemiring.toSemiring.{u4} k (DivisionRing.toDivisionSemiring.{u4} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))
+Case conversion may be inaccurate. Consider using '#align affine_independent.affine_span_eq_top_iff_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_oneₓ'. -/
/-- The `affine_span` of a finite affinely independent family is `⊤` iff the
family's cardinality is one more than that of the finite-dimensional space. -/
theorem AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one [FiniteDimensional k V]
@@ -288,12 +404,19 @@ theorem AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one [FiniteD
exact hi.affine_span_eq_of_le_of_card_eq_finrank_add_one le_top hc
#align affine_independent.affine_span_eq_top_iff_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one
+/- warning: affine.simplex.span_eq_top -> Affine.Simplex.span_eq_top is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_5 : FiniteDimensional.{u1, u2} k V _inst_1 _inst_2 _inst_3] {n : Nat} (T : Affine.Simplex.{u1, u2, u2} k V V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2)) n), (Eq.{1} Nat (FiniteDimensional.finrank.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) _inst_2 _inst_3) n) -> (Eq.{succ u2} (AffineSubspace.{u1, u2, u2} k V V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2))) (affineSpan.{u1, u2, u2} k V V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2)) (Set.range.{u2, 1} V (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Affine.Simplex.points.{u1, u2, u2} k V V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2)) n T))) (Top.top.{u2} (AffineSubspace.{u1, u2, u2} k V V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2))) (CompleteLattice.toHasTop.{u2} (AffineSubspace.{u1, u2, u2} k V V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2))) (AffineSubspace.completeLattice.{u1, u2, u2} k V V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2))))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_5 : FiniteDimensional.{u2, u1} k V _inst_1 _inst_2 _inst_3] {n : Nat} (T : Affine.Simplex.{u2, u1, u1} k V V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2)) n), (Eq.{1} Nat (FiniteDimensional.finrank.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) _inst_2 _inst_3) n) -> (Eq.{succ u1} (AffineSubspace.{u2, u1, u1} k V V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2))) (affineSpan.{u2, u1, u1} k V V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2)) (Set.range.{u1, 1} V (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Affine.Simplex.points.{u2, u1, u1} k V V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2)) n T))) (Top.top.{u1} (AffineSubspace.{u2, u1, u1} k V V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2))) (CompleteLattice.toTop.{u1} (AffineSubspace.{u2, u1, u1} k V V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2))) (AffineSubspace.instCompleteLatticeAffineSubspace.{u2, u1, u1} k V V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2))))))
+Case conversion may be inaccurate. Consider using '#align affine.simplex.span_eq_top Affine.Simplex.span_eq_topₓ'. -/
theorem Affine.Simplex.span_eq_top [FiniteDimensional k V] {n : ℕ} (T : Affine.Simplex k V n)
(hrank : finrank k V = n) : affineSpan k (Set.range T.points) = ⊤ := by
rw [AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one T.independent,
Fintype.card_fin, hrank]
#align affine.simplex.span_eq_top Affine.Simplex.span_eq_top
+#print finiteDimensional_vectorSpan_insert /-
/-- The `vector_span` of adding a point to a finite-dimensional subspace is finite-dimensional. -/
instance finiteDimensional_vectorSpan_insert (s : AffineSubspace k P)
[FiniteDimensional k s.direction] (p : P) :
@@ -307,7 +430,9 @@ instance finiteDimensional_vectorSpan_insert (s : AffineSubspace k P)
· rw [affine_span_coe, direction_affine_span_insert hp₀]
infer_instance
#align finite_dimensional_vector_span_insert finiteDimensional_vectorSpan_insert
+-/
+#print finiteDimensional_direction_affineSpan_insert /-
/-- The direction of the affine span of adding a point to a finite-dimensional subspace is
finite-dimensional. -/
instance finiteDimensional_direction_affineSpan_insert (s : AffineSubspace k P)
@@ -315,9 +440,11 @@ instance finiteDimensional_direction_affineSpan_insert (s : AffineSubspace k P)
FiniteDimensional k (affineSpan k (insert p (s : Set P))).direction :=
(direction_affineSpan k (insert p (s : Set P))).symm ▸ finiteDimensional_vectorSpan_insert s p
#align finite_dimensional_direction_affine_span_insert finiteDimensional_direction_affineSpan_insert
+-/
variable (k)
+#print finiteDimensional_vectorSpan_insert_set /-
/-- The `vector_span` of adding a point to a set with a finite-dimensional `vector_span` is
finite-dimensional. -/
instance finiteDimensional_vectorSpan_insert_set (s : Set P) [FiniteDimensional k (vectorSpan k s)]
@@ -328,13 +455,22 @@ instance finiteDimensional_vectorSpan_insert_set (s : Set P) [FiniteDimensional
rw [← direction_affineSpan, ← affineSpan_insert_affineSpan, direction_affineSpan]
exact finiteDimensional_vectorSpan_insert (affineSpan k s) p
#align finite_dimensional_vector_span_insert_set finiteDimensional_vectorSpan_insert_set
+-/
+#print Collinear /-
/-- A set of points is collinear if their `vector_span` has dimension
at most `1`. -/
def Collinear (s : Set P) : Prop :=
Module.rank k (vectorSpan k s) ≤ 1
#align collinear Collinear
+-/
+/- warning: collinear_iff_rank_le_one -> collinear_iff_rank_le_one is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (s : Set.{u3} P), Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (LE.le.{succ u2} Cardinal.{u2} Cardinal.hasLe.{u2} (Module.rank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommMonoid.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{succ u2} Cardinal.{u2} 1 (OfNat.mk.{succ u2} Cardinal.{u2} 1 (One.one.{succ u2} Cardinal.{u2} Cardinal.hasOne.{u2}))))
+but is expected to have type
+ forall (k : Type.{u2}) {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] (s : Set.{u3} P), Iff (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (LE.le.{succ u1} Cardinal.{u1} Cardinal.instLECardinal.{u1} (Module.rank.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (Submodule.addCommMonoid.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{succ u1} Cardinal.{u1} 1 (One.toOfNat1.{succ u1} Cardinal.{u1} Cardinal.instOneCardinal.{u1})))
+Case conversion may be inaccurate. Consider using '#align collinear_iff_rank_le_one collinear_iff_rank_le_oneₓ'. -/
/-- The definition of `collinear`. -/
theorem collinear_iff_rank_le_one (s : Set P) :
Collinear k s ↔ Module.rank k (vectorSpan k s) ≤ 1 :=
@@ -343,6 +479,12 @@ theorem collinear_iff_rank_le_one (s : Set P) :
variable {k}
+/- warning: collinear_iff_finrank_le_one -> collinear_iff_finrank_le_one is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))], Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))], Iff (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))
+Case conversion may be inaccurate. Consider using '#align collinear_iff_finrank_le_one collinear_iff_finrank_le_oneₓ'. -/
/-- A set of points, whose `vector_span` is finite-dimensional, is
collinear if and only if their `vector_span` has dimension at most
`1`. -/
@@ -354,14 +496,32 @@ theorem collinear_iff_finrank_le_one {s : Set P} [FiniteDimensional k (vectorSpa
exact_mod_cast h
#align collinear_iff_finrank_le_one collinear_iff_finrank_le_one
+/- warning: collinear.finrank_le_one -> Collinear.finrank_le_one is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))], (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))], (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))
+Case conversion may be inaccurate. Consider using '#align collinear.finrank_le_one Collinear.finrank_le_oneₓ'. -/
alias collinear_iff_finrank_le_one ↔ Collinear.finrank_le_one _
#align collinear.finrank_le_one Collinear.finrank_le_one
+/- warning: collinear.subset -> Collinear.subset is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s₁ : Set.{u3} P} {s₂ : Set.{u3} P}, (HasSubset.Subset.{u3} (Set.{u3} P) (Set.hasSubset.{u3} P) s₁ s₂) -> (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₂) -> (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₁)
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s₁ : Set.{u3} P} {s₂ : Set.{u3} P}, (HasSubset.Subset.{u3} (Set.{u3} P) (Set.instHasSubsetSet.{u3} P) s₁ s₂) -> (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₂) -> (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₁)
+Case conversion may be inaccurate. Consider using '#align collinear.subset Collinear.subsetₓ'. -/
/-- A subset of a collinear set is collinear. -/
theorem Collinear.subset {s₁ s₂ : Set P} (hs : s₁ ⊆ s₂) (h : Collinear k s₂) : Collinear k s₁ :=
(rank_le_of_submodule (vectorSpan k s₁) (vectorSpan k s₂) (vectorSpan_mono k hs)).trans h
#align collinear.subset Collinear.subset
+/- warning: collinear.finite_dimensional_vector_span -> Collinear.finiteDimensional_vectorSpan is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
+Case conversion may be inaccurate. Consider using '#align collinear.finite_dimensional_vector_span Collinear.finiteDimensional_vectorSpanₓ'. -/
/-- The `vector_span` of collinear points is finite-dimensional. -/
theorem Collinear.finiteDimensional_vectorSpan {s : Set P} (h : Collinear k s) :
FiniteDimensional k (vectorSpan k s) :=
@@ -369,6 +529,12 @@ theorem Collinear.finiteDimensional_vectorSpan {s : Set P} (h : Collinear k s) :
(IsNoetherian.iff_rank_lt_aleph0.2 (lt_of_le_of_lt h Cardinal.one_lt_aleph0))
#align collinear.finite_dimensional_vector_span Collinear.finiteDimensional_vectorSpan
+/- warning: collinear.finite_dimensional_direction_affine_span -> Collinear.finiteDimensional_direction_affineSpan is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))))
+Case conversion may be inaccurate. Consider using '#align collinear.finite_dimensional_direction_affine_span Collinear.finiteDimensional_direction_affineSpanₓ'. -/
/-- The direction of the affine span of collinear points is finite-dimensional. -/
theorem Collinear.finiteDimensional_direction_affineSpan {s : Set P} (h : Collinear k s) :
FiniteDimensional k (affineSpan k s).direction :=
@@ -377,6 +543,12 @@ theorem Collinear.finiteDimensional_direction_affineSpan {s : Set P} (h : Collin
variable (k P)
+/- warning: collinear_empty -> collinear_empty is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} (P : Type.{u3}) [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)], Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (EmptyCollection.emptyCollection.{u3} (Set.{u3} P) (Set.hasEmptyc.{u3} P))
+but is expected to have type
+ forall (k : Type.{u3}) {V : Type.{u2}} (P : Type.{u1}) [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)], Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (EmptyCollection.emptyCollection.{u1} (Set.{u1} P) (Set.instEmptyCollectionSet.{u1} P))
+Case conversion may be inaccurate. Consider using '#align collinear_empty collinear_emptyₓ'. -/
/-- The empty set is collinear. -/
theorem collinear_empty : Collinear k (∅ : Set P) :=
by
@@ -386,6 +558,12 @@ theorem collinear_empty : Collinear k (∅ : Set P) :=
variable {P}
+/- warning: collinear_singleton -> collinear_singleton is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p : P), Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p)
+but is expected to have type
+ forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p : P), Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p)
+Case conversion may be inaccurate. Consider using '#align collinear_singleton collinear_singletonₓ'. -/
/-- A single point is collinear. -/
theorem collinear_singleton (p : P) : Collinear k ({p} : Set P) :=
by
@@ -395,6 +573,12 @@ theorem collinear_singleton (p : P) : Collinear k ({p} : Set P) :=
variable {k}
+/- warning: collinear_iff_of_mem -> collinear_iff_of_mem is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P} {p₀ : P}, (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₀ s) -> (Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (Exists.{succ u2} V (fun (v : V) => forall (p : P), (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p s) -> (Exists.{succ u1} k (fun (r : k) => Eq.{succ u3} P p (VAdd.vadd.{u2, u3} V P (AddAction.toHasVadd.{u2, u3} V P (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2))) (AddTorsor.toAddAction.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2) _inst_4)) (SMul.smul.{u1, u2} k V (SMulZeroClass.toHasSmul.{u1, u2} k V (AddZeroClass.toHasZero.{u2} V (AddMonoid.toAddZeroClass.{u2} V (AddCommMonoid.toAddMonoid.{u2} V (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} k V (MulZeroClass.toHasZero.{u1} k (MulZeroOneClass.toMulZeroClass.{u1} k (MonoidWithZero.toMulZeroOneClass.{u1} k (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)))))) (AddZeroClass.toHasZero.{u2} V (AddMonoid.toAddZeroClass.{u2} V (AddCommMonoid.toAddMonoid.{u2} V (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} k V (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1))) (AddZeroClass.toHasZero.{u2} V (AddMonoid.toAddZeroClass.{u2} V (AddCommMonoid.toAddMonoid.{u2} V (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)))) (Module.toMulActionWithZero.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))) r v) p₀))))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P} {p₀ : P}, (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₀ s) -> (Iff (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (Exists.{succ u1} V (fun (v : V) => forall (p : P), (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p s) -> (Exists.{succ u2} k (fun (r : k) => Eq.{succ u3} P p (HVAdd.hVAdd.{u1, u3, u3} V P P (instHVAdd.{u1, u3} V P (AddAction.toVAdd.{u1, u3} V P (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2))) (AddTorsor.toAddAction.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2) _inst_4))) (HSMul.hSMul.{u2, u1, u1} k V V (instHSMul.{u2, u1} k V (SMulZeroClass.toSMul.{u2, u1} k V (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} k V (MonoidWithZero.toZero.{u2} k (Semiring.toMonoidWithZero.{u2} k (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} k V (Semiring.toMonoidWithZero.{u2} k (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_2))))) (Module.toMulActionWithZero.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3))))) r v) p₀))))))
+Case conversion may be inaccurate. Consider using '#align collinear_iff_of_mem collinear_iff_of_memₓ'. -/
/-- Given a point `p₀` in a set of points, that set is collinear if and
only if the points can all be expressed as multiples of the same
vector, added to `p₀`. -/
@@ -427,6 +611,12 @@ theorem collinear_iff_of_mem {s : Set P} {p₀ : P} (h : p₀ ∈ s) :
rwa [Submodule.mem_span_singleton] at hw'
#align collinear_iff_of_mem collinear_iff_of_mem
+/- warning: collinear_iff_exists_forall_eq_smul_vadd -> collinear_iff_exists_forall_eq_smul_vadd is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (s : Set.{u3} P), Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (Exists.{succ u3} P (fun (p₀ : P) => Exists.{succ u2} V (fun (v : V) => forall (p : P), (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p s) -> (Exists.{succ u1} k (fun (r : k) => Eq.{succ u3} P p (VAdd.vadd.{u2, u3} V P (AddAction.toHasVadd.{u2, u3} V P (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2))) (AddTorsor.toAddAction.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2) _inst_4)) (SMul.smul.{u1, u2} k V (SMulZeroClass.toHasSmul.{u1, u2} k V (AddZeroClass.toHasZero.{u2} V (AddMonoid.toAddZeroClass.{u2} V (AddCommMonoid.toAddMonoid.{u2} V (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} k V (MulZeroClass.toHasZero.{u1} k (MulZeroOneClass.toMulZeroClass.{u1} k (MonoidWithZero.toMulZeroOneClass.{u1} k (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)))))) (AddZeroClass.toHasZero.{u2} V (AddMonoid.toAddZeroClass.{u2} V (AddCommMonoid.toAddMonoid.{u2} V (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} k V (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1))) (AddZeroClass.toHasZero.{u2} V (AddMonoid.toAddZeroClass.{u2} V (AddCommMonoid.toAddMonoid.{u2} V (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)))) (Module.toMulActionWithZero.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))) r v) p₀))))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] (s : Set.{u3} P), Iff (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (Exists.{succ u3} P (fun (p₀ : P) => Exists.{succ u1} V (fun (v : V) => forall (p : P), (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p s) -> (Exists.{succ u2} k (fun (r : k) => Eq.{succ u3} P p (HVAdd.hVAdd.{u1, u3, u3} V P P (instHVAdd.{u1, u3} V P (AddAction.toVAdd.{u1, u3} V P (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (AddCommGroup.toAddGroup.{u1} V _inst_2))) (AddTorsor.toAddAction.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2) _inst_4))) (HSMul.hSMul.{u2, u1, u1} k V V (instHSMul.{u2, u1} k V (SMulZeroClass.toSMul.{u2, u1} k V (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} k V (MonoidWithZero.toZero.{u2} k (Semiring.toMonoidWithZero.{u2} k (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} k V (Semiring.toMonoidWithZero.{u2} k (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_2))))) (Module.toMulActionWithZero.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3))))) r v) p₀))))))
+Case conversion may be inaccurate. Consider using '#align collinear_iff_exists_forall_eq_smul_vadd collinear_iff_exists_forall_eq_smul_vaddₓ'. -/
/-- A set of points is collinear if and only if they can all be
expressed as multiples of the same vector, added to the same base
point. -/
@@ -449,6 +639,12 @@ theorem collinear_iff_exists_forall_eq_smul_vadd (s : Set P) :
variable (k)
+/- warning: collinear_pair -> collinear_pair is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p₁ : P) (p₂ : P), Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₂))
+but is expected to have type
+ forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p₁ : P) (p₂ : P), Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₂))
+Case conversion may be inaccurate. Consider using '#align collinear_pair collinear_pairₓ'. -/
/-- Two points are collinear. -/
theorem collinear_pair (p₁ p₂ : P) : Collinear k ({p₁, p₂} : Set P) :=
by
@@ -465,6 +661,12 @@ theorem collinear_pair (p₁ p₂ : P) : Collinear k ({p₁, p₂} : Set P) :=
variable {k}
+/- warning: affine_independent_iff_not_collinear -> affineIndependent_iff_not_collinear is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> P}, Iff (AffineIndependent.{u1, u2, u3, 0} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) p) (Not (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Set.range.{u3, 1} P (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) p)))
+but is expected to have type
+ forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> P}, Iff (AffineIndependent.{u3, u2, u1, 0} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) p) (Not (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Set.range.{u1, 1} P (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) p)))
+Case conversion may be inaccurate. Consider using '#align affine_independent_iff_not_collinear affineIndependent_iff_not_collinearₓ'. -/
/-- Three points are affinely independent if and only if they are not
collinear. -/
theorem affineIndependent_iff_not_collinear {p : Fin 3 → P} :
@@ -473,6 +675,12 @@ theorem affineIndependent_iff_not_collinear {p : Fin 3 → P} :
affineIndependent_iff_not_finrank_vectorSpan_le k p (Fintype.card_fin 3)]
#align affine_independent_iff_not_collinear affineIndependent_iff_not_collinear
+/- warning: collinear_iff_not_affine_independent -> collinear_iff_not_affineIndependent is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> P}, Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Set.range.{u3, 1} P (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) p)) (Not (AffineIndependent.{u1, u2, u3, 0} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) p))
+but is expected to have type
+ forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> P}, Iff (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Set.range.{u1, 1} P (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) p)) (Not (AffineIndependent.{u3, u2, u1, 0} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) p))
+Case conversion may be inaccurate. Consider using '#align collinear_iff_not_affine_independent collinear_iff_not_affineIndependentₓ'. -/
/-- Three points are collinear if and only if they are not affinely
independent. -/
theorem collinear_iff_not_affineIndependent {p : Fin 3 → P} :
@@ -481,18 +689,36 @@ theorem collinear_iff_not_affineIndependent {p : Fin 3 → P} :
finrank_vectorSpan_le_iff_not_affineIndependent k p (Fintype.card_fin 3)]
#align collinear_iff_not_affine_independent collinear_iff_not_affineIndependent
+/- warning: affine_independent_iff_not_collinear_set -> affineIndependent_iff_not_collinear_set is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, Iff (AffineIndependent.{u1, u2, u3, 0} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (Nat.succ (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))))))) (Matrix.vecCons.{u3} P (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))))) p₁ (Matrix.vecCons.{u3} P (Nat.succ (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) p₂ (Matrix.vecCons.{u3} P (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) p₃ (Matrix.vecEmpty.{u3} P))))) (Not (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃)))))
+but is expected to have type
+ forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, Iff (AffineIndependent.{u3, u2, u1, 0} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (Nat.succ (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)))))) (Matrix.vecCons.{u1} P (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)))) p₁ (Matrix.vecCons.{u1} P (Nat.succ (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) p₂ (Matrix.vecCons.{u1} P (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) p₃ (Matrix.vecEmpty.{u1} P))))) (Not (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₂ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₃)))))
+Case conversion may be inaccurate. Consider using '#align affine_independent_iff_not_collinear_set affineIndependent_iff_not_collinear_setₓ'. -/
/-- Three points are affinely independent if and only if they are not collinear. -/
theorem affineIndependent_iff_not_collinear_set {p₁ p₂ p₃ : P} :
AffineIndependent k ![p₁, p₂, p₃] ↔ ¬Collinear k ({p₁, p₂, p₃} : Set P) := by
simp [affineIndependent_iff_not_collinear, -Set.union_singleton]
#align affine_independent_iff_not_collinear_set affineIndependent_iff_not_collinear_set
+/- warning: collinear_iff_not_affine_independent_set -> collinear_iff_not_affineIndependent_set is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃)))) (Not (AffineIndependent.{u1, u2, u3, 0} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (Nat.succ (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))))))) (Matrix.vecCons.{u3} P (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))))) p₁ (Matrix.vecCons.{u3} P (Nat.succ (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) p₂ (Matrix.vecCons.{u3} P (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) p₃ (Matrix.vecEmpty.{u3} P))))))
+but is expected to have type
+ forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, Iff (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₂ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₃)))) (Not (AffineIndependent.{u3, u2, u1, 0} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (Nat.succ (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)))))) (Matrix.vecCons.{u1} P (Nat.succ (Nat.succ (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)))) p₁ (Matrix.vecCons.{u1} P (Nat.succ (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) p₂ (Matrix.vecCons.{u1} P (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) p₃ (Matrix.vecEmpty.{u1} P))))))
+Case conversion may be inaccurate. Consider using '#align collinear_iff_not_affine_independent_set collinear_iff_not_affineIndependent_setₓ'. -/
/-- Three points are collinear if and only if they are not affinely independent. -/
theorem collinear_iff_not_affineIndependent_set {p₁ p₂ p₃ : P} :
Collinear k ({p₁, p₂, p₃} : Set P) ↔ ¬AffineIndependent k ![p₁, p₂, p₃] :=
affineIndependent_iff_not_collinear_set.not_left.symm
#align collinear_iff_not_affine_independent_set collinear_iff_not_affineIndependent_set
+/- warning: affine_independent_iff_not_collinear_of_ne -> affineIndependent_iff_not_collinear_of_ne is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> P} {i₁ : Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))} {i₂ : Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))} {i₃ : Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))}, (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) i₁ i₂) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) i₁ i₃) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) i₂ i₃) -> (Iff (AffineIndependent.{u1, u2, u3, 0} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) p) (Not (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) (p i₁) (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) (p i₂) (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) (p i₃)))))))
+but is expected to have type
+ forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> P} {i₁ : Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))} {i₂ : Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))} {i₃ : Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))}, (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) i₁ i₂) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) i₁ i₃) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) i₂ i₃) -> (Iff (AffineIndependent.{u3, u2, u1, 0} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) p) (Not (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) (p i₁) (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) (p i₂) (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) (p i₃)))))))
+Case conversion may be inaccurate. Consider using '#align affine_independent_iff_not_collinear_of_ne affineIndependent_iff_not_collinear_of_neₓ'. -/
/-- Three points are affinely independent if and only if they are not collinear. -/
theorem affineIndependent_iff_not_collinear_of_ne {p : Fin 3 → P} {i₁ i₂ i₃ : Fin 3} (h₁₂ : i₁ ≠ i₂)
(h₁₃ : i₁ ≠ i₃) (h₂₃ : i₂ ≠ i₃) :
@@ -503,6 +729,12 @@ theorem affineIndependent_iff_not_collinear_of_ne {p : Fin 3 → P} {i₁ i₂ i
Finset.coe_insert, Finset.coe_insert, Finset.coe_singleton, Set.image_insert_eq, Set.image_pair]
#align affine_independent_iff_not_collinear_of_ne affineIndependent_iff_not_collinear_of_ne
+/- warning: collinear_iff_not_affine_independent_of_ne -> collinear_iff_not_affineIndependent_of_ne is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> P} {i₁ : Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))} {i₂ : Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))} {i₃ : Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))}, (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) i₁ i₂) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) i₁ i₃) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) i₂ i₃) -> (Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) (p i₁) (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) (p i₂) (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) (p i₃))))) (Not (AffineIndependent.{u1, u2, u3, 0} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) p)))
+but is expected to have type
+ forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p : (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> P} {i₁ : Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))} {i₂ : Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))} {i₃ : Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))}, (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) i₁ i₂) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) i₁ i₃) -> (Ne.{1} (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) i₂ i₃) -> (Iff (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) (p i₁) (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) (p i₂) (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) (p i₃))))) (Not (AffineIndependent.{u3, u2, u1, 0} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Fin (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) p)))
+Case conversion may be inaccurate. Consider using '#align collinear_iff_not_affine_independent_of_ne collinear_iff_not_affineIndependent_of_neₓ'. -/
/-- Three points are collinear if and only if they are not affinely independent. -/
theorem collinear_iff_not_affineIndependent_of_ne {p : Fin 3 → P} {i₁ i₂ i₃ : Fin 3} (h₁₂ : i₁ ≠ i₂)
(h₁₃ : i₁ ≠ i₃) (h₂₃ : i₂ ≠ i₃) :
@@ -510,6 +742,12 @@ theorem collinear_iff_not_affineIndependent_of_ne {p : Fin 3 → P} {i₁ i₂ i
(affineIndependent_iff_not_collinear_of_ne h₁₂ h₁₃ h₂₃).not_left.symm
#align collinear_iff_not_affine_independent_of_ne collinear_iff_not_affineIndependent_of_ne
+/- warning: ne₁₂_of_not_collinear -> ne₁₂_of_not_collinear is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Not (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃))))) -> (Ne.{succ u3} P p₁ p₂)
+but is expected to have type
+ forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Not (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₂ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₃))))) -> (Ne.{succ u1} P p₁ p₂)
+Case conversion may be inaccurate. Consider using '#align ne₁₂_of_not_collinear ne₁₂_of_not_collinearₓ'. -/
/-- If three points are not collinear, the first and second are different. -/
theorem ne₁₂_of_not_collinear {p₁ p₂ p₃ : P} (h : ¬Collinear k ({p₁, p₂, p₃} : Set P)) : p₁ ≠ p₂ :=
by
@@ -517,6 +755,12 @@ theorem ne₁₂_of_not_collinear {p₁ p₂ p₃ : P} (h : ¬Collinear k ({p₁
simpa [collinear_pair] using h
#align ne₁₂_of_not_collinear ne₁₂_of_not_collinear
+/- warning: ne₁₃_of_not_collinear -> ne₁₃_of_not_collinear is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Not (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃))))) -> (Ne.{succ u3} P p₁ p₃)
+but is expected to have type
+ forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Not (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₂ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₃))))) -> (Ne.{succ u1} P p₁ p₃)
+Case conversion may be inaccurate. Consider using '#align ne₁₃_of_not_collinear ne₁₃_of_not_collinearₓ'. -/
/-- If three points are not collinear, the first and third are different. -/
theorem ne₁₃_of_not_collinear {p₁ p₂ p₃ : P} (h : ¬Collinear k ({p₁, p₂, p₃} : Set P)) : p₁ ≠ p₃ :=
by
@@ -524,6 +768,12 @@ theorem ne₁₃_of_not_collinear {p₁ p₂ p₃ : P} (h : ¬Collinear k ({p₁
simpa [collinear_pair] using h
#align ne₁₃_of_not_collinear ne₁₃_of_not_collinear
+/- warning: ne₂₃_of_not_collinear -> ne₂₃_of_not_collinear is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Not (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃))))) -> (Ne.{succ u3} P p₂ p₃)
+but is expected to have type
+ forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Not (Collinear.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₂ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₃))))) -> (Ne.{succ u1} P p₂ p₃)
+Case conversion may be inaccurate. Consider using '#align ne₂₃_of_not_collinear ne₂₃_of_not_collinearₓ'. -/
/-- If three points are not collinear, the second and third are different. -/
theorem ne₂₃_of_not_collinear {p₁ p₂ p₃ : P} (h : ¬Collinear k ({p₁, p₂, p₃} : Set P)) : p₂ ≠ p₃ :=
by
@@ -531,6 +781,12 @@ theorem ne₂₃_of_not_collinear {p₁ p₂ p₃ : P} (h : ¬Collinear k ({p₁
simpa [collinear_pair] using h
#align ne₂₃_of_not_collinear ne₂₃_of_not_collinear
+/- warning: collinear.mem_affine_span_of_mem_of_ne -> Collinear.mem_affineSpan_of_mem_of_ne is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall {p₁ : P} {p₂ : P} {p₃ : P}, (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₁ s) -> (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₂ s) -> (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₃ s) -> (Ne.{succ u3} P p₁ p₂) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₂)))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall {p₁ : P} {p₂ : P} {p₃ : P}, (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₁ s) -> (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₂ s) -> (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₃ s) -> (Ne.{succ u3} P p₁ p₂) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₂)))))
+Case conversion may be inaccurate. Consider using '#align collinear.mem_affine_span_of_mem_of_ne Collinear.mem_affineSpan_of_mem_of_neₓ'. -/
/-- A point in a collinear set of points lies in the affine span of any two distinct points of
that set. -/
theorem Collinear.mem_affineSpan_of_mem_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂ p₃ : P}
@@ -548,6 +804,12 @@ theorem Collinear.mem_affineSpan_of_mem_of_ne {s : Set P} (h : Collinear k s) {p
simp [smul_smul, h₂]
#align collinear.mem_affine_span_of_mem_of_ne Collinear.mem_affineSpan_of_mem_of_ne
+/- warning: collinear.affine_span_eq_of_ne -> Collinear.affineSpan_eq_of_ne is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall {p₁ : P} {p₂ : P}, (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₁ s) -> (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₂ s) -> (Ne.{succ u3} P p₁ p₂) -> (Eq.{succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₂))) (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall {p₁ : P} {p₂ : P}, (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₁ s) -> (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₂ s) -> (Ne.{succ u3} P p₁ p₂) -> (Eq.{succ u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₂))) (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
+Case conversion may be inaccurate. Consider using '#align collinear.affine_span_eq_of_ne Collinear.affineSpan_eq_of_neₓ'. -/
/-- The affine span of any two distinct points of a collinear set of points equals the affine
span of the whole set. -/
theorem Collinear.affineSpan_eq_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂ : P} (hp₁ : p₁ ∈ s)
@@ -556,6 +818,12 @@ theorem Collinear.affineSpan_eq_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂
(affineSpan_le.2 fun p hp => h.mem_affineSpan_of_mem_of_ne hp₁ hp₂ hp hp₁p₂)
#align collinear.affine_span_eq_of_ne Collinear.affineSpan_eq_of_ne
+/- warning: collinear.collinear_insert_iff_of_ne -> Collinear.collinear_insert_iff_of_ne is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall {p₁ : P} {p₂ : P} {p₃ : P}, (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₂ s) -> (Membership.Mem.{u3, u3} P (Set.{u3} P) (Set.hasMem.{u3} P) p₃ s) -> (Ne.{succ u3} P p₂ p₃) -> (Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ s)) (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃))))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall {p₁ : P} {p₂ : P} {p₃ : P}, (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₂ s) -> (Membership.mem.{u3, u3} P (Set.{u3} P) (Set.instMembershipSet.{u3} P) p₃ s) -> (Ne.{succ u3} P p₂ p₃) -> (Iff (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ s)) (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₃))))))
+Case conversion may be inaccurate. Consider using '#align collinear.collinear_insert_iff_of_ne Collinear.collinear_insert_iff_of_neₓ'. -/
/-- Given a collinear set of points, and two distinct points `p₂` and `p₃` in it, a point `p₁` is
collinear with the set if and only if it is collinear with `p₂` and `p₃`. -/
theorem Collinear.collinear_insert_iff_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂ p₃ : P}
@@ -570,12 +838,24 @@ theorem Collinear.collinear_insert_iff_of_ne {s : Set P} (h : Collinear k s) {p
rw [Collinear, Collinear, hv]
#align collinear.collinear_insert_iff_of_ne Collinear.collinear_insert_iff_of_ne
+/- warning: collinear_insert_iff_of_mem_affine_span -> collinear_insert_iff_of_mem_affineSpan is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P} {p : P}, (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) -> (Iff (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p s)) (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P} {p : P}, (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) -> (Iff (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p s)) (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s))
+Case conversion may be inaccurate. Consider using '#align collinear_insert_iff_of_mem_affine_span collinear_insert_iff_of_mem_affineSpanₓ'. -/
/-- Adding a point in the affine span of a set does not change whether that set is collinear. -/
theorem collinear_insert_iff_of_mem_affineSpan {s : Set P} {p : P} (h : p ∈ affineSpan k s) :
Collinear k (insert p s) ↔ Collinear k s := by
rw [Collinear, Collinear, vectorSpan_insert_eq_vectorSpan h]
#align collinear_insert_iff_of_mem_affine_span collinear_insert_iff_of_mem_affineSpan
+/- warning: collinear_insert_of_mem_affine_span_pair -> collinear_insert_of_mem_affineSpan_pair is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃)))) -> (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P}, (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₃)))) -> (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₃))))
+Case conversion may be inaccurate. Consider using '#align collinear_insert_of_mem_affine_span_pair collinear_insert_of_mem_affineSpan_pairₓ'. -/
/-- If a point lies in the affine span of two points, those three points are collinear. -/
theorem collinear_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ : P} (h : p₁ ∈ line[k, p₂, p₃]) :
Collinear k ({p₁, p₂, p₃} : Set P) :=
@@ -584,6 +864,12 @@ theorem collinear_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ : P} (h : p₁
exact collinear_pair _ _ _
#align collinear_insert_of_mem_affine_span_pair collinear_insert_of_mem_affineSpan_pair
+/- warning: collinear_insert_insert_of_mem_affine_span_pair -> collinear_insert_insert_of_mem_affineSpan_pair is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P}, (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₄)))) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₄)))) -> (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₄)))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P}, (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₄)))) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₄)))) -> (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₂ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₄)))))
+Case conversion may be inaccurate. Consider using '#align collinear_insert_insert_of_mem_affine_span_pair collinear_insert_insert_of_mem_affineSpan_pairₓ'. -/
/-- If two points lie in the affine span of two points, those four points are collinear. -/
theorem collinear_insert_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ : P} (h₁ : p₁ ∈ line[k, p₃, p₄])
(h₂ : p₂ ∈ line[k, p₃, p₄]) : Collinear k ({p₁, p₂, p₃, p₄} : Set P) :=
@@ -594,6 +880,12 @@ theorem collinear_insert_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ : P}
exact collinear_pair _ _ _
#align collinear_insert_insert_of_mem_affine_span_pair collinear_insert_insert_of_mem_affineSpan_pair
+/- warning: collinear_insert_insert_insert_of_mem_affine_span_pair -> collinear_insert_insert_insert_of_mem_affineSpan_pair is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P} {p₅ : P}, (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₃ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅))))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P} {p₅ : P}, (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₂ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₃ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅))))))
+Case conversion may be inaccurate. Consider using '#align collinear_insert_insert_insert_of_mem_affine_span_pair collinear_insert_insert_insert_of_mem_affineSpan_pairₓ'. -/
/-- If three points lie in the affine span of two points, those five points are collinear. -/
theorem collinear_insert_insert_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ p₅ : P}
(h₁ : p₁ ∈ line[k, p₄, p₅]) (h₂ : p₂ ∈ line[k, p₄, p₅]) (h₃ : p₃ ∈ line[k, p₄, p₅]) :
@@ -608,6 +900,12 @@ theorem collinear_insert_insert_insert_of_mem_affineSpan_pair {p₁ p₂ p₃ p
exact collinear_pair _ _ _
#align collinear_insert_insert_insert_of_mem_affine_span_pair collinear_insert_insert_insert_of_mem_affineSpan_pair
+/- warning: collinear_insert_insert_insert_left_of_mem_affine_span_pair -> collinear_insert_insert_insert_left_of_mem_affineSpan_pair is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P} {p₅ : P}, (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₄)))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P} {p₅ : P}, (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₂ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₃ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₄)))))
+Case conversion may be inaccurate. Consider using '#align collinear_insert_insert_insert_left_of_mem_affine_span_pair collinear_insert_insert_insert_left_of_mem_affineSpan_pairₓ'. -/
/-- If three points lie in the affine span of two points, the first four points are collinear. -/
theorem collinear_insert_insert_insert_left_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ p₅ : P}
(h₁ : p₁ ∈ line[k, p₄, p₅]) (h₂ : p₂ ∈ line[k, p₄, p₅]) (h₃ : p₃ ∈ line[k, p₄, p₅]) :
@@ -617,6 +915,12 @@ theorem collinear_insert_insert_insert_left_of_mem_affineSpan_pair {p₁ p₂ p
simp [Set.insert_subset_insert]
#align collinear_insert_insert_insert_left_of_mem_affine_span_pair collinear_insert_insert_insert_left_of_mem_affineSpan_pair
+/- warning: collinear_triple_of_mem_affine_span_pair -> collinear_triple_of_mem_affineSpan_pair is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P} {p₅ : P}, (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₅)))) -> (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {p₁ : P} {p₂ : P} {p₃ : P} {p₄ : P} {p₅ : P}, (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₁ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₂ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p₃ (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₄ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₅)))) -> (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.instSingletonSet.{u3} P) p₃))))
+Case conversion may be inaccurate. Consider using '#align collinear_triple_of_mem_affine_span_pair collinear_triple_of_mem_affineSpan_pairₓ'. -/
/-- If three points lie in the affine span of two points, the first three points are collinear. -/
theorem collinear_triple_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ p₅ : P} (h₁ : p₁ ∈ line[k, p₄, p₅])
(h₂ : p₂ ∈ line[k, p₄, p₅]) (h₃ : p₃ ∈ line[k, p₄, p₅]) : Collinear k ({p₁, p₂, p₃} : Set P) :=
@@ -627,13 +931,21 @@ theorem collinear_triple_of_mem_affineSpan_pair {p₁ p₂ p₃ p₄ p₅ : P} (
variable (k)
+#print Coplanar /-
/-- A set of points is coplanar if their `vector_span` has dimension at most `2`. -/
def Coplanar (s : Set P) : Prop :=
Module.rank k (vectorSpan k s) ≤ 2
#align coplanar Coplanar
+-/
variable {k}
+/- warning: coplanar.finite_dimensional_vector_span -> Coplanar.finiteDimensional_vectorSpan is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)))
+Case conversion may be inaccurate. Consider using '#align coplanar.finite_dimensional_vector_span Coplanar.finiteDimensional_vectorSpanₓ'. -/
/-- The `vector_span` of coplanar points is finite-dimensional. -/
theorem Coplanar.finiteDimensional_vectorSpan {s : Set P} (h : Coplanar k s) :
FiniteDimensional k (vectorSpan k s) :=
@@ -642,12 +954,24 @@ theorem Coplanar.finiteDimensional_vectorSpan {s : Set P} (h : Coplanar k s) :
simp
#align coplanar.finite_dimensional_vector_span Coplanar.finiteDimensional_vectorSpan
+/- warning: coplanar.finite_dimensional_direction_affine_span -> Coplanar.finiteDimensional_direction_affineSpan is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (AffineSubspace.direction.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))))
+Case conversion may be inaccurate. Consider using '#align coplanar.finite_dimensional_direction_affine_span Coplanar.finiteDimensional_direction_affineSpanₓ'. -/
/-- The direction of the affine span of coplanar points is finite-dimensional. -/
theorem Coplanar.finiteDimensional_direction_affineSpan {s : Set P} (h : Coplanar k s) :
FiniteDimensional k (affineSpan k s).direction :=
(direction_affineSpan k s).symm ▸ h.finiteDimensional_vectorSpan
#align coplanar.finite_dimensional_direction_affine_span Coplanar.finiteDimensional_direction_affineSpan
+/- warning: coplanar_iff_finrank_le_two -> coplanar_iff_finrank_le_two is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))], Iff (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))], Iff (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))
+Case conversion may be inaccurate. Consider using '#align coplanar_iff_finrank_le_two coplanar_iff_finrank_le_twoₓ'. -/
/-- A set of points, whose `vector_span` is finite-dimensional, is coplanar if and only if their
`vector_span` has dimension at most `2`. -/
theorem coplanar_iff_finrank_le_two {s : Set P} [FiniteDimensional k (vectorSpan k s)] :
@@ -658,14 +982,32 @@ theorem coplanar_iff_finrank_le_two {s : Set P} [FiniteDimensional k (vectorSpan
exact_mod_cast h
#align coplanar_iff_finrank_le_two coplanar_iff_finrank_le_two
+/- warning: coplanar.finrank_le_two -> Coplanar.finrank_le_two is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) _inst_1 (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))], (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P} [_inst_5 : FiniteDimensional.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) _inst_1 (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))], (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))
+Case conversion may be inaccurate. Consider using '#align coplanar.finrank_le_two Coplanar.finrank_le_twoₓ'. -/
alias coplanar_iff_finrank_le_two ↔ Coplanar.finrank_le_two _
#align coplanar.finrank_le_two Coplanar.finrank_le_two
+/- warning: coplanar.subset -> Coplanar.subset is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s₁ : Set.{u3} P} {s₂ : Set.{u3} P}, (HasSubset.Subset.{u3} (Set.{u3} P) (Set.hasSubset.{u3} P) s₁ s₂) -> (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₂) -> (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₁)
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s₁ : Set.{u3} P} {s₂ : Set.{u3} P}, (HasSubset.Subset.{u3} (Set.{u3} P) (Set.instHasSubsetSet.{u3} P) s₁ s₂) -> (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₂) -> (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s₁)
+Case conversion may be inaccurate. Consider using '#align coplanar.subset Coplanar.subsetₓ'. -/
/-- A subset of a coplanar set is coplanar. -/
theorem Coplanar.subset {s₁ s₂ : Set P} (hs : s₁ ⊆ s₂) (h : Coplanar k s₂) : Coplanar k s₁ :=
(rank_le_of_submodule (vectorSpan k s₁) (vectorSpan k s₂) (vectorSpan_mono k hs)).trans h
#align coplanar.subset Coplanar.subset
+/- warning: collinear.coplanar -> Collinear.coplanar is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s)
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s)
+Case conversion may be inaccurate. Consider using '#align collinear.coplanar Collinear.coplanarₓ'. -/
/-- Collinear points are coplanar. -/
theorem Collinear.coplanar {s : Set P} (h : Collinear k s) : Coplanar k s :=
le_trans h one_le_two
@@ -673,6 +1015,12 @@ theorem Collinear.coplanar {s : Set P} (h : Collinear k s) : Coplanar k s :=
variable (k) (P)
+/- warning: coplanar_empty -> coplanar_empty is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} (P : Type.{u3}) [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)], Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (EmptyCollection.emptyCollection.{u3} (Set.{u3} P) (Set.hasEmptyc.{u3} P))
+but is expected to have type
+ forall (k : Type.{u3}) {V : Type.{u2}} (P : Type.{u1}) [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)], Coplanar.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (EmptyCollection.emptyCollection.{u1} (Set.{u1} P) (Set.instEmptyCollectionSet.{u1} P))
+Case conversion may be inaccurate. Consider using '#align coplanar_empty coplanar_emptyₓ'. -/
/-- The empty set is coplanar. -/
theorem coplanar_empty : Coplanar k (∅ : Set P) :=
(collinear_empty k P).Coplanar
@@ -680,11 +1028,23 @@ theorem coplanar_empty : Coplanar k (∅ : Set P) :=
variable {P}
+/- warning: coplanar_singleton -> coplanar_singleton is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p : P), Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p)
+but is expected to have type
+ forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p : P), Coplanar.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p)
+Case conversion may be inaccurate. Consider using '#align coplanar_singleton coplanar_singletonₓ'. -/
/-- A single point is coplanar. -/
theorem coplanar_singleton (p : P) : Coplanar k ({p} : Set P) :=
(collinear_singleton k p).Coplanar
#align coplanar_singleton coplanar_singleton
+/- warning: coplanar_pair -> coplanar_pair is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p₁ : P) (p₂ : P), Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₂))
+but is expected to have type
+ forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p₁ : P) (p₂ : P), Coplanar.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₂))
+Case conversion may be inaccurate. Consider using '#align coplanar_pair coplanar_pairₓ'. -/
/-- Two points are coplanar. -/
theorem coplanar_pair (p₁ p₂ : P) : Coplanar k ({p₁, p₂} : Set P) :=
(collinear_pair k p₁ p₂).Coplanar
@@ -692,6 +1052,12 @@ theorem coplanar_pair (p₁ p₂ : P) : Coplanar k ({p₁, p₂} : Set P) :=
variable {k}
+/- warning: coplanar_insert_iff_of_mem_affine_span -> coplanar_insert_iff_of_mem_affineSpan is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P} {p : P}, (Membership.Mem.{u3, u3} P (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.hasMem.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)) p (affineSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) -> (Iff (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p s)) (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P} {p : P}, (Membership.mem.{u3, u3} P (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) (SetLike.instMembership.{u3, u3} (AffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4)) p (affineSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) -> (Iff (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p s)) (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s))
+Case conversion may be inaccurate. Consider using '#align coplanar_insert_iff_of_mem_affine_span coplanar_insert_iff_of_mem_affineSpanₓ'. -/
/-- Adding a point in the affine span of a set does not change whether that set is coplanar. -/
theorem coplanar_insert_iff_of_mem_affineSpan {s : Set P} {p : P} (h : p ∈ affineSpan k s) :
Coplanar k (insert p s) ↔ Coplanar k s := by
@@ -710,6 +1076,12 @@ open AffineSubspace FiniteDimensional Module
variable [DivisionRing k] [AddCommGroup V] [Module k V] [affine_space V P]
+/- warning: finrank_vector_span_insert_le -> finrank_vectorSpan_insert_le is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (s : AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (p : P), LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (SetLike.Set.hasCoeT.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) s)))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (SetLike.Set.hasCoeT.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) s)))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (HasLiftT.mk.{succ u3, succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (CoeTCₓ.coe.{succ u3, succ u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) (Set.{u3} P) (SetLike.Set.hasCoeT.{u3, u3} (AffineSubspace.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.setLike.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4)))) s))))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))
+but is expected to have type
+ forall {k : Type.{u3}} {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (s : AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) (p : P), LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p (SetLike.coe.{u1, u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) s))))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p (SetLike.coe.{u1, u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) s)))) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p (SetLike.coe.{u1, u1} (AffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) P (AffineSubspace.instSetLikeAffineSubspace.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4) s))))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u3, u2} k (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (Submodule.addCommGroup.{u3, u2} k V (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u3, u2} k V (Ring.toSemiring.{u3} k (DivisionRing.toRing.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (AffineSubspace.direction.{u3, u2, u1} k V P (DivisionRing.toRing.{u3} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))
+Case conversion may be inaccurate. Consider using '#align finrank_vector_span_insert_le finrank_vectorSpan_insert_leₓ'. -/
/-- Adding a point to a finite-dimensional subspace increases the dimension by at most one. -/
theorem finrank_vectorSpan_insert_le (s : AffineSubspace k P) (p : P) :
finrank k (vectorSpan k (insert p (s : Set P))) ≤ finrank k s.direction + 1 :=
@@ -747,6 +1119,12 @@ theorem finrank_vectorSpan_insert_le (s : AffineSubspace k P) (p : P) :
variable (k)
+/- warning: finrank_vector_span_insert_le_set -> finrank_vectorSpan_insert_le_set is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (s : Set.{u3} P) (p : P), LE.le.{0} Nat Nat.hasLe (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p s))) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p s))) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p s)))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (FiniteDimensional.finrank.{u1, u2} k (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (Submodule.addCommGroup.{u1, u2} k V (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (vectorSpan.{u1, u2, u3} k V P (DivisionRing.toRing.{u1} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))
+but is expected to have type
+ forall (k : Type.{u2}) {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] (s : Set.{u3} P) (p : P), LE.le.{0} Nat instLENat (FiniteDimensional.finrank.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p s)))) (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p s))) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p s)))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (FiniteDimensional.finrank.{u2, u1} k (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3) V (Submodule.setLike.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3)) x (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (Submodule.addCommGroup.{u2, u1} k V (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s)) (Submodule.module.{u2, u1} k V (Ring.toSemiring.{u2} k (DivisionRing.toRing.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2) _inst_3 (vectorSpan.{u2, u1, u3} k V P (DivisionRing.toRing.{u2} k _inst_1) _inst_2 _inst_3 _inst_4 s))) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))
+Case conversion may be inaccurate. Consider using '#align finrank_vector_span_insert_le_set finrank_vectorSpan_insert_le_setₓ'. -/
/-- Adding a point to a set with a finite-dimensional span increases the dimension by at most
one. -/
theorem finrank_vectorSpan_insert_le_set (s : Set P) (p : P) :
@@ -759,6 +1137,12 @@ theorem finrank_vectorSpan_insert_le_set (s : Set P) (p : P) :
variable {k}
+/- warning: collinear.coplanar_insert -> Collinear.coplanar_insert is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall (p : P), Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p s))
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] {s : Set.{u3} P}, (Collinear.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s) -> (forall (p : P), Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.instInsertSet.{u3} P) p s))
+Case conversion may be inaccurate. Consider using '#align collinear.coplanar_insert Collinear.coplanar_insertₓ'. -/
/-- Adding a point to a collinear set produces a coplanar set. -/
theorem Collinear.coplanar_insert {s : Set P} (h : Collinear k s) (p : P) :
Coplanar k (insert p s) :=
@@ -768,6 +1152,12 @@ theorem Collinear.coplanar_insert {s : Set P} (h : Collinear k s) (p : P) :
exact (finrank_vectorSpan_insert_le_set k s p).trans (add_le_add_right h.finrank_le_one _)
#align collinear.coplanar_insert Collinear.coplanar_insert
+/- warning: coplanar_of_finrank_eq_two -> coplanar_of_finrank_eq_two is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (s : Set.{u3} P), (Eq.{1} Nat (FiniteDimensional.finrank.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s)
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] (s : Set.{u3} P), (Eq.{1} Nat (FiniteDimensional.finrank.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) -> (Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s)
+Case conversion may be inaccurate. Consider using '#align coplanar_of_finrank_eq_two coplanar_of_finrank_eq_twoₓ'. -/
/-- A set of points in a two-dimensional space is coplanar. -/
theorem coplanar_of_finrank_eq_two (s : Set P) (h : finrank k V = 2) : Coplanar k s :=
by
@@ -776,6 +1166,12 @@ theorem coplanar_of_finrank_eq_two (s : Set P) (h : finrank k V = 2) : Coplanar
exact Submodule.finrank_le _
#align coplanar_of_finrank_eq_two coplanar_of_finrank_eq_two
+/- warning: coplanar_of_fact_finrank_eq_two -> coplanar_of_fact_finrank_eq_two is a dubious translation:
+lean 3 declaration is
+ forall {k : Type.{u1}} {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (s : Set.{u3} P) [h : Fact (Eq.{1} Nat (FiniteDimensional.finrank.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))], Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s
+but is expected to have type
+ forall {k : Type.{u2}} {V : Type.{u1}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u2} k] [_inst_2 : AddCommGroup.{u1} V] [_inst_3 : Module.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} V _inst_2)] [_inst_4 : AddTorsor.{u1, u3} V P (AddCommGroup.toAddGroup.{u1} V _inst_2)] (s : Set.{u3} P) [h : Fact (Eq.{1} Nat (FiniteDimensional.finrank.{u2, u1} k V (DivisionSemiring.toSemiring.{u2} k (DivisionRing.toDivisionSemiring.{u2} k _inst_1)) _inst_2 _inst_3) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))], Coplanar.{u2, u1, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 s
+Case conversion may be inaccurate. Consider using '#align coplanar_of_fact_finrank_eq_two coplanar_of_fact_finrank_eq_twoₓ'. -/
/-- A set of points in a two-dimensional space is coplanar. -/
theorem coplanar_of_fact_finrank_eq_two (s : Set P) [h : Fact (finrank k V = 2)] : Coplanar k s :=
coplanar_of_finrank_eq_two s h.out
@@ -783,6 +1179,12 @@ theorem coplanar_of_fact_finrank_eq_two (s : Set P) [h : Fact (finrank k V = 2)]
variable (k)
+/- warning: coplanar_triple -> coplanar_triple is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) {V : Type.{u2}} {P : Type.{u3}} [_inst_1 : DivisionRing.{u1} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u3} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p₁ : P) (p₂ : P) (p₃ : P), Coplanar.{u1, u2, u3} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₁ (Insert.insert.{u3, u3} P (Set.{u3} P) (Set.hasInsert.{u3} P) p₂ (Singleton.singleton.{u3, u3} P (Set.{u3} P) (Set.hasSingleton.{u3} P) p₃)))
+but is expected to have type
+ forall (k : Type.{u3}) {V : Type.{u2}} {P : Type.{u1}} [_inst_1 : DivisionRing.{u3} k] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u3, u2} k V (DivisionSemiring.toSemiring.{u3} k (DivisionRing.toDivisionSemiring.{u3} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_4 : AddTorsor.{u2, u1} V P (AddCommGroup.toAddGroup.{u2} V _inst_2)] (p₁ : P) (p₂ : P) (p₃ : P), Coplanar.{u3, u2, u1} k V P _inst_1 _inst_2 _inst_3 _inst_4 (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₁ (Insert.insert.{u1, u1} P (Set.{u1} P) (Set.instInsertSet.{u1} P) p₂ (Singleton.singleton.{u1, u1} P (Set.{u1} P) (Set.instSingletonSet.{u1} P) p₃)))
+Case conversion may be inaccurate. Consider using '#align coplanar_triple coplanar_tripleₓ'. -/
/-- Three points are coplanar. -/
theorem coplanar_triple (p₁ p₂ p₃ : P) : Coplanar k ({p₁, p₂, p₃} : Set P) :=
(collinear_pair k p₂ p₃).coplanar_insert p₁
@@ -804,28 +1206,37 @@ variable [DivisionRing k] [Module k V]
include V
+#print AffineBasis.finiteDimensional /-
protected theorem finiteDimensional [Finite ι] (b : AffineBasis ι k P) : FiniteDimensional k V :=
let ⟨i⟩ := b.Nonempty
FiniteDimensional.of_fintype_basis (b.basisOf i)
#align affine_basis.finite_dimensional AffineBasis.finiteDimensional
+-/
+#print AffineBasis.finite /-
protected theorem finite [FiniteDimensional k V] (b : AffineBasis ι k P) : Finite ι :=
finite_of_fin_dim_affineIndependent k b.ind
#align affine_basis.finite AffineBasis.finite
+-/
+#print AffineBasis.finite_set /-
protected theorem finite_set [FiniteDimensional k V] {s : Set ι} (b : AffineBasis s k P) :
s.Finite :=
finite_set_of_fin_dim_affineIndependent k b.ind
#align affine_basis.finite_set AffineBasis.finite_set
+-/
+#print AffineBasis.card_eq_finrank_add_one /-
theorem card_eq_finrank_add_one [Fintype ι] (b : AffineBasis ι k P) :
Fintype.card ι = FiniteDimensional.finrank k V + 1 :=
haveI := b.finite_dimensional
b.ind.affine_span_eq_top_iff_card_eq_finrank_add_one.mp b.tot
#align affine_basis.card_eq_finrank_add_one AffineBasis.card_eq_finrank_add_one
+-/
variable {k V P}
+#print AffineBasis.exists_affineBasis_of_finiteDimensional /-
theorem exists_affineBasis_of_finiteDimensional [Fintype ι] [FiniteDimensional k V]
(h : Fintype.card ι = FiniteDimensional.finrank k V + 1) : Nonempty (AffineBasis ι k P) :=
by
@@ -834,6 +1245,7 @@ theorem exists_affineBasis_of_finiteDimensional [Fintype ι] [FiniteDimensional
refine' ⟨b.reindex <| Fintype.equivOfCardEq _⟩
rw [h, ← b.card_eq_finrank_add_one]
#align affine_basis.exists_affine_basis_of_finite_dimensional AffineBasis.exists_affineBasis_of_finiteDimensional
+-/
end DivisionRing
mathlib commit https://github.com/leanprover-community/mathlib/commit/5ec62c8106221a3f9160e4e4fcc3eed79fe213e9
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Myers
! This file was ported from Lean 3 source module linear_algebra.affine_space.finite_dimensional
-! leanprover-community/mathlib commit 039a089d2a4b93c761b234f3e5f5aeb752bac60f
+! leanprover-community/mathlib commit 67e606eaea14c7854bdc556bd53d98aefdf76ec0
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -735,7 +735,7 @@ theorem finrank_vectorSpan_insert_le (s : AffineSubspace k P) (p : P) :
rw [← finrank_bot k V]
convert rfl <;> simp
· rw [affine_span_coe, direction_affine_span_insert hp₀, add_comm]
- refine' (Submodule.rank_add_le_rank_add_rank _ _).trans (add_le_add_right _ _)
+ refine' (Submodule.finrank_add_le_finrank_add_finrank _ _).trans (add_le_add_right _ _)
refine' finrank_le_one ⟨p -ᵥ p₀, Submodule.mem_span_singleton_self _⟩ fun v => _
have h := v.property
rw [Submodule.mem_span_singleton] at h
mathlib commit https://github.com/leanprover-community/mathlib/commit/06a655b5fcfbda03502f9158bbf6c0f1400886f9
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Myers
! This file was ported from Lean 3 source module linear_algebra.affine_space.finite_dimensional
-! leanprover-community/mathlib commit b875cbb7f2aa2b4c685aaa2f99705689c95322ad
+! leanprover-community/mathlib commit 039a089d2a4b93c761b234f3e5f5aeb752bac60f
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -336,9 +336,10 @@ def Collinear (s : Set P) : Prop :=
#align collinear Collinear
/-- The definition of `collinear`. -/
-theorem collinear_iff_dim_le_one (s : Set P) : Collinear k s ↔ Module.rank k (vectorSpan k s) ≤ 1 :=
+theorem collinear_iff_rank_le_one (s : Set P) :
+ Collinear k s ↔ Module.rank k (vectorSpan k s) ≤ 1 :=
Iff.rfl
-#align collinear_iff_dim_le_one collinear_iff_dim_le_one
+#align collinear_iff_rank_le_one collinear_iff_rank_le_one
variable {k}
@@ -348,8 +349,8 @@ collinear if and only if their `vector_span` has dimension at most
theorem collinear_iff_finrank_le_one {s : Set P} [FiniteDimensional k (vectorSpan k s)] :
Collinear k s ↔ finrank k (vectorSpan k s) ≤ 1 :=
by
- have h := collinear_iff_dim_le_one k s
- rw [← finrank_eq_dim] at h
+ have h := collinear_iff_rank_le_one k s
+ rw [← finrank_eq_rank] at h
exact_mod_cast h
#align collinear_iff_finrank_le_one collinear_iff_finrank_le_one
@@ -358,13 +359,14 @@ alias collinear_iff_finrank_le_one ↔ Collinear.finrank_le_one _
/-- A subset of a collinear set is collinear. -/
theorem Collinear.subset {s₁ s₂ : Set P} (hs : s₁ ⊆ s₂) (h : Collinear k s₂) : Collinear k s₁ :=
- (dim_le_of_submodule (vectorSpan k s₁) (vectorSpan k s₂) (vectorSpan_mono k hs)).trans h
+ (rank_le_of_submodule (vectorSpan k s₁) (vectorSpan k s₂) (vectorSpan_mono k hs)).trans h
#align collinear.subset Collinear.subset
/-- The `vector_span` of collinear points is finite-dimensional. -/
theorem Collinear.finiteDimensional_vectorSpan {s : Set P} (h : Collinear k s) :
FiniteDimensional k (vectorSpan k s) :=
- IsNoetherian.iff_fg.1 (IsNoetherian.iff_dim_lt_aleph0.2 (lt_of_le_of_lt h Cardinal.one_lt_aleph0))
+ IsNoetherian.iff_fg.1
+ (IsNoetherian.iff_rank_lt_aleph0.2 (lt_of_le_of_lt h Cardinal.one_lt_aleph0))
#align collinear.finite_dimensional_vector_span Collinear.finiteDimensional_vectorSpan
/-- The direction of the affine span of collinear points is finite-dimensional. -/
@@ -378,7 +380,7 @@ variable (k P)
/-- The empty set is collinear. -/
theorem collinear_empty : Collinear k (∅ : Set P) :=
by
- rw [collinear_iff_dim_le_one, vectorSpan_empty]
+ rw [collinear_iff_rank_le_one, vectorSpan_empty]
simp
#align collinear_empty collinear_empty
@@ -387,7 +389,7 @@ variable {P}
/-- A single point is collinear. -/
theorem collinear_singleton (p : P) : Collinear k ({p} : Set P) :=
by
- rw [collinear_iff_dim_le_one, vectorSpan_singleton]
+ rw [collinear_iff_rank_le_one, vectorSpan_singleton]
simp
#align collinear_singleton collinear_singleton
@@ -399,7 +401,7 @@ vector, added to `p₀`. -/
theorem collinear_iff_of_mem {s : Set P} {p₀ : P} (h : p₀ ∈ s) :
Collinear k s ↔ ∃ v : V, ∀ p ∈ s, ∃ r : k, p = r • v +ᵥ p₀ :=
by
- simp_rw [collinear_iff_dim_le_one, dim_submodule_le_one_iff', Submodule.le_span_singleton_iff]
+ simp_rw [collinear_iff_rank_le_one, rank_submodule_le_one_iff', Submodule.le_span_singleton_iff]
constructor
· rintro ⟨v₀, hv⟩
use v₀
@@ -636,7 +638,7 @@ variable {k}
theorem Coplanar.finiteDimensional_vectorSpan {s : Set P} (h : Coplanar k s) :
FiniteDimensional k (vectorSpan k s) :=
by
- refine' IsNoetherian.iff_fg.1 (IsNoetherian.iff_dim_lt_aleph0.2 (lt_of_le_of_lt h _))
+ refine' IsNoetherian.iff_fg.1 (IsNoetherian.iff_rank_lt_aleph0.2 (lt_of_le_of_lt h _))
simp
#align coplanar.finite_dimensional_vector_span Coplanar.finiteDimensional_vectorSpan
@@ -652,7 +654,7 @@ theorem coplanar_iff_finrank_le_two {s : Set P} [FiniteDimensional k (vectorSpan
Coplanar k s ↔ finrank k (vectorSpan k s) ≤ 2 :=
by
have h : Coplanar k s ↔ Module.rank k (vectorSpan k s) ≤ 2 := Iff.rfl
- rw [← finrank_eq_dim] at h
+ rw [← finrank_eq_rank] at h
exact_mod_cast h
#align coplanar_iff_finrank_le_two coplanar_iff_finrank_le_two
@@ -661,7 +663,7 @@ alias coplanar_iff_finrank_le_two ↔ Coplanar.finrank_le_two _
/-- A subset of a coplanar set is coplanar. -/
theorem Coplanar.subset {s₁ s₂ : Set P} (hs : s₁ ⊆ s₂) (h : Coplanar k s₂) : Coplanar k s₁ :=
- (dim_le_of_submodule (vectorSpan k s₁) (vectorSpan k s₂) (vectorSpan_mono k hs)).trans h
+ (rank_le_of_submodule (vectorSpan k s₁) (vectorSpan k s₂) (vectorSpan_mono k hs)).trans h
#align coplanar.subset Coplanar.subset
/-- Collinear points are coplanar. -/
@@ -733,7 +735,7 @@ theorem finrank_vectorSpan_insert_le (s : AffineSubspace k P) (p : P) :
rw [← finrank_bot k V]
convert rfl <;> simp
· rw [affine_span_coe, direction_affine_span_insert hp₀, add_comm]
- refine' (Submodule.dim_add_le_dim_add_dim _ _).trans (add_le_add_right _ _)
+ refine' (Submodule.rank_add_le_rank_add_rank _ _).trans (add_le_add_right _ _)
refine' finrank_le_one ⟨p -ᵥ p₀, Submodule.mem_span_singleton_self _⟩ fun v => _
have h := v.property
rw [Submodule.mem_span_singleton] at h
mathlib commit https://github.com/leanprover-community/mathlib/commit/3ade05ac9447ae31a22d2ea5423435e054131240
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Myers
! This file was ported from Lean 3 source module linear_algebra.affine_space.finite_dimensional
-! leanprover-community/mathlib commit 2f4cdce0c2f2f3b8cd58f05d556d03b468e1eb2e
+! leanprover-community/mathlib commit b875cbb7f2aa2b4c685aaa2f99705689c95322ad
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -248,11 +248,10 @@ theorem AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_ad
[FiniteDimensional k sp.direction] (hle : affineSpan k (s.image p : Set P) ≤ sp)
(hc : Finset.card s = finrank k sp.direction + 1) : affineSpan k (s.image p : Set P) = sp :=
by
- have hn : (s.image p).Nonempty :=
- by
- rw [Finset.Nonempty.image_iff, ← Finset.card_pos, hc]
+ have hn : s.nonempty := by
+ rw [← Finset.card_pos, hc]
apply Nat.succ_pos
- refine' eq_of_direction_eq_of_nonempty_of_le _ ((affineSpan_nonempty k _).2 hn) hle
+ refine' eq_of_direction_eq_of_nonempty_of_le _ ((hn.image _).to_set.affineSpan _) hle
have hd := direction_le hle
rw [direction_affineSpan] at hd⊢
exact hi.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one hd hc
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -30,7 +30,6 @@ open BigOperators Affine
section AffineSpace'
variable (k : Type*) {V : Type*} {P : Type*}
-
variable {ι : Type*}
open AffineSubspace FiniteDimensional Module
@@ -823,7 +822,6 @@ namespace AffineBasis
universe u₁ u₂ u₃ u₄
variable {ι : Type u₁} {k : Type u₂} {V : Type u₃} {P : Type u₄}
-
variable [AddCommGroup V] [AffineSpace V P]
section DivisionRing
I removed some of the tactics that were not used and are hopefully uncontroversial arising from the linter at #11308.
As the commit messages should convey, the removed tactics are, essentially,
push_cast
norm_cast
congr
norm_num
dsimp
funext
intro
infer_instance
@@ -187,7 +187,6 @@ theorem affineIndependent_iff_finrank_vectorSpan_eq [Fintype ι] (p : ι → P)
rw [affineIndependent_iff_linearIndependent_vsub _ _ i₁,
linearIndependent_iff_card_eq_finrank_span, eq_comm,
vectorSpan_range_eq_span_range_vsub_right_ne k p i₁, Set.finrank]
- congr
rw [← Finset.card_univ] at hc
rw [Fintype.subtype_card]
simp [Finset.filter_ne', Finset.card_erase_of_mem, hc]
Rename lemmas to enable new-style dot notation or drop repeating FiniteDimensional.finiteDimensional_*
.
Restore old names as deprecated aliases.
@@ -800,7 +800,7 @@ theorem Collinear.coplanar_insert {s : Set P} (h : Collinear k s) (p : P) :
/-- A set of points in a two-dimensional space is coplanar. -/
theorem coplanar_of_finrank_eq_two (s : Set P) (h : finrank k V = 2) : Coplanar k s := by
- have : FiniteDimensional k V := finiteDimensional_of_finrank_eq_succ h
+ have : FiniteDimensional k V := .of_finrank_eq_succ h
rw [coplanar_iff_finrank_le_two, ← h]
exact Submodule.finrank_le _
#align coplanar_of_finrank_eq_two coplanar_of_finrank_eq_two
@@ -3,6 +3,7 @@ Copyright (c) 2020 Joseph Myers. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Myers
-/
+import Mathlib.Init.Core
import Mathlib.LinearAlgebra.AffineSpace.Basis
import Mathlib.LinearAlgebra.FiniteDimensional
when everything is affine independent. Also a related affine span lemma.
From LeanCamCombi
@@ -125,6 +125,13 @@ theorem AffineIndependent.finrank_vectorSpan [Fintype ι] {p : ι → P} (hi : A
exact hi.finrank_vectorSpan_image_finset hc
#align affine_independent.finrank_vector_span AffineIndependent.finrank_vectorSpan
+/-- The `vectorSpan` of a finite affinely independent family has dimension one less than its
+cardinality. -/
+lemma AffineIndependent.finrank_vectorSpan_add_one [Fintype ι] [Nonempty ι] {p : ι → P}
+ (hi : AffineIndependent k p) : finrank k (vectorSpan k (Set.range p)) + 1 = Fintype.card ι := by
+ rw [hi.finrank_vectorSpan (tsub_add_cancel_of_le _).symm, tsub_add_cancel_of_le] <;>
+ exact Fintype.card_pos
+
/-- The `vectorSpan` of a finite affinely independent family whose
cardinality is one more than that of the finite-dimensional space is
`⊤`. -/
@@ -162,6 +169,12 @@ theorem finrank_vectorSpan_range_le [Fintype ι] (p : ι → P) {n : ℕ} (hc :
exact finrank_vectorSpan_image_finset_le _ _ _ hc
#align finrank_vector_span_range_le finrank_vectorSpan_range_le
+/-- The `vectorSpan` of an indexed family of `n + 1` points has dimension at most `n`. -/
+lemma finrank_vectorSpan_range_add_one_le [Fintype ι] [Nonempty ι] (p : ι → P) :
+ finrank k (vectorSpan k (Set.range p)) + 1 ≤ Fintype.card ι :=
+ (le_tsub_iff_right $ Nat.succ_le_iff.2 Fintype.card_pos).1 $ finrank_vectorSpan_range_le _ _
+ (tsub_add_cancel_of_le $ Nat.succ_le_iff.2 Fintype.card_pos).symm
+
/-- `n + 1` points are affinely independent if and only if their
`vectorSpan` has dimension `n`. -/
theorem affineIndependent_iff_finrank_vectorSpan_eq [Fintype ι] (p : ι → P) {n : ℕ}
@@ -217,6 +230,46 @@ lemma AffineIndependent.card_le_finrank_succ [Fintype ι] {p : ι → P} (hp : A
exact (affineIndependent_iff_le_finrank_vectorSpan _ _
(tsub_add_cancel_of_le <| Nat.one_le_iff_ne_zero.2 Fintype.card_ne_zero).symm).1 hp
+open Finset in
+/-- If an affine independent finset is contained in the affine span of another finset, then its
+cardinality is at most the cardinality of that finset. -/
+lemma AffineIndependent.card_le_card_of_subset_affineSpan {s t : Finset V}
+ (hs : AffineIndependent k ((↑) : s → V)) (hst : (s : Set V) ⊆ affineSpan k (t : Set V)) :
+ s.card ≤ t.card := by
+ obtain rfl | hs' := s.eq_empty_or_nonempty
+ · simp
+ obtain rfl | ht' := t.eq_empty_or_nonempty
+ · simpa [Set.subset_empty_iff] using hst
+ have := hs'.to_subtype
+ have := ht'.to_set.to_subtype
+ have direction_le := AffineSubspace.direction_le (affineSpan_mono k hst)
+ rw [AffineSubspace.affineSpan_coe, direction_affineSpan, direction_affineSpan,
+ ← @Subtype.range_coe _ (s : Set V), ← @Subtype.range_coe _ (t : Set V)] at direction_le
+ have finrank_le := add_le_add_right (Submodule.finrank_le_finrank_of_le direction_le) 1
+ -- We use `erw` to elide the difference between `↥s` and `↥(s : Set V)}`
+ erw [hs.finrank_vectorSpan_add_one] at finrank_le
+ simpa using finrank_le.trans <| finrank_vectorSpan_range_add_one_le _ _
+
+open Finset in
+/-- If the affine span of an affine independent finset is strictly contained in the affine span of
+another finset, then its cardinality is strictly less than the cardinality of that finset. -/
+lemma AffineIndependent.card_lt_card_of_affineSpan_lt_affineSpan {s t : Finset V}
+ (hs : AffineIndependent k ((↑) : s → V))
+ (hst : affineSpan k (s : Set V) < affineSpan k (t : Set V)) : s.card < t.card := by
+ obtain rfl | hs' := s.eq_empty_or_nonempty
+ · simpa [card_pos] using hst
+ obtain rfl | ht' := t.eq_empty_or_nonempty
+ · simp [Set.subset_empty_iff] at hst
+ have := hs'.to_subtype
+ have := ht'.to_set.to_subtype
+ have dir_lt := AffineSubspace.direction_lt_of_nonempty (k := k) hst $ hs'.to_set.affineSpan k
+ rw [direction_affineSpan, direction_affineSpan,
+ ← @Subtype.range_coe _ (s : Set V), ← @Subtype.range_coe _ (t : Set V)] at dir_lt
+ have finrank_lt := add_lt_add_right (Submodule.finrank_lt_finrank_of_lt dir_lt) 1
+ -- We use `erw` to elide the difference between `↥s` and `↥(s : Set V)}`
+ erw [hs.finrank_vectorSpan_add_one] at finrank_lt
+ simpa using finrank_lt.trans_le <| finrank_vectorSpan_range_add_one_le _ _
+
/-- If the `vectorSpan` of a finite subset of an affinely independent
family lies in a submodule with dimension one less than its
cardinality, it equals that submodule. -/
Nonempty
arguments (#9377)
Finset.Nonempty.image_iff
to Finset.image_nonempty
, deprecate the old version;Set.nonempty_image_iff
to Set.image_nonempty
, deprecate the old version;Finset.Nonempty
arguments here and there;Nonempty s
instead of Nonempty (s.image f)
or Nonempty (s.map f)
.@@ -142,7 +142,7 @@ theorem finrank_vectorSpan_image_finset_le [DecidableEq P] (p : ι → P) (s : F
(hc : Finset.card s = n + 1) : finrank k (vectorSpan k (s.image p : Set P)) ≤ n := by
classical
have hn : (s.image p).Nonempty := by
- rw [Finset.Nonempty.image_iff, ← Finset.card_pos, hc]
+ rw [Finset.image_nonempty, ← Finset.card_pos, hc]
apply Nat.succ_pos
rcases hn with ⟨p₁, hp₁⟩
rw [vectorSpan_eq_span_vsub_finset_right_ne k hp₁]
@@ -209,6 +209,14 @@ theorem finrank_vectorSpan_le_iff_not_affineIndependent [Fintype ι] (p : ι →
variable {k}
+lemma AffineIndependent.card_le_finrank_succ [Fintype ι] {p : ι → P} (hp : AffineIndependent k p) :
+ Fintype.card ι ≤ FiniteDimensional.finrank k (vectorSpan k (Set.range p)) + 1 := by
+ cases isEmpty_or_nonempty ι
+ · simp [Fintype.card_eq_zero]
+ rw [← tsub_le_iff_right]
+ exact (affineIndependent_iff_le_finrank_vectorSpan _ _
+ (tsub_add_cancel_of_le <| Nat.one_le_iff_ne_zero.2 Fintype.card_ne_zero).symm).1 hp
+
/-- If the `vectorSpan` of a finite subset of an affinely independent
family lies in a submodule with dimension one less than its
cardinality, it equals that submodule. -/
exact_mod_cast
tactic with mod_cast
elaborator where possible (#8404)
We still have the exact_mod_cast
tactic, used in a few places, which somehow (?) works a little bit harder to prevent the expected type influencing the elaboration of the term. I would like to get to the bottom of this, and it will be easier once the only usages of exact_mod_cast
are the ones that don't work using the term elaborator by itself.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -336,7 +336,7 @@ theorem collinear_iff_finrank_le_one {s : Set P} [FiniteDimensional k (vectorSpa
Collinear k s ↔ finrank k (vectorSpan k s) ≤ 1 := by
have h := collinear_iff_rank_le_one k s
rw [← finrank_eq_rank] at h
- exact_mod_cast h
+ exact mod_cast h
#align collinear_iff_finrank_le_one collinear_iff_finrank_le_one
alias ⟨Collinear.finrank_le_one, _⟩ := collinear_iff_finrank_le_one
@@ -630,7 +630,7 @@ theorem coplanar_iff_finrank_le_two {s : Set P} [FiniteDimensional k (vectorSpan
Coplanar k s ↔ finrank k (vectorSpan k s) ≤ 2 := by
have h : Coplanar k s ↔ Module.rank k (vectorSpan k s) ≤ 2 := Iff.rfl
rw [← finrank_eq_rank] at h
- exact_mod_cast h
+ exact mod_cast h
#align coplanar_iff_finrank_le_two coplanar_iff_finrank_le_two
alias ⟨Coplanar.finrank_le_two, _⟩ := coplanar_iff_finrank_le_two
Simplex.Independent
(#8419)
This holds a proof not a Prop
, so should be lowercase.
@@ -279,7 +279,7 @@ theorem AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one [FiniteD
theorem Affine.Simplex.span_eq_top [FiniteDimensional k V] {n : ℕ} (T : Affine.Simplex k V n)
(hrank : finrank k V = n) : affineSpan k (Set.range T.points) = ⊤ := by
- rw [AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one T.Independent,
+ rw [AffineIndependent.affineSpan_eq_top_iff_card_eq_finrank_add_one T.independent,
Fintype.card_fin, hrank]
#align affine.simplex.span_eq_top Affine.Simplex.span_eq_top
This is the supremum of
along with some minor fixes from failures on nightly-testing as Mathlib master
is merged into it.
Note that some PRs for changes that are already compatible with the current toolchain and will be necessary have already been split out: #8380.
I am hopeful that in future we will be able to progressively merge adaptation PRs into a bump/v4.X.0
branch, so we never end up with a "big merge" like this. However one of these adaptation PRs (#8056) predates my new scheme for combined CI, and it wasn't possible to keep that PR viable in the meantime.
In particular this includes adjustments for the Lean PRs
We can get rid of all the
local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue [lean4#2220](https://github.com/leanprover/lean4/pull/2220)
macros across Mathlib (and in any projects that want to write natural number powers of reals).
Changes the default behaviour of simp
to (config := {decide := false})
. This makes simp
(and consequentially norm_num
) less powerful, but also more consistent, and less likely to blow up in long failures. This requires a variety of changes: changing some previously by simp
or norm_num
to decide
or rfl
, or adding (config := {decide := true})
.
This changed the behaviour of simp
so that simp [f]
will only unfold "fully applied" occurrences of f
. The old behaviour can be recovered with simp (config := { unfoldPartialApp := true })
. We may in future add a syntax for this, e.g. simp [!f]
; please provide feedback! In the meantime, we have made the following changes:
(config := { unfoldPartialApp := true })
in some places, to recover the old behaviour@[eqns]
to manually adjust the equation lemmas for a particular definition, recovering the old behaviour just for that definition. See #8371, where we do this for Function.comp
and Function.flip
.This change in Lean may require further changes down the line (e.g. adding the !f
syntax, and/or upstreaming the special treatment for Function.comp
and Function.flip
, and/or removing this special treatment). Please keep an open and skeptical mind about these changes!
Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Mauricio Collares <mauricio@collares.org>
@@ -479,7 +479,8 @@ theorem affineIndependent_iff_not_collinear_of_ne {p : Fin 3 → P} {i₁ i₂ i
AffineIndependent k p ↔ ¬Collinear k ({p i₁, p i₂, p i₃} : Set P) := by
have hu : (Finset.univ : Finset (Fin 3)) = {i₁, i₂, i₃} := by
-- Porting note: Originally `by decide!`
- fin_cases i₁ <;> fin_cases i₂ <;> fin_cases i₃ <;> simp only at h₁₂ h₁₃ h₂₃ ⊢
+ fin_cases i₁ <;> fin_cases i₂ <;> fin_cases i₃
+ <;> simp (config := {decide := true}) only at h₁₂ h₁₃ h₂₃ ⊢
rw [affineIndependent_iff_not_collinear, ← Set.image_univ, ← Finset.coe_univ, hu,
Finset.coe_insert, Finset.coe_insert, Finset.coe_singleton, Set.image_insert_eq, Set.image_pair]
#align affine_independent_iff_not_collinear_of_ne affineIndependent_iff_not_collinear_of_ne
@@ -339,7 +339,7 @@ theorem collinear_iff_finrank_le_one {s : Set P} [FiniteDimensional k (vectorSpa
exact_mod_cast h
#align collinear_iff_finrank_le_one collinear_iff_finrank_le_one
-alias collinear_iff_finrank_le_one ↔ Collinear.finrank_le_one _
+alias ⟨Collinear.finrank_le_one, _⟩ := collinear_iff_finrank_le_one
#align collinear.finrank_le_one Collinear.finrank_le_one
/-- A subset of a collinear set is collinear. -/
@@ -632,7 +632,7 @@ theorem coplanar_iff_finrank_le_two {s : Set P} [FiniteDimensional k (vectorSpan
exact_mod_cast h
#align coplanar_iff_finrank_le_two coplanar_iff_finrank_le_two
-alias coplanar_iff_finrank_le_two ↔ Coplanar.finrank_le_two _
+alias ⟨Coplanar.finrank_le_two, _⟩ := coplanar_iff_finrank_le_two
#align coplanar.finrank_le_two Coplanar.finrank_le_two
/-- A subset of a coplanar set is coplanar. -/
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -28,9 +28,9 @@ open BigOperators Affine
section AffineSpace'
-variable (k : Type _) {V : Type _} {P : Type _}
+variable (k : Type*) {V : Type*} {P : Type*}
-variable {ι : Type _}
+variable {ι : Type*}
open AffineSubspace FiniteDimensional Module
@@ -676,7 +676,7 @@ end AffineSpace'
section DivisionRing
-variable {k : Type _} {V : Type _} {P : Type _}
+variable {k : Type*} {V : Type*} {P : Type*}
open AffineSubspace FiniteDimensional Module
The lemma is a perfect duplicate of Submodule.eq_top_of_finrank_eq
.
@@ -131,7 +131,7 @@ cardinality is one more than that of the finite-dimensional space is
theorem AffineIndependent.vectorSpan_eq_top_of_card_eq_finrank_add_one [FiniteDimensional k V]
[Fintype ι] {p : ι → P} (hi : AffineIndependent k p) (hc : Fintype.card ι = finrank k V + 1) :
vectorSpan k (Set.range p) = ⊤ :=
- eq_top_of_finrank_eq <| hi.finrank_vectorSpan hc
+ Submodule.eq_top_of_finrank_eq <| hi.finrank_vectorSpan hc
#align affine_independent.vector_span_eq_top_of_card_eq_finrank_add_one AffineIndependent.vectorSpan_eq_top_of_card_eq_finrank_add_one
variable (k)
open Classical
(#6320)
This uncovers a few situations where a lemma was stated with the wrong decidability assumption. The corrected lemmas are strictly more syntactically-general.
This is exhaustive in the LinearAlgebra
folder.
Where removal is impractical, this switches to open Classical in
to make the intent clear.
@@ -93,15 +93,14 @@ theorem finite_set_of_fin_dim_affineIndependent [FiniteDimensional k V] {s : Set
@Set.toFinite _ s (finite_of_fin_dim_affineIndependent k hi)
#align finite_set_of_fin_dim_affine_independent finite_set_of_fin_dim_affineIndependent
-open Classical
-
variable {k}
/-- The `vectorSpan` of a finite subset of an affinely independent
family has dimension one less than its cardinality. -/
-theorem AffineIndependent.finrank_vectorSpan_image_finset {p : ι → P} (hi : AffineIndependent k p)
- {s : Finset ι} {n : ℕ} (hc : Finset.card s = n + 1) :
+theorem AffineIndependent.finrank_vectorSpan_image_finset [DecidableEq P]
+ {p : ι → P} (hi : AffineIndependent k p) {s : Finset ι} {n : ℕ} (hc : Finset.card s = n + 1) :
finrank k (vectorSpan k (s.image p : Set P)) = n := by
+ classical
have hi' := hi.range.mono (Set.image_subset_range p ↑s)
have hc' : (s.image p).card = n + 1 := by rwa [s.card_image_of_injective hi.injective]
have hn : (s.image p).Nonempty := by simp [hc', ← Finset.card_pos]
@@ -120,6 +119,7 @@ theorem AffineIndependent.finrank_vectorSpan_image_finset {p : ι → P} (hi : A
dimension one less than its cardinality. -/
theorem AffineIndependent.finrank_vectorSpan [Fintype ι] {p : ι → P} (hi : AffineIndependent k p)
{n : ℕ} (hc : Fintype.card ι = n + 1) : finrank k (vectorSpan k (Set.range p)) = n := by
+ classical
rw [← Finset.card_univ] at hc
rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image]
exact hi.finrank_vectorSpan_image_finset hc
@@ -138,8 +138,9 @@ variable (k)
/-- The `vectorSpan` of `n + 1` points in an indexed family has
dimension at most `n`. -/
-theorem finrank_vectorSpan_image_finset_le (p : ι → P) (s : Finset ι) {n : ℕ}
+theorem finrank_vectorSpan_image_finset_le [DecidableEq P] (p : ι → P) (s : Finset ι) {n : ℕ}
(hc : Finset.card s = n + 1) : finrank k (vectorSpan k (s.image p : Set P)) ≤ n := by
+ classical
have hn : (s.image p).Nonempty := by
rw [Finset.Nonempty.image_iff, ← Finset.card_pos, hc]
apply Nat.succ_pos
@@ -155,6 +156,7 @@ theorem finrank_vectorSpan_image_finset_le (p : ι → P) (s : Finset ι) {n :
dimension at most `n`. -/
theorem finrank_vectorSpan_range_le [Fintype ι] (p : ι → P) {n : ℕ} (hc : Fintype.card ι = n + 1) :
finrank k (vectorSpan k (Set.range p)) ≤ n := by
+ classical
rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image]
rw [← Finset.card_univ] at hc
exact finrank_vectorSpan_image_finset_le _ _ _ hc
@@ -165,6 +167,7 @@ theorem finrank_vectorSpan_range_le [Fintype ι] (p : ι → P) {n : ℕ} (hc :
theorem affineIndependent_iff_finrank_vectorSpan_eq [Fintype ι] (p : ι → P) {n : ℕ}
(hc : Fintype.card ι = n + 1) :
AffineIndependent k p ↔ finrank k (vectorSpan k (Set.range p)) = n := by
+ classical
have hn : Nonempty ι := by simp [← Fintype.card_pos_iff, hc]
cases' hn with i₁
rw [affineIndependent_iff_linearIndependent_vsub _ _ i₁,
@@ -209,7 +212,8 @@ variable {k}
/-- If the `vectorSpan` of a finite subset of an affinely independent
family lies in a submodule with dimension one less than its
cardinality, it equals that submodule. -/
-theorem AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one {p : ι → P}
+theorem AffineIndependent.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one
+ [DecidableEq P] {p : ι → P}
(hi : AffineIndependent k p) {s : Finset ι} {sm : Submodule k V} [FiniteDimensional k sm]
(hle : vectorSpan k (s.image p : Set P) ≤ sm) (hc : Finset.card s = finrank k sm + 1) :
vectorSpan k (s.image p : Set P) = sm :=
@@ -229,7 +233,8 @@ theorem AffineIndependent.vectorSpan_eq_of_le_of_card_eq_finrank_add_one [Fintyp
/-- If the `affineSpan` of a finite subset of an affinely independent
family lies in an affine subspace whose direction has dimension one
less than its cardinality, it equals that subspace. -/
-theorem AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one {p : ι → P}
+theorem AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one
+ [DecidableEq P] {p : ι → P}
(hi : AffineIndependent k p) {s : Finset ι} {sp : AffineSubspace k P}
[FiniteDimensional k sp.direction] (hle : affineSpan k (s.image p : Set P) ≤ sp)
(hc : Finset.card s = finrank k sp.direction + 1) : affineSpan k (s.image p : Set P) = sp := by
@@ -249,6 +254,7 @@ theorem AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one [Fintyp
(hi : AffineIndependent k p) {sp : AffineSubspace k P} [FiniteDimensional k sp.direction]
(hle : affineSpan k (Set.range p) ≤ sp) (hc : Fintype.card ι = finrank k sp.direction + 1) :
affineSpan k (Set.range p) = sp := by
+ classical
rw [← Finset.card_univ] at hc
rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image] at hle ⊢
exact hi.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one hle hc
@@ -2,15 +2,12 @@
Copyright (c) 2020 Joseph Myers. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Myers
-
-! This file was ported from Lean 3 source module linear_algebra.affine_space.finite_dimensional
-! leanprover-community/mathlib commit 67e606eaea14c7854bdc556bd53d98aefdf76ec0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.LinearAlgebra.AffineSpace.Basis
import Mathlib.LinearAlgebra.FiniteDimensional
+#align_import linear_algebra.affine_space.finite_dimensional from "leanprover-community/mathlib"@"67e606eaea14c7854bdc556bd53d98aefdf76ec0"
+
/-!
# Finite-dimensional subspaces of affine spaces.
Currently, (for both Set
and Finset
) insert_subset
is an iff
lemma stating that insert a s ⊆ t
if and only if a ∈ t
and s ⊆ t
. For both types, this PR renames this lemma to insert_subset_iff
, and adds an insert_subset
lemma that gives the implication just in the reverse direction : namely theorem insert_subset (ha : a ∈ t) (hs : s ⊆ t) : insert a s ⊆ t
.
This both aligns the naming with union_subset
and union_subset_iff
, and removes the need for the awkward insert_subset.mpr ⟨_,_⟩
idiom. It touches a lot of files (too many to list), but in a trivial way.
@@ -529,7 +529,7 @@ theorem Collinear.mem_affineSpan_of_mem_of_ne {s : Set P} (h : Collinear k s) {p
span of the whole set. -/
theorem Collinear.affineSpan_eq_of_ne {s : Set P} (h : Collinear k s) {p₁ p₂ : P} (hp₁ : p₁ ∈ s)
(hp₂ : p₂ ∈ s) (hp₁p₂ : p₁ ≠ p₂) : line[k, p₁, p₂] = affineSpan k s :=
- le_antisymm (affineSpan_mono _ (Set.insert_subset.2 ⟨hp₁, Set.singleton_subset_iff.2 hp₂⟩))
+ le_antisymm (affineSpan_mono _ (Set.insert_subset_iff.2 ⟨hp₁, Set.singleton_subset_iff.2 hp₂⟩))
(affineSpan_le.2 fun _ hp => h.mem_affineSpan_of_mem_of_ne hp₁ hp₂ hp hp₁p₂)
#align collinear.affine_span_eq_of_ne Collinear.affineSpan_eq_of_ne
at
and goals (#5387)
Changes are of the form
some_tactic at h⊢
-> some_tactic at h ⊢
some_tactic at h
-> some_tactic at h
@@ -241,7 +241,7 @@ theorem AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_ad
apply Nat.succ_pos
refine' eq_of_direction_eq_of_nonempty_of_le _ ((hn.image p).to_set.affineSpan k) hle
have hd := direction_le hle
- rw [direction_affineSpan] at hd⊢
+ rw [direction_affineSpan] at hd ⊢
exact hi.vectorSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one hd hc
#align affine_independent.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one
@@ -253,7 +253,7 @@ theorem AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one [Fintyp
(hle : affineSpan k (Set.range p) ≤ sp) (hc : Fintype.card ι = finrank k sp.direction + 1) :
affineSpan k (Set.range p) = sp := by
rw [← Finset.card_univ] at hc
- rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image] at hle⊢
+ rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image] at hle ⊢
exact hi.affineSpan_image_finset_eq_of_le_of_card_eq_finrank_add_one hle hc
#align affine_independent.affine_span_eq_of_le_of_card_eq_finrank_add_one AffineIndependent.affineSpan_eq_of_le_of_card_eq_finrank_add_one
The unported dependencies are