changeset 5:310a70c03166

cck done
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 26 Nov 2019 02:08:50 +0900
parents 2a36d771d388
children fce6cadae300
files prob1.agda
diffstat 1 files changed, 24 insertions(+), 36 deletions(-) [+]
line wrap: on
line diff
--- a/prob1.agda	Mon Nov 25 23:08:02 2019 +0900
+++ b/prob1.agda	Tue Nov 26 02:08:50 2019 +0900
@@ -80,48 +80,36 @@
 
 --   i + 2 * M = M * (suc n) + A    i = suc n → A = 0 
 
+open import Data.Product
+
 problem : ( A M k : ℕ ) → Set 
 problem A M k =  (suc A <  k * M ) → Cond1 A M k
 
 problem0-k=k : ( k A M : ℕ ) → problem A M k
 problem0-k=k zero A M ()
-problem0-k=k (suc k) A M A<kM = cc k {!!} where
+problem0-k=k (suc k) A M A<kM = cc k where
+     cck :  ( n : ℕ ) →  n < k  → (suc A >  (minus k n ) * M )  → minus A (minus k n * M) < M →  Cond1 A M (suc k)
+     cck n n<k gt lt =  record { n = n ; i = minus A ((minus k n) * M ) ; range-n = <-trans n<k a<sa  ; range-i = lt ; rule1 = lemma2 }  where
+        lemma2 :   minus A (minus k n * M) + suc k * M ≡ M * suc n + A
+        lemma2 = begin
+           minus A (minus k n * M) + suc k * M                 ≡⟨ cong ( λ x → minus A (minus k n * M) + suc x * M ) (sym (minus+n {k} {n} (<-trans n<k a<sa ) )) ⟩
+           minus A (minus k n * M) + (suc ((minus k n ) + n )) * M ≡⟨ cong ( λ x → minus A (minus k n * M) + suc x * M ) (+-comm _ n) ⟩
+           minus A (minus k n * M) + (suc (n + (minus k n ) )) * M ≡⟨⟩
+           minus A (minus k n * M) + (suc n + (minus k n ) ) * M   ≡⟨ cong ( λ x → minus A (minus k n * M) + x * M ) (+-comm (suc n) _) ⟩
+           minus A (minus k n * M) + ((minus k n ) + suc n ) * M   ≡⟨ cong ( λ x → minus A (minus k n * M) + x  ) (((proj₂ *-distrib-+)) M (minus k n)  _  ) ⟩
+           minus A (minus k n * M) + ((minus k n * M) + (suc n) * M) ≡⟨ sym (+-assoc (minus A (minus k n * M)) _ ((suc n) * M)) ⟩
+           minus A (minus k n * M) + (minus k n * M) + (suc n) * M ≡⟨ cong ( λ x → x + (suc n) * M ) ( minus+n {A} {minus k n * M}  gt ) ⟩
+           A + (suc n) * M                                         ≡⟨ cong ( λ k → A + k ) (*-comm (suc n)  _ )  ⟩
+           A + M * (suc n)                                         ≡⟨ +-comm A _ ⟩
+           M * (suc n) + A
+          ∎  where open ≡-Reasoning
 
-     ccn :  (suc A >  k * M )  →  Cond1 A M (suc k)
-     ccn gt =  record { n = 0 ; i = minus A (k * M ) ; range-n = s≤s z≤n ; range-i = A-Mk<M {k} gt A<kM ; rule1 = lemma1 } where
-        A-Mk<M : {k A M : ℕ } → (suc A >  k * M ) → ( suc A <  (suc k ) * M ) → minus A (k * M ) < M
-        A-Mk<M {k} {A} {M} lt1 lt2 = <-minus ( subst₂ (λ j k → j <  k ) (sym (minus+n {A} {k * M} lt1 )) refl (<-trans a<sa lt2) )
-        lemma1 : minus A (k * M) + suc k * M ≡ M * 1 + A
-        lemma1 = begin
-              minus A (k * M) + suc k * M 
-           ≡⟨⟩
-              minus A (k * M) + (M + k * M )
-           ≡⟨ cong ( λ x → minus A (k * M) + x ) (+-comm M _ ) ⟩
-              minus A (k * M) + (k * M + M )
-           ≡⟨ sym ( +-assoc _ (k * M ) M ) ⟩
-              (minus A (k * M) + k * M ) + M 
-           ≡⟨ cong ( λ k → k + M ) (minus+n {A} {k * M} gt ) ⟩
-              A + M 
-           ≡⟨⟩
-              A + ( 0 + M )
-           ≡⟨ cong ( λ k → A + k ) (+-comm 0 _ )  ⟩
-              A + ( M + 0 )
-           ≡⟨⟩
-              A + 1 * M 
-           ≡⟨ cong ( λ k → A + k ) (*-comm 1 _ )  ⟩
-              A + M * 1
-           ≡⟨ +-comm A _ ⟩
-              M * 1 + A
-           ∎  where open ≡-Reasoning
-     cck :  ( n : ℕ ) →  n < k  → (suc A >  (minus k n ) * M )  →  Cond1 A M (suc k)
-     cck n n<k gt =  record { n = n ; i = minus A ((minus k n) * M ) ; range-n = {!!} ; range-i = {!!} ; rule1 = {!!} } 
-
-     cc : ( n : ℕ ) → (suc A >  (minus k n ) * M)  →  Cond1 A M (suc k)
-     cc 0 lt = {!!}
-     cc (suc n)  lt with <-cmp A ((minus k (suc n) ) * M)
-     cc (suc n ) lt | tri< a ¬b ¬c = cck (suc n) {!!} {!!} 
-     cc (suc n ) lt | tri≈ ¬a b ¬c = cck (suc n) {!!} {!!} 
-     cc (suc n ) lt | tri> ¬a ¬b c = cc n {!!}
+     cc : ( n : ℕ ) →  Cond1 A M (suc k)
+     cc 0 = cck 0 ?  ? ? 
+     cc (suc n) with <-cmp A ((minus k (suc n) ) * M)
+     cc (suc n ) | tri< a ¬b ¬c = cck (suc n) {!!} {!!} {!!}
+     cc (suc n ) | tri≈ ¬a b ¬c = cck (suc n) {!!} {!!} {!!}
+     cc (suc n ) | tri> ¬a ¬b c = cc n
 
 problem0 : ( A M k : ℕ ) → M > 0 → k > 0 → (suc A <  k * M ) → Cond1 A M k
 problem0 A (suc M) (suc k) 0<M 0<k A<kM = lemma1 k M A<kM a<sa a<sa where