diff --git a/Cubical/Data/Fin/Properties.agda b/Cubical/Data/Fin/Properties.agda index e00938396b..6746529c2f 100644 --- a/Cubical/Data/Fin/Properties.agda +++ b/Cubical/Data/Fin/Properties.agda @@ -440,39 +440,6 @@ Fin-inj n m p with n ≟ m ... | lt nm = Empty.rec (Fin-inj′ n>m p) -≤-·sk-cancel : ∀ {m} {k} {n} → m · suc k ≤ n · suc k → m ≤ n -≤-·sk-cancel {m} {k} {n} (d , p) = o , inj-·sm {m = k} goal where - r = d % suc k - o = d / suc k - resn·k : Residue (suc k) (n · suc k) - resn·k = ((r , n%sk<ᵗsk d k) , (o + m)) , reason where - reason = expand× ((r , n%sk<ᵗsk d k) , o + m) ≡⟨ expand≡ (suc k) r (o + m) ⟩ - (o + m) · suc k + r ≡[ i ]⟨ +-comm (·-distribʳ o m (suc k) (~ i)) r i ⟩ - r + (o · suc k + m · suc k) ≡⟨ +-assoc r (o · suc k) (m · suc k) ⟩ - (r + o · suc k) + m · suc k ≡⟨ cong (_+ m · suc k) (+-comm r (o · suc k) ∙ moddiv d (suc k)) ⟩ - d + m · suc k ≡⟨ p ⟩ - n · suc k ∎ - - residuek·n : ∀ k n → (r : Residue (suc k) (n · suc k)) → ((fzero , n) , expand≡ (suc k) 0 n ∙ +-zero _) ≡ r - residuek·n _ _ = isContr→isProp isContrResidue _ - - r≡0 : r ≡ 0 - r≡0 = cong (toℕ {suc k} ∘ extract) (sym (residuek·n k n resn·k)) - d≡o·sk : d ≡ o · suc k - d≡o·sk = sym (moddiv d (suc k)) ∙∙ cong (o · suc k +_) r≡0 ∙∙ +-zero _ - goal : (o + m) · suc k ≡ n · suc k - goal = sym (·-distribʳ o m (suc k)) ∙∙ cong (_+ m · suc k) (sym d≡o·sk) ∙∙ p - -<-·sk-cancel : ∀ {m} {k} {n} → m · suc k < n · suc k → m < n -<-·sk-cancel {m} {k} {n} p = goal where - ≤-helper : m ≤ n - ≤-helper = ≤-·sk-cancel (pred-≤-pred (<≤-trans p (≤-suc ≤-refl))) - goal : m < n - goal = case <-split (suc-≤-suc ≤-helper) of λ - { (inl g) → g - ; (inr e) → Empty.rec (¬ml₁ = ⊥.rec (lemmaIsPropLogℕ l₁) + +module LogTheory (logℕ : ∀ m n → Logℕ (suc (suc m)) (suc n)) where + + log : (b : ℕ) → {2 ≤ᵗ b} → (x : ℕ) → {1 ≤ᵗ x} → ℕ + log (suc (suc m)) (suc n) = Logℕ.log (logℕ m n) + + module _ (m : ℕ) where + private + b = suc (suc m) + b-1 = suc m + + logℕBase^ : ∀ n → Logℕ b (b ^ n) + logℕBase^ n .Logℕ.log = n + logℕBase^ n .Logℕ.^log≤ = ≤-refl + logℕBase^ n .Logℕ.<^1+log = <-ssk^ {m = n} <-suc + + logℕBase· : ∀ n → Logℕ b (b · suc n) + logℕBase· n .Logℕ.log = suc (log b (suc n)) + logℕBase· n .Logℕ.^log≤ = ≤-k· {k = b} (Logℕ.^log≤ (logℕ m n)) + logℕBase· n .Logℕ.<^1+log = <-sk· {k = suc m} (Logℕ.<^1+log (logℕ m n)) + + logℕ1 : Logℕ b 1 + logℕ1 .Logℕ.log = 0 + logℕ1 .Logℕ.^log≤ = ≤-refl + logℕ1 .Logℕ.<^1+log = suc-≤-suc zero-