Pantograph/experiments/dsp/lean_src_proj/MIL/Rudin/cuts.lean

43 lines
1.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/--
@[ext] structure Cut where
S : Set
not_all : S ≠ Set.univ
nonempty : S.Nonempty
lt_elem x y : x ∈ S → y < x → y ∈ S
no_max x : x ∈ S → ∃ y ∈ S, x < y
--/
-- structure == inductive, but structure has one constructor. it is all these things it's an and, it's like a named tuple or record in coq, structs in C
structure Cut where
carrier: Set -- carrier == α in Rudin, the actual cut
not_empty: carrier ≠ {} -- α ≠ ∅ (I)
not_all: carrier ≠ Set.univ -- alpha ≠ Set , carrier ≠ { _a | True} (I)
p_less_q_in_carrier: ∀ p ∈ carrier, ∀ q : , q < p -> q ∈ carrier -- (II)
p_less_q_in_carrier': (p : ) -> p ∈ carrier -> (q : ) -> q < p -> q ∈ carrier -- (III)
always_exist_a_larger_element: ∀ p ∈ carrier, ∃ r ∈ carrier, p < r -- (III')
if_q_not_in_carrier_then_grater_than_elem_in_carrier: ∀ p ∈ carrier, ∀ q : , (q ∉ carrier) → p < q
-- Now let's debug/test the above structure we defined
-- 1. let's proof some subset of Q is a (Dedikin) Cut
-- 2. thm, rfl proof of that p_less_q_in_carrier' == p_less_q_in_carrier'
-- 3. continue in Rudin!
-- 4. Show (II) implies --> (IV) & (V)
def A : Set := { x | x < 3}
theorem A_is_a_cut : Cut d
{
carrier := A,
not_empty := sorry, -- Proof that A is not empty
not_all := sorry, -- Proof that A is not the set of all rationals
p_less_q_in_carrier := sorry, -- Proof of ∀ p ∈ A, ∀ q : , q < p -> q ∈ A
p_less_q_in_carrier' := sorry, -- Alternative proof of the same property
always_exist_a_larger_element := sorry, -- Proof of ∀ p ∈ A, ∃ r ∈ A, p < r
if_q_not_in_carrier_then_grater_than_elem_in_carrier := sorry -- Proof of ∀ p ∈ A, ∀ q : , (q ∉ A) → p < q
}
/--
include private proofs discussed with scott
--/