Mercurial > hg > Members > kono > Proof > automaton
changeset 211:28d4fb7b576f
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 20 Jun 2021 23:51:35 +0900 |
parents | 2aba74f9708d |
children | cb36711e8b06 |
files | automaton-in-agda/src/gcd.agda |
diffstat | 1 files changed, 33 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/automaton-in-agda/src/gcd.agda Sun Jun 20 23:25:01 2021 +0900 +++ b/automaton-in-agda/src/gcd.agda Sun Jun 20 23:51:35 2021 +0900 @@ -259,48 +259,52 @@ Fsym {0} {suc j} = refl Fsym {suc i} {0} = refl Fsym {suc i} {suc j} with <-cmp i j | <-cmp j i - ... | tri< a ¬b ¬c | tri< a₁ ¬b₁ ¬c₁ = {!!} - ... | tri< a ¬b ¬c | tri≈ ¬a b ¬c₁ = {!!} + ... | tri< a ¬b ¬c | tri< a₁ ¬b₁ ¬c₁ = ⊥-elim (nat-<> a a₁) + ... | tri< a ¬b ¬c | tri≈ ¬a b ¬c₁ = ⊥-elim (¬b (sym b)) ... | tri< a ¬b ¬c | tri> ¬a ¬b₁ c = refl - ... | tri≈ ¬a refl ¬c | tri< a ¬b ¬c₁ = {!!} + ... | tri≈ ¬a refl ¬c | tri< a ¬b ¬c₁ = ⊥-elim (¬b refl) ... | tri≈ ¬a refl ¬c | tri≈ ¬a₁ refl ¬c₁ = refl - ... | tri≈ ¬a refl ¬c | tri> ¬a₁ ¬b c = {!!} + ... | tri≈ ¬a refl ¬c | tri> ¬a₁ ¬b c = ⊥-elim (¬b refl) ... | tri> ¬a ¬b c | tri< a ¬b₁ ¬c = refl - ... | tri> ¬a ¬b c | tri≈ ¬a₁ b ¬c = {!!} - ... | tri> ¬a ¬b c | tri> ¬a₁ ¬b₁ c₁ = {!!} - F< : {i j k : ℕ } → 0 < i → i < j → j < k → F ⟪ i , j ⟫ < F ⟪ i , k ⟫ - F< = {!!} + ... | tri> ¬a ¬b c | tri≈ ¬a₁ b ¬c = ⊥-elim (¬b (sym b)) + ... | tri> ¬a ¬b c | tri> ¬a₁ ¬b₁ c₁ = ⊥-elim (nat-<> c c₁) record Fdec ( i j : ℕ ) : Set where field ni : ℕ nj : ℕ fdec : 0 < F ⟪ i , j ⟫ → F ⟪ ni , nj ⟫ < F ⟪ i , j ⟫ + fd1 : ( i j k : ℕ ) → i < j → k ≡ j - i → F ⟪ suc i , k ⟫ < F ⟪ suc i , suc j ⟫ + fd1 i j 0 i<j eq = ⊥-elim ( nat-≡< eq (minus>0 {i} {j} i<j )) + fd1 i j (suc k) i<j eq = fd2 i j k i<j eq where + fd2 : ( i j k : ℕ ) → i < j → suc k ≡ j - i → F ⟪ suc i , suc k ⟫ < F ⟪ suc i , suc j ⟫ + fd2 i j k i<j eq with <-cmp i k | <-cmp i j + ... | tri< a ¬b ¬c | tri< a₁ ¬b₁ ¬c₁ = fd3 where + fd3 : suc k < suc j -- suc j - suc i < suc j + fd3 = subst (λ g → g < suc j) (sym eq) (y-x<y {suc i} {suc j} (s≤s z≤n) (s≤s z≤n)) + ... | tri< a ¬b ¬c | tri≈ ¬a b ¬c₁ = ⊥-elim (⊥-elim (¬a i<j)) + ... | tri< a ¬b ¬c | tri> ¬a ¬b₁ c = ⊥-elim (⊥-elim (¬a i<j)) + ... | tri≈ ¬a b ¬c | tri< a ¬b ¬c₁ = s≤s z≤n + ... | tri≈ ¬a b ¬c | tri≈ ¬a₁ b₁ ¬c₁ = ⊥-elim (¬a₁ i<j) + ... | tri≈ ¬a b ¬c | tri> ¬a₁ ¬b c = s≤s z≤n -- i > j + ... | tri> ¬a ¬b c | tri< a ¬b₁ ¬c = fd4 where + fd4 : suc i < suc j + fd4 = s≤s a + ... | tri> ¬a ¬b c | tri≈ ¬a₁ b ¬c = ⊥-elim (¬a₁ i<j) + ... | tri> ¬a ¬b c | tri> ¬a₁ ¬b₁ c₁ = ⊥-elim (¬a₁ i<j) fedc0 : (i j : ℕ ) → Fdec i j fedc0 0 0 = record { ni = 0 ; nj = 0 ; fdec = λ () } fedc0 (suc i) 0 = record { ni = suc i ; nj = 0 ; fdec = λ () } fedc0 0 (suc j) = record { ni = 0 ; nj = suc j ; fdec = λ () } fedc0 (suc i) (suc j) with <-cmp i j - ... | tri< a ¬b ¬c = record { ni = suc i ; nj = j - i ; fdec = λ lt → fd1 (j - i) refl } where - fd1 : ( k : ℕ ) → k ≡ j - i → F ⟪ suc i , k ⟫ < F ⟪ suc i , suc j ⟫ - fd1 0 eq = {!!} - fd1 (suc k) eq = fd2 i j k a eq where - fd2 : ( i j k : ℕ ) → i < j → suc k ≡ j - i → F ⟪ suc i , suc k ⟫ < F ⟪ suc i , suc j ⟫ - fd2 i j k i<j eq with <-cmp i k | <-cmp i j - ... | tri< a ¬b ¬c | tri< a₁ ¬b₁ ¬c₁ = fd3 where - fd3 : suc k < suc j - fd3 = {!!} - ... | tri< a ¬b ¬c | tri≈ ¬a b ¬c₁ = ⊥-elim {!!} -- i ≡ j - ... | tri< a ¬b ¬c | tri> ¬a ¬b₁ c = ⊥-elim {!!} - ... | tri≈ ¬a b ¬c | tri< a ¬b ¬c₁ = s≤s z≤n - ... | tri≈ ¬a b ¬c | tri≈ ¬a₁ b₁ ¬c₁ = ⊥-elim {!!} -- i ≡ j - ... | tri≈ ¬a b ¬c | tri> ¬a₁ ¬b c = s≤s z≤n -- i > j - ... | tri> ¬a ¬b c | tri< a ¬b₁ ¬c = fd4 where - fd4 : suc i < suc j - fd4 = s≤s a - ... | tri> ¬a ¬b c | tri≈ ¬a₁ b ¬c = ⊥-elim {!!} - ... | tri> ¬a ¬b c | tri> ¬a₁ ¬b₁ c₁ = ⊥-elim {!!} - ... | tri≈ ¬a refl ¬c = record { ni = suc i ; nj = suc j ; fdec = λ eq → {!!} } - ... | tri> ¬a ¬b c = record { ni = i - j ; nj = suc j ; fdec = λ lt → {!!} } where + ... | tri< i<j ¬b ¬c = record { ni = suc i ; nj = j - i ; fdec = λ lt → fd1 i j (j - i) i<j refl } + ... | tri≈ ¬a refl ¬c = record { ni = suc i ; nj = suc j ; fdec = λ lt → ⊥-elim (nat-≡< fd0 lt) } where + fd0 : {i : ℕ } → 0 ≡ F ⟪ suc i , suc i ⟫ + fd0 {i} with <-cmp i i + ... | tri< a ¬b ¬c = ⊥-elim ( ¬b refl ) + ... | tri≈ ¬a b ¬c = refl + ... | tri> ¬a ¬b c = ⊥-elim ( ¬b refl ) + ... | tri> ¬a ¬b c = record { ni = i - j ; nj = suc j ; fdec = λ lt → + subst₂ (λ s t → s < t) (Fsym {suc j} {i - j}) (Fsym {suc j} {suc i}) (fd1 j i (i - j) c refl ) } ind : ( i j : ℕ ) → Dividable (gcd (Fdec.ni (fedc0 i j)) (Fdec.nj (fedc0 i j))) (Fdec.ni (fedc0 i j)) ∧ Dividable (gcd (Fdec.ni (fedc0 i j)) (Fdec.nj (fedc0 i j))) (Fdec.nj (fedc0 i j))