Move area related concepts into one-variable-calculus.

finite-set-exercises
Joshua Potter 2023-04-22 13:11:50 -06:00
parent 35ebf79274
commit 1724adf00d
22 changed files with 170 additions and 69 deletions

View File

@ -1,2 +1,3 @@
import Apostol.Chapter_I_3
import Apostol.Chapters
import Apostol.Exercises
import Apostol.Real

View File

@ -0,0 +1 @@
import Apostol.Chapters.Chapter_I_3

View File

@ -60,7 +60,7 @@ Exercises 1.7
-- Prove that a triangle whose vertices are lattice points cannot be
-- equilateral.
--
-- [Hint: Assume there is such a triangle and ocmpute its area in two ways,
-- [Hint: Assume there is such a triangle and compute its area in two ways,
-- using exercises 2 and 4.]
-- ----------------------------------------

View File

@ -9,7 +9,7 @@ import Mathlib.Data.Real.Basic
import Mathlib.Data.Real.Sqrt
import Mathlib.Tactic.LibrarySearch
import Apostol.Chapter_I_3
import Apostol.Chapters.Chapter_I_3
import Bookshelf.Real.Rational
-- ========================================

View File

@ -0,0 +1,3 @@
import Apostol.Real.Function
import Apostol.Real.Geometry
import Apostol.Real.Set

View File

@ -0,0 +1 @@
import Apostol.Real.Function.Step

View File

@ -1,8 +1,8 @@
import Mathlib.Data.Fin.Basic
import Mathlib.Tactic.NormNum
import Apostol.Real.Set.Partition
import Bookshelf.Real.Basic
import Bookshelf.Real.Set.Partition
namespace Real.Function

View File

@ -0,0 +1,3 @@
import Apostol.Real.Geometry.Area
import Apostol.Real.Geometry.Basic
import Apostol.Real.Geometry.Rectangle

View File

@ -3,10 +3,10 @@ Chapter 1.6
The concept of area as a set function
-/
import Bookshelf.Real.Function.Step
import Bookshelf.Real.Geometry.Rectangle
import Apostol.Real.Function.Step
import Apostol.Real.Geometry.Rectangle
namespace Real
namespace Real.Geometry.Area
/--
All *measurable sets*, i.e. sets in the plane to which an area can be assigned.
@ -153,4 +153,4 @@ axiom exhaustion_exists_unique_imp_area_eq (Q : Set ℝ²)
(∀ x : , forall_subset_between_step_imp_le_between_area x Q → x = k))
→ area (exhaustion_exists_unique_imp_measurable Q ⟨k, h⟩) = k
end Real
end Real.Geometry.Area

View File

@ -5,13 +5,17 @@ import Bookshelf.Real.Basic
namespace Real
/--
The undirected angle at `p2` between the line segments to `p1` and `p3`.
The undirected angle at `p₂` between the line segments to `p₁` and `p₃`. If
either of those points equals `p₂`, this is `π / 2`.
PORT: `geometry.euclidean.angle`
-/
axiom angle (p₁ p₂ p₃ : ℝ²) (h : p₁ ≠ p₂ ∧ p₂ ≠ p₃ ∧ p₃ ≠ p₁):
axiom angle (p₁ p₂ p₃ : ℝ²) :
notation "∠" => angle
noncomputable def port_geometry_euclidean_angle (p₁ p₂ p₃ : ℝ²) :=
if p₁ = p₂ p₂ = p₃ then π / 2 else angle p₁ p₂ p₃
notation "∠" => port_geometry_euclidean_angle
/--
Determine the distance between two points in `ℝ²`.

View File

