@@ -16,11 +16,11 @@ import Algebra.Lattice.Construct.NaturalChoice.MinMaxOp as LatticeMinMaxOp
1616import Algebra.Properties.AbelianGroup
1717open import Data.Bool.Base using (T; true; false)
1818open import Data.Integer.Base renaming (suc to sucℤ)
19+ open import Data.Integer.Properties.NatLemmas
1920open import Data.Nat.Base as ℕ
2021 using (ℕ; suc; zero; _∸_; s≤s; z≤n; s<s; z<s; s≤s⁻¹; s<s⁻¹)
2122 hiding (module ℕ )
2223import Data.Nat.Properties as ℕ
23- open import Data.Nat.Solver
2424open import Data.Product.Base using (proj₁; proj₂; _,_; _×_)
2525open import Data.Sum.Base as Sum using (_⊎_; inj₁; inj₂; [_,_]′)
2626open import Data.Sign.Base as Sign using (Sign)
@@ -45,7 +45,6 @@ open import Algebra.Consequences.Propositional
4545open import Algebra.Structures {A = ℤ} _≡_
4646module ℤtoℕ = Morphism.Definitions ℤ ℕ _≡_
4747module ℕtoℤ = Morphism.Definitions ℕ ℤ _≡_
48- open +-*-Solver
4948
5049private
5150 variable
@@ -1337,15 +1336,6 @@ pred-mono (+≤+ m≤n) = ⊖-monoˡ-≤ 1 m≤n
13371336*-zero : Zero 0ℤ _*_
13381337*-zero = *-zeroˡ , *-zeroʳ
13391338
1340- private
1341- lemma : ∀ m n o → o ℕ.+ (n ℕ.+ m ℕ.* suc n) ℕ.* suc o
1342- ≡ o ℕ.+ n ℕ.* suc o ℕ.+ m ℕ.* suc (o ℕ.+ n ℕ.* suc o)
1343- lemma =
1344- solve 3 (λ m n o → o :+ (n :+ m :* (con 1 :+ n)) :* (con 1 :+ o)
1345- := o :+ n :* (con 1 :+ o) :+
1346- m :* (con 1 :+ (o :+ n :* (con 1 :+ o))))
1347- refl
1348-
13491339*-assoc : Associative _*_
13501340*-assoc +0 _ _ = refl
13511341*-assoc i +0 _ rewrite ℕ.*-zeroʳ ∣ i ∣ = refl
@@ -1354,14 +1344,14 @@ private
13541344 | ℕ.*-zeroʳ ∣ i ∣
13551345 | ℕ.*-zeroʳ ∣ sign i Sign.* sign j ◃ ∣ i ∣ ℕ.* ∣ j ∣ ∣
13561346 = refl
1357- *-assoc -[1+ m ] -[1+ n ] +[1+ o ] = cong (+_ ∘ suc) (lemma m n o)
1358- *-assoc -[1+ m ] +[1+ n ] -[1+ o ] = cong (+_ ∘ suc) (lemma m n o)
1359- *-assoc +[1+ m ] +[1+ n ] +[1+ o ] = cong (+_ ∘ suc) (lemma m n o)
1360- *-assoc +[1+ m ] -[1+ n ] -[1+ o ] = cong (+_ ∘ suc) (lemma m n o)
1361- *-assoc -[1+ m ] -[1+ n ] -[1+ o ] = cong -[1+_] (lemma m n o)
1362- *-assoc -[1+ m ] +[1+ n ] +[1+ o ] = cong -[1+_] (lemma m n o)
1363- *-assoc +[1+ m ] -[1+ n ] +[1+ o ] = cong -[1+_] (lemma m n o)
1364- *-assoc +[1+ m ] +[1+ n ] -[1+ o ] = cong -[1+_] (lemma m n o)
1347+ *-assoc -[1+ m ] -[1+ n ] +[1+ o ] = cong (+_ ∘ suc) (inner-assoc m n o)
1348+ *-assoc -[1+ m ] +[1+ n ] -[1+ o ] = cong (+_ ∘ suc) (inner-assoc m n o)
1349+ *-assoc +[1+ m ] +[1+ n ] +[1+ o ] = cong (+_ ∘ suc) (inner-assoc m n o)
1350+ *-assoc +[1+ m ] -[1+ n ] -[1+ o ] = cong (+_ ∘ suc) (inner-assoc m n o)
1351+ *-assoc -[1+ m ] -[1+ n ] -[1+ o ] = cong -[1+_] (inner-assoc m n o)
1352+ *-assoc -[1+ m ] +[1+ n ] +[1+ o ] = cong -[1+_] (inner-assoc m n o)
1353+ *-assoc +[1+ m ] -[1+ n ] +[1+ o ] = cong -[1+_] (inner-assoc m n o)
1354+ *-assoc +[1+ m ] +[1+ n ] -[1+ o ] = cong -[1+_] (inner-assoc m n o)
13651355
13661356private
13671357
@@ -1400,26 +1390,10 @@ private
14001390 rewrite +-identityʳ y
14011391 | +-identityʳ (sign y Sign.* sign x ◃ ∣ y ∣ ℕ.* ∣ x ∣)
14021392 = refl
1403- *-distribʳ-+ -[1+ m ] -[1+ n ] -[1+ o ] = cong (+_) $
1404- solve 3 (λ m n o → (con 2 :+ n :+ o) :* (con 1 :+ m)
1405- := (con 1 :+ n) :* (con 1 :+ m) :+
1406- (con 1 :+ o) :* (con 1 :+ m))
1407- refl m n o
1408- *-distribʳ-+ +[1+ m ] +[1+ n ] +[1+ o ] = cong (+_) $
1409- solve 3 (λ m n o → (con 1 :+ n :+ (con 1 :+ o)) :* (con 1 :+ m)
1410- := (con 1 :+ n) :* (con 1 :+ m) :+
1411- (con 1 :+ o) :* (con 1 :+ m))
1412- refl m n o
1413- *-distribʳ-+ -[1+ m ] +[1+ n ] +[1+ o ] = cong -[1+_] $
1414- solve 3 (λ m n o → m :+ (n :+ (con 1 :+ o)) :* (con 1 :+ m)
1415- := (con 1 :+ n) :* (con 1 :+ m) :+
1416- (m :+ o :* (con 1 :+ m)))
1417- refl m n o
1418- *-distribʳ-+ +[1+ m ] -[1+ n ] -[1+ o ] = cong -[1+_] $
1419- solve 3 (λ m n o → m :+ (con 1 :+ m :+ (n :+ o) :* (con 1 :+ m))
1420- := (con 1 :+ n) :* (con 1 :+ m) :+
1421- (m :+ o :* (con 1 :+ m)))
1422- refl m n o
1393+ *-distribʳ-+ -[1+ m ] -[1+ n ] -[1+ o ] = cong (+_) $ assoc₁ m n o
1394+ *-distribʳ-+ +[1+ m ] +[1+ n ] +[1+ o ] = cong +[1+_] $ ℕ.suc-injective (assoc₂ m n o)
1395+ *-distribʳ-+ -[1+ m ] +[1+ n ] +[1+ o ] = cong -[1+_] $ assoc₃ m n o
1396+ *-distribʳ-+ +[1+ m ] -[1+ n ] -[1+ o ] = cong -[1+_] $ assoc₄ m n o
14231397*-distribʳ-+ -[1+ m ] -[1+ n ] +[1+ o ] = begin
14241398 (suc o ⊖ suc n) * -[1+ m ] ≡⟨ cong (_* -[1+ m ]) ([1+m]⊖[1+n]≡m⊖n o n) ⟩
14251399 (o ⊖ n) * -[1+ m ] ≡⟨ distrib-lemma m n o ⟩
0 commit comments