# HG changeset patch # User Shinji KONO # Date 1624324477 -32400 # Node ID b6c874c5c52d6d36357dd14ec79922836c6aea58 # Parent 7b093d0e5a61fd4f0842d223ec9855540c20b38c ... diff -r 7b093d0e5a61 -r b6c874c5c52d automaton-in-agda/src/gcd.agda --- a/automaton-in-agda/src/gcd.agda Mon Jun 21 23:19:51 2021 +0900 +++ b/automaton-in-agda/src/gcd.agda Tue Jun 22 10:14:37 2021 +0900 @@ -249,9 +249,17 @@ decl {m} 01 ) 0 ¬a ¬b k

¬a ¬b₁ c = no (λ d → not-div p (Dividable.factor d) a c (Dividable.is-factor d) ) where + not-div : (p f : ℕ) → p < k → 0 < p → f * k + 0 ≡ p → ⊥ + not-div (suc p) (suc f) p1 d div=)) ) I : Ninduction ℕ _ F I = record { @@ -304,16 +312,34 @@ F0 {zero} {suc j} p = case2 (case1 refl) F0 {suc i} {zero} p = case2 (case2 refl) F0 {suc i} {suc j} p with <-cmp i j - ... | tri< a ¬b ¬c = {!!} -- ⊥-elim ( nat-≡< (sym p) (s≤s z≤n )) + ... | tri< a ¬b ¬c = ⊥-elim ( F11 p ) where + F11 : F ⟪ suc i , suc j ⟫ ≡ 0 → ⊥ + F11 eq with <-cmp (suc i) (suc j) + ... | tri≈ ¬a b ¬c = nat-≡< b (s≤s a) ... | tri≈ ¬a refl ¬c = case1 refl - ... | tri> ¬a ¬b c = {!!} --⊥-elim ( nat-≡< (sym p) (s≤s z≤n )) + ... | tri> ¬a ¬b c = ⊥-elim (F11 p) where + F11 : F ⟪ suc i , suc j ⟫ ≡ 0 → ⊥ + F11 eq with <-cmp (suc i) (suc j) + ... | tri≈ ¬a b ¬c = nat-≡< (sym b) (s≤s c) + Fcase1 : { i j : ℕ } → i ≡ j → Dividable (gcd i j) i ∧ Dividable (gcd i j) j + Fcase1 {i} {i} refl = ⟪ subst (λ k → Dividable k i) (sym (gcdmm i i)) div= , subst (λ k → Dividable k i) (sym (gcdmm i i)) div= ⟫ + Fcase21 : { i j : ℕ } → i ≡ 0 → Dividable (gcd i j) i ∧ Dividable (gcd i j) j + Fcase21 {0} {j} refl = ⟪ subst (λ k → Dividable k 0) (sym (trans (gcdsym {0} {j} ) (gcd20 j)))div0 + , subst (λ k → Dividable k j) (sym (trans (gcdsym {0} {j}) (gcd20 j))) div= ⟫ + Fcase22 : { i j : ℕ } → j ≡ 0 → Dividable (gcd i j) i ∧ Dividable (gcd i j) j + Fcase22 {i} {0} refl = ⟪ subst (λ k → Dividable k i) (sym (gcd20 i)) div= + , subst (λ k → Dividable k 0) (sym (gcd20 i)) div0 ⟫ F00 : {p : ℕ ∧ ℕ} → F (next p) ≡ zero → Dividable (gcd (proj1 p) (proj2 p)) (proj1 p) ∧ Dividable (gcd (proj1 p) (proj2 p)) (proj2 p) - F00 {⟪ i , j ⟫} eq with F0 {i} {j} {!!} - ... | case1 refl = ⟪ subst (λ k → Dividable k i) (sym (gcdmm i i)) div= , subst (λ k → Dividable k i) (sym (gcdmm i i)) div= ⟫ - ... | case2 (case1 refl) = ⟪ subst (λ k → Dividable k i) (sym (trans (gcdsym {0} {j} ) (gcd20 j)))div0 - , subst (λ k → Dividable k j) (sym (trans (gcdsym {0} {j}) (gcd20 j))) div= ⟫ - ... | case2 (case2 refl) = ⟪ subst (λ k → Dividable k i) (sym (gcd20 i)) div= - , subst (λ k → Dividable k j) (sym (gcd20 i)) div0 ⟫ + F00 {⟪ i , j ⟫} eq with <-cmp i j + ... | tri< a ¬b ¬c with <-cmp i (j - i) + ... | tri< a₁ ¬b₁ ¬c₁ = Fcase1 (sym ( i-j=0→i=j ( ¬a ¬b₁ c = Fcase21 eq -- case2 (case1 eq) + F00 {⟪ i , j ⟫} eq | tri≈ ¬a b ¬c = {!!} -- case1 b + F00 {⟪ i , j ⟫} eq | tri> ¬a ¬b c with <-cmp (i - j) j + ... | tri< a ¬b₁ ¬c = Fcase22 eq + ... | tri≈ ¬a₁ b ¬c = {!!} -- i -j = j + ... | tri> ¬a₁ ¬b₁ c₁ = Fcase1 ( i-j=0→i=j (