@ -0,0 +1,126 @@
import Apostol.Real.Geometry.Basic
namespace Real
/--
A `Rectangle` is characterized by three distinct points and the angle formed
between line segments originating from the "bottom left" point.
-/
structure Rectangle where
top_left : ℝ²
bottom_left : ℝ²
bottom_right : ℝ²
forms_right_angle : ∠ top_left bottom_left bottom_right = π / 2
namespace Rectangle
/--
The top-right corner of the rectangle, oriented with respect to the other
vertices.
-/
def top_right (r : Rectangle) : ℝ² :=
( r.top_left.fst + r.bottom_right.fst - r.bottom_left.fst
, r.top_left.snd + r.bottom_right.snd - r.bottom_left.snd
)
/--
A `Rectangle` is the locus of points bounded by its edges.
-/
def set_def (r : Rectangle) : Set ℝ² :=
sorry
theorem dist_top_eq_dist_bottom (r : Rectangle)
: dist r.top_left r.top_right = dist r.bottom_left r.bottom_right := by
unfold top_right dist
repeat rw [add_comm, sub_right_comm, add_sub_cancel']
theorem dist_left_eq_dist_right (r : Rectangle)
: dist r.top_left r.bottom_left = dist r.top_right r.bottom_right := by
unfold top_right dist
repeat rw [
sub_sub_eq_add_sub,
add_comm,
sub_add_eq_sub_sub,
sub_right_comm,
add_sub_cancel'
]
/--
Computes the width of a `Rectangle`.
-/
noncomputable def width (r : Rectangle) : :=
dist r.bottom_left r.bottom_right
/--
Computes the height of a `Rectangle`.
-/
noncomputable def height (r : Rectangle) : :=
dist r.bottom_left r.top_left
end Rectangle
/--
A `Point` is a `Rectangle` in which all points coincide.
-/
abbrev Point := Subtype (fun r : Rectangle =>
r.top_left = r.bottom_left ∧ r.bottom_left = r.bottom_right)
namespace Point
/--
A `Point` is the set consisting of just itself.
-/
def set_def (p : Point) : Set ℝ² :=
{ x : ℝ² | x = p.val.top_left }
/--
The width of a `Point` is `0`.
-/
theorem width_eq_zero (p : Point) : p.val.width = 0 := by
unfold Rectangle.width
rw [p.property.right]
unfold dist
simp
/--
The height of a `Point` is `0`.
-/
theorem height_eq_zero (p : Point) : p.val.height = 0 := by
unfold Rectangle.height
rw [p.property.left]
unfold dist
simp
end Point
/--
A `LineSegment` is a `Rectangle` in which two of the three points coincide.
-/
abbrev LineSegment := Subtype (fun r : Rectangle =>
(r.top_left = r.bottom_left ∧ r.bottom_left ≠ r.bottom_right)
(r.top_left ≠ r.bottom_left ∧ r.bottom_left = r.bottom_right))
namespace LineSegment
def set_def (s : LineSegment) : Set ℝ² :=
sorry
theorem width_or_height_eq_zero (s : LineSegment)
: s.val.width = 0 s.val.height = 0 := by
apply Or.elim s.property
· intro h
refine Or.inr ?_
unfold Rectangle.height
rw [h.left]
unfold dist
simp
· intro h
refine Or.inl ?_
unfold Rectangle.width
rw [h.right]
unfold dist
simp
end LineSegment
end Real

View File

@ -0,0 +1 @@
import Apostol.Real.Set.Partition

View File

@ -1,6 +1,4 @@
import Bookshelf.Real.Basic
import Bookshelf.Real.Function
import Bookshelf.Real.Geometry
import Bookshelf.Real.Rational
import Bookshelf.Real.Sequence
import Bookshelf.Real.Set

View File

@ -3,3 +3,14 @@ import Mathlib.Data.Real.Basic
notation "ℝ²" => ×
notation "ℝ³" => ℝ² ×
namespace Real
/--
The area of a unit circle.
-/
axiom pi :
notation "π" => pi
end Real

View File

@ -1 +0,0 @@
import Bookshelf.Real.Function.Step

View File

@ -1,2 +0,0 @@
import Bookshelf.Real.Geometry.Basic
import Bookshelf.Real.Geometry.Rectangle

View File

@ -1,44 +0,0 @@
import Bookshelf.Real.Geometry.Basic
namespace Real
/--
A `Rectangle` is characterized by three distinct points and the angle formed
between line segments originating from the "bottom left" point.
-/
structure Rectangle where
top_left : ℝ²
bottom_left : ℝ²
bottom_right : ℝ²
distinct_vertices :
top_left ≠ bottom_left ∧ bottom_left ≠ bottom_right ∧ bottom_right ≠ top_left
forms_right_angle :
∠ top_left bottom_left bottom_right distinct_vertices = π / 2
namespace Rectangle
/--
A calculation of the missing point.
-/
def top_right (r : Rectangle) : ℝ² :=
sorry
/--
A `Rectangle` is the locus of points bounded by its edges.
-/
def set_def (r : Rectangle) : Set ℝ² :=
sorry
/--
Computes the width of a `Rectangle`.
-/
noncomputable def width (r : Rectangle) : :=
dist r.bottom_left r.top_left
/--
Computes the height of a `Rectangle`.
-/
noncomputable def height (r : Rectangle) : :=
dist r.bottom_left r.bottom_right
end Real.Rectangle

View File

@ -4,7 +4,7 @@ import Bookshelf.Real.Basic
Assert that a real number is rational.
Note this does *not* require the found rational to be in reduced form. Members
of `` expect this (by proving the numerator and denominator are coprime).
of `` expect this (by proving the numerator and denominator are co-prime).
-/
def rational (x : ) := ∃ a : , ∃ b : , b ≠ 0 ∧ x = a / b

View File

@ -1,3 +1,2 @@
import Bookshelf.Real.Set.Basic
import Bookshelf.Real.Set.Interval
import Bookshelf.Real.Set.Partition