# HG changeset patch # User Shinji KONO # Date 1623917796 -32400 # Node ID 4b452c9d7e7b63f592d2a51b9c9f24eeb9656839 # Parent daeae196aa50535d550344e3a3793d6586d3594d gcd done diff -r daeae196aa50 -r 4b452c9d7e7b automaton-in-agda/src/gcd.agda --- a/automaton-in-agda/src/gcd.agda Thu Jun 17 16:00:58 2021 +0900 +++ b/automaton-in-agda/src/gcd.agda Thu Jun 17 17:16:36 2021 +0900 @@ -62,41 +62,9 @@ (k + f * suc k) + zero ≡⟨ cong pred fa ⟩ n ∎ ) } where open ≡-Reasoning -decf-eq : {i k : ℕ } → k > 1 → (if : Factor k (suc i)) - → (div : Dividable k (suc i - remain if)) → factor if ≡ Dividable.factor div -decf-eq {i} {suc k} k>1 if div = if1 where - if0 : suc (suc i) > remain if - if0 = begin - suc (remain if) ≤⟨ s≤s (m≤n+m _ (factor if * suc k)) ⟩ - suc (factor if * suc k + remain if) ≡⟨ cong suc ( is-factor if) ⟩ - suc (suc i) ∎ where open ≤-Reasoning - if1 : factor if ≡ Dividable.factor div - if1 = begin - factor if ≡⟨ *-cancelʳ-≡ _ _ {k} ( +-cancelʳ-≡ _ _ ( begin - factor if * suc k + remain if ≡⟨ is-factor if ⟩ - suc i ≡⟨ sym (minus+n {suc i} {remain if} if0) ⟩ - (suc i - remain if) + remain if ≡⟨ cong (λ g → g + remain if) (sym (Dividable.is-factor div )) ⟩ - (Dividable.factor div * suc k + 0) + remain if ≡⟨ cong (λ g → g + remain if) (+-comm _ 0) ⟩ - Dividable.factor div * suc k + remain if ∎ )) ⟩ Dividable.factor div ∎ where open ≡-Reasoning - div0 : {k : ℕ} → Dividable k 0 div0 {k} = record { factor = 0; is-factor = refl } -ifk0 : ( i0 k : ℕ ) → (i0f : Factor k i0 ) → ( i0=0 : remain i0f ≡ 0 ) → factor i0f * k + 0 ≡ i0 -ifk0 i0 k i0f i0=0 = begin - factor i0f * k + 0 ≡⟨ cong (λ m → factor i0f * k + m) (sym i0=0) ⟩ - factor i0f * k + remain i0f ≡⟨ is-factor i0f ⟩ - i0 ∎ - where open ≡-Reasoning - -ifzero : {k : ℕ } → (jf : Factor k zero ) → remain jf ≡ 0 -ifzero {k} record { factor = zero ; remain = zero ; is-factor = is-factor } = refl -ifzero {zero} record { factor = (suc factor₁) ; remain = zero ; is-factor = is-factor } = refl -ifzero {zero} record { factor = (suc f) ; remain = (suc r) ; is-factor = is-factor } = - ⊥-elim (nat-≡< (sym is-factor) (subst (λ k → zero < k ) (+-comm (suc r) _) if1 )) where - if1 : zero < suc r + suc f * zero - if1 = s≤s z≤n - gcd1 : ( i i0 j j0 : ℕ ) → ℕ gcd1 zero i0 zero j0 with <-cmp i0 j0 ... | tri< a ¬b ¬c = i0 @@ -126,30 +94,49 @@ div-div {i} {j} {suc k} k>1 di dj = div-div0 di dj where div-div1 : {i j : ℕ} → Dividable (suc k) i → Dividable (suc k) j → i < j → Dividable (suc k) (j - i) div-div1 {i} {j} record { factor = fi ; is-factor = fai } record { factor = fj ; is-factor = faj } i ¬a ¬b c = ⊥-elim ( nat-<> (*-monoˡ-< k c ) (begin + suc (fi * suc k) ≡⟨ +-comm 0 _ ⟩ + suc (fi * suc k + 0) ≡⟨ cong suc fai ⟩ + suc i ≤⟨ i ¬a ¬b c = ⊥-elim ( nat-≤> c i ¬a ¬b c = ≤-trans refl-≤s c -gcd50 zero (suc i0) (suc zero) j0 00 {zero} {suc _} (s≤s z≤n) = s≤s z≤n minus>0 {suc x} {suc y} (s≤s lt) = minus>0 {x} {y} lt +minus+y-y : {x y : ℕ } → (x + y) - y ≡ x +minus+y-y {zero} {y} = minus<=0 {zero + y} {y} ≤-refl +minus+y-y {suc x} {y} = begin + (suc x + y) - y ≡⟨ sym (minus+1 {_} {y} x≤y+x) ⟩ + suc ((x + y) - y) ≡⟨ cong suc (minus+y-y {x} {y}) ⟩ + suc x ∎ where open ≡-Reasoning + open import Relation.Binary.Definitions distr-minus-* : {x y z : ℕ } → (minus x y) * z ≡ minus (x * z) (y * z) diff -r daeae196aa50 -r 4b452c9d7e7b automaton-in-agda/src/root2.agda --- a/automaton-in-agda/src/root2.agda Thu Jun 17 16:00:58 2021 +0900 +++ b/automaton-in-agda/src/root2.agda Thu Jun 17 17:16:36 2021 +0900 @@ -58,7 +58,7 @@ -- → Dividable k ( gcd i j ) root2-irrational : ( n m : ℕ ) → n > 1 → m > 1 → 2 * n * n ≡ m * m → ¬ (gcd n m ≡ 1) -root2-irrational n m n>1 m>1 2nm = rot13 ( gcd-div n m 2 (s≤s (s≤s z≤n)) f2 fm (f3 n rot7) refl ) where +root2-irrational n m n>1 m>1 2nm = rot13 ( gcd-div n m 2 (s≤s (s≤s z≤n)) {!!} {!!} ) where rot13 : {m : ℕ } → Dividable 2 m → m ≡ 1 → ⊥ rot13 d refl with Dividable.factor d | Dividable.is-factor d ... | zero | ()