change statement of PolyType_0

This commit is contained in:
chelseaandmadrid 2023-06-15 21:27:52 -07:00
parent 01f628cf98
commit 04bda915d1

View file

@ -145,8 +145,8 @@ lemma Poly_shifting (f : ) (g : ) (hf : PolyType f d) (s :
-- set_option pp.all true in -- set_option pp.all true in
-- PolyType 0 = constant function -- PolyType 0 = constant function
lemma PolyType_0 (f : ) : (PolyType f 0) ↔ (∃ (c : ), ∃ (N : ), ∀ (n : ), lemma PolyType_0 (f : ) : (PolyType f 0) ↔ (∃ (c : ), ∃ (N : ), (∀ (n : ),
(N ≤ n → f n = c) ∧ c ≠ 0) := by (N ≤ n → f n = c)) ∧ c ≠ 0) := by
constructor constructor
· rintro ⟨Poly, ⟨N, ⟨H1, H2⟩⟩⟩ · rintro ⟨Poly, ⟨N, ⟨H1, H2⟩⟩⟩
have this1 : Polynomial.degree Poly = 0 := by rw [← H2]; rfl have this1 : Polynomial.degree Poly = 0 := by rw [← H2]; rfl
@ -182,14 +182,11 @@ lemma Δ_1 (f : ) (d : ): d > 0 → PolyType f d → PolyType (Δ
lemma foo (f : ) (s : ) : Δ (Δ f 1) s = (Δ f (s + 1)) := by
sorry
-- Δ of d times maps polynomial of degree d to polynomial of degree 0 -- Δ of d times maps polynomial of degree d to polynomial of degree 0
lemma Δ_1_s_equiv_Δ_s_1 (f : ) (s : ) : Δ (Δ f 1) s = (Δ f (s + 1)) := by
sorry
lemma foofoo (d : ) : (f : ) → (PolyType f d) → (PolyType (Δ f d) 0):= by lemma foofoo (d : ) : (f : ) → (PolyType f d) → (PolyType (Δ f d) 0):= by
induction' d with d hd induction' d with d hd
· intro f h · intro f h
@ -205,12 +202,9 @@ lemma foofoo (d : ) : (f : ) → (PolyType f d) → (PolyType (Δ
clear hf clear hf
specialize hd (Δ f 1) specialize hd (Δ f 1)
have this4 : PolyType (Δ (Δ f 1) d) 0 := by tauto have this4 : PolyType (Δ (Δ f 1) d) 0 := by tauto
rw [foo] at this4 rw [Δ_1_s_equiv_Δ_s_1] at this4
tauto tauto
tauto tauto
lemma Δ_d_PolyType_d_to_PolyType_0 (f : ) (d : ): PolyType f d → PolyType (Δ f d) 0 := by lemma Δ_d_PolyType_d_to_PolyType_0 (f : ) (d : ): PolyType f d → PolyType (Δ f d) 0 := by
intro h intro h
have this : ∀ (d : ), ∀ (f :), (PolyType f d) → (PolyType (Δ f d) 0) := by have this : ∀ (d : ), ∀ (f :), (PolyType f d) → (PolyType (Δ f d) 0) := by
@ -222,37 +216,60 @@ lemma Δ_d_PolyType_d_to_PolyType_0 (f : ) (d : ): PolyType f d
lemma foofoofoo (d : ) : (f : ) → (∃ (c : ), ∃ (N : ), (∀ (n : ), N ≤ n → (Δ f d) (n) = c) ∧ c ≠ 0) → (PolyType f d) := by
-- [BH, 4.1.2] (a) => (b)
-- Δ^d f (n) = c for some nonzero integer c for n >> 0 → f is of polynomial type d
lemma a_to_b (f : ) (d : ) : (∃ (c : ), ∃ (N : ), ∀ (n : ), ((N ≤ n → (Δ f d) (n) = c) ∧ c ≠ 0)) → PolyType f d := by
intro h
rcases h with ⟨c, N, hh⟩
have H1 := λ n => (hh n).left
have H2 := λ n => (hh n).right
clear hh
have H2 : c ≠ 0 := by
tauto
induction' d with d hd induction' d with d hd
-- Base case -- Base case
· rw [PolyType_0] · intro f
intro h
rcases h with ⟨c, N, hh⟩
rw [PolyType_0]
use c use c
use N use N
tauto tauto
-- Induction step -- Induction step
· sorry · intro f
intro h
rcases h with ⟨c, N, h⟩
have this : PolyType f (d + 1) := by
sorry
tauto
-- [BH, 4.1.2] (a) => (b)
-- Δ^d f (n) = c for some nonzero integer c for n >> 0 → f is of polynomial type d
lemma a_to_b (f : ) (d : ) : (∃ (c : ), ∃ (N : ), (∀ (n : ), N ≤ n → (Δ f d) (n) = c) ∧ c ≠ 0) → PolyType f d := by
sorry
-- intro h
-- rcases h with ⟨c, N, hh⟩
-- have H1 := λ n => (hh n).left
-- have H2 := λ n => (hh n).right
-- clear hh
-- have H2 : c ≠ 0 := by
-- tauto
-- induction' d with d hd
-- -- Base case
-- · rw [PolyType_0]
-- use c
-- use N
-- tauto
-- -- Induction step
-- · sorry
-- [BH, 4.1.2] (a) <= (b) -- [BH, 4.1.2] (a) <= (b)
-- f is of polynomial type d → Δ^d f (n) = c for some nonzero integer c for n >> 0 -- f is of polynomial type d → Δ^d f (n) = c for some nonzero integer c for n >> 0
lemma b_to_a (f : ) (d : ) : PolyType f d → (∃ (c : ), ∃ (N : ), ∀ (n : ), ((N ≤ n → (Δ f d) (n) = c) ∧ c ≠ 0)) := by lemma b_to_a (f : ) (d : ) : PolyType f d → (∃ (c : ), ∃ (N : ), (∀ (n : ), N ≤ n → (Δ f d) (n) = c) ∧ c ≠ 0) := by
intro h intro h
have : PolyType (Δ f d) 0 := by have : PolyType (Δ f d) 0 := by
apply Δ_d_PolyType_d_to_PolyType_0 apply Δ_d_PolyType_d_to_PolyType_0
exact h exact h
have this1 : (∃ (c : ), ∃ (N : ), ∀ (n : ), ((N ≤ n → (Δ f d) n = c) ∧ c ≠ 0)) := by have this1 : (∃ (c : ), ∃ (N : ), (∀ (n : ), (N ≤ n → (Δ f d) n = c)) ∧ c ≠ 0) := by
rw [←PolyType_0] rw [←PolyType_0]
exact this exact this
exact this1 exact this1