# HG changeset patch # User Shinji KONO # Date 1624439418 -32400 # Node ID a61f121c34a4b0c1cf1ca7cc5b6351068e90c590 # Parent 6e8b163ca73717b10ae95a1322867bb11d7487c0 ... diff -r 6e8b163ca737 -r a61f121c34a4 automaton-in-agda/src/gcd.agda --- a/automaton-in-agda/src/gcd.agda Wed Jun 23 11:31:00 2021 +0900 +++ b/automaton-in-agda/src/gcd.agda Wed Jun 23 18:10:18 2021 +0900 @@ -228,6 +228,12 @@ k + f * k + 0 ≡⟨ eq ⟩ m ∎ where open ≤-Reasoning +div→k≤m : { m k : ℕ } → k > 1 → m > 0 → Dividable k m → m ≥ k +div→k≤m {m} {k} k>1 m>0 d with <-cmp m k +... | tri< a ¬b ¬c = ⊥-elim ( div1 m>0 a d ) +... | tri≈ ¬a refl ¬c = ≤-refl +... | tri> ¬a ¬b c = 1 if jf = gcd-gt i i j j k k>1 (DtoF if) if (DtoF jf) jf (div-div k>1 if jf) -gcd-divable : ( i j : ℕ ) +gcd-dividable : ( i j : ℕ ) → Dividable ( gcd i j ) i ∧ Dividable ( gcd i j ) j -gcd-divable i j = f-induction {_} {_} {ℕ ∧ ℕ} +gcd-dividable i j = f-induction {_} {_} {ℕ ∧ ℕ} {λ p → Dividable ( gcd (proj1 p) (proj2 p) ) (proj1 p) ∧ Dividable ( gcd (proj1 p) (proj2 p) ) (proj2 p)} F I ⟪ i , j ⟫ where F : ℕ ∧ ℕ → ℕ F ⟪ 0 , 0 ⟫ = 0 @@ -490,3 +496,51 @@ gcd033 (suc i) zero (suc j) (suc j0) = refl gcd033 zero (suc i0) j j0 = refl gcd033 (suc i) (suc i0) j j0 = refl + +--gcd-dividable : ( i j : ℕ ) +-- → Dividable ( gcd i j ) i ∧ Dividable ( gcd i j ) j + +f-div>0 : { k i : ℕ } → (d : Dividable k i ) → 0 < i → 0 < Dividable.factor d +f-div>0 {k} {i} d 00 d (s≤s z≤n)) ⟩ + gcd (suc i) (suc j) * f ≡⟨ +-comm 0 _ ⟩ + gcd (suc i) (suc j) * f + 0 ≡⟨ cong (λ k → k + 0) (*-comm (gcd (suc i) (suc j)) _ ) ⟩ + Dividable.factor (proj2 (gcd-dividable (suc i) (suc j))) * gcd (suc i) (suc j) + 0 ≡⟨ Dividable.is-factor (proj2 (gcd-dividable (suc i) (suc j))) ⟩ + suc j ∎ where + d = proj2 (gcd-dividable (suc i) (suc j)) + f = Dividable.factor (proj2 (gcd-dividable (suc i) (suc j))) + open ≤-Reasoning + +m*n=m→n : {m n : ℕ } → 0 < m → m * n ≡ m * 1 → n ≡ 1 +m*n=m→n {suc m} {n} (s≤s lt) eq = *-cancelˡ-≡ m eq + +gcd-< : ( i j : ℕ ) → 0 < i → i < j → gcd i j < j +gcd-< i j 0 ¬a ¬b c = ⊥-elim ( nat-≤> (gcd-≤ i j ( 0 → ¬ Prime p is-g : (j : ℕ) → g ≤ j → j < p → gcd p j ≡ 1 is-g= : {g p : ℕ} → g ≡ p → (j : ℕ) → g ≤ j → j < p → gcd p j ≡ 1 is-g= eq _ g≤j j

1 p ; div = {!!} ; npr = λ () ; is-g = {!!} } - ... | no np = record { p = suc (suc f) ; g = suc (suc f) ; 1

1 = G.1

1 p ; div = {!!} ; npr = λ () ; is-g = {!!} } + ... | no np = {!!} -- record { p = suc (suc f) ; g = suc (suc f) ; 1

1 = G.1